Name: series-workflowpptdz Phase: Succeeded StartedAt: 2026-07-11 04:24:12 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[0] Phase: Succeeded StartedAt: 2026-07-11 04:24:12 +0000 UTC FinishedAt: 2026-07-11 04:43:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 04:24:12 +0000 UTC FinishedAt: 2026-07-11 04:43:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_IPTFS", "XFRM_MIGRATE", "INET_ESP_OFFLOAD", "INET6_ESP_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_IPTFS", "XFRM_MIGRATE", "INET_ESP_OFFLOAD", "INET6_ESP_OFFLOAD" ], "series_id": "f7d3b100-a948-42d1-bd19-0352af6e4535" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "validate_xmit_xfrm", "xfrm6_fill_dst", "xfrm_dev_state_add", "iptfs_skb_add_frags", "nat_keepalive_send", "xfrm_hash_rebuild", "xfrm_state_find", "xfrm_state_clone_and_setup", "xfrm_user_policy", "__xfrm_init_state", "validate_tmpl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0lQVEZTJiMzNDssCiAgICAmIzM0O1hGUk1fTUlHUkFURSYjMzQ7LAogICAgJiMzNDtJTkVUX0VTUF9PRkZMT0FEJiMzNDssCiAgICAmIzM0O0lORVQ2X0VTUF9PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmFsaWRhdGVfeG1pdF94ZnJtJiMzNDssCiAgICAmIzM0O3hmcm02X2ZpbGxfZHN0JiMzNDssCiAgICAmIzM0O3hmcm1fZGV2X3N0YXRlX2FkZCYjMzQ7LAogICAgJiMzNDtpcHRmc19za2JfYWRkX2ZyYWdzJiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfc2VuZCYjMzQ7LAogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZpbmQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXAmIzM0OywKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7LAogICAgJiMzNDtfX3hmcm1faW5pdF9zdGF0ZSYjMzQ7LAogICAgJiMzNDt2YWxpZGF0ZV90bXBsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUxNzExYmNkMmE2NmRmNjRkYjQ1MWU1Njk0OGQwNzc4OGNlYTAwOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNDo0MDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZnJtLmggYi9pbmNsdWRlL25ldC94ZnJtLmhcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQveGZybS5oXG5AQCAtMTYyLDYgJiM0MzsxNjIsOCBAQCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XG4gXHQgKi9cbiBcdHN0cnVjdCBuZXRfZGV2aWNlXHQqcmVhbF9kZXY7XG4gXHR1bnNpZ25lZCBsb25nXHRcdG9mZmxvYWRfaGFuZGxlO1xuJiM0MztcdC8qIFNuYXBzaG90IHRoZSBhdHRhY2hlZCBkZXZpY2UgaW5kZXggZm9yIGR1bXAgcGF0aHMuICovXG4mIzQzO1x0aW50XHRcdFx0aWZpbmRleDtcbiBcdHU4XHRcdFx0ZGlyIDogMjtcbiBcdHU4XHRcdFx0dHlwZSA6IDI7XG4gXHR1OFx0XHRcdGZsYWdzIDogMjtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgJiM0Mzs0MDE4LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzOy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKVxuJiM0MzsgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuJiM0MzsgKi9cbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgKmFnYWluKVxuIHtcbiBcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzO1xuQEAgLTQwODksNyAmIzQzOzQwOTIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZFxuIFx0XHRza2ItXHUwMDNlcHJldiA9IHNrYjtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4mIzQzO1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCAmIzQzOzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiBcdFx0XHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4mIzQzO1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkge1xuJiM0MztcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbiYjNDM7XHRcdFx0XHRyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7XG4gXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdEhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXG5pbmRleCAxMjVlYTlhNWI4YTA4Mi4uM2I3NDk0NzVmNmVkNjUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmNcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBzdGF0aWMgaW50IHhmcm02X2ZpbGxfZHN0KHN0cnVjdCB4ZnJtX2RzdCAqeGRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHhkc3QtXHUwMDNldS5ydDYucnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcbiBcdGlmICgheGRzdC1cdTAwM2V1LnJ0Ni5ydDZpX2lkZXYpIHtcbiBcdFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnhkc3QtXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xuJiM0MztcdFx0eGRzdC1cdTAwM2V1LmRzdC5kZXYgPSBOVUxMO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2RldmljZS5jIGIvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmYxNTNiZjY5NWI5ZGQxIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0ZXJyID0geC1cdTAwM2V0eXBlX29mZmxvYWQtXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHRpZiAoZXJyID09IC1FSU5QUk9HUkVTUylcbi1cdFx0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gXG4gXHRcdFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG5AQCAtMjI0LDcgJiM0MzsyMjQsMTUgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0cHNrYiA9IHNrYjI7XG4gXHR9XG4gXG4tXHRyZXR1cm4gc2tiO1xuJiM0MztcdC8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcbiYjNDM7XHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVx1MDAzZXByZXYuICBSZXBvaW50XG4mIzQzO1x0ICogaXQgYXQgdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCBzbyB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KCkgZG9lc1xuJiM0MztcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYilcbiYjNDM7XHRcdHNrYi1cdTAwM2VwcmV2ID0gcHNrYjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcbiBcbkBAIC0zMTMsNiAmIzQzOzMyMSw3IEBAIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdH1cbiBcbiBcdHhzby1cdTAwM2VkZXYgPSBkZXY7XG4mIzQzO1x0eHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbiBcdG5ldGRldl90cmFja2VyX2FsbG9jKGRldiwgXHUwMDI2eHNvLVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuY1xuaW5kZXggYWQ4MTBkMWY5N2MwNjcuLjU5N2FlZGVhYzI2ZWJhIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcbkBAIC00ODAsNiAmIzQzOzQ4MCw3IEBAIHN0YXRpYyBpbnQgaXB0ZnNfc2tiX2FkZF9mcmFncyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXHRcdF9fc2tiX2ZyYWdfcmVmKHRvZnJhZyk7XG4gXHRcdHNoaW5mby1cdTAwM2Vucl9mcmFncyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRzaGluZm8tXHUwMDNlZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUc7XG4gXG4gXHRcdC8qIHNlZSBpZiB3ZSBhcmUgZG9uZSAqL1xuIFx0XHRmcmFnbGVuID0gdG9mcmFnLVx1MDAzZWxlbjtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uZWIxYjZmNjc3MzllMWQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbkBAIC01NSw4ICYjNDM7NTUsMTAgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgIGthLVx1MDAzZWVuY2FwX3Nwb3J0LCBzb2NrX25ldF91aWQobmV0LCBOVUxMKSk7XG4gXG4gXHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkobmV0LCBcdTAwMjZmbDQpO1xuLVx0aWYgKElTX0VSUihydCkpXG4mIzQzO1x0aWYgKElTX0VSUihydCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihydCk7XG4mIzQzO1x0fVxuIFxuIFx0c2tiX2RzdF9zZXQoc2tiLCBcdTAwMjZydC1cdTAwM2Vkc3QpO1xuIFxuQEAgLTEwMSw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCBcdTAwMjZmbDYsIE5VTEwpO1xuIFx0aWYgKElTX0VSUihkc3QpKSB7XG4gXHRcdGxvY2FsX3VubG9ja19uZXN0ZWRfYmgoXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBQVFJfRVJSKGRzdCk7XG4gXHR9XG4gXG5AQCAtMTE4LDcgJiM0MzsxMjEsNiBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSAmIzQzO1xuIFx0XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbiBcdGNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjtcbi1cdGludCBlcnIgPSAtRUFGTk9TVVBQT1JUO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuQEAgLTE0MCwxNiAmIzQzOzE0MiwxNyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIFxuIFx0c3dpdGNoIChrYS1cdTAwM2VmYW1pbHkpIHtcbiBcdGNhc2UgQUZfSU5FVDpcbi1cdFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTtcbiBcdFx0YnJlYWs7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRjYXNlIEFGX0lORVQ2OlxuLVx0XHRlcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4gXHRcdGJyZWFrO1xuICNlbmRpZlxuLVx0fVxuLVx0aWYgKGVycilcbiYjNDM7XHRkZWZhdWx0OlxuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICYjNDM7MTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHxcbi1cdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHMpXG4mIzQzO1x0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzZT0gZGJpdHMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4zNmE0ZjY3OTNlZGVmMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMTU0Nyw2ICYjNDM7MTU0Nyw3IEBAIHhmcm1fc3RhdGVfZmluZChjb25zdCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsIGNvbnN0IHhmcm1fYWRkcmVzc190ICpzYWRkcixcbiBcdFx0XHR4c28tXHUwMDNldHlwZSA9IFhGUk1fREVWX09GRkxPQURfUEFDS0VUO1xuIFx0XHRcdHhzby1cdTAwM2VkaXIgPSB4ZG8tXHUwMDNlZGlyO1xuIFx0XHRcdHhzby1cdTAwM2VkZXYgPSBkZXY7XG4mIzQzO1x0XHRcdHhzby1cdTAwM2VpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4gXHRcdFx0eHNvLVx1MDAzZWZsYWdzID0gWEZSTV9ERVZfT0ZGTE9BRF9GTEFHX0FDUTtcbiBcdFx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNnhzby1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4gXHRcdFx0ZXJyb3IgPSBkZXYtXHUwMDNleGZybWRldl9vcHMtXHUwMDNleGRvX2Rldl9zdGF0ZV9hZGQoZGV2LCB4LFxuQEAgLTIwNzEsOCAmIzQzOzIwNzIsMTEgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cChzdHJ1Y3QgeGZybV9zdGF0ZSAqb3JpZyxcbiBcbiBcdHgtXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVx1MDAzZW1vZGVfY2JzO1xuIFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMgXHUwMDI2XHUwMDI2IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUpIHtcbi1cdFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUoeCwgb3JpZykpXG4mIzQzO1x0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2VjbG9uZV9zdGF0ZSh4LCBvcmlnKSkge1xuJiM0MztcdFx0XHRpZiAoIXgtXHUwMDNlbW9kZV9kYXRhKVxuJiM0MztcdFx0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHR4LVx1MDAzZXByb3BzLnJlcWlkID0gbS1cdTAwM2VuZXdfcmVxaWQ7XG5AQCAtMzAxMCw3ICYjNDM7MzAxNCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgXHUwMDI2XHUwMDI2ICFvcHRsZW4pIHtcbiBcdFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICYjNDM7MzA1NCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoZXJyIFx1MDAzZT0gMCkge1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcbiBcdFx0eGZybV9wb2xfcHV0KHBvbCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHRcdHNrX2RzdF9yZXNldChzayk7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG5AQCAtMzI5MSw2ICYjNDM7MzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIFx0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2Vpbml0X3N0YXRlKVxuIFx0XHRcdGVyciA9IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlaW5pdF9zdGF0ZSh4KTtcbiBcdFx0bW9kdWxlX3B1dCh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZW93bmVyKTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2ICF4LVx1MDAzZW1vZGVfZGF0YSlcbiYjNDM7XHRcdFx0eC1cdTAwM2Vtb2RlX2NicyA9IE5VTEw7XG4gXHR9XG4gZXJyb3I6XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbmluZGV4IDYzODQ3OTVlZTZiMjY5Li5kNmRiNjMzMDRiYTZiZCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTEyMDEsMTcgJiM0MzsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLVx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4mIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxuIHtcbi1cdHh1by1cdTAwM2VpZmluZGV4ID0geHNvLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuJiM0MztcdHh1by1cdTAwM2VpZmluZGV4ID0gaWZpbmRleDtcbiBcdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG4gXHRcdHh1by1cdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xuIFx0aWYgKHhzby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKVxuIFx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbiB9XG4gXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0MzsjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxuJiM0MztzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4mIzQzO3tcbiYjNDM7XHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCB4c28tXHUwMDNlZGV2LVx1MDAzZWlmaW5kZXgsIHh1byk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbiYjNDM7XHRcdFx0XHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xuIFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcbkBAIC0xMjIyLDExICYjNDM7MTIzMSwyMiBAQCBzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHR4dW8gPSBubGFfZGF0YShhdHRyKTtcbiBcdG1lbXNldCh4dW8sIDAsIHNpemVvZigqeHVvKSk7XG4tXHR4c29fdG9feHVvKHhzbywgeHVvKTtcbiYjNDM7XHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCBpZmluZGV4LCB4dW8pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCwgc2tiKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIFJFQURfT05DRSh4c28tXHUwMDNlaWZpbmRleCksIHNrYik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgeGZybV9yZWRhY3Qodm9pZClcbiB7XG4gXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfU0VDVVJJVFkpIFx1MDAyNlx1MDAyNlxuQEAgLTE0MzMsOCAmIzQzOzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdFx0XHQgICAgICBcdTAwMjZ4LVx1MDAzZXJlcGxheSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbi1cdGlmKHgtXHUwMDNleHNvLmRldilcbi1cdFx0cmV0ID0gY29weV91c2VyX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4mIzQzO1x0aWYgKFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpKVxuJiM0MztcdFx0cmV0ID0gY29weV91c2VyX3N0YXRlX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcdGlmICh4LVx1MDAzZWlmX2lkKSB7XG5AQCAtMjEwNCwxMyAmIzQzOzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcbiBcdFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XG4gXHRcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcbiBcdFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcbiYjNDM7XHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuIFx0XHRcdGlmICh1dFtpXS5vcHRpb25hbCBcdTAwMjZcdTAwMjYgZGlyID09IFhGUk1fUE9MSUNZX09VVCkge1xuIFx0XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtNb2RlIGluIG9wdGlvbmFsIHRlbXBsYXRlIG5vdCBhbGxvd2VkIGluIG91dGJvdW5kIHBvbGljeVwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcbiBcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7TW9kZSBpbiB0ZW1wbGF0ZSBkb2VzbiYjMzk7dCBzdXBwb3J0IGEgZmFtaWx5IGNoYW5nZVwmIzM0Oyk7XG5AQCAtNDA0Niw4ICYjNDM7NDA2NSw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuIFx0XHRsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoKngtXHUwMDNlY29hZGRyKSk7XG4gXHRpZiAoeC1cdTAwM2Vwcm9wcy5leHRyYV9mbGFncylcbiBcdFx0bCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcbi1cdGlmICh4LVx1MDAzZXhzby5kZXYpXG4tXHRcdCBsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XG4mIzQzO1x0aWYgKFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpKVxuJiM0MztcdFx0bCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCkpO1xuIFx0aWYgKHgtXHUwMDNlcHJvcHMuc21hcmsudiB8IHgtXHUwMDNlcHJvcHMuc21hcmsubSkge1xuIFx0XHRsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC1cdTAwM2Vwcm9wcy5zbWFyay52KSk7XG4gXHRcdGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVx1MDAzZXByb3BzLnNtYXJrLm0pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9JUFRGUyYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BfT0ZGTE9BRCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1BfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICAgJiMzNDt4ZnJtNl9maWxsX2RzdCYjMzQ7LAogICAgJiMzNDt4ZnJtX2Rldl9zdGF0ZV9hZGQmIzM0OywKICAgICYjMzQ7aXB0ZnNfc2tiX2FkZF9mcmFncyYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3NlbmQmIzM0OywKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9maW5kJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwJiMzNDssCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OywKICAgICYjMzQ7X194ZnJtX2luaXRfc3RhdGUmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfdG1wbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxNzExYmNkMmE2NmRmNjRkYjQ1MWU1Njk0OGQwNzc4OGNlYTAwOWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAwNDo0MDozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0L3hmcm0uaAppbmRleCA1MTlhMDE1NmEwNWNhYy4uYTZkNjlhYWE2Y2QyZDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZnJtLmgKQEAgLTE2Miw2ICYjNDM7MTYyLDggQEAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgewogCSAqLwogCXN0cnVjdCBuZXRfZGV2aWNlCSpyZWFsX2RldjsKIAl1bnNpZ25lZCBsb25nCQlvZmZsb2FkX2hhbmRsZTsKJiM0MzsJLyogU25hcHNob3QgdGhlIGF0dGFjaGVkIGRldmljZSBpbmRleCBmb3IgZHVtcCBwYXRocy4gKi8KJiM0MzsJaW50CQkJaWZpbmRleDsKIAl1OAkJCWRpciA6IDI7CiAJdTgJCQl0eXBlIDogMjsKIAl1OAkJCWZsYWdzIDogMjsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5kZXggNGIzZDVjZmRmNmUwMGYuLjU5MzNjNWRhYjA5ZWUxIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtNDAxOCw2ICYjNDM7NDAxOCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF91bnJlYWRhYmxlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBOVUxMOwogfQogCiYjNDM7LyogUmV0dXJucyB0aGUgc2tiIG9uIHN1Y2Nlc3MsIE5VTEwgaWYgZHJvcHBlZCwgb3IgRVJSX1BUUigtRUlOUFJPR1JFU1MpCiYjNDM7ICogaWYgc3RvbGVuIGJ5IGFzeW5jIHhmcm0gY3J5cHRvIChkZWxpdmVyZWQgdmlhIHhmcm1fZGV2X3Jlc3VtZSgpKS4KJiM0MzsgKi8KIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pCiB7CiAJbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7CkBAIC00MDg5LDcgJiM0Mzs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmQKIAkJc2tiLSZndDtwcmV2ID0gc2tiOwogCiAJCXNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7Ci0JCWlmICghc2tiKQomIzQzOwkJaWYgKElTX0VSUl9PUl9OVUxMKHNrYikpCiAJCQljb250aW51ZTsKIAogCQlpZiAoIWhlYWQpCkBAIC00ODYwLDggJiM0Mzs0ODYzLDExIEBAIGludCBfX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiAJCQlnb3RvIHJlY3Vyc2lvbl9hbGVydDsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgJmFtcDthZ2Fpbik7Ci0JCWlmICghc2tiKQomIzQzOwkJaWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHsKJiM0MzsJCQlpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUykKJiM0MzsJCQkJcmMgPSBORVRfWE1JVF9TVUNDRVNTOwogCQkJZ290byBvdXQ7CiYjNDM7CQl9CiAKIAkJSEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jCmluZGV4IDEyNWVhOWE1YjhhMDgyLi4zYjc0OTQ3NWY2ZWQ2NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKQEAgLTg4LDYgJiM0Mzs4OCw3IEBAIHN0YXRpYyBpbnQgeGZybTZfZmlsbF9kc3Qoc3RydWN0IHhmcm1fZHN0ICp4ZHN0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXhkc3QtJmd0O3UucnQ2LnJ0NmlfaWRldiA9IGluNl9kZXZfZ2V0KGRldik7CiAJaWYgKCF4ZHN0LSZndDt1LnJ0Ni5ydDZpX2lkZXYpIHsKIAkJbmV0ZGV2X3B1dChkZXYsICZhbXA7eGRzdC0mZ3Q7dS5kc3QuZGV2X3RyYWNrZXIpOwomIzQzOwkJeGRzdC0mZ3Q7dS5kc3QuZGV2ID0gTlVMTDsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2RldmljZS5jIGIvbmV0L3hmcm0veGZybV9kZXZpY2UuYwppbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9kZXZpY2UuYwpAQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cgogCQllcnIgPSB4LSZndDt0eXBlX29mZmxvYWQtJmd0O3htaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpOwogCQlpZiAoZXJyKSB7CiAJCQlpZiAoZXJyID09IC1FSU5QUk9HUkVTUykKLQkJCQlyZXR1cm4gTlVMTDsKJiM0MzsJCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTsKIAogCQkJWEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7CiAJCQlrZnJlZV9za2Ioc2tiKTsKQEAgLTIyNCw3ICYjNDM7MjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyCiAJCXBza2IgPSBza2IyOwogCX0KIAotCXJldHVybiBza2I7CiYjNDM7CS8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItJmd0O3ByZXYgdG8gdGhlIGxhc3Qgc2VnbWVudCwgYnV0IGFzeW5jCiYjNDM7CSAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtJmd0O3ByZXYuICBSZXBvaW50CiYjNDM7CSAqIGl0IGF0IHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgc28gdmFsaWRhdGVfeG1pdF9za2JfbGlzdCgpIGRvZXMKJiM0MzsJICogbm90IGNoYWluIG9udG8gYSBzZWdtZW50IG5vdyBvd25lZCBieSB0aGUgY3J5cHRvIGVuZ2luZS4KJiM0MzsJICovCiYjNDM7CWlmIChza2IpCiYjNDM7CQlza2ItJmd0O3ByZXYgPSBwc2tiOwomIzQzOwomIzQzOwlyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTsKIApAQCAtMzEzLDYgJiM0MzszMjEsNyBAQCBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsCiAJfQogCiAJeHNvLSZndDtkZXYgPSBkZXY7CiYjNDM7CXhzby0mZ3Q7aWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKIAluZXRkZXZfdHJhY2tlcl9hbGxvYyhkZXYsICZhbXA7eHNvLSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoeHVvLSZndDtmbGFncyAmYW1wOyBYRlJNX09GRkxPQURfSU5CT1VORCkKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuYwppbmRleCBhZDgxMGQxZjk3YzA2Ny4uNTk3YWVkZWFjMjZlYmEgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lwdGZzLmMKQEAgLTQ4MCw2ICYjNDM7NDgwLDcgQEAgc3RhdGljIGludCBpcHRmc19za2JfYWRkX2ZyYWdzKHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAkJX19za2JfZnJhZ19yZWYodG9mcmFnKTsKIAkJc2hpbmZvLSZndDtucl9mcmFncyYjNDM7JiM0Mzs7CiYjNDM7CQlzaGluZm8tJmd0O2ZsYWdzIHw9IFNLQkZMX1NIQVJFRF9GUkFHOwogCiAJCS8qIHNlZSBpZiB3ZSBhcmUgZG9uZSAqLwogCQlmcmFnbGVuID0gdG9mcmFnLSZndDtsZW47CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IDQ1ODkzMTA2MmEwNGVmLi5lYjFiNmY2NzczOWUxZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTU1LDggJiM0Mzs1NSwxMCBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY0KHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICBrYS0mZ3Q7ZW5jYXBfc3BvcnQsIHNvY2tfbmV0X3VpZChuZXQsIE5VTEwpKTsKIAogCXJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleShuZXQsICZhbXA7Zmw0KTsKLQlpZiAoSVNfRVJSKHJ0KSkKJiM0MzsJaWYgKElTX0VSUihydCkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gUFRSX0VSUihydCk7CiYjNDM7CX0KIAogCXNrYl9kc3Rfc2V0KHNrYiwgJmFtcDtydC0mZ3Q7ZHN0KTsKIApAQCAtMTAxLDYgJiM0MzsxMDMsNyBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2KHN0cnVjdCBza19idWZmICpza2IsCiAJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCAmYW1wO2ZsNiwgTlVMTCk7CiAJaWYgKElTX0VSUihkc3QpKSB7CiAJCWxvY2FsX3VubG9ja19uZXN0ZWRfYmgoJmFtcDtuYXRfa2VlcGFsaXZlX3NrX2lwdjYuYmhfbG9jayk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIFBUUl9FUlIoZHN0KTsKIAl9CiAKQEAgLTExOCw3ICYjNDM7MTIxLDYgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAkJCQkJc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkgJiM0MzsKIAkJCQkgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCWNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjsKLQlpbnQgZXJyID0gLUVBRk5PU1VQUE9SVDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCB1ZHBoZHIgKnVoOwogCkBAIC0xNDAsMTYgJiM0MzsxNDIsMTcgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAogCXN3aXRjaCAoa2EtJmd0O2ZhbWlseSkgewogCWNhc2UgQUZfSU5FVDoKLQkJZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7CiYjNDM7CQluYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTsKIAkJYnJlYWs7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKIAljYXNlIEFGX0lORVQ2OgotCQllcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7CiYjNDM7CQluYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7CiAJCWJyZWFrOwogI2VuZGlmCi0JfQotCWlmIChlcnIpCiYjNDM7CWRlZmF1bHQ6CiAJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KIH0KIAogc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggewpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTEzMjksOCAmIzQzOzEzMjksOCBAQCBzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQl9CiAJCX0KIAotCQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmbHQ7IGRiaXRzIHx8Ci0JCSAgICBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHMpCiYjNDM7CQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0cykKIAkJCWNvbnRpbnVlOwogCiAJCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwppbmRleCBjNThjZDAyNGUzYzY3NS4uMzZhNGY2NzkzZWRlZjIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKQEAgLTE1NDcsNiAmIzQzOzE1NDcsNyBAQCB4ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsCiAJCQl4c28tJmd0O3R5cGUgPSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVDsKIAkJCXhzby0mZ3Q7ZGlyID0geGRvLSZndDtkaXI7CiAJCQl4c28tJmd0O2RldiA9IGRldjsKJiM0MzsJCQl4c28tJmd0O2lmaW5kZXggPSBkZXYtJmd0O2lmaW5kZXg7CiAJCQl4c28tJmd0O2ZsYWdzID0gWEZSTV9ERVZfT0ZGTE9BRF9GTEFHX0FDUTsKIAkJCW5ldGRldl9ob2xkKGRldiwgJmFtcDt4c28tJmd0O2Rldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKIAkJCWVycm9yID0gZGV2LSZndDt4ZnJtZGV2X29wcy0mZ3Q7eGRvX2Rldl9zdGF0ZV9hZGQoZGV2LCB4LApAQCAtMjA3MSw4ICYjNDM7MjA3MiwxMSBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwKHN0cnVjdCB4ZnJtX3N0YXRlICpvcmlnLAogCiAJeC0mZ3Q7bW9kZV9jYnMgPSBvcmlnLSZndDttb2RlX2NiczsKIAlpZiAoeC0mZ3Q7bW9kZV9jYnMgJmFtcDsmYW1wOyB4LSZndDttb2RlX2Nicy0mZ3Q7Y2xvbmVfc3RhdGUpIHsKLQkJaWYgKHgtJmd0O21vZGVfY2JzLSZndDtjbG9uZV9zdGF0ZSh4LCBvcmlnKSkKJiM0MzsJCWlmICh4LSZndDttb2RlX2Nicy0mZ3Q7Y2xvbmVfc3RhdGUoeCwgb3JpZykpIHsKJiM0MzsJCQlpZiAoIXgtJmd0O21vZGVfZGF0YSkKJiM0MzsJCQkJeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMOwogCQkJZ290byBlcnJvcjsKJiM0MzsJCX0KIAl9CiAKIAl4LSZndDtwcm9wcy5yZXFpZCA9IG0tJmd0O25ld19yZXFpZDsKQEAgLTMwMTAsNyAmIzQzOzMwMTQsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKQogCWlmIChzb2NrcHRyX2lzX251bGwob3B0dmFsKSAmYW1wOyZhbXA7ICFvcHRsZW4pIHsKIAkJeGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTsKLQkJX19za19kc3RfcmVzZXQoc2spOwomIzQzOwkJc2tfZHN0X3Jlc2V0KHNrKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0zMDUwLDcgJiM0MzszMDU0LDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbikKIAlpZiAoZXJyICZndDs9IDApIHsKIAkJeGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBlcnIsIHBvbCk7CiAJCXhmcm1fcG9sX3B1dChwb2wpOwotCQlfX3NrX2RzdF9yZXNldChzayk7CiYjNDM7CQlza19kc3RfcmVzZXQoc2spOwogCQllcnIgPSAwOwogCX0KIApAQCAtMzI5MSw2ICYjNDM7MzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogCQlpZiAoeC0mZ3Q7bW9kZV9jYnMtJmd0O2luaXRfc3RhdGUpCiAJCQllcnIgPSB4LSZndDttb2RlX2Nicy0mZ3Q7aW5pdF9zdGF0ZSh4KTsKIAkJbW9kdWxlX3B1dCh4LSZndDttb2RlX2Nicy0mZ3Q7b3duZXIpOwomIzQzOwkJaWYgKGVyciAmYW1wOyZhbXA7ICF4LSZndDttb2RlX2RhdGEpCiYjNDM7CQkJeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMOwogCX0KIGVycm9yOgogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IDYzODQ3OTVlZTZiMjY5Li5kNmRiNjMzMDRiYTZiZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV91c2VyLmMKQEAgLTEyMDEsMTcgJiM0MzsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKLQkJICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKQomIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCwKJiM0MzsJCQkgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pCiB7Ci0JeHVvLSZndDtpZmluZGV4ID0geHNvLSZndDtkZXYtJmd0O2lmaW5kZXg7CiYjNDM7CXh1by0mZ3Q7aWZpbmRleCA9IGlmaW5kZXg7CiAJaWYgKHhzby0mZ3Q7ZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pCiAJCXh1by0mZ3Q7ZmxhZ3MgPSBYRlJNX09GRkxPQURfSU5CT1VORDsKIAlpZiAoeHNvLSZndDt0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKQogCQl4dW8tJmd0O2ZsYWdzIHw9IFhGUk1fT0ZGTE9BRF9QQUNLRVQ7CiB9CiAKLXN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MzsjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURQomIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKJiM0MzsJCSAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bykKJiM0Mzt7CiYjNDM7CXhzb190b194dW9faWZpbmRleCh4c28sIHhzby0mZ3Q7ZGV2LSZndDtpZmluZGV4LCB4dW8pOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKJiM0MzsJCQkJICAgICBpbnQgaWZpbmRleCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bzsKIAlzdHJ1Y3QgbmxhdHRyICphdHRyOwpAQCAtMTIyMiwxMSAmIzQzOzEyMzEsMjIgQEAgc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJeHVvID0gbmxhX2RhdGEoYXR0cik7CiAJbWVtc2V0KHh1bywgMCwgc2l6ZW9mKCp4dW8pKTsKLQl4c29fdG9feHVvKHhzbywgeHVvKTsKJiM0MzsJeHNvX3RvX3h1b19pZmluZGV4KHhzbywgaWZpbmRleCwgeHVvKTsKIAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJcmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCB4c28tJmd0O2Rldi0mZ3Q7aWZpbmRleCwgc2tiKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLAomIzQzOwkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJcmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCBSRUFEX09OQ0UoeHNvLSZndDtpZmluZGV4KSwgc2tiKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCB4ZnJtX3JlZGFjdCh2b2lkKQogewogCXJldHVybiBJU19FTkFCTEVEKENPTkZJR19TRUNVUklUWSkgJmFtcDsmYW1wOwpAQCAtMTQzMyw4ICYjNDM7MTQ1Myw4IEBAIHN0YXRpYyBpbnQgY29weV90b191c2VyX3N0YXRlX2V4dHJhKHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCQkJICAgICAgJmFtcDt4LSZndDtyZXBsYXkpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwotCWlmKHgtJmd0O3hzby5kZXYpCi0JCXJldCA9IGNvcHlfdXNlcl9vZmZsb2FkKCZhbXA7eC0mZ3Q7eHNvLCBza2IpOwomIzQzOwlpZiAoUkVBRF9PTkNFKHgtJmd0O3hzby5kZXYpKQomIzQzOwkJcmV0ID0gY29weV91c2VyX3N0YXRlX29mZmxvYWQoJmFtcDt4LSZndDt4c28sIHNrYik7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAJaWYgKHgtJmd0O2lmX2lkKSB7CkBAIC0yMTA0LDEzICYjNDM7MjEyNCwxMiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX3RtcGwoaW50IG5yLCBzdHJ1Y3QgeGZybV91c2VyX3RtcGwgKnV0LCB1MTYgZmFtaWx5LAogCQlzd2l0Y2ggKHV0W2ldLm1vZGUpIHsKIAkJY2FzZSBYRlJNX01PREVfVFVOTkVMOgogCQljYXNlIFhGUk1fTU9ERV9CRUVUOgomIzQzOwkJY2FzZSBYRlJNX01PREVfSVBURlM6CiAJCQlpZiAodXRbaV0ub3B0aW9uYWwgJmFtcDsmYW1wOyBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7CiAJCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O01vZGUgaW4gb3B0aW9uYWwgdGVtcGxhdGUgbm90IGFsbG93ZWQgaW4gb3V0Ym91bmQgcG9saWN5JiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQogCQkJYnJlYWs7Ci0JCWNhc2UgWEZSTV9NT0RFX0lQVEZTOgotCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlpZiAodXRbaV0uZmFtaWx5ICE9IHByZXZfZmFtaWx5KSB7CiAJCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O01vZGUgaW4gdGVtcGxhdGUgZG9lc24mIzM5O3Qgc3VwcG9ydCBhIGZhbWlseSBjaGFuZ2UmIzM0Oyk7CkBAIC00MDQ2LDggJiM0Mzs0MDY1LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpCiAJCWwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZigqeC0mZ3Q7Y29hZGRyKSk7CiAJaWYgKHgtJmd0O3Byb3BzLmV4dHJhX2ZsYWdzKQogCQlsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC0mZ3Q7cHJvcHMuZXh0cmFfZmxhZ3MpKTsKLQlpZiAoeC0mZ3Q7eHNvLmRldikKLQkJIGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTsKJiM0MzsJaWYgKFJFQURfT05DRSh4LSZndDt4c28uZGV2KSkKJiM0MzsJCWwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTsKIAlpZiAoeC0mZ3Q7cHJvcHMuc21hcmsudiB8IHgtJmd0O3Byb3BzLnNtYXJrLm0pIHsKIAkJbCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtJmd0O3Byb3BzLnNtYXJrLnYpKTsKIAkJbCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtJmd0O3Byb3BzLnNtYXJrLm0pKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU3NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYW5kIFJlZmluaW5nIHRoZSBYRlJNIChJUHNlYykgU3Vic3lzdGVtIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSwgYW5kIGltbWVkaWF0ZWx5IEkmIzM5O20gbm90aWNpbmcgYSBnb29kIG1peCBvZiBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIGltcG9ydGFudCBmaXhlcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IHdoZW4gZGVhbGluZyB3aXRoIGEgY29yZSBuZXR3b3JrIHNlY3VyaXR5IGNvbXBvbmVudC4KCkZpcnN0LCB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN0cnVjdCBnZXRzIGEgbmV3IGBpZmluZGV4YCBmaWVsZCBpbiBgaW5jbHVkZS9uZXQveGZybS5oYC4gVGhpcyBsaWtlbHkgYWltcyB0byBpbXByb3ZlIGludGVyZmFjZSBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhlIG9mZmxvYWQgcGF0aC4gTWFrZXMgc2Vuc2U7IGlmIHdlJiMzOTtyZSBvZmZsb2FkaW5nLCB3ZSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIHRyYWZmaWMgb3JpZ2luYXRlcyBvciBpcyBkZXN0aW5lZC4KCkRpdmluZyBpbnRvIGBuZXQvY29yZS9kZXYuY2AsIEkgc2VlIGVycm9yIGhhbmRsaW5nIGZvciBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAuIFRoaXMgaXMgZ29vZDsgaXQgc2hvd3MgYSB0aG91Z2h0ZnVsIGFwcHJvYWNoIHRvIGRlYWxpbmcgd2l0aCBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4gSSYjMzk7bSBnbGFkIHRvIHNlZSB0aGF0IGhhbmRsZWQgaW4gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJlY2F1c2UgdGhvc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucy4KCkluIGBuZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY2AsIHNldHRpbmcgYHhkc3QtJmd0O3UuZHN0LmRldiA9IE5VTExgIGluIGB4ZnJtNl9maWxsX2RzdGAgbWlnaHQgc2VlbSBtaW5vciwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGEgY3J1Y2lhbCBlZGdlIGNhc2UgY2xlYW51cCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzdXNlIG9mIGRhbmdsaW5nIHBvaW50ZXJzLiBBIHN1YnRsZSwgYnV0IHZpdGFsLCBjb3JyZWN0aW9uLgoKYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIGhhcyBhIGZldyBpbnRlcmVzdGluZyBjaGFuZ2VzLiBSZXR1cm5pbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkZXYuY2AsIHNvIEkmIzM5O20gaGFwcHkgdG8gc2VlIHRoYXQgY29uc2lzdGVuY3kuIFRoZSBmaXggZm9yIGBza2ItJmd0O3ByZXZgIHdoZW4gYXN5bmMgY3J5cHRvIHN0ZWFscyB0aGUgU0tCIGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2dpYyBiZXR0ZXIgLSBhc3luYyBjcnlwdG8gaW50ZXJhY3Rpb25zIGNhbiBiZSB0cmlja3ksIHNvIGl0JiMzOTtzIGdvb2QgdG8gc2VlIHRoaXMgYWRkcmVzc2VkIGRpcmVjdGx5LiBUaGUgYHhzby0mZ3Q7aWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleGAgYXNzaWdubWVudCBpbiBgeGZybV9kZXZfc3RhdGVfYWRkYCBhbmQgYHhmcm1fc3RhdGVfZmluZGAgYXJlIGFsc28gY3JpdGljYWwgdXBkYXRlcyB0byBsaW5rIGludGVyZmFjZSBpbmRleCB0byBzdGF0ZSBpbmZvcm1hdGlvbi4KCmBuZXQveGZybS94ZnJtX2lwdGZzLmNgIGFkZHMgYHNoaW5mby0mZ3Q7ZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUdgIGluIGBpcHRmc19za2JfYWRkX2ZyYWdzYC4gVGhpcyBsb29rcyBsaWtlIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBhIHJlcXVpcmVtZW50LCB0byBjb3JyZWN0bHkgaGFuZGxlIHNoYXJlZCBmcmFnbWVudHMgd2l0aGluIElQVEZTLiBBbm90aGVyIGdvb2QsIGZvY3VzZWQgY2hhbmdlLgoKSW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgdGhlIG1lbW9yeSBsZWFrIGZpeGVzIGluIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NGAsIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGFuZCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBieSBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgb24gZXJyb3IgcGF0aHMgYXJlICplc3NlbnRpYWwqLiBNZW1vcnkgbGVha3MgYXJlIHVuYWNjZXB0YWJsZSwgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29tcG9uZW50LCBzbyBrdWRvcyB0byB0aGF0LgoKVGhlIGNoYW5nZSBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2Agd2l0aCB0aGUgcHJlZml4bGVuIGNoZWNrIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAgKCBgJmx0O2AgdG8gYCZndDs9YCkgaXMgYSBjbGFzc2ljIGxvZ2ljIGJ1Zy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBlcnJvcnMgdGhhdCBjYW4gY2F1c2UgYWxsIHNvcnRzIG9mIG9ic2N1cmUgbmV0d29yayBtaXNiZWhhdmlvciwgc28gaXQmIzM5O3MgYSBnb29kIHNwb3QgdG8gaGF2ZSBjYXVnaHQgdGhhdC4KCmBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGFsc28gYWRkcmVzc2VzIGludGVyZmFjZSBpbmRleGVzIGFuZCBlcnJvciBoYW5kbGluZzogc2V0dGluZyBgeHNvLSZndDtpZmluZGV4ID0gZGV2LSZndDtpZmluZGV4YCBpbiBgeGZybV9zdGF0ZV9maW5kYCBhbmQgc2V0dGluZyBgeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMYCBvbiBlcnJvciBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLiBTZXR0aW5nIGB4LSZndDttb2RlX2NicyA9IE5VTExgIG9uIGVycm9yIGhlbHBzIHdpdGggdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdXNpbmcgYHNrX2RzdF9yZXNldChzaylgIGluc3RlYWQgb2YgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgIGlzIGxpa2VseSBhIGNoYW5nZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBwb3RlbnRpYWxseSBpbiByZXNwb25zZSB0byBzb21lIGxvY2tpbmcgY2hhbmdlcy4KCkZpbmFsbHksIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgdXNlcyBgUkVBRF9PTkNFKHhzby0mZ3Q7aWZpbmRleClgIGFuZCBgUkVBRF9PTkNFKHgtJmd0O3hzby5kZXYpYCB0byBlbGltaW5hdGUgZGF0YSByYWNlcy4gVGhpcyBpcyBhIHZlcnkgd2VsY29tZSBpbXByb3ZlbWVudCBpbiBlbnN1cmluZyBzYWZlIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLiBNb3ZpbmcgYFhGUk1fTU9ERV9JUFRGU2AgaW4gYHZhbGlkYXRlX3RtcGxgIG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZ3JvdXBpbmcgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEkga25vdyBgQ09ORklHX1hGUk1gIGVuYWJsZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgYENPTkZJR19YRlJNX0lQVEZTYCBlbmFibGVzIGBYRlJNX0lQVEZTYCwgYW5kIGBDT05GSUdfWEZSTV9VU0VSYCBlbmFibGVzIGBYRlJNX1VTRVJgLiBJJiMzOTtsbCBjb25maXJtIGhvdyBgWEZSTV9OQVRgIGlzIGVuYWJsZWQuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDU0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgWEZSTSBNb2R1bGVzKioKClJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlLm9gIGlzIGRlZmluaXRlbHkgYnVpbHQgYW5kIGluY2x1ZGVkIHdoZW4gdGhlIGBDT05GSUdfWEZSTWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgYW5kIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLi4uIHdoYXQgYWJvdXQgYHhmcm1faXB0ZnMub2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25kaXRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBJcyBpdCBhbHNvIHRpZWQgZGlyZWN0bHkgdG8gYENPTkZJR19YRlJNYD8gT3IgZG9lcyBpdCBkZXBlbmQgb24gZnVydGhlciwgbW9yZSBzcGVjaWZpYyBzdWItb3B0aW9ucyB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLCBwZXJoYXBzIHJlbGF0ZWQgdG8gSVBzZWMgdHJhbnNwb3J0IHNlY3VyaXR5IG9yIGZpcmV3YWxsIGludGVncmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoYXQgcmVsYXRpb25zaGlwIHdpbGwgYmUga2V5IGZvciBrbm93aW5nIHdoZW4gYW5kIHdoZXJlIHRvIGV4cGVjdCBpdHMgcHJlc2VuY2UgaW4gYSBrZXJuZWwgYnVpbGQuIExldCYjMzk7cyBzZWUuLi4gSSBiZXQgSSBjYW4gZmluZCB0aGUgYW5zd2VyIHF1aWNrbHkgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faXB0ZnMubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfWEZSTV9JTlRFUkZBQ0UpICYjNDM7PSB4ZnJtX2ludGVyZmFjZS5vXG5uZXQveGZybS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfWEZSTV9JUFRGUykgJiM0Mzs9IHhmcm1faXB0ZnMub1xubmV0L3hmcm0vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1hGUk1fRVNQSU5UQ1ApICYjNDM7PSBlc3BpbnRjcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlhGUk0gSVBURlMgRGVwZW5kZW5jeSBDb25maXJtYXRpb24qKgoKQWxyaWdodCwgdGhlIG5lZWQgZm9yIGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgZGVmaW5pdGVseSBjb21pbmcgaW50byBmb2N1cy4gTm93IEkgbmVlZCB0byBjb25maXJtIGl0cyBwcmVzZW5jZSBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgYHhmcm1gIGFyY2hpdGVjdHVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBuZXQveGZybS94ZnJtX2RldmljZS5jYC4gVGhpcyBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgZGVwZW5kZW5jaWVzIGFuZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyByZWxhdGVkIHRvIFhGUk0gZGV2aWNlcywgYW5kIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgbGFpZCBvdXQgdGhlcmUuIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZGlyZWN0aXZlcyB3aXRoaW4gYHhmcm1fZGV2aWNlLmNgIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgaW5kZWVkIGEgaGFyZCByZXF1aXJlbWVudCwgb3IgYXQgbGVhc3QgYSBoaWdobHkgcmVjb21tZW5kZWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRvIGVuc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseSBhbmQgdGhlIG1vZHVsZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGRpcmVjdCBkZXBlbmRlbmNpZXMgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMgdGhhdCBtYWtlIHRoaXMgY29ubmVjdGlvbiBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RldmljZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFhGUk0gS2VybmVsIENvZGUqKgoKUmlnaHQsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBidWlsdCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gR2l2ZW4gdGhhdCwgbXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlIHdvdWxkIGJlIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmU7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMgYmV0d2VlbiB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBrZXJuZWwmIzM5O3MgWEZSTSBzdWJzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHVzZXItc3BhY2UgY29tcG9uZW50cyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUga2VybmVsLXNpZGUgc3RydWN0dXJlcywgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV91c2VyLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdD02NT1pbmhlcml0cyB0aGUgdmFsdWUgZnJvbSB0aGUgZXhpc3RpbmcgU0EgKG9taXQtdG8taW5oZXJpdCkuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04MC0gICAqIC0gYGBYRlJNQV9PRkZMT0FEX0RFVmBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0OjgxOiAgICAgLSBIYXJkd2FyZSBvZmZsb2FkIGNvbmZpZ3VyYXRpb24gKGBgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkYGApLiBBYnNlbnRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fbWlncmF0ZV9zdGF0ZS5yc3QtODItICAgICAgIGNvcGllcyBvZmZsb2FkIGZyb20gdGhlIGV4aXN0aW5nIFNBLiBXaGVuXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTY4Mj1zdHJ1Y3QgeGZybV9taWdyYXRlIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtNjg3LVx0c3RydWN0IHhmcm1fZW5jYXBfdG1wbCAqZW5jYXA7XG5pbmNsdWRlL25ldC94ZnJtLmg6Njg4Olx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XG5pbmNsdWRlL25ldC94ZnJtLmgtNjg5LVx0c3RydWN0IHhmcm1fbWFyayAgICAgICAgb2xkX21hcms7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE5MzA9aW50IHhmcm1fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE5MzQtXHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkzNTpcdFx0IHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xOTM2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTI0PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTI1Olx0XHQgICAgICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyNi1cdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXG5pbmNsdWRlL25ldC94ZnJtLmg6MjEyODpcdFx0XHRzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bywgdTggZGlyLFxuaW5jbHVkZS9uZXQveGZybS5oLTIxMjktXHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjE5Nj1zdGF0aWMgaW5saW5lIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTk3Olx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTk4LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTIyMTE9c3RhdGljIGlubGluZSBpbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXG5pbmNsdWRlL25ldC94ZnJtLmg6MjIxMjpcdFx0XHRcdCAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXG5pbmNsdWRlL25ldC94ZnJtLmgtMjIxMy1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTI3Mj1lbnVtIHhmcm1fYWVfZnR5cGVfdCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODUtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjI4NjpzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODctXHRfX3U4XHRcdHR5cGU7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD0yOTM9ZW51bSB4ZnJtX2F0dHJfdHlwZV90IHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMC1cdFhGUk1BX1NBLFx0XHQvKiBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzAxOlx0WEZSTUFfUE9MSUNZLFx0XHQvKnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMDItXHRYRlJNQV9TRUNfQ1RYLFx0XHQvKiBzdHJ1Y3QgeGZybV9zZWNfY3R4ICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMDktXHRYRlJNQV9MQVNUVVNFRCxcdFx0LyogX191NjQgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzEwOlx0WEZSTUFfUE9MSUNZX1RZUEUsXHQvKiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzExLVx0WEZSTUFfTUlHUkFURSxcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMyMS1cdFhGUk1BX1BBRCxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzIyOlx0WEZSTUFfT0ZGTE9BRF9ERVYsXHQvKiBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzIzLVx0WEZSTUFfU0VUX01BUkssXHRcdC8qIF9fdTMyICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00MzE9c3RydWN0IHhmcm1fdXNlcnNwaV9pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQzNi1cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDM3OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQzOC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yXHRcdHNlbDtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1NC1cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDU1OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00NTYtXHRzdHJ1Y3QgeGZybV9zZWxlY3Rvclx0XHRzZWw7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00NjE9c3RydWN0IHhmcm1fdXNlcl9hY3F1aXJlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2NC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yXHRcdHNlbDtcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDY1Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXHRwb2xpY3k7XG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2Ni1cdF9fdTMyXHRcdFx0XHRhYWxnb3M7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00Nzc9c3RydWN0IHhmcm1fdXNlcl9wb2xleHBpcmUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo0Nzg6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm9cdHBvbDtcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDc5LVx0X191OFx0XHRcdFx0aGFyZDtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU0ND1zdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlciB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTEtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU1MjpzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTMtXHRpbnRcdFx0XHRcdGlmaW5kZXg7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzAtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MTpzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzItI2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfVU5TUEVDXHQwXG4tLVxubmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlLTIxLW9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTk9c3RydWN0IGNvbXBhdF94ZnJtX2xpZmV0aW1lX2N1ciB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy0yMi1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjM6c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTI0LVx0c3RydWN0IHhmcm1fc2VsZWN0b3Igc2VsO1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NDU9c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJfYWNxdWlyZSB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy00OC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yIHNlbDtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6NDk6XHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbGljeTtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNTAtXHQvKiA0IGJ5dGVzIGFkZGl0aW9uYWwgcGFkZGluZyBvbiA2NGJpdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NjY9c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJfcG9sZXhwaXJlIHtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Njc6XHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbDtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjgtXHQvKiA4IGJ5dGVzIGFkZGl0aW9uYWwgcGFkZGluZyBvbiA2NGJpdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NzQ9c3RhdGljIGNvbnN0IGludCBjb21wYXRfbXNnX21pbltYRlJNX05SX01TR1RZUEVTXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTc3LVx0W1hGUk1fTVNHX0dFVFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJzYV9pZCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjc4Olx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8pLFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo3OTpcdFtYRlJNX01TR19ERUxQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2lkKSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODA6XHRbWEZSTV9NU0dfR0VUUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTgxLVx0W1hGUk1fTVNHX0FMTE9DU1BJICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc3BpX2luZm8pLFxuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtODMtXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJfZXhwaXJlKSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODQ6XHRbWEZSTV9NU0dfVVBEUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTg1LVx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc2FfaW5mbyksXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy05MS1cdFtYRlJNX01TR19SRVBPUlQgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX3JlcG9ydCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjkyOlx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV9jb21wYXQuYy05My1cdFtYRlJNX01TR19ORVdTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYz0xMDE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGNvbXBhdF9wb2xpY3lbWEZSTUFfTUFYJiM0MzsxXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEwMy1cdFtYRlJNQV9TQV1cdFx0PSB7IC5sZW4gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc2FfaW5mbyl9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMDQ6XHRbWEZSTUFfUE9MSUNZXVx0XHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYy0xMDUtXHRbWEZSTUFfTEFTVFVTRURdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTExOS1cdFtYRlJNQV9DT0FERFJdXHRcdD0geyAubGVuID0gc2l6ZW9mKHhmcm1fYWRkcmVzc190KSB9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjA6XHRbWEZSTUFfUE9MSUNZX1RZUEVdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTIxLVx0W1hGUk1BX01JR1JBVEVdXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEyOC1cdFtYRlJNQV9BRERSRVNTX0ZJTFRFUl1cdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX2FkZHJlc3NfZmlsdGVyKSB9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjk6XHRbWEZSTUFfT0ZGTE9BRF9ERVZdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpIH0sXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEzMC1cdFtYRlJNQV9TRVRfTUFSS11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTIzOT1zdGF0aWMgaW50IHhmcm1feGxhdGU2NF9hdHRyKHN0cnVjdCBza19idWZmICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKnNyYylcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTI1NC1cdGNhc2UgWEZSTUFfUE9MSUNZOlxubmV0L3hmcm0veGZybV9jb21wYXQuYzoyNTU6XHRcdHJldHVybiB4ZnJtX25sYV9jcHkoZHN0LCBzcmMsIFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbykpO1xubmV0L3hmcm0veGZybV9jb21wYXQuYy0yNTYtXHRjYXNlIFhGUk1BX1NFQ19DVFg6XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYz02NDU9c3RhdGljIGludCB4ZnJtX3VzZXJfcG9saWN5X2NvbXBhdCh1OCAqKnBkYXRhMzIsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0Ni17XG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NzpcdHN0cnVjdCBjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8gKnAgPSAodm9pZCAqKSpwZGF0YTMyO1xubmV0L3hmcm0veGZybV9jb21wYXQuYy02NDgtXHR1OCAqc3JjX3RlbXBsYXRlcywgKmRzdF90ZW1wbGF0ZXM7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDA6XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQxLVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MzU5PWludCB4ZnJtX2Rldl9wb2xpY3lfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fcG9saWN5ICp4cCxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYwOlx0XHRcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2MS1cdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NjU2PWludCB4ZnJtX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDY1OS1cdFx0IHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwLCB1MzIgaWZfaWQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ2NjA6XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NjYxLXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMDU6XHRcdFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwNi17XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTIxNT1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE2Olx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE3LXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjIyPXN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWRfaWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjQte1xubmV0L3hmcm0veGZybV91c2VyLmM6MTIyNTpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTIyNi1cdHN0cnVjdCBubGF0dHIgKmF0dHI7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTk4MT1zdGF0aWMgaW50IHZlcmlmeV9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTk5Ny1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE5OTg6c3RhdGljIGludCB2ZXJpZnlfbmV3cG9saWN5X2luZm8oc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwLFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk5OS1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjE4OT1zdGF0aWMgaW50IGNvcHlfZnJvbV91c2VyX3BvbGljeV90eXBlKHU4ICp0cCwgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTItXHRzdHJ1Y3QgbmxhdHRyICpydCA9IGF0dHJzW1hGUk1BX1BPTElDWV9UWVBFXTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIxOTM6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKnVwdDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTQtXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMDktXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMjEwOnN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX3BvbGljeShzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLCBzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnApXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjExLXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjIxLVxubmV0L3hmcm0veGZybV91c2VyLmM6MjIyMjpzdGF0aWMgdm9pZCBjb3B5X3RvX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCwgaW50IGRpcilcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMjMte1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIyMzc9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIyMzg6XHRcdFx0XHRcdFx0IHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMzktXHRcdFx0XHRcdFx0IHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yMjg0PXN0YXRpYyBpbnQgeGZybV9hZGRfcG9saWN5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyODgtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6MjI4OTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyOTAtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIzNzc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdXNlcnBvbGljeV90eXBlX2F0dHJzaXplKHZvaWQpXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM3OS0jaWZkZWYgQ09ORklHX1hGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0veGZybV91c2VyLmM6MjM4MDpcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlKSk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzgxLSNlbHNlXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjM4Nz1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4OC17XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzg5Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHVwdDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzOTAtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzkxOlx0LyogU2FkbHkgdGhlcmUgYXJlIHR3byBob2xlcyBpbiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzOTItXHRtZW1zZXQoXHUwMDI2dXB0LCAwLCBzaXplb2YodXB0KSk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjQwNT1zdGF0aWMgaW50IGR1bXBfb25lX3BvbGljeShzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLCBpbnQgZGlyLCBpbnQgY291bnQsIHZvaWQgKnB0cilcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNDA3LVx0c3RydWN0IHhmcm1fZHVtcF9pbmZvICpzcCA9IHB0cjtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI0MDg6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnA7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNDA5LVx0c3RydWN0IHNrX2J1ZmYgKmluX3NrYiA9IHNwLVx1MDAzZWluX3NrYjtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTE0PXN0YXRpYyBpbnQgeGZybV9ub3RpZnlfdXNlcnBvbGljeShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTE1LXtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1MTY6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjUxNy1cdGludCBsZW4gPSBOTE1TR19BTElHTihzaXplb2YoKnVwKSk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0NS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NDY6c3RhdGljIGJvb2wgeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKF9fdTggcG9saWN5KVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjU1Mj1zdGF0aWMgaW50IHhmcm1fc2V0X2RlZmF1bHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU1NS1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTU2Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0ICp1cCA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTctXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTU4Olx0aWYgKHhmcm1fdXNlcnBvbGljeV9pc192YWxpZCh1cC1cdTAwM2VpbikpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTU5LVx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0lOXSwgdXAtXHUwMDNlaW4pO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjU2MC1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NjE6XHRpZiAoeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKHVwLVx1MDAzZWZ3ZCkpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYyLVx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0ZXRF0sIHVwLVx1MDAzZWZ3ZCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MjU2NDpcdGlmICh4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQodXAtXHUwMDNlb3V0KSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NjUtXHRcdFdSSVRFX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSwgdXAtXHUwMDNlb3V0KTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTczPXN0YXRpYyBpbnQgeGZybV9nZXRfZGVmYXVsdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTc4LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVx1MDAzZXNrKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1Nzk6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnJfdXA7XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTgwOlx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQpKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1ODEtXHR1MzIgcG9ydGlkID0gTkVUTElOS19DQihza2IpLnBvcnRpZDtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNjAzPXN0YXRpYyBpbnQgeGZybV9nZXRfcG9saWN5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI2MDgtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xubmV0L3hmcm0veGZybV91c2VyLmM6MjYwOTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnA7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNjEwLVx0dTggdHlwZSA9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTjtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yOTM3PXN0YXRpYyBpbnQgeGZybV9hZGRfcG9sX2V4cGlyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yOTQzLVx0c3RydWN0IHhmcm1fdXNlcl9wb2xleHBpcmUgKnVwID0gbmxtc2dfZGF0YShubGgpO1xubmV0L3hmcm0veGZybV91c2VyLmM6Mjk0NDpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IFx1MDAyNnVwLVx1MDAzZXBvbDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI5NDUtXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxODM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4NS17XG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTg2Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqcGkgPSBubG1zZ19kYXRhKG5saCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTg3LVx0c3RydWN0IHhmcm1fbWlncmF0ZSBtW1hGUk1fTUFYX0RFUFRIXSA9IHt9O1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTMtXHRzdHJ1Y3QgeGZybV9lbmNhcF90bXBsICAqZW5jYXAgPSBOVUxMO1xubmV0L3hmcm0veGZybV91c2VyLmM6MzE5NDpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvID0gTlVMTDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTUtXHR1MzIgaWZfaWQgPSAwO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMTMtXHRcdChtLVx1MDAzZWVuY2FwID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwpKSA6IDApICYjNDM7XG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzE0Olx0XHQobS1cdTAwM2V4dW8gPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSkgOiAwKSAmIzQzO1xubmV0L3hmcm0veGZybV91c2VyLmMtMzMxNS1cdFx0KG0tXHUwMDNlbmV3X21hcmsgPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fbWFyaykpIDogMCkgJiM0Mztcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzQzPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDctXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6MzM0ODpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCB4dW8gPSB7fTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDktXHRzdHJ1Y3QgeGZybV9taWdyYXRlIG0gPSB7fTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTcxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fbWlncmF0ZV9tc2dzaXplKGludCBudW1fbWlncmF0ZSwgaW50IHdpdGhfa21hLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1NzMte1xubmV0L3hmcm0veGZybV91c2VyLmM6MzU3NDpcdHJldHVybiBOTE1TR19BTElHTihzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCkpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTc1LVx0ICAgICAgJiM0MzsgKHdpdGhfa21hID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2ttYWRkcmVzcykpIDogMClcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTgxPXN0YXRpYyBpbnQgYnVpbGRfbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1ODYtXHRjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptcDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1ODc6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkICpwb2xfaWQ7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTg4LVx0c3RydWN0IG5sbXNnaGRyICpubGg7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzY1OT1jb25zdCBpbnQgeGZybV9tc2dfbWluW1hGUk1fTlJfTVNHVFlQRVNdID0ge1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjItXHRbWEZSTV9NU0dfR0VUU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnNhX2lkKSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjM6XHRbWEZSTV9NU0dfTkVXUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pbmZvKSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjQ6XHRbWEZSTV9NU0dfREVMUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjY1Olx0W1hGUk1fTVNHX0dFVFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY2Ni1cdFtYRlJNX01TR19BTExPQ1NQSSAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc3BpX2luZm8pLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjgtXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcl9leHBpcmUpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2OTpcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2luZm8pLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3MC1cdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaW5mbyksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3Ni1cdFtYRlJNX01TR19SRVBPUlQgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX3JlcG9ydCksXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjc3Olx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3OC1cdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzY4MS1cdFtYRlJNX01TR19NQVBQSU5HICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX21hcHBpbmcpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MjpcdFtYRlJNX01TR19TRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2RlZmF1bHQpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MzpcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2RlZmF1bHQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY4NC1cdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzY5MD1jb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB4ZnJtYV9wb2xpY3lbWEZSTUFfTUFYJiM0MzsxXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjkyLVx0W1hGUk1BX1NBXVx0XHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyl9LFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY5MzpcdFtYRlJNQV9QT0xJQ1ldXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY5NC1cdFtYRlJNQV9MQVNUVVNFRF1cdD0geyAudHlwZSA9IE5MQV9VNjR9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MDgtXHRbWEZSTUFfQ09BRERSXVx0XHQ9IHsgLmxlbiA9IHNpemVvZih4ZnJtX2FkZHJlc3NfdCkgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MDk6XHRbWEZSTUFfUE9MSUNZX1RZUEVdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTAtXHRbWEZSTUFfTUlHUkFURV1cdFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlKSB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTctXHRbWEZSTUFfQUREUkVTU19GSUxURVJdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlcikgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MTg6XHRbWEZSTUFfT0ZGTE9BRF9ERVZdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzE5LVx0W1hGUk1BX1NFVF9NQVJLXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQwMzk9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtNDA2OC1cdGlmIChSRUFEX09OQ0UoeC1cdTAwM2V4c28uZGV2KSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQwNjk6XHRcdGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQwNzAtXHRpZiAoeC1cdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cdTAwM2Vwcm9wcy5zbWFyay5tKSB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9NDI1NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX2NvbXBpbGVfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjU4LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6NDI1OTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IChzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKilkYXRhO1xubmV0L3hmcm0veGZybV91c2VyLmMtNDI2MC1cdHN0cnVjdCB4ZnJtX3VzZXJfdG1wbCAqdXQgPSAoc3RydWN0IHhmcm1fdXNlcl90bXBsICopIChwICYjNDM7IDEpO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQzNzQ9c3RhdGljIGludCB4ZnJtX25vdGlmeV9wb2xpY3koc3RydWN0IHhmcm1fcG9saWN5ICp4cCwgaW50IGRpciwgY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQzNzctXHRzdHJ1Y3QgbmV0ICpuZXQgPSB4cF9uZXQoeHApO1xubmV0L3hmcm0veGZybV91c2VyLmM6NDM3ODpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzk6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkICppZDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQzODAtXHRzdHJ1Y3Qgbmxtc2doZHIgKm5saDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYz0xMTAxPXN0YXRpYyBpbnQgeGZybV9wb2xpY3lfYWRkKGludCB4ZnJtX3NvY2ssIHVpbnQzMl90IHNlcSwgdWludDMyX3Qgc3BpLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTExMDYtXHRcdHN0cnVjdCBubG1zZ2hkclx0XHRcdG5oO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmM6MTEwNzpcdFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXHRpbmZvO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTEwOC1cdFx0Y2hhclx0XHRcdFx0YXR0cmJ1ZltNQVhfUEFZTE9BRF07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmM9MTE3Nj1zdGF0aWMgaW50IHhmcm1fcG9saWN5X2RlbChpbnQgeGZybV9zb2NrLCB1aW50MzJfdCBzZXEsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTE4MS1cdFx0c3RydWN0IG5sbXNnaGRyXHRcdFx0bmg7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoxMTgyOlx0XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkXHRpZDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTExODMtXHRcdGNoYXJcdFx0XHRcdGF0dHJidWZbTUFYX1BBWUxPQURdO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTIwODc9c3RhdGljIGludCB3cml0ZV9wcm90b19wbGFuKGludCBmZCwgaW50IHByb3RvKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTIxMzMtICogICBzaXplb2YoeGZybV91c2Vyc2FfaW5mbykgICAgID0gMjIwICB8ICBzaXplb2YoeGZybV91c2Vyc2FfaW5mbykgICAgID0gMjI0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoyMTM0OiAqICAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2NCAgfCAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2OFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMjEzNS0gKiAgIHNpemVvZih4ZnJtX3VzZXJzcGlfaW5mbykgICAgPSAyMjggIHwgIHNpemVvZih4ZnJtX3VzZXJzcGlfaW5mbykgICAgPSAyMzJcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jPTE0NTI9c3RhdGljIGludCBjb25maWdfeGZybV9wb2xpY3koaW50IHNkLCBzdHJ1Y3Qgc29ja19hcmdzICphcmdzKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNDUzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmM6MTQ1NDpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyBwb2xpY3kgPSB7fTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmMtMTQ1NS1cdGludCB0eXBlID0gVURQX0VOQ0FQX0VTUElOVURQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkyMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlhGUk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgWEZSTSBjb25maWd1cmF0aW9uLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19YRlJNX1VTRVJgIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4gZm9yIHVzZXItc3BhY2UgY29udHJvbC4gSG1tLCB3aGF0IGFib3V0IGBDT05GSUdfWEZSTV9PRkZMT0FEYD8gSXQmIzM5O3MgYmVlbiBhIHdoaWxlIHNpbmNlIEkgcGxheWVkIGFyb3VuZCB3aXRoIGhhcmR3YXJlIG9mZmxvYWRpbmcgc3VwcG9ydC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBpbmNsdWRlL25ldC94ZnJtLmhgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBsb2NhdGUgdGhlIGB4ZnJtX2Rldl9vZmZsb2FkYCBzeW1ib2wgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhbmQgd2hldGhlciBpdCYjMzk7cyBhcHByb3ByaWF0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBlbmFibGluZyBldmVyeXRoaW5nIG5lY2Vzc2FyeSwgYnV0IG5vdGhpbmcgdW5uZWNlc3NhcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZGV2X29mZmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGZybS5oPTE0NT1lbnVtIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMTQ4LVxuaW5jbHVkZS9uZXQveGZybS5oOjE0OTpzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTUwLVx0LyogVGhlIGRldmljZSBmb3IgdGhpcyBvZmZsb2FkLlxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTA9c3RydWN0IHhmcm1fc3RhdGUge1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0yOTMtXG5pbmNsdWRlL25ldC94ZnJtLmg6Mjk0Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgeHNvO1xuaW5jbHVkZS9uZXQveGZybS5oLTI5NS1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9NjM0PXN0cnVjdCB4ZnJtX3BvbGljeSB7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTY2Ni1cbmluY2x1ZGUvbmV0L3hmcm0uaDo2Njc6XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4ZG87XG5pbmNsdWRlL25ldC94ZnJtLmgtNjY4LX07XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE3MjM9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbmluY2x1ZGUvbmV0L3hmcm0uaC0xNzI0LXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzI1Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNngtXHUwMDNleHNvO1xuaW5jbHVkZS9uZXQveGZybS5oLTE3MjYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhkby1cdTAwM2VkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTI3PWludCB4ZnJtX2Rldl9wb2xpY3lfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fcG9saWN5ICp4cCxcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQveGZybS5oOjIxMzA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTMxLXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEzND1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfc3RhdGVfYWR2YW5jZV9lc24oc3RydWN0IHhmcm1fc3RhdGUgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEzNS17XG5pbmNsdWRlL25ldC94ZnJtLmg6MjEzNjpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTM3LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4c28tXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjE2MT1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfcG9saWN5X2RlbGV0ZShzdHJ1Y3QgeGZybV9wb2xpY3kgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE2Mi17XG5pbmNsdWRlL25ldC94ZnJtLmg6MjE2MzpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcdTAwMjZ4LVx1MDAzZXhkbztcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTY0LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cdTAwM2VkZXY7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTIxNzA9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTcxLXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTcyOlx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNngtXHUwMDNleGRvO1xuaW5jbHVkZS9uZXQveGZybS5oLTIxNzMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0geGRvLVx1MDAzZWRldjtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjIyMj1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfcG9saWN5X2ZyZWUoc3RydWN0IHhmcm1fcG9saWN5ICp4KVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI1LVxuaW5jbHVkZS9uZXQveGZybS5oOjIyMjY6c3RhdGljIGlubGluZSBib29sIHhmcm1fZGV2X29mZmxvYWRfb2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHhmcm1fc3RhdGUgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjIyNy17XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQ1LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjQ2Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFx1MDAyNngtXHUwMDNleHNvO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNDctXHR4ZnJtX2FkZHJlc3NfdCAqc2FkZHI7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTk9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzYyLXtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYzOlx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNnhwLVx1MDAzZXhkbztcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY0LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTQxOD1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX2Rldl9wb2xpY3lfYWRkKTtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDE5LVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzo0MjA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy00MjEte1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDczLX1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6NDc0OkVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fZGV2X29mZmxvYWRfb2spO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy00NzUtXG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYz03NTA9aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc3Mi1cdGlmICh4LVx1MDAzZXhzby50eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc3MzpcdFx0aWYgKCF4ZnJtX2Rldl9vZmZsb2FkX29rKHNrYiwgeCkpIHtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzc0LVx0XHRcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1PVVRFUlJPUik7XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03OTQtXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc5NTpcdGlmICh4ZnJtX2Rldl9vZmZsb2FkX29rKHNrYiwgeCkpIHtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzk2LVx0XHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjY9dm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY3LXtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3Njg6XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXHUwMDI2eC1cdTAwM2V4c287XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY5LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4c28tXHUwMDNlZGV2KTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9NzgwPXZvaWQgeGZybV9kZXZfc3RhdGVfZnJlZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03ODEte1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc4MjpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03ODMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhzby1cdTAwM2VkZXYpO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04ODY9eGZybV9kZXZfc3RhdGVfZmx1c2hfc2VjY3R4X2NoZWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB0YXNrX3ZhbGlkKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTEtXHRcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg5MjpcdFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTMtXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk2NC1cdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6OTY1Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NjYtXHRpbnQgaSwgZXJyID0gMCwgY250ID0gMDtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTEzMT1zdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKl9feGZybV9zdGF0ZV9sb29rdXBfYWxsKGNvbnN0IHN0cnVjdCB4ZnJtX2hhc2hfc3RhdGVfcHRycyAqc3RhdGVfcHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTEzNS1cdFx0XHRcdFx0XHQgIHVuc2lnbmVkIHNob3J0IGZhbWlseSxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTM2Olx0XHRcdFx0XHRcdCAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbylcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTM3LXtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTM1Nj14ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDItXHRcdGlmIChwb2wtXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTQzOlx0XHRcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcdTAwMjZwb2wtXHUwMDNleGRvO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1NDQ6XHRcdFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFx1MDAyNngtXHUwMDNleHNvO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDUtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cdTAwM2VkZXY7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE2MDEtI2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNjAyOlx0XHRcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNjAzLVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExODM9c3RhdGljIGludCBjb3B5X3NlY19jdHgoc3RydWN0IHhmcm1fc2VjX2N0eCAqcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjAzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIwNDpzdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA1LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE0LSNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE1OnN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTYtXHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjIxLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIyMjpzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjMtXHRcdFx0XHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjM5OnN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDAte1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjQ0OnN0YXRpYyBpbnQgY29weV91c2VyX3N0YXRlX29mZmxvYWQoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBlbmFibGVkIGJlY2F1c2UgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdGhlIGB4ZnJtX2Rldl9vZmZsb2FkYCBsb2dpYy4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgaXNzdWUuCgpOb3csIGxldCYjMzk7cyBqdXN0IHJ1biB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgWEZSTWAsIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGFuZCwgb2YgY291cnNlLCB0aGUgb25lIEkgbWVudGlvbmVkIGFscmVhZHk6IGBYRlJNX09GRkxPQURgLgoKSSYjMzk7bSBwYXVzaW5nIGJyaWVmbHkgb24gYFhGUk1fTkFUYCwgdGhvdWdoLiBJdCYjMzk7cyBhIGJpdCBvZiBhIGdyYXkgYXJlYSBpbiBteSBtZW1vcnkuIElzIGl0IGFjdHVhbGx5IGBDT05GSUdfWEZSTV9OQVRgIGFzIGEgc2VwYXJhdGUgb3B0aW9uLCBvciBpcyB0aGUgTkFUIGZ1bmN0aW9uYWxpdHkganVzdCBpbXBsaWNpdGx5IHRpZWQgdG8gYENPTkZJR19YRlJNYD8gVG8gYmUgc3VyZSwgSSBzaG91bGQgcmVhbGx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGJ1aWxkaW5nIHNvbWV0aGluZyBsaWtlIGB4ZnJtX25hdF9rZWVwYWxpdmUub2AuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBmaWxlIGlzIGJ1aWx0IG9ubHkgaWYgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLCBidXQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIHNwZWNpZmljIGBDT05GSUdfWEZSTV9OQVRgLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQmIzM5O3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IGV2ZW4gZXhpc3RzIGFuZCB0aGF0IGl0JiMzOTtzIHNlcGFyYXRlLCBvciBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBqdXN0IHBhcnQgb2YgdGhlIGNvcmUgWEZSTSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19YRlJNX05BVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzQ0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O3ZlIGdvdCB0byBkbyBpcyBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIG9wdGlvbnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHdhcyBsb29raW5nIGZvciBgQ09ORklHX1hGUk1fTkFUYCwgYW5kLCB3ZWxsLCBpdCBhcHBlYXJzIHRoYXQgcGFydGljdWxhciBmbGFnIGlzbiYjMzk7dCBkZWZpbmVkLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjYXNlIG9mIGVpdGhlciBhIHR5cG8sIGFuIG91dGRhdGVkIHJlZmVyZW5jZSwgb3IgcGVyaGFwcyB0aGUgZnVuY3Rpb25hbGl0eSBpdCByZXByZXNlbnRzIGlzIGZvbGRlZCBpbnRvIHNvbWV0aGluZyBlbHNlLgoKU2luY2UgYENPTkZJR19YRlJNX05BVGAgaXNuJiMzOTt0IHRoZXJlLCBpdCYjMzk7cyB0aW1lIHRvIHNoaWZ0IGdlYXJzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgZm9yIGBDT05GSUdfWEZSTV9NSUdSQVRFYC4gSG9wZWZ1bGx5LCB0aGlzIGV4aXN0cywgYW5kIGV2ZW4gaWYgbm90LCBpdCBwcm92aWRlcyBzb21lIHVzZWZ1bCBjb250ZXh0LCBvciB3aWxsIHBvaW50IG1lIGluIHRoZSBkaXJlY3Rpb24gb2Ygd2hlcmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG1heSByZXNpZGUuIE1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIHNhbWUgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBhdCBsZWFzdCBhIHJlbGF0ZWQgYXJlYSBvZiBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24gdGhhdCBJIHNob3VsZCBjb25zaWRlci4gS25vd2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19YRlJNX01JR1JBVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdD0xOTE9VXNlcnNwYWNlIGNhbiBwcm9iZSBmb3Iga2VybmVsIHN1cHBvcnQgYnkgc2VuZGluZyBhIG1pbmltYWxcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5NS0gIGlzIG91dCBvZiByYW5nZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdDoxOTY6LSBgYC1FTk9QUk9UT09QVGBgOiBtZXNzYWdlIHR5cGUgaXMga25vd24gYnV0IGBgQ09ORklHX1hGUk1fTUlHUkFURWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5Ny0gIGlzIG5vdCBlbmFibGVkXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01OT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NjA6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTYxLUNPTkZJR19YRlJNX1NUQVRJU1RJQ1M9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz01Mz1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZy01NS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00OT1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6NTA6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTUxLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc9NTY9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NTc6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNTgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo0NzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZy00OC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTQ4PUNPTkZJR19UTFM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjQ5OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTUwLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnPTQ3PUNPTkZJR19UTFM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz02Nz1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo2ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy02OS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9NDU9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo0NjpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTQ3LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjQ3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctNDgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjQ4OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9NDI9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc9NDM9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NDQ6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctNDUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzY9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy0zOC1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz00ND1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6NDU6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUPXlcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTkwOT1pbnQgeGZybV9za19wb2xpY3lfaW5zZXJ0KHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHhmcm1fcG9saWN5ICpwb2wpO1xuaW5jbHVkZS9uZXQveGZybS5oLTE5MTAtXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkxMTojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxuaW5jbHVkZS9uZXQveGZybS5oLTE5MTItaW50IGttX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMDM1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fcmVwbGF5X3N0YXRlX2Vzbl9sZW4oc3RydWN0IHhmcm1fcmVwbGF5X3N0YXRlX2VzbiAqcmVwbGF5X2Vzbilcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjAzOS1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMDQwOiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5pbmNsdWRlL25ldC94ZnJtLmgtMjA0MS1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3JlcGxheV9jbG9uZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ0ODQ9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9hdWRpdF9wb2xpY3lfZGVsZXRlKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0ODYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ0ODc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDQ4OC1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTk0OT1FWFBPUlRfU1lNQk9MKHhmcm1fc3RhdGVfYWRkKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTUwLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTUyLXN0YXRpYyBpbmxpbmUgaW50IGNsb25lX3NlY3VyaXR5KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgeGZybV9zZWNfY3R4ICpzZWN1cml0eSlcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9Mjg4ND1FWFBPUlRfU1lNQk9MKGttX3BvbGljeV9leHBpcmVkKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg1LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjI4ODY6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg3LWludCBrbV9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX3NlbGVjdG9yICpzZWwsIHU4IGRpciwgdTggdHlwZSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIxNDojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNS1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzA0Mj1zdGF0aWMgaW50IHhmcm1fYWRkX2FjcXVpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzExNi1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxMTc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTgtc3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgeGZybV9taWdyYXRlICptYSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTMyPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTM5OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQwLXN0YXRpYyBpbnQgY29weV90b191c2VyX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fbWlncmF0ZSAqbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIG9mIGl0IGJvaWxzIGRvd24gdG8gdGhlIGB4c29fdG9feHVvYCBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZCB0byBjb252ZXJ0IGRhdGEgZnJvbSBhbiBgeGZybV9kZXZfb2ZmbG9hZGAgc3RydWN0dXJlIChgeHNvYCkgdG8gYW4gYHhmcm1fdXNlcl9vZmZsb2FkYCBzdHJ1Y3R1cmUgKGB4dW9gKS4gQW5kIG5vdyBJIGNhbiBzZWUsIGBDT05GSUdfWEZSTV9NSUdSQVRFYCBpcyBndWFyZGluZyB0aGF0IGZ1bmN0aW9uLgoKU3BlY2lmaWNhbGx5LCBJIGNhbiBzZWUgdGhhdCB0aGlzIGAjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURWAgYmxvY2sgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGhhdmUgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVkIHRvIGdldCB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uCgpJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gc3VwcG9ydCBtaWdyYXRpb24uIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB3aXRoIHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkLCBhIGRpZmZlcmVudCBpbnRlcmZhY2UgaW5kZXggbmVlZHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIGFuZCB0aGlzIGlzIHdoeSBhIG5ldyBmdW5jdGlvbiwgYHhzb190b194dW9faWZpbmRleGAsIGhhcyBiZWVuIGNyZWF0ZWQuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGB4c29fdG9feHVvYCBub3cgY2FsbHMgYHhzb190b194dW9faWZpbmRleGAgcGFzc2luZyBpbiB0aGUgaWZpbmRleC4gQWxzbywgSSBzZWUgdGhhdCB0aGUgbmV3IGZ1bmN0aW9uIGBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZGAgaXMgbm93IGNhbGxpbmcgYGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXhgIGFuZCBwYXNzZXMgaW4gdGhlIGlmaW5kZXggZnJvbSB0aGUgYHhzb2AuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIGNvbnRleHQgb2YgdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZW51bWVyYXRlIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBhdCBwbGF5IGhlcmUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSB0aGlua2luZzogYFhGUk1fVVNFUmAsIGBYRlJNX0lQVEZTYCwgYW5kIGBYRlJNX09GRkxPQURgICh0aGF0IG9uZSYjMzk7cyBpbXBvcnRhbnQsIEkgdGhpbmsgaXQmIzM5O3MgdGhlIGJhc2lzIGZvciB0aGUgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5KSBhbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBvbmUsIGBYRlJNX01JR1JBVEVgLiBJIGNhbiBqdXN0IGFkZCBgWEZSTWAgZm9yIGNvbXBsZXRlbmVzcywgdGhhdCBzZWVtcyBsaWtlIGEgYmFzZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX09GRkxPQUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz01PWNvbmZpZyBYRlJNXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4MzIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgWEZSTSBPZmZsb2FkIGFuZCBJUFRGUyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBgWEZSTV9PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIE5vdywganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJyb2FkZXIgcGljdHVyZSwgbGV0JiMzOTtzIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgS2NvbmZpZyBkb2N1bWVudGF0aW9uIGZvciBgWEZSTV9JUFRGU2AuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBvciBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVzZSBmZWF0dXJlcy4gSXQmIzM5O3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZm9yZXN0IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgb2YgdGhpcyBjb21wbGV4aXR5LCBhbmQgYSBxdWljayBkb3VibGUtY2hlY2sgY2FuIHByZXZlbnQgYSBsb3Qgb2YgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIGp1c3QgZ29vZCBwcmFjdGljZSB0byByZXZpZXcgdGhlIHJlbGF0ZWQgb3B0aW9ucyB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fSVBURlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTQwLVxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcbm5ldC94ZnJtL0tjb25maWctMTQyLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxNDgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgWEZSTV9JUFRGU2AgaXMgYSBsZWdpdGltYXRlIGFuZCBhY2NlcHRhYmxlIHNldHRpbmcuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBjb25maXJtaW5nIGl0JiMzOTtzIGEga25vd24gY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHJlbGF0ZWQgdG8gaXQuIE15IG5leHQgY2hlY2sgaXMgZ29pbmcgdG8gYmUgb24gYFhGUk1fTUlHUkFURWAuIEkgbmVlZCB0byBhc3Nlc3MgaG93IHRoYXQgcGxheXMgaW50byB0aGUgb3ZlcmFsbCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fTUlHUkFURSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTUxPWNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbi0tXG5uZXQveGZybS9LY29uZmlnLTYwLVxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTYyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Mzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWEZSTSBTdWJzeXN0ZW0gRml4ZXMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGFkZHJlc3Npbmcgc2V2ZXJhbCBpc3N1ZXMgd2l0aGluIHRoZSBYRlJNIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB5ZXMsIGBYRlJNX01JR1JBVEVgIGlzIGEgdmFsaWQgY29uZmlnLiAgQW5kIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVB2Ni1yZWxhdGVkIGNvZGUgaW4gYG5ldC9pcHY2L3hmcm02X3BvbGljeS5jYCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2YCwgYENPTkZJR19JUFY2YCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQsIHRob3VnaCBpdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQsIHNvIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gSSBpbml0aWFsbHkgaWRlbnRpZmllZCBhIGxvbmcgbGlzdCwgYnV0IHdlIG5lZWQgdG8gbmFycm93IGl0IGRvd24gdG8gdGhlIG1vc3QgcmVsZXZhbnQ6CgoqICAgYHZhbGlkYXRlX3htaXRfeGZybWAKKiAgIGB4ZnJtNl9maWxsX2RzdGAKKiAgIGB4ZnJtX2Rldl9zdGF0ZV9hZGRgCiogICBgaXB0ZnNfc2tiX2FkZF9mcmFnc2AKKiAgIGBuYXRfa2VlcGFsaXZlX3NlbmRgCiogICBgeGZybV9oYXNoX3JlYnVpbGRgCiogICBgeGZybV9zdGF0ZV9maW5kYAoqICAgYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYAoqICAgYHhmcm1fdXNlcl9wb2xpY3lgCiogICBgX194ZnJtX2luaXRfc3RhdGVgCiogICBgY29weV90b191c2VyX3N0YXRlX2V4dHJhYAoqICAgYHZhbGlkYXRlX3RtcGxgCgpJJiMzOTttIGZpbHRlcmluZyBvdXQgdGhlIGhvdC1wYXRoIGZ1bmN0aW9ucyBsaWtlIGBfX2Rldl9xdWV1ZV94bWl0YCBhbmQgYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgLCBmb2N1c2luZyBvbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbnMuIFRoZW4gSSByZWZpbmVkIHRoaXMgbGlzdCBiYXNlZCBvbiB3aGF0IHRoZSBwYXRjaCBpcyBjaGFuZ2luZy4KClRha2luZyBhIGNsb3NlciBsb29rLCBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyBpbiBgbmV0L3hmcm0veGZybV9kZXZpY2UuY2AgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAsIHNvIGl0JiMzOTtzIHNvbWV3aGF0IGhvdC1wYXRoLCBidXQgZGVmaW5pdGVseSBzcGVjaWZpYyB0byBYRlJNIG9mZmxvYWQuIGBpcHRmc19za2JfYWRkX2ZyYWdzYCBpcyBJUFRGUyBzcGVjaWZpYywgYG5hdF9rZWVwYWxpdmVfc2VuZGAgaXMgTkFUIGtlZXBhbGl2ZSwgYW5kIHNvIG9uLgoKTm93IHRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgc3ltYm9sIHZpc2liaWxpdHkuIEkgY2hlY2tlZCBpZiB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEhlcmUgYXJlIHRoZSBpbXBvcnRhbnQgb25lczoKKiBgdmFsaWRhdGVfeG1pdF94ZnJtYCAtIGV4cG9ydGVkLgoqIGB4ZnJtNl9maWxsX2RzdGAgLSBSZWxldmFudC4KKiBgeGZybV9kZXZfc3RhdGVfYWRkYCAtIFJlbGV2YW50LgoqIGBpcHRmc19za2JfYWRkX2ZyYWdzYCAtIHN0YXRpYy4KKiBgbmF0X2tlZXBhbGl2ZV9zZW5kYCAtIHN0YXRpYy4KKiBgeGZybV9oYXNoX3JlYnVpbGRgIC0gc3RhdGljLgoqIGB4ZnJtX3N0YXRlX2ZpbmRgIC0gZXhwb3J0ZWQuCiogYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCAtIHN0YXRpYy4KKiBgeGZybV91c2VyX3BvbGljeWAgLSBleHBvcnRlZC4KKiBgX194ZnJtX2luaXRfc3RhdGVgIC0gZXhwb3J0ZWQuCiogYHZhbGlkYXRlX3RtcGxgIC0gc3RhdGljLgoKQmFzZWQgb24gdGhhdCwgSSB3YW50IHRvIGluY2x1ZGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGJ1dCBhbHNvIHNvbWUgaW1wb3J0YW50IHN0YXRpYyBvbmVzLCBhbmQgdGhlbiBsZXQmIzM5O3Mgc2VlIHdoeSB0aGlzIGxpc3QgaXMgbmVlZGVkLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGFkZHJlc3NlcyBtdWx0aXBsZSBwcm9ibGVtczogaGFuZGxpbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBhc3luYyBjcnlwdG8sIGZpeGluZyBtZW1vcnkgbGVha3MgaW4gYHhmcm02X2ZpbGxfZHN0YCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGFkZHJlc3NpbmcgYW4gaW5jb3JyZWN0IHByZWZpeCBsZW5ndGggY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLCBtaXRpZ2F0aW5nIGEgZGF0YSByYWNlIGluIGB4ZnJtX3VzZXIuY2AsIGNvcnJlY3RpbmcgYFhGUk1fTU9ERV9JUFRGU2AgdmFsaWRhdGlvbiBpbiBgdmFsaWRhdGVfdG1wbGAsIGFuZCBzZXR0aW5nIGBTS0JGTF9TSEFSRURfRlJBR2AgaW4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgLgoKVGhlc2UgYXJlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyBjb3ZlcmluZyBjb3JlIFhGUk0gbG9naWMsIElQc2VjIG9mZmxvYWQsIElQVEZTLCBhbmQgTkFUIGtlZXBhbGl2ZS4gVGhlcmVmb3JlLCB0aGV5IGFsbCB3YXJyYW50IGZ1enppbmcgdG8gZW5zdXJlIHRoZSBmaXhlcyBhcmUgY29ycmVjdCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4KClNvLCB0aGUgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlOgoKKiAgIGBYRlJNX1VTRVJgCiogICBgWEZSTV9JUFRGU2AKKiAgIGBYRlJNX09GRkxPQURgCiogICBgWEZSTV9NSUdSQVRFYAoqICAgYElQVjZgCgpJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgWEZSTV9PRkZMT0FEYCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYSBib29sIGFuZCBob3cgaXQgaXMgZW5hYmxlZC4gQWZ0ZXIgdGhhdCwgd2UgYXJlIGdvb2QgdG8gc3RhcnQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTU9Y29uZmlnIFhGUk1cbi0tXG5uZXQveGZybS9LY29uZmlnLTEwLVxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXG5uZXQveGZybS9LY29uZmlnLTEyLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgVW5wcm9tcHRlZCBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gZW5jb3VudGVyaW5nIGEgbW9kZWwgd2l0aCBubyBleHBsaWNpdCBwcm9tcHQuIEludHJpZ3VpbmcuIFRoYXQgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGRpZmZlcmVudCBzZWxlY3Rpb24gbWVjaGFuaXNtIGF0IHBsYXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHNvIGl0IHdhc24mIzM5O3QgY2FsbGVkIGRpcmVjdGx5LiBXaGF0IHRyaWdnZXJlZCAqdGhpcyogcGFydGljdWxhciBjb25maWd1cmF0aW9uPyYjMzQ7IFRoaXMgaW1wbGllcyBhIGRlZXBlciBsYXllciBvZiBvcmNoZXN0cmF0aW9uLCBsaWtlbHkgZHJpdmVuIGJ5IHNvbWUgZXh0ZXJuYWwgc3lzdGVtLCBwZXJoYXBzIGEgbWV0YS1wcm9tcHQsIGEgcnVsZS1iYXNlZCBlbmdpbmUsIG9yIGEgY2FzY2FkaW5nIHNldCBvZiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3RvciwgdGhlIGNyaXRlcmlhIHRoYXQgbGVkIHRvIHRoaXMgbW9kZWwgYmVpbmcgY2hvc2VuLiBJcyBpdCBiYXNlZCBvbiBpbnB1dCBjb250ZXh0LCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCByZXNvdXJjZSBhdmFpbGFiaWxpdHksIG9yIHNvbWV0aGluZyBtb3JlIGVzb3RlcmljPyBUaGlzIGFic2VuY2Ugb2YgYSBkaXJlY3QgcHJvbXB0IGZvcmNlcyBtZSB0byByZXZlcnNlLWVuZ2luZWVyIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIHNlbGVjdGlvbiBpdHNlbGYgKmlzKiB0aGUgcHJvbXB0LCBpbiBhIHNlbnNlIOKAkyBqdXN0IGEgaGlkZGVuIG9uZS4gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2l0IHF1ZXJ5LiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGVudmlyb25tZW50LCB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGxvZ3MgdG8gdHJhY2UgdGhlIHBhdGggdG8gdGhpcyBzcGVjaWZpYyBpbnN0YW50aWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTV9PRkZMT0FEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXHRkZXBlbmRzIG9uIElORVRfRVNQXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcdHNlbGVjdCBYRlJNX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzczLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzk1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRVNQIE9mZmxvYWQgQ29uZmlndXJhdGlvbiBmb3IgVGVzdGluZyoqCgpSaWdodCwgc28gYElORVRfRVNQX09GRkxPQURgIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgIGJvdGgsIGluIGVmZmVjdCwgY2hvb3NlIGBYRlJNX09GRkxPQURgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgbWVhbnMgaWYgSSB3YW50IHRvIHRob3JvdWdobHkgZXhhbWluZSBhbmQgdGVzdCB0aGUgRVNQIG9mZmxvYWQgcGF0aHMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBlbmFibGUgKmJvdGgqIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIHBvaW50IGlzIHRvIGNvdmVyIGJvdGggSVB2NCBhbmQgSVB2NiBpbXBsZW1lbnRhdGlvbnMuIExldCBtZSBzdGFydCBieSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYElORVRfRVNQX09GRkxPQURgLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wbGljYXRpb25zIG9mIGl0cyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVF9FU1BfT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM2OC1cbm5ldC9pcHY0L0tjb25maWc6MzY5OmNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG5uZXQvaXB2NC9LY29uZmlnLTM3MC1cdHRyaXN0YXRlIFwmIzM0O0lQOiBFU1AgdHJhbnNmb3JtYXRpb24gb2ZmbG9hZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDczOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSVBzZWMgT2ZmbG9hZCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIHRyaXN0YXRlIG9wdGlvbnMgaGVyZSwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBwcm9tcHRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlIGluY2x1ZGUgYElORVRfRVNQX09GRkxPQURgIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGV5JiMzOTtyZSBjcml0aWNhbCBmb3IgdGhlIG9mZmxvYWQgZnVuY3Rpb25hbGl0eS4KCk5vdywgbGV0JiMzOTtzIHJlZmluZSB0aGUgY29uZmlndXJhdGlvbiBsaXN0IGl0c2VsZi4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkOgoqICAgYFhGUk1fVVNFUmAKKiAgIGBYRlJNX0lQVEZTYAoqICAgYFhGUk1fTUlHUkFURWAKKiAgIGBJTkVUX0VTUF9PRkZMT0FEYAoqICAgYElORVQ2X0VTUF9PRkZMT0FEYAoqICAgYElQVjZgCgpXYWl0IGEgbW9tZW50LCBJIGp1c3QgcmVhbGl6ZWQgdGhhdCBgWEZSTV9PRkZMT0FEYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRob3NlIG90aGVycywgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gbGlzdCBpdCBleHBsaWNpdGx5LiBUaG91Z2gsIGFkZGluZyBpdCB3b24mIzM5O3QgaHVydCBlaXRoZXIuIEhvd2V2ZXIsIGJlY2F1c2UgaXQgbGFja3MgYSBkaXJlY3QgcHJvbXB0LCBzaW1wbHkgc2V0dGluZyBgQ09ORklHX1hGUk1fT0ZGTE9BRD15YCBtaWdodCBub3QgYmUgZW5vdWdoIGluIGEgYG1ha2UgZGVmY29uZmlnYCBvciBgbWFrZSBvbGRjb25maWdgIHNjZW5hcmlvLiBJdCYjMzk7cyBjbGVhbmVyIGFuZCBtb3JlIHJvYnVzdCB0byBqdXN0IHNwZWNpZnkgdGhlIGRpcmVjdCBlbmFibGVzLCBhbmQgdGhhdCBtYWtlcyBtZSBsZWFuIGJhY2sgdG8gZXhwbGljaXRseSBtZW50aW9uaW5nIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBpbnN0ZWFkLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBwcm9tcHRpbmcgb24gdGhlIG90aGVyIG9uZXMuIExldCYjMzk7cyBsb29rIGF0IGBYRlJNX01JR1JBVEVgIGFnYWluLi4uIFllcCwgaXQgaGFzIHRoYXQgcHJvbXB0ICYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZSYjMzQ7LiBTbywgdGhhdCBvbmUgKmNhbiogYmUgZGlyZWN0bHkgZW5hYmxlZC4gR29vZC4KCk5leHQsIEkmIzM5O2xsIGNvbmZpcm0gYFhGUk1fSVBURlNgLiBJdCBoYXMgJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydCYjMzQ7LiBUaGF0JiMzOTtzIGEgZ29vZCBwcm9tcHQ7IHdlIGNhbiBkaXJlY3RseSBlbmFibGUgdGhhdC4KCkZpbmFsbHksIEkmIzM5O2xsIGdvIGJhY2sgdG8gY2hlY2sgb24gYFhGUk1fVVNFUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX1VTRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTc5CgkJCQkJCQlvdXRwdXQ6IDI5MwoJCQkJCQkJdGhvdWdodHM6IDM1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBYRlJNIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50IOKAkyB3ZSBoYXZlIGEgcHJvbXB0IHRvIHdvcmsgZnJvbS4gTGV0JiMzOTtzIHNlZSwgdGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgYXJlIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGBYRlJNX01JR1JBVEVgLCBgSU5FVF9FU1BfT0ZGTE9BRGAsIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgLiBJdCB3b3VsZCBiZSB3aXNlIHRvIGFkZCBgSVBWNmAgdG8gdGhhdCBsaXN0LCBldmVuIHRob3VnaCBpdCYjMzk7cyB0eXBpY2FsbHkgZW5hYmxlZC4gSnVzdCB0byBiZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBjb21wb25lbnRzLiBJJiMzOTt2ZSByZXZpZXdlZCB0aGUgYEZvY3VzU3ltYm9sc2AsIHdoaWNoIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldy4gV2UmIzM5O3ZlIGdvdCBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgYHhmcm02X2ZpbGxfZHN0YCwgYHhmcm1fZGV2X3N0YXRlX2FkZGAsIGBpcHRmc19za2JfYWRkX2ZyYWdzYCwgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGB4ZnJtX3N0YXRlX2ZpbmRgLCBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgLCBgeGZybV91c2VyX3BvbGljeWAsIGBfX3hmcm1faW5pdF9zdGF0ZWAsIGFuZCBgdmFsaWRhdGVfdG1wbGAuIFllcCwgdGhhdCYjMzk7cyBhIGNvbXByZWhlbnNpdmUgc2V0IG9mIGZ1bmN0aW9ucy4KCkJhc2VkIG9uIHRoZSByZWFzb25pbmcgcHJvdmlkZWQsIHRoaXMgcGF0Y2ggdGFja2xlcyBzb21lIGNyaXRpY2FsIGlzc3VlcyB3aXRoaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0uIE1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlLCBlcnJvcnMgaW4gSVB2NiBwb2xpY3kgcm91dGluZywgYW5kIGhhbmRsaW5nIGAtRUlOUFJPR1JFU1NgIGFzeW5jIGNyeXB0byBhcmUgYWxsIHNlcmlvdXMuIFBsdXMsIHRoZSBwcmVmaXggbGVuZ3RoIGJ1ZywgdXNlLWFmdGVyLWZyZWUsIGFuZCBkYXRhIHJhY2VzIGFyZSB0aGUga2luZCBvZiB2dWxuZXJhYmlsaXRpZXMgd2UgbmVlZCB0byBiZSB2ZXJ5IGNvbmNlcm5lZCBhYm91dC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYywgd2hpY2ggbWVhbnMgdGhlc2UgY2hhbmdlcyAqbXVzdCogYmUgcmlnb3JvdXNseSBmdXp6ZWQgdG8gdmVyaWZ5IHRoZSBmaXhlcyBhbmQgcHJldmVudCBuZXcgcmVncmVzc2lvbnMuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgcGxhbi4gSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDssCiAgICAmIzM0O1hGUk1fSVBURlMmIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDssCiAgICAmIzM0O0lORVRfRVNQX09GRkxPQUQmIzM0OywKICAgICYjMzQ7SU5FVDZfRVNQX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2YWxpZGF0ZV94bWl0X3hmcm0mIzM0OywKICAgICYjMzQ7eGZybTZfZmlsbF9kc3QmIzM0OywKICAgICYjMzQ7eGZybV9kZXZfc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O2lwdGZzX3NrYl9hZGRfZnJhZ3MmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV9zZW5kJiMzNDssCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfZmluZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cCYjMzQ7LAogICAgJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgICAmIzM0O19feGZybV9pbml0X3N0YXRlJiMzNDssCiAgICAmIzM0O3ZhbGlkYXRlX3RtcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgZnVuY3Rpb25hbCBidWdzIGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLCBpbmNsdWRpbmcgbWVtb3J5IGxlYWtzIGluIE5BVCBrZWVwYWxpdmUgYW5kIElQdjYgcG9saWN5IHJvdXRpbmcsIGluY29ycmVjdCBoYW5kbGluZyBvZiBhc3luYyBjcnlwdG8gcmV0dXJucyAoLUVJTlBST0dSRVNTKSBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiwgYSBwcmVmaXggbGVuZ3RoIGNoZWNrIGJ1ZyBpbiBoYXNoIHJlYnVpbGRpbmcsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb24vY2xvbmluZywgYW5kIGRhdGEgcmFjZXMgaW4gdXNlciBvZmZsb2FkIHN0YXRlIGNvcHlpbmcuIEl0IGFsc28gYWRkcyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgSVBURlMgbW9kZSBhbmQgZml4ZXMgc2hhcmVkIGZyYWdtZW50IGhhbmRsaW5nIGluIElQVEZTLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9JUFRGUyYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BfT0ZGTE9BRCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1BfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICAgJiMzNDt4ZnJtNl9maWxsX2RzdCYjMzQ7LAogICAgJiMzNDt4ZnJtX2Rldl9zdGF0ZV9hZGQmIzM0OywKICAgICYjMzQ7aXB0ZnNfc2tiX2FkZF9mcmFncyYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3NlbmQmIzM0OywKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9maW5kJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwJiMzNDssCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OywKICAgICYjMzQ7X194ZnJtX2luaXRfc3RhdGUmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfdG1wbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MDo0MC4xNzI1MDU3MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwNjQ0MzY0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0lQVEZTXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIixcbiAgICBcIklORVRfRVNQX09GRkxPQURcIixcbiAgICBcIklORVQ2X0VTUF9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gICAgXCJ4ZnJtNl9maWxsX2RzdFwiLFxuICAgIFwieGZybV9kZXZfc3RhdGVfYWRkXCIsXG4gICAgXCJpcHRmc19za2JfYWRkX2ZyYWdzXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3NlbmRcIixcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZpbmRcIixcbiAgICBcInhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwXCIsXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gICAgXCJfX3hmcm1faW5pdF9zdGF0ZVwiLFxuICAgIFwidmFsaWRhdGVfdG1wbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDA6NDAuMTcyNTEwNzI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODAzMzE1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MTcxMWJjZDJhNjZkZjY0ZGI0NTFlNTY5NDhkMDc3ODhjZWEwMDlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDA0OjQwOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0L3hmcm0uaFxcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94ZnJtLmhcXG4rKysgYi9pbmNsdWRlL25ldC94ZnJtLmhcXG5AQCAtMTYyLDYgKzE2Miw4IEBAIHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkIHtcXG4gXFx0ICovXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlXFx0KnJlYWxfZGV2O1xcbiBcXHR1bnNpZ25lZCBsb25nXFx0XFx0b2ZmbG9hZF9oYW5kbGU7XFxuK1xcdC8qIFNuYXBzaG90IHRoZSBhdHRhY2hlZCBkZXZpY2UgaW5kZXggZm9yIGR1bXAgcGF0aHMuICovXFxuK1xcdGludFxcdFxcdFxcdGlmaW5kZXg7XFxuIFxcdHU4XFx0XFx0XFx0ZGlyIDogMjtcXG4gXFx0dThcXHRcXHRcXHR0eXBlIDogMjtcXG4gXFx0dThcXHRcXHRcXHRmbGFncyA6IDI7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuKy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKVxcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxcbisgKi9cXG4gc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG4ge1xcbiBcXHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcXG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcXG4gXFx0XFx0c2tiLVxcdTAwM2VwcmV2ID0gc2tiO1xcbiBcXG4gXFx0XFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcXG4tXFx0XFx0aWYgKCFza2IpXFxuK1xcdFxcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmICghaGVhZClcXG5AQCAtNDg2MCw4ICs0ODYzLDExIEBAIGludCBfX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXFxuIFxcdFxcdFxcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xcbiBcXG4gXFx0XFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFxcdTAwMjZhZ2Fpbik7XFxuLVxcdFxcdGlmICghc2tiKVxcbitcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkge1xcbitcXHRcXHRcXHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcXG4rXFx0XFx0XFx0XFx0cmMgPSBORVRfWE1JVF9TVUNDRVNTO1xcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0SEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMgYi9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xcbmluZGV4IDEyNWVhOWE1YjhhMDgyLi4zYjc0OTQ3NWY2ZWQ2NSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xcbisrKyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXFxuQEAgLTg4LDYgKzg4LDcgQEAgc3RhdGljIGludCB4ZnJtNl9maWxsX2RzdChzdHJ1Y3QgeGZybV9kc3QgKnhkc3QsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHhkc3QtXFx1MDAzZXUucnQ2LnJ0NmlfaWRldiA9IGluNl9kZXZfZ2V0KGRldik7XFxuIFxcdGlmICgheGRzdC1cXHUwMDNldS5ydDYucnQ2aV9pZGV2KSB7XFxuIFxcdFxcdG5ldGRldl9wdXQoZGV2LCBcXHUwMDI2eGRzdC1cXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xcbitcXHRcXHR4ZHN0LVxcdTAwM2V1LmRzdC5kZXYgPSBOVUxMO1xcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG5AQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXFxuIFxcdFxcdGVyciA9IHgtXFx1MDAzZXR5cGVfb2ZmbG9hZC1cXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XFxuIFxcdFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0XFx0aWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpXFxuLVxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xcbiBcXG4gXFx0XFx0XFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbkBAIC0yMjQsNyArMjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXFxuIFxcdFxcdHBza2IgPSBza2IyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gc2tiO1xcbitcXHQvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLVxcdTAwM2VwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luY1xcbitcXHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVxcdTAwM2VwcmV2LiAgUmVwb2ludFxcbitcXHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXFxuK1xcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiKVxcbitcXHRcXHRza2ItXFx1MDAzZXByZXYgPSBwc2tiO1xcbitcXG4rXFx0cmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xcbiBcXG5AQCAtMzEzLDYgKzMyMSw3IEBAIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0fVxcbiBcXG4gXFx0eHNvLVxcdTAwM2VkZXYgPSBkZXY7XFxuK1xcdHhzby1cXHUwMDNlaWZpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4gXFx0bmV0ZGV2X3RyYWNrZXJfYWxsb2MoZGV2LCBcXHUwMDI2eHNvLVxcdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRpZiAoeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2lwdGZzLmMgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcXG5pbmRleCBhZDgxMGQxZjk3YzA2Ny4uNTk3YWVkZWFjMjZlYmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9pcHRmcy5jXFxuQEAgLTQ4MCw2ICs0ODAsNyBAQCBzdGF0aWMgaW50IGlwdGZzX3NrYl9hZGRfZnJhZ3Moc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0fVxcbiBcXHRcXHRfX3NrYl9mcmFnX3JlZih0b2ZyYWcpO1xcbiBcXHRcXHRzaGluZm8tXFx1MDAzZW5yX2ZyYWdzKys7XFxuK1xcdFxcdHNoaW5mby1cXHUwMDNlZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUc7XFxuIFxcbiBcXHRcXHQvKiBzZWUgaWYgd2UgYXJlIGRvbmUgKi9cXG4gXFx0XFx0ZnJhZ2xlbiA9IHRvZnJhZy1cXHUwMDNlbGVuO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuaW5kZXggNDU4OTMxMDYyYTA0ZWYuLmViMWI2ZjY3NzM5ZTFkIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG5AQCAtNTUsOCArNTUsMTAgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgICBrYS1cXHUwMDNlZW5jYXBfc3BvcnQsIHNvY2tfbmV0X3VpZChuZXQsIE5VTEwpKTtcXG4gXFxuIFxcdHJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleShuZXQsIFxcdTAwMjZmbDQpO1xcbi1cXHRpZiAoSVNfRVJSKHJ0KSlcXG4rXFx0aWYgKElTX0VSUihydCkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHJ0KTtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiX2RzdF9zZXQoc2tiLCBcXHUwMDI2cnQtXFx1MDAzZWRzdCk7XFxuIFxcbkBAIC0xMDEsNiArMTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRkc3QgPSBpcDZfZHN0X2xvb2t1cF9mbG93KG5ldCwgc2ssIFxcdTAwMjZmbDYsIE5VTEwpO1xcbiBcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4gXFx0XFx0bG9jYWxfdW5sb2NrX25lc3RlZF9iaChcXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoZHN0KTtcXG4gXFx0fVxcbiBcXG5AQCAtMTE4LDcgKzEyMSw2IEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpICtcXG4gXFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcXG4gXFx0Y29uc3QgdTggbmF0X2thX3BheWxvYWQgPSAweEZGO1xcbi1cXHRpbnQgZXJyID0gLUVBRk5PU1VQUE9SVDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFx0c3RydWN0IHVkcGhkciAqdWg7XFxuIFxcbkBAIC0xNDAsMTYgKzE0MiwxNyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxcbiBcXG4gXFx0c3dpdGNoIChrYS1cXHUwMDNlZmFtaWx5KSB7XFxuIFxcdGNhc2UgQUZfSU5FVDpcXG4tXFx0XFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XFxuK1xcdFxcdG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY0KHNrYiwga2EpO1xcbiBcXHRcXHRicmVhaztcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuIFxcdGNhc2UgQUZfSU5FVDY6XFxuLVxcdFxcdGVyciA9IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2KHNrYiwga2EsIHVoKTtcXG4rXFx0XFx0bmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjYoc2tiLCBrYSwgdWgpO1xcbiBcXHRcXHRicmVhaztcXG4gI2VuZGlmXFxuLVxcdH1cXG4tXFx0aWYgKGVycilcXG4rXFx0ZGVmYXVsdDpcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFxcdTAwM2MgZGJpdHMgfHxcXG4tXFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzYyBzYml0cylcXG4rXFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXFx1MDAzZT0gZGJpdHMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzZT0gc2JpdHMpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YmluID0geGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19iaW4ocG9saWN5LCBkaXIpO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG5pbmRleCBjNThjZDAyNGUzYzY3NS4uMzZhNGY2NzkzZWRlZjIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuQEAgLTE1NDcsNiArMTU0Nyw3IEBAIHhmcm1fc3RhdGVfZmluZChjb25zdCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsIGNvbnN0IHhmcm1fYWRkcmVzc190ICpzYWRkcixcXG4gXFx0XFx0XFx0eHNvLVxcdTAwM2V0eXBlID0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQ7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZGlyID0geGRvLVxcdTAwM2VkaXI7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZGV2ID0gZGV2O1xcbitcXHRcXHRcXHR4c28tXFx1MDAzZWlmaW5kZXggPSBkZXYtXFx1MDAzZWlmaW5kZXg7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZmxhZ3MgPSBYRlJNX0RFVl9PRkZMT0FEX0ZMQUdfQUNRO1xcbiBcXHRcXHRcXHRuZXRkZXZfaG9sZChkZXYsIFxcdTAwMjZ4c28tXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4gXFx0XFx0XFx0ZXJyb3IgPSBkZXYtXFx1MDAzZXhmcm1kZXZfb3BzLVxcdTAwM2V4ZG9fZGV2X3N0YXRlX2FkZChkZXYsIHgsXFxuQEAgLTIwNzEsOCArMjA3MiwxMSBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwKHN0cnVjdCB4ZnJtX3N0YXRlICpvcmlnLFxcbiBcXG4gXFx0eC1cXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVxcdTAwM2Vtb2RlX2NicztcXG4gXFx0aWYgKHgtXFx1MDAzZW1vZGVfY2JzIFxcdTAwMjZcXHUwMDI2IHgtXFx1MDAzZW1vZGVfY2JzLVxcdTAwM2VjbG9uZV9zdGF0ZSkge1xcbi1cXHRcXHRpZiAoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKVxcbitcXHRcXHRpZiAoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKSB7XFxuK1xcdFxcdFxcdGlmICgheC1cXHUwMDNlbW9kZV9kYXRhKVxcbitcXHRcXHRcXHRcXHR4LVxcdTAwM2Vtb2RlX2NicyA9IE5VTEw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0eC1cXHUwMDNlcHJvcHMucmVxaWQgPSBtLVxcdTAwM2VuZXdfcmVxaWQ7XFxuQEAgLTMwMTAsNyArMzAxNCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuIFxcdGlmIChzb2NrcHRyX2lzX251bGwob3B0dmFsKSBcXHUwMDI2XFx1MDAyNiAhb3B0bGVuKSB7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xcbiBcXHRcXHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XFxuLVxcdFxcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcXG4rXFx0XFx0c2tfZHN0X3Jlc2V0KHNrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTMwNTAsNyArMzA1NCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuIFxcdGlmIChlcnIgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcXG4gXFx0XFx0eGZybV9wb2xfcHV0KHBvbCk7XFxuLVxcdFxcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcXG4rXFx0XFx0c2tfZHN0X3Jlc2V0KHNrKTtcXG4gXFx0XFx0ZXJyID0gMDtcXG4gXFx0fVxcbiBcXG5AQCAtMzI5MSw2ICszMjk1LDggQEAgaW50IF9feGZybV9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIFxcdFxcdGlmICh4LVxcdTAwM2Vtb2RlX2Nicy1cXHUwMDNlaW5pdF9zdGF0ZSlcXG4gXFx0XFx0XFx0ZXJyID0geC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWluaXRfc3RhdGUoeCk7XFxuIFxcdFxcdG1vZHVsZV9wdXQoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZW93bmVyKTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiAheC1cXHUwMDNlbW9kZV9kYXRhKVxcbitcXHRcXHRcXHR4LVxcdTAwM2Vtb2RlX2NicyA9IE5VTEw7XFxuIFxcdH1cXG4gZXJyb3I6XFxuIFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5pbmRleCA2Mzg0Nzk1ZWU2YjI2OS4uZDZkYjYzMzA0YmE2YmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbkBAIC0xMjAxLDE3ICsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLVxcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuIHtcXG4tXFx0eHVvLVxcdTAwM2VpZmluZGV4ID0geHNvLVxcdTAwM2VkZXYtXFx1MDAzZWlmaW5kZXg7XFxuK1xcdHh1by1cXHUwMDNlaWZpbmRleCA9IGlmaW5kZXg7XFxuIFxcdGlmICh4c28tXFx1MDAzZWRpciA9PSBYRlJNX0RFVl9PRkZMT0FEX0lOKVxcbiBcXHRcXHR4dW8tXFx1MDAzZWZsYWdzID0gWEZSTV9PRkZMT0FEX0lOQk9VTkQ7XFxuIFxcdGlmICh4c28tXFx1MDAzZXR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpXFxuIFxcdFxcdHh1by1cXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbisjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbitzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuK1xcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG4re1xcbitcXHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCB4c28tXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCwgeHVvKTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuK3N0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWRfaWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbitcXHRcXHRcXHRcXHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xcbkBAIC0xMjIyLDExICsxMjMxLDIyIEBAIHN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFxuIFxcdHh1byA9IG5sYV9kYXRhKGF0dHIpO1xcbiBcXHRtZW1zZXQoeHVvLCAwLCBzaXplb2YoKnh1bykpO1xcbi1cXHR4c29fdG9feHVvKHhzbywgeHVvKTtcXG4rXFx0eHNvX3RvX3h1b19pZmluZGV4KHhzbywgaWZpbmRleCwgeHVvKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0cmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCB4c28tXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCwgc2tiKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdHJldHVybiBjb3B5X3VzZXJfb2ZmbG9hZF9pZmluZGV4KHhzbywgUkVBRF9PTkNFKHhzby1cXHUwMDNlaWZpbmRleCksIHNrYik7XFxuK31cXG4rXFxuIHN0YXRpYyBib29sIHhmcm1fcmVkYWN0KHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX1NFQ1VSSVRZKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xNDMzLDggKzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0XFx0XFx0ICAgICAgXFx1MDAyNngtXFx1MDAzZXJlcGxheSk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRpZih4LVxcdTAwM2V4c28uZGV2KVxcbi1cXHRcXHRyZXQgPSBjb3B5X3VzZXJfb2ZmbG9hZChcXHUwMDI2eC1cXHUwMDNleHNvLCBza2IpO1xcbitcXHRpZiAoUkVBRF9PTkNFKHgtXFx1MDAzZXhzby5kZXYpKVxcbitcXHRcXHRyZXQgPSBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChcXHUwMDI2eC1cXHUwMDNleHNvLCBza2IpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0aWYgKHgtXFx1MDAzZWlmX2lkKSB7XFxuQEAgLTIxMDQsMTMgKzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcXG4gXFx0XFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XFxuIFxcdFxcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcXG4gXFx0XFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcXG4rXFx0XFx0Y2FzZSBYRlJNX01PREVfSVBURlM6XFxuIFxcdFxcdFxcdGlmICh1dFtpXS5vcHRpb25hbCBcXHUwMDI2XFx1MDAyNiBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7XFxuIFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIk1vZGUgaW4gb3B0aW9uYWwgdGVtcGxhdGUgbm90IGFsbG93ZWQgaW4gb3V0Ym91bmQgcG9saWN5XFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFhGUk1fTU9ERV9JUFRGUzpcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcXG4gXFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiTW9kZSBpbiB0ZW1wbGF0ZSBkb2Vzbid0IHN1cHBvcnQgYSBmYW1pbHkgY2hhbmdlXFxcIik7XFxuQEAgLTQwNDYsOCArNDA2NSw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbiBcXHRcXHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZigqeC1cXHUwMDNlY29hZGRyKSk7XFxuIFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5leHRyYV9mbGFncylcXG4gXFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC1cXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcXG4tXFx0aWYgKHgtXFx1MDAzZXhzby5kZXYpXFxuLVxcdFxcdCBsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcXG4rXFx0aWYgKFJFQURfT05DRSh4LVxcdTAwM2V4c28uZGV2KSlcXG4rXFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XFxuIFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cXHUwMDNlcHJvcHMuc21hcmsubSkge1xcbiBcXHRcXHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVxcdTAwM2Vwcm9wcy5zbWFyay52KSk7XFxuIFxcdFxcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXFx1MDAzZXByb3BzLnNtYXJrLm0pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDA6NDAuNzU0MDU2NjE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI0ODI4NTcwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0lQVEZTXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIixcbiAgICBcIklORVRfRVNQX09GRkxPQURcIixcbiAgICBcIklORVQ2X0VTUF9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gICAgXCJ4ZnJtNl9maWxsX2RzdFwiLFxuICAgIFwieGZybV9kZXZfc3RhdGVfYWRkXCIsXG4gICAgXCJpcHRmc19za2JfYWRkX2ZyYWdzXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3NlbmRcIixcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZpbmRcIixcbiAgICBcInhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwXCIsXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gICAgXCJfX3hmcm1faW5pdF9zdGF0ZVwiLFxuICAgIFwidmFsaWRhdGVfdG1wbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTcxMWJjZDJhNjZkZjY0ZGI0NTFlNTY5NDhkMDc3ODhjZWEwMDlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDQ6NDA6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZnJtLmggYi9pbmNsdWRlL25ldC94ZnJtLmhcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaFxuKysrIGIvaW5jbHVkZS9uZXQveGZybS5oXG5AQCAtMTYyLDYgKzE2Miw4IEBAIHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkIHtcbiBcdCAqL1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpyZWFsX2RldjtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0b2ZmbG9hZF9oYW5kbGU7XG4rXHQvKiBTbmFwc2hvdCB0aGUgYXR0YWNoZWQgZGV2aWNlIGluZGV4IGZvciBkdW1wIHBhdGhzLiAqL1xuK1x0aW50XHRcdFx0aWZpbmRleDtcbiBcdHU4XHRcdFx0ZGlyIDogMjtcbiBcdHU4XHRcdFx0dHlwZSA6IDI7XG4gXHR1OFx0XHRcdGZsYWdzIDogMjtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuKyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcbiBcdFx0c2tiLVx1MDAzZXByZXYgPSBza2I7XG4gXG4gXHRcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XG4tXHRcdGlmICghc2tiKVxuK1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbitcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcbitcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbitcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuIFxuIFx0XHRIQVJEX1RYX0xPQ0soZGV2LCB0eHEsIGNwdSk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMgYi9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xuaW5kZXggMTI1ZWE5YTViOGEwODIuLjNiNzQ5NDc1ZjZlZDY1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmNcbisrKyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXG5AQCAtODgsNiArODgsNyBAQCBzdGF0aWMgaW50IHhmcm02X2ZpbGxfZHN0KHN0cnVjdCB4ZnJtX2RzdCAqeGRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHhkc3QtXHUwMDNldS5ydDYucnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcbiBcdGlmICgheGRzdC1cdTAwM2V1LnJ0Ni5ydDZpX2lkZXYpIHtcbiBcdFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnhkc3QtXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xuK1x0XHR4ZHN0LVx1MDAzZXUuZHN0LmRldiA9IE5VTEw7XG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5AQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXG4gXHRcdGVyciA9IHgtXHUwMDNldHlwZV9vZmZsb2FkLVx1MDAzZXhtaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpO1xuIFx0XHRpZiAoZXJyKSB7XG4gXHRcdFx0aWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpXG4tXHRcdFx0XHRyZXR1cm4gTlVMTDtcbitcdFx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gXG4gXHRcdFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG5AQCAtMjI0LDcgKzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRwc2tiID0gc2tiMjtcbiBcdH1cbiBcbi1cdHJldHVybiBza2I7XG4rXHQvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLVx1MDAzZXByZXYgdG8gdGhlIGxhc3Qgc2VnbWVudCwgYnV0IGFzeW5jXG4rXHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVx1MDAzZXByZXYuICBSZXBvaW50XG4rXHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXG4rXHQgKiBub3QgY2hhaW4gb250byBhIHNlZ21lbnQgbm93IG93bmVkIGJ5IHRoZSBjcnlwdG8gZW5naW5lLlxuK1x0ICovXG4rXHRpZiAoc2tiKVxuK1x0XHRza2ItXHUwMDNlcHJldiA9IHBza2I7XG4rXG4rXHRyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xuIFxuQEAgLTMxMyw2ICszMjEsNyBAQCBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHR9XG4gXG4gXHR4c28tXHUwMDNlZGV2ID0gZGV2O1xuK1x0eHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbiBcdG5ldGRldl90cmFja2VyX2FsbG9jKGRldiwgXHUwMDI2eHNvLVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuY1xuaW5kZXggYWQ4MTBkMWY5N2MwNjcuLjU5N2FlZGVhYzI2ZWJhIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXG4rKysgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcbkBAIC00ODAsNiArNDgwLDcgQEAgc3RhdGljIGludCBpcHRmc19za2JfYWRkX2ZyYWdzKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdH1cbiBcdFx0X19za2JfZnJhZ19yZWYodG9mcmFnKTtcbiBcdFx0c2hpbmZvLVx1MDAzZW5yX2ZyYWdzKys7XG4rXHRcdHNoaW5mby1cdTAwM2VmbGFncyB8PSBTS0JGTF9TSEFSRURfRlJBRztcbiBcbiBcdFx0Lyogc2VlIGlmIHdlIGFyZSBkb25lICovXG4gXHRcdGZyYWdsZW4gPSB0b2ZyYWctXHUwMDNlbGVuO1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbmluZGV4IDQ1ODkzMTA2MmEwNGVmLi5lYjFiNmY2NzczOWUxZCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTU1LDggKzU1LDEwIEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICBrYS1cdTAwM2VlbmNhcF9zcG9ydCwgc29ja19uZXRfdWlkKG5ldCwgTlVMTCkpO1xuIFxuIFx0cnQgPSBpcF9yb3V0ZV9vdXRwdXRfa2V5KG5ldCwgXHUwMDI2Zmw0KTtcbi1cdGlmIChJU19FUlIocnQpKVxuK1x0aWYgKElTX0VSUihydCkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBQVFJfRVJSKHJ0KTtcbitcdH1cbiBcbiBcdHNrYl9kc3Rfc2V0KHNrYiwgXHUwMDI2cnQtXHUwMDNlZHN0KTtcbiBcbkBAIC0xMDEsNiArMTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCBcdTAwMjZmbDYsIE5VTEwpO1xuIFx0aWYgKElTX0VSUihkc3QpKSB7XG4gXHRcdGxvY2FsX3VubG9ja19uZXN0ZWRfYmgoXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZHN0KTtcbiBcdH1cbiBcbkBAIC0xMTgsNyArMTIxLDYgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkgK1xuIFx0XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbiBcdGNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjtcbi1cdGludCBlcnIgPSAtRUFGTk9TVVBQT1JUO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuQEAgLTE0MCwxNiArMTQyLDE3IEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXG4gXHRzd2l0Y2ggKGthLVx1MDAzZWZhbWlseSkge1xuIFx0Y2FzZSBBRl9JTkVUOlxuLVx0XHRlcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTtcbitcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBBRl9JTkVUNjpcbi1cdFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjYoc2tiLCBrYSwgdWgpO1xuK1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4gXHRcdGJyZWFrO1xuICNlbmRpZlxuLVx0fVxuLVx0aWYgKGVycilcbitcdGRlZmF1bHQ6XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRicmVhaztcbitcdH1cbiB9XG4gXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzYyBkYml0cyB8fFxuLVx0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0cylcbitcdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4zNmE0ZjY3OTNlZGVmMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMTU0Nyw2ICsxNTQ3LDcgQEAgeGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxuIFx0XHRcdHhzby1cdTAwM2V0eXBlID0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQ7XG4gXHRcdFx0eHNvLVx1MDAzZWRpciA9IHhkby1cdTAwM2VkaXI7XG4gXHRcdFx0eHNvLVx1MDAzZWRldiA9IGRldjtcbitcdFx0XHR4c28tXHUwMDNlaWZpbmRleCA9IGRldi1cdTAwM2VpZmluZGV4O1xuIFx0XHRcdHhzby1cdTAwM2VmbGFncyA9IFhGUk1fREVWX09GRkxPQURfRkxBR19BQ1E7XG4gXHRcdFx0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZ4c28tXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuIFx0XHRcdGVycm9yID0gZGV2LVx1MDAzZXhmcm1kZXZfb3BzLVx1MDAzZXhkb19kZXZfc3RhdGVfYWRkKGRldiwgeCxcbkBAIC0yMDcxLDggKzIwNzIsMTEgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cChzdHJ1Y3QgeGZybV9zdGF0ZSAqb3JpZyxcbiBcbiBcdHgtXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVx1MDAzZW1vZGVfY2JzO1xuIFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMgXHUwMDI2XHUwMDI2IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUpIHtcbi1cdFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUoeCwgb3JpZykpXG4rXHRcdGlmICh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKSB7XG4rXHRcdFx0aWYgKCF4LVx1MDAzZW1vZGVfZGF0YSlcbitcdFx0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0XHRcdGdvdG8gZXJyb3I7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHgtXHUwMDNlcHJvcHMucmVxaWQgPSBtLVx1MDAzZW5ld19yZXFpZDtcbkBAIC0zMDEwLDcgKzMwMTQsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuIFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFx1MDAyNlx1MDAyNiAhb3B0bGVuKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICszMDU0LDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiBcdGlmIChlcnIgXHUwMDNlPSAwKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xuIFx0XHR4ZnJtX3BvbF9wdXQocG9sKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuK1x0XHRza19kc3RfcmVzZXQoc2spO1xuIFx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuQEAgLTMyOTEsNiArMzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIFx0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2Vpbml0X3N0YXRlKVxuIFx0XHRcdGVyciA9IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlaW5pdF9zdGF0ZSh4KTtcbiBcdFx0bW9kdWxlX3B1dCh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZW93bmVyKTtcbitcdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgIXgtXHUwMDNlbW9kZV9kYXRhKVxuK1x0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0fVxuIGVycm9yOlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCA2Mzg0Nzk1ZWU2YjI2OS4uZDZkYjYzMzA0YmE2YmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3VzZXIuY1xuKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbkBAIC0xMjAxLDE3ICsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLVx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxuK1x0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbiB7XG4tXHR4dW8tXHUwMDNlaWZpbmRleCA9IHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleDtcbitcdHh1by1cdTAwM2VpZmluZGV4ID0gaWZpbmRleDtcbiBcdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG4gXHRcdHh1by1cdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xuIFx0aWYgKHhzby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKVxuIFx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbiB9XG4gXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuKyNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuK1x0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4re1xuK1x0eHNvX3RvX3h1b19pZmluZGV4KHhzbywgeHNvLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LCB4dW8pO1xuK31cbisjZW5kaWZcbitcbitzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbitcdFx0XHRcdCAgICAgaW50IGlmaW5kZXgsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XG4gXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xuQEAgLTEyMjIsMTEgKzEyMzEsMjIgQEAgc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0eHVvID0gbmxhX2RhdGEoYXR0cik7XG4gXHRtZW1zZXQoeHVvLCAwLCBzaXplb2YoKnh1bykpO1xuLVx0eHNvX3RvX3h1byh4c28sIHh1byk7XG4rXHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCBpZmluZGV4LCB4dW8pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCwgc2tiKTtcbit9XG4rXG4rc3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuK1x0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIFJFQURfT05DRSh4c28tXHUwMDNlaWZpbmRleCksIHNrYik7XG4rfVxuK1xuIHN0YXRpYyBib29sIHhmcm1fcmVkYWN0KHZvaWQpXG4ge1xuIFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX1NFQ1VSSVRZKSBcdTAwMjZcdTAwMjZcbkBAIC0xNDMzLDggKzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdFx0XHQgICAgICBcdTAwMjZ4LVx1MDAzZXJlcGxheSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbi1cdGlmKHgtXHUwMDNleHNvLmRldilcbi1cdFx0cmV0ID0gY29weV91c2VyX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4rXHRpZiAoUkVBRF9PTkNFKHgtXHUwMDNleHNvLmRldikpXG4rXHRcdHJldCA9IGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkKFx1MDAyNngtXHUwMDNleHNvLCBza2IpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBvdXQ7XG4gXHRpZiAoeC1cdTAwM2VpZl9pZCkge1xuQEAgLTIxMDQsMTMgKzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcbiBcdFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XG4gXHRcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcbiBcdFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcbitcdFx0Y2FzZSBYRlJNX01PREVfSVBURlM6XG4gXHRcdFx0aWYgKHV0W2ldLm9wdGlvbmFsIFx1MDAyNlx1MDAyNiBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiTW9kZSBpbiBvcHRpb25hbCB0ZW1wbGF0ZSBub3QgYWxsb3dlZCBpbiBvdXRib3VuZCBwb2xpY3lcIik7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcbiBcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJNb2RlIGluIHRlbXBsYXRlIGRvZXNuJ3Qgc3VwcG9ydCBhIGZhbWlseSBjaGFuZ2VcIik7XG5AQCAtNDA0Niw4ICs0MDY1LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpXG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKCp4LVx1MDAzZWNvYWRkcikpO1xuIFx0aWYgKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpXG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcbi1cdGlmICh4LVx1MDAzZXhzby5kZXYpXG4tXHRcdCBsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcbitcdGlmIChSRUFEX09OQ0UoeC1cdTAwM2V4c28uZGV2KSlcbitcdFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XG4gXHRpZiAoeC1cdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cdTAwM2Vwcm9wcy5zbWFyay5tKSB7XG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuc21hcmsudikpO1xuIFx0XHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVx1MDAzZXByb3BzLnNtYXJrLm0pKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjQwLjc1NDA1OTU5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDU2NzE0OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhbmQgUmVmaW5pbmcgdGhlIFhGUk0gKElQc2VjKSBTdWJzeXN0ZW0gUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSwgYW5kIGltbWVkaWF0ZWx5IEknbSBub3RpY2luZyBhIGdvb2QgbWl4IG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyBhbmQgaW1wb3J0YW50IGZpeGVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdCB3aGVuIGRlYWxpbmcgd2l0aCBhIGNvcmUgbmV0d29yayBzZWN1cml0eSBjb21wb25lbnQuXG5cbkZpcnN0LCB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN0cnVjdCBnZXRzIGEgbmV3IGBpZmluZGV4YCBmaWVsZCBpbiBgaW5jbHVkZS9uZXQveGZybS5oYC4gVGhpcyBsaWtlbHkgYWltcyB0byBpbXByb3ZlIGludGVyZmFjZSBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhlIG9mZmxvYWQgcGF0aC4gTWFrZXMgc2Vuc2U7IGlmIHdlJ3JlIG9mZmxvYWRpbmcsIHdlIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgdHJhZmZpYyBvcmlnaW5hdGVzIG9yIGlzIGRlc3RpbmVkLlxuXG5EaXZpbmcgaW50byBgbmV0L2NvcmUvZGV2LmNgLCBJIHNlZSBlcnJvciBoYW5kbGluZyBmb3IgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBgdmFsaWRhdGVfeG1pdF9za2JgLiBUaGlzIGlzIGdvb2Q7IGl0IHNob3dzIGEgdGhvdWdodGZ1bCBhcHByb2FjaCB0byBkZWFsaW5nIHdpdGggYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMuIEknbSBnbGFkIHRvIHNlZSB0aGF0IGhhbmRsZWQgaW4gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJlY2F1c2UgdGhvc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucy5cblxuSW4gYG5ldC9pcHY2L3hmcm02X3BvbGljeS5jYCwgc2V0dGluZyBgeGRzdC1cdTAwM2V1LmRzdC5kZXYgPSBOVUxMYCBpbiBgeGZybTZfZmlsbF9kc3RgIG1pZ2h0IHNlZW0gbWlub3IsIGJ1dCBpdCdzIHByb2JhYmx5IGEgY3J1Y2lhbCBlZGdlIGNhc2UgY2xlYW51cCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzdXNlIG9mIGRhbmdsaW5nIHBvaW50ZXJzLiBBIHN1YnRsZSwgYnV0IHZpdGFsLCBjb3JyZWN0aW9uLlxuXG5gbmV0L3hmcm0veGZybV9kZXZpY2UuY2AgaGFzIGEgZmV3IGludGVyZXN0aW5nIGNoYW5nZXMuIFJldHVybmluZyBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBmcm9tIGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGRldi5jYCwgc28gSSdtIGhhcHB5IHRvIHNlZSB0aGF0IGNvbnNpc3RlbmN5LiBUaGUgZml4IGZvciBgc2tiLVx1MDAzZXByZXZgIHdoZW4gYXN5bmMgY3J5cHRvIHN0ZWFscyB0aGUgU0tCIGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2dpYyBiZXR0ZXIgLSBhc3luYyBjcnlwdG8gaW50ZXJhY3Rpb25zIGNhbiBiZSB0cmlja3ksIHNvIGl0J3MgZ29vZCB0byBzZWUgdGhpcyBhZGRyZXNzZWQgZGlyZWN0bHkuIFRoZSBgeHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleGAgYXNzaWdubWVudCBpbiBgeGZybV9kZXZfc3RhdGVfYWRkYCBhbmQgYHhmcm1fc3RhdGVfZmluZGAgYXJlIGFsc28gY3JpdGljYWwgdXBkYXRlcyB0byBsaW5rIGludGVyZmFjZSBpbmRleCB0byBzdGF0ZSBpbmZvcm1hdGlvbi5cblxuYG5ldC94ZnJtL3hmcm1faXB0ZnMuY2AgYWRkcyBgc2hpbmZvLVx1MDAzZWZsYWdzIHw9IFNLQkZMX1NIQVJFRF9GUkFHYCBpbiBgaXB0ZnNfc2tiX2FkZF9mcmFnc2AuIFRoaXMgbG9va3MgbGlrZSBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSByZXF1aXJlbWVudCwgdG8gY29ycmVjdGx5IGhhbmRsZSBzaGFyZWQgZnJhZ21lbnRzIHdpdGhpbiBJUFRGUy4gQW5vdGhlciBnb29kLCBmb2N1c2VkIGNoYW5nZS5cblxuSW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgdGhlIG1lbW9yeSBsZWFrIGZpeGVzIGluIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NGAsIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGFuZCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBieSBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgb24gZXJyb3IgcGF0aHMgYXJlICplc3NlbnRpYWwqLiBNZW1vcnkgbGVha3MgYXJlIHVuYWNjZXB0YWJsZSwgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29tcG9uZW50LCBzbyBrdWRvcyB0byB0aGF0LlxuXG5UaGUgY2hhbmdlIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCB3aXRoIHRoZSBwcmVmaXhsZW4gY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCAoIGBcdTAwM2NgIHRvIGBcdTAwM2U9YCkgaXMgYSBjbGFzc2ljIGxvZ2ljIGJ1Zy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBlcnJvcnMgdGhhdCBjYW4gY2F1c2UgYWxsIHNvcnRzIG9mIG9ic2N1cmUgbmV0d29yayBtaXNiZWhhdmlvciwgc28gaXQncyBhIGdvb2Qgc3BvdCB0byBoYXZlIGNhdWdodCB0aGF0LlxuXG5gbmV0L3hmcm0veGZybV9zdGF0ZS5jYCBhbHNvIGFkZHJlc3NlcyBpbnRlcmZhY2UgaW5kZXhlcyBhbmQgZXJyb3IgaGFuZGxpbmc6IHNldHRpbmcgYHhzby1cdTAwM2VpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXhgIGluIGB4ZnJtX3N0YXRlX2ZpbmRgIGFuZCBzZXR0aW5nIGB4LVx1MDAzZW1vZGVfY2JzID0gTlVMTGAgb24gZXJyb3IgaW4gYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCBhbmQgYF9feGZybV9pbml0X3N0YXRlYC4gU2V0dGluZyBgeC1cdTAwM2Vtb2RlX2NicyA9IE5VTExgIG9uIGVycm9yIGhlbHBzIHdpdGggdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdXNpbmcgYHNrX2RzdF9yZXNldChzaylgIGluc3RlYWQgb2YgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgIGlzIGxpa2VseSBhIGNoYW5nZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBwb3RlbnRpYWxseSBpbiByZXNwb25zZSB0byBzb21lIGxvY2tpbmcgY2hhbmdlcy5cblxuRmluYWxseSwgYG5ldC94ZnJtL3hmcm1fdXNlci5jYCB1c2VzIGBSRUFEX09OQ0UoeHNvLVx1MDAzZWlmaW5kZXgpYCBhbmQgYFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpYCB0byBlbGltaW5hdGUgZGF0YSByYWNlcy4gVGhpcyBpcyBhIHZlcnkgd2VsY29tZSBpbXByb3ZlbWVudCBpbiBlbnN1cmluZyBzYWZlIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLiBNb3ZpbmcgYFhGUk1fTU9ERV9JUFRGU2AgaW4gYHZhbGlkYXRlX3RtcGxgIG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZ3JvdXBpbmcgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZC4gSSBrbm93IGBDT05GSUdfWEZSTWAgZW5hYmxlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBgQ09ORklHX1hGUk1fSVBURlNgIGVuYWJsZXMgYFhGUk1fSVBURlNgLCBhbmQgYENPTkZJR19YRlJNX1VTRVJgIGVuYWJsZXMgYFhGUk1fVVNFUmAuIEknbGwgY29uZmlybSBob3cgYFhGUk1fTkFUYCBpcyBlbmFibGVkLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcgaW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU3NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjUyLjIxMDc3OTM2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU3MzM0MTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fbmF0X2tlZXBhbGl2ZS5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSArPSB4ZnJtX3Byb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MDo1NS4yNjgxMTg5OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM5MjEwOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFhGUk0gTW9kdWxlcyoqXG5cblJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlLm9gIGlzIGRlZmluaXRlbHkgYnVpbHQgYW5kIGluY2x1ZGVkIHdoZW4gdGhlIGBDT05GSUdfWEZSTWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMuLi4gd2hhdCBhYm91dCBgeGZybV9pcHRmcy5vYD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciBtb2R1bGUuIElzIGl0IGFsc28gdGllZCBkaXJlY3RseSB0byBgQ09ORklHX1hGUk1gPyBPciBkb2VzIGl0IGRlcGVuZCBvbiBmdXJ0aGVyLCBtb3JlIHNwZWNpZmljIHN1Yi1vcHRpb25zIHdpdGhpbiB0aGUgWEZSTSBmcmFtZXdvcmssIHBlcmhhcHMgcmVsYXRlZCB0byBJUHNlYyB0cmFuc3BvcnQgc2VjdXJpdHkgb3IgZmlyZXdhbGwgaW50ZWdyYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhhdCByZWxhdGlvbnNoaXAgd2lsbCBiZSBrZXkgZm9yIGtub3dpbmcgd2hlbiBhbmQgd2hlcmUgdG8gZXhwZWN0IGl0cyBwcmVzZW5jZSBpbiBhIGtlcm5lbCBidWlsZC4gTGV0J3Mgc2VlLi4uIEkgYmV0IEkgY2FuIGZpbmQgdGhlIGFuc3dlciBxdWlja2x5IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjU4LjUwNzMzMjc5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg5MzgwOTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faXB0ZnMub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfWEZSTV9JTlRFUkZBQ0UpICs9IHhmcm1faW50ZXJmYWNlLm9cXG5uZXQveGZybS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfWEZSTV9JUFRGUykgKz0geGZybV9pcHRmcy5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1hGUk1fRVNQSU5UQ1ApICs9IGVzcGludGNwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDEuMzk2NzE5MzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDA0Nzg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqWEZSTSBJUFRGUyBEZXBlbmRlbmN5IENvbmZpcm1hdGlvbioqXG5cbkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1hGUk1fSVBURlNgIGlzIGRlZmluaXRlbHkgY29taW5nIGludG8gZm9jdXMuIE5vdyBJIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UgYW5kIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGB4ZnJtYCBhcmNoaXRlY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgbmV0L3hmcm0veGZybV9kZXZpY2UuY2AuIFRoaXMgZmlsZSBvZnRlbiBob2xkcyB0aGUga2V5IGRlcGVuZGVuY2llcyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgcmVsYXRlZCB0byBYRlJNIGRldmljZXMsIGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGxhaWQgb3V0IHRoZXJlLiBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZGlyZWN0aXZlcyB3aXRoaW4gYHhmcm1fZGV2aWNlLmNgIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgaW5kZWVkIGEgaGFyZCByZXF1aXJlbWVudCwgb3IgYXQgbGVhc3QgYSBoaWdobHkgcmVjb21tZW5kZWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRvIGVuc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseSBhbmQgdGhlIG1vZHVsZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGlyZWN0IGRlcGVuZGVuY2llcyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBwYXRocyB0aGF0IG1ha2UgdGhpcyBjb25uZWN0aW9uIGNsZWFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODEzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDUuNDIwNzY5NzM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODU4OTAyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kZXZpY2Uub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTctXFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDguMDA2NjY1NDMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2NTc1ODA1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBYRlJNIEtlcm5lbCBDb2RlKipcblxuUmlnaHQsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBidWlsdCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gR2l2ZW4gdGhhdCwgbXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlIHdvdWxkIGJlIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQncyBzdGFydCB0aGVyZTsgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGJldHdlZW4gdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIGFuZCB0aGUga2VybmVsJ3MgWEZSTSBzdWJzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdXNlci1zcGFjZSBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBrZXJuZWwtc2lkZSBzdHJ1Y3R1cmVzLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjE1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MTguNjY0MjQ4NjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA3NjAwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fdXNlci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fbWlncmF0ZV9zdGF0ZS5yc3Q9NjU9aW5oZXJpdHMgdGhlIHZhbHVlIGZyb20gdGhlIGV4aXN0aW5nIFNBIChvbWl0LXRvLWluaGVyaXQpLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04MC0gICAqIC0gYGBYRlJNQV9PRkZMT0FEX0RFVmBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdDo4MTogICAgIC0gSGFyZHdhcmUgb2ZmbG9hZCBjb25maWd1cmF0aW9uIChgYHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZGBgKS4gQWJzZW50XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04Mi0gICAgICAgY29waWVzIG9mZmxvYWQgZnJvbSB0aGUgZXhpc3RpbmcgU0EuIFdoZW5cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD02ODI9c3RydWN0IHhmcm1fbWlncmF0ZSB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtNjg3LVxcdHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDo2ODg6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XFxuaW5jbHVkZS9uZXQveGZybS5oLTY4OS1cXHRzdHJ1Y3QgeGZybV9tYXJrICAgICAgICBvbGRfbWFyaztcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTMwPWludCB4ZnJtX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTE5MzQtXFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkzNTpcXHRcXHQgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xOTM2LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxMjQ9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTI1OlxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyNi1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuaW5jbHVkZS9uZXQveGZybS5oOjIxMjg6XFx0XFx0XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sIHU4IGRpcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxOTY9c3RhdGljIGlubGluZSBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuaW5jbHVkZS9uZXQveGZybS5oOjIxOTc6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE5OC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0yMjExPXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMjEyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXFxuaW5jbHVkZS9uZXQveGZybS5oLTIyMTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD0yNzI9ZW51bSB4ZnJtX2FlX2Z0eXBlX3Qge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODUtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDoyODY6c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTI4Ny1cXHRfX3U4XFx0XFx0dHlwZTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg9MjkzPWVudW0geGZybV9hdHRyX3R5cGVfdCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMC1cXHRYRlJNQV9TQSxcXHRcXHQvKiBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjMwMTpcXHRYRlJNQV9QT0xJQ1ksXFx0XFx0LypzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMi1cXHRYRlJNQV9TRUNfQ1RYLFxcdFxcdC8qIHN0cnVjdCB4ZnJtX3NlY19jdHggKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzA5LVxcdFhGUk1BX0xBU1RVU0VELFxcdFxcdC8qIF9fdTY0ICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDozMTA6XFx0WEZSTUFfUE9MSUNZX1RZUEUsXFx0Lyogc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMTEtXFx0WEZSTUFfTUlHUkFURSxcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzIxLVxcdFhGUk1BX1BBRCxcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjMyMjpcXHRYRlJNQV9PRkZMT0FEX0RFVixcXHQvKiBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMyMy1cXHRYRlJNQV9TRVRfTUFSSyxcXHRcXHQvKiBfX3UzMiAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00MzE9c3RydWN0IHhmcm1fdXNlcnNwaV9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDM2LVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDM3OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00MzgtXFx0c3RydWN0IHhmcm1fc2VsZWN0b3JcXHRcXHRzZWw7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1NC1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjQ1NTpzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1Ni1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvclxcdFxcdHNlbDtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg9NDYxPXN0cnVjdCB4ZnJtX3VzZXJfYWNxdWlyZSB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2NC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvclxcdFxcdHNlbDtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjQ2NTpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm9cXHRwb2xpY3k7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00NjYtXFx0X191MzJcXHRcXHRcXHRcXHRhYWxnb3M7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTQ3Nz1zdHJ1Y3QgeGZybV91c2VyX3BvbGV4cGlyZSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo0Nzg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXFx0cG9sO1xcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDc5LVxcdF9fdThcXHRcXHRcXHRcXHRoYXJkO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD01NDQ9c3RydWN0IHhmcm1fYWRkcmVzc19maWx0ZXIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTEtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NTI6c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU1My1cXHRpbnRcXHRcXHRcXHRcXHRpZmluZGV4O1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzAtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzE6c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0IHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU3Mi0jZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9VTlNQRUNcXHQwXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjEtb2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTk9c3RydWN0IGNvbXBhdF94ZnJtX2xpZmV0aW1lX2N1ciB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTIyLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjM6c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYy0yNC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvciBzZWw7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTQ1PXN0cnVjdCBjb21wYXRfeGZybV91c2VyX2FjcXVpcmUge1xcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy00OC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvciBzZWw7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo0OTpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbGljeTtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTUwLVxcdC8qIDQgYnl0ZXMgYWRkaXRpb25hbCBwYWRkaW5nIG9uIDY0Yml0ICovXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY2PXN0cnVjdCBjb21wYXRfeGZybV91c2VyX3BvbGV4cGlyZSB7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo2NzpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbDtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY4LVxcdC8qIDggYnl0ZXMgYWRkaXRpb25hbCBwYWRkaW5nIG9uIDY0Yml0ICovXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTc0PXN0YXRpYyBjb25zdCBpbnQgY29tcGF0X21zZ19taW5bWEZSTV9OUl9NU0dUWVBFU10gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTc3LVxcdFtYRlJNX01TR19HRVRTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Nzg6XFx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8pLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Nzk6XFx0W1hGUk1fTVNHX0RFTFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODA6XFx0W1hGUk1fTVNHX0dFVFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtODEtXFx0W1hGUk1fTVNHX0FMTE9DU1BJICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc3BpX2luZm8pLFxcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy04My1cXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJfZXhwaXJlKSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjg0OlxcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvKSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTg1LVxcdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoY29tcGF0X3hmcm1fdXNlcnNhX2luZm8pLFxcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy05MS1cXHRbWEZSTV9NU0dfUkVQT1JUICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcl9yZXBvcnQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6OTI6XFx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtOTMtXFx0W1hGUk1fTVNHX05FV1NBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSBzaXplb2YodTMyKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBjb21wYXRfcG9saWN5W1hGUk1BX01BWCsxXSA9IHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTAzLVxcdFtYRlJNQV9TQV1cXHRcXHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJzYV9pbmZvKX0sXFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMDQ6XFx0W1hGUk1BX1BPTElDWV1cXHRcXHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTA1LVxcdFtYRlJNQV9MQVNUVVNFRF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTE5LVxcdFtYRlJNQV9DT0FERFJdXFx0XFx0PSB7IC5sZW4gPSBzaXplb2YoeGZybV9hZGRyZXNzX3QpIH0sXFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjA6XFx0W1hGUk1BX1BPTElDWV9UWVBFXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfdHlwZSl9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTIxLVxcdFtYRlJNQV9NSUdSQVRFXVxcdFxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTI4LVxcdFtYRlJNQV9BRERSRVNTX0ZJTFRFUl1cXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlcikgfSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjEyOTpcXHRbWEZSTUFfT0ZGTE9BRF9ERVZdXFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSB9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTMwLVxcdFtYRlJNQV9TRVRfTUFSS11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTIzOT1zdGF0aWMgaW50IHhmcm1feGxhdGU2NF9hdHRyKHN0cnVjdCBza19idWZmICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKnNyYylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMjU0LVxcdGNhc2UgWEZSTUFfUE9MSUNZOlxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjU1OlxcdFxcdHJldHVybiB4ZnJtX25sYV9jcHkoZHN0LCBzcmMsIFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbykpO1xcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMjU2LVxcdGNhc2UgWEZSTUFfU0VDX0NUWDpcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NjQ1PXN0YXRpYyBpbnQgeGZybV91c2VyX3BvbGljeV9jb21wYXQodTggKipwZGF0YTMyLCBpbnQgb3B0bGVuKVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjQ2LXtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NzpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvICpwID0gKHZvaWQgKikqcGRhdGEzMjtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0OC1cXHR1OCAqc3JjX3RlbXBsYXRlcywgKmRzdF90ZW1wbGF0ZXM7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTIzOT1pbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDA6XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQxLVxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTM1OT1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjA6XFx0XFx0XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sIHU4IGRpcixcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2MS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ2NTY9aW50IHhmcm1fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ2NTktXFx0XFx0IHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwLCB1MzIgaWZfaWQsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0NjYwOlxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDY2MS17XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjA1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTEyMTU9c3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMTY6XFx0XFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTcte1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTIyMj1zdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjQte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMjU6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIyNi1cXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTk4MT1zdGF0aWMgaW50IHZlcmlmeV9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTk3LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE5OTg6c3RhdGljIGludCB2ZXJpZnlfbmV3cG9saWN5X2luZm8oc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE5OTktXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIxODk9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9wb2xpY3lfdHlwZSh1OCAqdHAsIHN0cnVjdCBubGF0dHIgKiphdHRycyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTItXFx0c3RydWN0IG5sYXR0ciAqcnQgPSBhdHRyc1tYRlJNQV9QT0xJQ1lfVFlQRV07XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjE5MzpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKnVwdDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMTk0LVxcdHU4IHR5cGUgPSBYRlJNX1BPTElDWV9UWVBFX01BSU47XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjA5LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIyMTA6c3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcClcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjExLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMjEtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjIyMjpzdGF0aWMgdm9pZCBjb3B5X3RvX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCwgaW50IGRpcilcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjIzLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIyMzc9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMjM4OlxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnAsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjIzOS1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjI4ND1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbGljeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyODgtXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjI4OTpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnAgPSBubG1zZ19kYXRhKG5saCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjI5MC1cXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM3Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1c2VycG9saWN5X3R5cGVfYXR0cnNpemUodm9pZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzNzktI2lmZGVmIENPTkZJR19YRlJNX1NVQl9QT0xJQ1lcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzgwOlxcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlKSk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4MS0jZWxzZVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM4Nz1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzODgte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIzODk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHVwdDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzkwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIzOTE6XFx0LyogU2FkbHkgdGhlcmUgYXJlIHR3byBob2xlcyBpbiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzkyLVxcdG1lbXNldChcXHUwMDI2dXB0LCAwLCBzaXplb2YodXB0KSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNDA1PXN0YXRpYyBpbnQgZHVtcF9vbmVfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIGludCBkaXIsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjQwNy1cXHRzdHJ1Y3QgeGZybV9kdW1wX2luZm8gKnNwID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI0MDg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI0MDktXFx0c3RydWN0IHNrX2J1ZmYgKmluX3NrYiA9IHNwLVxcdTAwM2Vpbl9za2I7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTE0PXN0YXRpYyBpbnQgeGZybV9ub3RpZnlfdXNlcnBvbGljeShzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjUxNS17XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjUxNjpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1MTctXFx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZigqdXApKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NDUtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU0NjpzdGF0aWMgYm9vbCB4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQoX191OCBwb2xpY3kpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTUyPXN0YXRpYyBpbnQgeGZybV9zZXRfZGVmYXVsdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTUtXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU1NjpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwID0gbmxtc2dfZGF0YShubGgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTctXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU1ODpcXHRpZiAoeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKHVwLVxcdTAwM2VpbikpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU1OS1cXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9JTl0sIHVwLVxcdTAwM2Vpbik7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU2MC1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTYxOlxcdGlmICh4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQodXAtXFx1MDAzZWZ3ZCkpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU2Mi1cXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9GV0RdLCB1cC1cXHUwMDNlZndkKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYzLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NjQ6XFx0aWYgKHhmcm1fdXNlcnBvbGljeV9pc192YWxpZCh1cC1cXHUwMDNlb3V0KSlcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTY1LVxcdFxcdFdSSVRFX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0sIHVwLVxcdTAwM2VvdXQpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjU3Mz1zdGF0aWMgaW50IHhmcm1fZ2V0X2RlZmF1bHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1Nzk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0ICpyX3VwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1ODA6XFx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQpKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTgxLVxcdHUzMiBwb3J0aWQgPSBORVRMSU5LX0NCKHNrYikucG9ydGlkO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjYwMz1zdGF0aWMgaW50IHhmcm1fZ2V0X3BvbGljeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI2MDgtXFx0c3RydWN0IHhmcm1fcG9saWN5ICp4cDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNjA5OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnA7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjYxMC1cXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjkzNz1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbF9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yOTQzLVxcdHN0cnVjdCB4ZnJtX3VzZXJfcG9sZXhwaXJlICp1cCA9IG5sbXNnX2RhdGEobmxoKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyOTQ0OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IFxcdTAwMjZ1cC1cXHUwMDNlcG9sO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI5NDUtXFx0dTggdHlwZSA9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTjtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxODM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTg1LXtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTg2OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnBpID0gbmxtc2dfZGF0YShubGgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODctXFx0c3RydWN0IHhmcm1fbWlncmF0ZSBtW1hGUk1fTUFYX0RFUFRIXSA9IHt9O1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE5My1cXHRzdHJ1Y3QgeGZybV9lbmNhcF90bXBsICAqZW5jYXAgPSBOVUxMO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxOTQ6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8gPSBOVUxMO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTUtXFx0dTMyIGlmX2lkID0gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMxMy1cXHRcXHQobS1cXHUwMDNlZW5jYXAgPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fZW5jYXBfdG1wbCkpIDogMCkgK1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMzMTQ6XFx0XFx0KG0tXFx1MDAzZXh1byA/IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKSA6IDApICtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzE1LVxcdFxcdChtLVxcdTAwM2VuZXdfbWFyayA/IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV9tYXJrKSkgOiAwKSArXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzQzPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0Ny1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXFx1MDAzZXNrKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ4OlxcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCB4dW8gPSB7fTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ5LVxcdHN0cnVjdCB4ZnJtX21pZ3JhdGUgbSA9IHt9O1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzU3MT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfbXNnc2l6ZShpbnQgbnVtX21pZ3JhdGUsIGludCB3aXRoX2ttYSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1NzMte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1NzQ6XFx0cmV0dXJuIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkKSlcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTc1LVxcdCAgICAgICsgKHdpdGhfa21hID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2ttYWRkcmVzcykpIDogMClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM1ODE9c3RhdGljIGludCBidWlsZF9taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTg2LVxcdGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1wO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1ODc6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqcG9sX2lkO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1ODgtXFx0c3RydWN0IG5sbXNnaGRyICpubGg7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNjU5PWNvbnN0IGludCB4ZnJtX21zZ19taW5bWEZSTV9OUl9NU0dUWVBFU10gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjYyLVxcdFtYRlJNX01TR19HRVRTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaWQpLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjM6XFx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaW5mbyksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2NDpcXHRbWEZSTV9NU0dfREVMUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2NTpcXHRbWEZSTV9NU0dfR0VUUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY2Ni1cXHRbWEZSTV9NU0dfQUxMT0NTUEkgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnNwaV9pbmZvKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjgtXFx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfZXhwaXJlKSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjY5OlxcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2luZm8pLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NzAtXFx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJzYV9pbmZvKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NzYtXFx0W1hGUk1fTVNHX1JFUE9SVCAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfcmVwb3J0KSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjc3OlxcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2lkKSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjc4LVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjgxLVxcdFtYRlJNX01TR19NQVBQSU5HICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX21hcHBpbmcpLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2ODI6XFx0W1hGUk1fTVNHX1NFVERFRkFVTFQgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfZGVmYXVsdCksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MzpcXHRbWEZSTV9NU0dfR0VUREVGQVVMVCAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0KSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjg0LVxcdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSksXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNjkwPWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHhmcm1hX3BvbGljeVtYRlJNQV9NQVgrMV0gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjkyLVxcdFtYRlJNQV9TQV1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyl9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2OTM6XFx0W1hGUk1BX1BPTElDWV1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8pfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjk0LVxcdFtYRlJNQV9MQVNUVVNFRF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MDgtXFx0W1hGUk1BX0NPQUREUl1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZih4ZnJtX2FkZHJlc3NfdCkgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzA5OlxcdFtYRlJNQV9QT0xJQ1lfVFlQRV1cXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzEwLVxcdFtYRlJNQV9NSUdSQVRFXVxcdFxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTctXFx0W1hGUk1BX0FERFJFU1NfRklMVEVSXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX2FkZHJlc3NfZmlsdGVyKSB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MTg6XFx0W1hGUk1BX09GRkxPQURfREVWXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCkgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzE5LVxcdFtYRlJNQV9TRVRfTUFSS11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz00MDM5PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDA2OC1cXHRpZiAoUkVBRF9PTkNFKHgtXFx1MDAzZXhzby5kZXYpKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQwNjk6XFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtNDA3MC1cXHRpZiAoeC1cXHUwMDNlcHJvcHMuc21hcmsudiB8IHgtXFx1MDAzZXByb3BzLnNtYXJrLm0pIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQyNTU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9jb21waWxlX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjU4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzo0MjU5OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IChzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKilkYXRhO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQyNjAtXFx0c3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCA9IChzdHJ1Y3QgeGZybV91c2VyX3RtcGwgKikgKHAgKyAxKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQzNzQ9c3RhdGljIGludCB4ZnJtX25vdGlmeV9wb2xpY3koc3RydWN0IHhmcm1fcG9saWN5ICp4cCwgaW50IGRpciwgY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDM3Ny1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSB4cF9uZXQoeHApO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqaWQ7XFxubmV0L3hmcm0veGZybV91c2VyLmMtNDM4MC1cXHRzdHJ1Y3Qgbmxtc2doZHIgKm5saDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTExMDE9c3RhdGljIGludCB4ZnJtX3BvbGljeV9hZGQoaW50IHhmcm1fc29jaywgdWludDMyX3Qgc2VxLCB1aW50MzJfdCBzcGksXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTA2LVxcdFxcdHN0cnVjdCBubG1zZ2hkclxcdFxcdFxcdG5oO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jOjExMDc6XFx0XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXFx0aW5mbztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTA4LVxcdFxcdGNoYXJcXHRcXHRcXHRcXHRhdHRyYnVmW01BWF9QQVlMT0FEXTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTExNzY9c3RhdGljIGludCB4ZnJtX3BvbGljeV9kZWwoaW50IHhmcm1fc29jaywgdWludDMyX3Qgc2VxLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTE4MS1cXHRcXHRzdHJ1Y3Qgbmxtc2doZHJcXHRcXHRcXHRuaDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoxMTgyOlxcdFxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWRcXHRpZDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTgzLVxcdFxcdGNoYXJcXHRcXHRcXHRcXHRhdHRyYnVmW01BWF9QQVlMT0FEXTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTIwODc9c3RhdGljIGludCB3cml0ZV9wcm90b19wbGFuKGludCBmZCwgaW50IHByb3RvKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMjEzMy0gKiAgIHNpemVvZih4ZnJtX3VzZXJzYV9pbmZvKSAgICAgPSAyMjAgIHwgIHNpemVvZih4ZnJtX3VzZXJzYV9pbmZvKSAgICAgPSAyMjRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoyMTM0OiAqICAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2NCAgfCAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2OFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTIxMzUtICogICBzaXplb2YoeGZybV91c2Vyc3BpX2luZm8pICAgID0gMjI4ICB8ICBzaXplb2YoeGZybV91c2Vyc3BpX2luZm8pICAgID0gMjMyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jPTE0NTI9c3RhdGljIGludCBjb25maWdfeGZybV9wb2xpY3koaW50IHNkLCBzdHJ1Y3Qgc29ja19hcmdzICphcmdzKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmMtMTQ1My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYzoxNDU0OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyBwb2xpY3kgPSB7fTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE0NTUtXFx0aW50IHR5cGUgPSBVRFBfRU5DQVBfRVNQSU5VRFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQxOjIxLjI3MTg1NTg0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU1MDYyNjU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgWEZSTSBjb25maWd1cmF0aW9uLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19YRlJNX1VTRVJgIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgdXNlci1zcGFjZSBjb250cm9sLiBIbW0sIHdoYXQgYWJvdXQgYENPTkZJR19YRlJNX09GRkxPQURgPyBJdCdzIGJlZW4gYSB3aGlsZSBzaW5jZSBJIHBsYXllZCBhcm91bmQgd2l0aCBoYXJkd2FyZSBvZmZsb2FkaW5nIHN1cHBvcnQuIExldCdzIHNlZS4uLiBJJ2xsIHF1aWNrbHkgY2hlY2sgYGluY2x1ZGUvbmV0L3hmcm0uaGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN5bWJvbCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCB3aGV0aGVyIGl0J3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4gR290dGEgbWFrZSBzdXJlIEknbSBlbmFibGluZyBldmVyeXRoaW5nIG5lY2Vzc2FyeSwgYnV0IG5vdGhpbmcgdW5uZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTIyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MzYuODIyNDg1MzQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYwMTc0OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fZGV2X29mZmxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTE0NT1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xNDgtXFxuaW5jbHVkZS9uZXQveGZybS5oOjE0OTpzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE1MC1cXHQvKiBUaGUgZGV2aWNlIGZvciB0aGlzIG9mZmxvYWQuXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTkwPXN0cnVjdCB4ZnJtX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yOTMtXFxuaW5jbHVkZS9uZXQveGZybS5oOjI5NDpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4c287XFxuaW5jbHVkZS9uZXQveGZybS5oLTI5NS1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD02MzQ9c3RydWN0IHhmcm1fcG9saWN5IHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC02NjYtXFxuaW5jbHVkZS9uZXQveGZybS5oOjY2NzpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTY2OC19O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTE3MjM9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTcyNC17XFxuaW5jbHVkZS9uZXQveGZybS5oOjE3MjU6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxuaW5jbHVkZS9uZXQveGZybS5oLTE3MjYtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4ZG8tXFx1MDAzZWRldik7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTMwOmJvb2wgeGZybV9kZXZfb2ZmbG9hZF9vayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxMzEtdm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxMzQ9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX2FkdmFuY2VfZXNuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTM1LXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MjEzNjpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEzNy1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhzby1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTYxPXN0YXRpYyBpbmxpbmUgdm9pZCB4ZnJtX2Rldl9wb2xpY3lfZGVsZXRlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE2Mi17XFxuaW5jbHVkZS9uZXQveGZybS5oOjIxNjM6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxNjQtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxNzA9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE3MS17XFxuaW5jbHVkZS9uZXQveGZybS5oOjIxNzI6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxNzMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIyMjI9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI1LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMjI2OnN0YXRpYyBpbmxpbmUgYm9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MjM5PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQ1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDY6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNDctXFx0eGZybV9hZGRyZXNzX3QgKnNhZGRyO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTk9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjIte1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYzOlxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcXHUwMDI2eHAtXFx1MDAzZXhkbztcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz00MTg9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9kZXZfcG9saWN5X2FkZCk7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy00MTktXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzo0MjA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDIxLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDczLX1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX2Rldl9vZmZsb2FkX29rKTtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTQ3NS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NzUwPWludCB4ZnJtX291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc3Mi1cXHRpZiAoeC1cXHUwMDNleHNvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc3MzpcXHRcXHRpZiAoIXhmcm1fZGV2X29mZmxvYWRfb2soc2tiLCB4KSkge1xcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzc0LVxcdFxcdFxcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1PVVRFUlJPUik7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc5NC1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc5NTpcXHRpZiAoeGZybV9kZXZfb2ZmbG9hZF9vayhza2IsIHgpKSB7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03OTYtXFx0XFx0c3RydWN0IHNlY19wYXRoICpzcDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjY9dm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTc2Ny17XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc2ODpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY5LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBSRUFEX09OQ0UoeHNvLVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTc4MD12b2lkIHhmcm1fZGV2X3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTc4MS17XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc4MjpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzgzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBSRUFEX09OQ0UoeHNvLVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg4Nj14ZnJtX2Rldl9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODkxLVxcdFxcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4OTI6XFx0XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODkzLVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTY0LVxcdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk2NTpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NjYtXFx0aW50IGksIGVyciA9IDAsIGNudCA9IDA7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTEzMT1zdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKl9feGZybV9zdGF0ZV9sb29rdXBfYWxsKGNvbnN0IHN0cnVjdCB4ZnJtX2hhc2hfc3RhdGVfcHRycyAqc3RhdGVfcHRycyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTM1LVxcdFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgc2hvcnQgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTM2OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbylcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTEzNy17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTM1Nj14ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU0Mi1cXHRcXHRpZiAocG9sLVxcdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTQzOlxcdFxcdFxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcXHUwMDI2cG9sLVxcdTAwM2V4ZG87XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1NDQ6XFx0XFx0XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDUtXFx0XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE2MDEtI2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTYwMjpcXHRcXHRcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTYwMy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExODM9c3RhdGljIGludCBjb3B5X3NlY19jdHgoc3RydWN0IHhmcm1fc2VjX2N0eCAqcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMDMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTIwNDpzdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwNS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE0LSNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTIxNTpzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNi1cXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjIxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMjI6c3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZF9pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIyMy1cXHRcXHRcXHRcXHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIzOC1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjM5OnN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjQwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTI0NDpzdGF0aWMgaW50IGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTI0NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTozOS4wODI2NjQ3NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNjM3MjY0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCdzIGNydWNpYWwgZm9yIHRoZSBgeGZybV9kZXZfb2ZmbG9hZGAgbG9naWMuIFRoYXQncyB0aGUgY29yZSBvZiB0aGUgaXNzdWUuXG5cbk5vdywgbGV0J3MganVzdCBydW4gdGhyb3VnaCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgWEZSTWAsIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGFuZCwgb2YgY291cnNlLCB0aGUgb25lIEkgbWVudGlvbmVkIGFscmVhZHk6IGBYRlJNX09GRkxPQURgLlxuXG5JJ20gcGF1c2luZyBicmllZmx5IG9uIGBYRlJNX05BVGAsIHRob3VnaC4gSXQncyBhIGJpdCBvZiBhIGdyYXkgYXJlYSBpbiBteSBtZW1vcnkuIElzIGl0IGFjdHVhbGx5IGBDT05GSUdfWEZSTV9OQVRgIGFzIGEgc2VwYXJhdGUgb3B0aW9uLCBvciBpcyB0aGUgTkFUIGZ1bmN0aW9uYWxpdHkganVzdCBpbXBsaWNpdGx5IHRpZWQgdG8gYENPTkZJR19YRlJNYD8gVG8gYmUgc3VyZSwgSSBzaG91bGQgcmVhbGx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGJ1aWxkaW5nIHNvbWV0aGluZyBsaWtlIGB4ZnJtX25hdF9rZWVwYWxpdmUub2AuIEknbSBwcmV0dHkgc3VyZSB0aGF0IGZpbGUgaXMgYnVpbHQgb25seSBpZiBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQsIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgQ09ORklHX1hGUk1fTkFUYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0J3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IGV2ZW4gZXhpc3RzIGFuZCB0aGF0IGl0J3Mgc2VwYXJhdGUsIG9yIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGp1c3QgcGFydCBvZiB0aGUgY29yZSBYRlJNIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQ0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQxOjUyLjE0NjM5NDk3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NDY0ODI3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1hGUk1fTkFUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTo1NC44OTEwNTE2NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDE4MDM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSd2ZSBnb3QgdG8gZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGVzZSBvcHRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSB3YXMgbG9va2luZyBmb3IgYENPTkZJR19YRlJNX05BVGAsIGFuZCwgd2VsbCwgaXQgYXBwZWFycyB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpc24ndCBkZWZpbmVkLiBUaGF0J3MgYSBjbGFzc2ljIGNhc2Ugb2YgZWl0aGVyIGEgdHlwbywgYW4gb3V0ZGF0ZWQgcmVmZXJlbmNlLCBvciBwZXJoYXBzIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHJlcHJlc2VudHMgaXMgZm9sZGVkIGludG8gc29tZXRoaW5nIGVsc2UuXG5cblNpbmNlIGBDT05GSUdfWEZSTV9OQVRgIGlzbid0IHRoZXJlLCBpdCdzIHRpbWUgdG8gc2hpZnQgZ2VhcnMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBmb3IgYENPTkZJR19YRlJNX01JR1JBVEVgLiBIb3BlZnVsbHksIHRoaXMgZXhpc3RzLCBhbmQgZXZlbiBpZiBub3QsIGl0IHByb3ZpZGVzIHNvbWUgdXNlZnVsIGNvbnRleHQsIG9yIHdpbGwgcG9pbnQgbWUgaW4gdGhlIGRpcmVjdGlvbiBvZiB3aGVyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24gbWF5IHJlc2lkZS4gTWF5YmUgaXQgcmVsYXRlcyB0byB0aGUgc2FtZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG9yIGF0IGxlYXN0IGEgcmVsYXRlZCBhcmVhIG9mIG5ldHdvcmsgc3RhY2sgY29uZmlndXJhdGlvbiB0aGF0IEkgc2hvdWxkIGNvbnNpZGVyLiBLbm93aW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NDQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTo1OC4zNTEyMzQ1NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzI1MTI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1hGUk1fTUlHUkFURVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0PTE5MT1Vc2Vyc3BhY2UgY2FuIHByb2JlIGZvciBrZXJuZWwgc3VwcG9ydCBieSBzZW5kaW5nIGEgbWluaW1hbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC0xOTUtICBpcyBvdXQgb2YgcmFuZ2VcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0OjE5NjotIGBgLUVOT1BST1RPT1BUYGA6IG1lc3NhZ2UgdHlwZSBpcyBrbm93biBidXQgYGBDT05GSUdfWEZSTV9NSUdSQVRFYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5Ny0gIGlzIG5vdCBlbmFibGVkXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTU5PUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NjA6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy02MS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz01Mz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NTQ6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc9NDk9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo1MDpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTUxLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz01Nj1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NTc6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTU4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6NDc6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTQ4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz00OD1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NDk6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTUwLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnLTQ5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz02Nz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Njg6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTY5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTQ1PUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjQ2OkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTQ3LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTQ2PUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjQ3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTQ4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTQ5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnPTQyPUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz00Mz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NDQ6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTQ1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzY9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzozNzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM4LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9NDQ9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0NTpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUPXlcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTA5PWludCB4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE5MTAtXFxuaW5jbHVkZS9uZXQveGZybS5oOjE5MTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTkxMi1pbnQga21fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjAzNT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB4ZnJtX3JlcGxheV9zdGF0ZV9lc25fbGVuKHN0cnVjdCB4ZnJtX3JlcGxheV9zdGF0ZV9lc24gKnJlcGxheV9lc24pXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMjAzOS1cXG5pbmNsdWRlL25ldC94ZnJtLmg6MjA0MDojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMDQxLXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcmVwbGF5X2Nsb25lKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDg0PUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fYXVkaXRfcG9saWN5X2RlbGV0ZSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0ODYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0NDg3OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDg4LXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE5NDk9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FkZCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5NTAtXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTk1Mi1zdGF0aWMgaW5saW5lIGludCBjbG9uZV9zZWN1cml0eShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHhmcm1fc2VjX2N0eCAqc2VjdXJpdHkpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9Mjg4ND1FWFBPUlRfU1lNQk9MKGttX3BvbGljeV9leHBpcmVkKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjg4NS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6Mjg4NjojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg3LWludCBrbV9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX3NlbGVjdG9yICpzZWwsIHU4IGRpciwgdTggdHlwZSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTEyMDQ9c3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxMy1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE0OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNS1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMDQyPXN0YXRpYyBpbnQgeGZybV9hZGRfYWNxdWlyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzExNzojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTgtc3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgeGZybV9taWdyYXRlICptYSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM1MzI9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM4LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1Mzk6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQwLXN0YXRpYyBpbnQgY29weV90b191c2VyX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fbWlncmF0ZSAqbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MDAuNzIzNzU2NDEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMTY2OTU2OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYm9pbHMgZG93biB0byB0aGUgYHhzb190b194dW9gIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VkIHRvIGNvbnZlcnQgZGF0YSBmcm9tIGFuIGB4ZnJtX2Rldl9vZmZsb2FkYCBzdHJ1Y3R1cmUgKGB4c29gKSB0byBhbiBgeGZybV91c2VyX29mZmxvYWRgIHN0cnVjdHVyZSAoYHh1b2ApLiBBbmQgbm93IEkgY2FuIHNlZSwgYENPTkZJR19YRlJNX01JR1JBVEVgIGlzIGd1YXJkaW5nIHRoYXQgZnVuY3Rpb24uXG5cblNwZWNpZmljYWxseSwgSSBjYW4gc2VlIHRoYXQgdGhpcyBgI2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVgIGJsb2NrIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBoYXZlIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gZW5hYmxlZCB0byBnZXQgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLlxuXG5JdCdzIGNsZWFyIHRoYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBzdXBwb3J0IG1pZ3JhdGlvbi4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHdpdGggdGhpcyBmdW5jdGlvbmFsaXR5IGVuYWJsZWQsIGEgZGlmZmVyZW50IGludGVyZmFjZSBpbmRleCBuZWVkcyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgYW5kIHRoaXMgaXMgd2h5IGEgbmV3IGZ1bmN0aW9uLCBgeHNvX3RvX3h1b19pZmluZGV4YCwgaGFzIGJlZW4gY3JlYXRlZC4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgYHhzb190b194dW9gIG5vdyBjYWxscyBgeHNvX3RvX3h1b19pZmluZGV4YCBwYXNzaW5nIGluIHRoZSBpZmluZGV4LiBBbHNvLCBJIHNlZSB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gYGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkYCBpcyBub3cgY2FsbGluZyBgY29weV91c2VyX29mZmxvYWRfaWZpbmRleGAgYW5kIHBhc3NlcyBpbiB0aGUgaWZpbmRleCBmcm9tIHRoZSBgeHNvYC5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBjb250ZXh0IG9mIHRoaXMsIEkgc2hvdWxkIHByb2JhYmx5IGVudW1lcmF0ZSB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgYXQgcGxheSBoZXJlLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nOiBgWEZSTV9VU0VSYCwgYFhGUk1fSVBURlNgLCBhbmQgYFhGUk1fT0ZGTE9BRGAgKHRoYXQgb25lJ3MgaW1wb3J0YW50LCBJIHRoaW5rIGl0J3MgdGhlIGJhc2lzIGZvciB0aGUgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5KSBhbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBvbmUsIGBYRlJNX01JR1JBVEVgLiBJIGNhbiBqdXN0IGFkZCBgWEZSTWAgZm9yIGNvbXBsZXRlbmVzcywgdGhhdCBzZWVtcyBsaWtlIGEgYmFzZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDUxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjExLjg5MDcxNjI1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5MTUyMzU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9PRkZMT0FEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NT1jb25maWcgWEZSTVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MTQuMzgyMjQ3NzA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTg0OTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFhGUk0gT2ZmbG9hZCBhbmQgSVBURlMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBgWEZSTV9PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIE5vdywganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJyb2FkZXIgcGljdHVyZSwgbGV0J3MgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB3aXRoIHRoZSBLY29uZmlnIGRvY3VtZW50YXRpb24gZm9yIGBYRlJNX0lQVEZTYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlc2UgZmVhdHVyZXMuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZm9yZXN0IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgb2YgdGhpcyBjb21wbGV4aXR5LCBhbmQgYSBxdWljayBkb3VibGUtY2hlY2sgY2FuIHByZXZlbnQgYSBsb3Qgb2YgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEl0J3MganVzdCBnb29kIHByYWN0aWNlIHRvIHJldmlldyB0aGUgcmVsYXRlZCBvcHRpb25zIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjgzMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjIxLjY4MDc0NzMyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Njg4OTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9JUFRGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MjQuMTI3NjQyNzAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzUyMjQ0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgWEZSTV9JUFRGU2AgaXMgYSBsZWdpdGltYXRlIGFuZCBhY2NlcHRhYmxlIHNldHRpbmcuIFRoYXQncyBnb29kIHRvIGtub3csIGNvbmZpcm1pbmcgaXQncyBhIGtub3duIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCdzIHNlZSB3aGF0J3MgcmVsYXRlZCB0byBpdC4gTXkgbmV4dCBjaGVjayBpcyBnb2luZyB0byBiZSBvbiBgWEZSTV9NSUdSQVRFYC4gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhhdCBwbGF5cyBpbnRvIHRoZSBvdmVyYWxsIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzE0OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjI3LjYwMjg3MTI3MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3NDU3MzM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9NSUdSQVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NTE9Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjMwLjA3NzQ0OTcxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE3MDgwMDg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWEZSTSBTdWJzeXN0ZW0gRml4ZXMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggYWRkcmVzc2luZyBzZXZlcmFsIGlzc3VlcyB3aXRoaW4gdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHllcywgYFhGUk1fTUlHUkFURWAgaXMgYSB2YWxpZCBjb25maWcuICBBbmQgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIElQdjYtcmVsYXRlZCBjb2RlIGluIGBuZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY2AgYW5kIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGBDT05GSUdfSVBWNmAgaXMgZGVmaW5pdGVseSBhIHJlcXVpcmVtZW50LCB0aG91Z2ggaXQncyB1c3VhbGx5IGVuYWJsZWQsIHNvIGxldCdzIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gSSBpbml0aWFsbHkgaWRlbnRpZmllZCBhIGxvbmcgbGlzdCwgYnV0IHdlIG5lZWQgdG8gbmFycm93IGl0IGRvd24gdG8gdGhlIG1vc3QgcmVsZXZhbnQ6XG5cbiogICBgdmFsaWRhdGVfeG1pdF94ZnJtYFxuKiAgIGB4ZnJtNl9maWxsX2RzdGBcbiogICBgeGZybV9kZXZfc3RhdGVfYWRkYFxuKiAgIGBpcHRmc19za2JfYWRkX2ZyYWdzYFxuKiAgIGBuYXRfa2VlcGFsaXZlX3NlbmRgXG4qICAgYHhmcm1faGFzaF9yZWJ1aWxkYFxuKiAgIGB4ZnJtX3N0YXRlX2ZpbmRgXG4qICAgYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYFxuKiAgIGB4ZnJtX3VzZXJfcG9saWN5YFxuKiAgIGBfX3hmcm1faW5pdF9zdGF0ZWBcbiogICBgY29weV90b191c2VyX3N0YXRlX2V4dHJhYFxuKiAgIGB2YWxpZGF0ZV90bXBsYFxuXG5JJ20gZmlsdGVyaW5nIG91dCB0aGUgaG90LXBhdGggZnVuY3Rpb25zIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGZvY3VzaW5nIG9uIHRoZSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9ucy4gVGhlbiBJIHJlZmluZWQgdGhpcyBsaXN0IGJhc2VkIG9uIHdoYXQgdGhlIHBhdGNoIGlzIGNoYW5naW5nLlxuXG5UYWtpbmcgYSBjbG9zZXIgbG9vaywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgaW4gYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIGFuZCBpdCdzIGNhbGxlZCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAsIHNvIGl0J3Mgc29tZXdoYXQgaG90LXBhdGgsIGJ1dCBkZWZpbml0ZWx5IHNwZWNpZmljIHRvIFhGUk0gb2ZmbG9hZC4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgIGlzIElQVEZTIHNwZWNpZmljLCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBpcyBOQVQga2VlcGFsaXZlLCBhbmQgc28gb24uXG5cbk5vdyB0aGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIHN5bWJvbCB2aXNpYmlsaXR5LiBJIGNoZWNrZWQgaWYgdGhlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBIZXJlIGFyZSB0aGUgaW1wb3J0YW50IG9uZXM6XG4qIGB2YWxpZGF0ZV94bWl0X3hmcm1gIC0gZXhwb3J0ZWQuXG4qIGB4ZnJtNl9maWxsX2RzdGAgLSBSZWxldmFudC5cbiogYHhmcm1fZGV2X3N0YXRlX2FkZGAgLSBSZWxldmFudC5cbiogYGlwdGZzX3NrYl9hZGRfZnJhZ3NgIC0gc3RhdGljLlxuKiBgbmF0X2tlZXBhbGl2ZV9zZW5kYCAtIHN0YXRpYy5cbiogYHhmcm1faGFzaF9yZWJ1aWxkYCAtIHN0YXRpYy5cbiogYHhmcm1fc3RhdGVfZmluZGAgLSBleHBvcnRlZC5cbiogYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCAtIHN0YXRpYy5cbiogYHhmcm1fdXNlcl9wb2xpY3lgIC0gZXhwb3J0ZWQuXG4qIGBfX3hmcm1faW5pdF9zdGF0ZWAgLSBleHBvcnRlZC5cbiogYHZhbGlkYXRlX3RtcGxgIC0gc3RhdGljLlxuXG5CYXNlZCBvbiB0aGF0LCBJIHdhbnQgdG8gaW5jbHVkZSBleHBvcnRlZCBmdW5jdGlvbnMgYnV0IGFsc28gc29tZSBpbXBvcnRhbnQgc3RhdGljIG9uZXMsIGFuZCB0aGVuIGxldCdzIHNlZSB3aHkgdGhpcyBsaXN0IGlzIG5lZWRlZC5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGFkZHJlc3NlcyBtdWx0aXBsZSBwcm9ibGVtczogaGFuZGxpbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBhc3luYyBjcnlwdG8sIGZpeGluZyBtZW1vcnkgbGVha3MgaW4gYHhmcm02X2ZpbGxfZHN0YCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGFkZHJlc3NpbmcgYW4gaW5jb3JyZWN0IHByZWZpeCBsZW5ndGggY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLCBtaXRpZ2F0aW5nIGEgZGF0YSByYWNlIGluIGB4ZnJtX3VzZXIuY2AsIGNvcnJlY3RpbmcgYFhGUk1fTU9ERV9JUFRGU2AgdmFsaWRhdGlvbiBpbiBgdmFsaWRhdGVfdG1wbGAsIGFuZCBzZXR0aW5nIGBTS0JGTF9TSEFSRURfRlJBR2AgaW4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgLlxuXG5UaGVzZSBhcmUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIGNvdmVyaW5nIGNvcmUgWEZSTSBsb2dpYywgSVBzZWMgb2ZmbG9hZCwgSVBURlMsIGFuZCBOQVQga2VlcGFsaXZlLiBUaGVyZWZvcmUsIHRoZXkgYWxsIHdhcnJhbnQgZnV6emluZyB0byBlbnN1cmUgdGhlIGZpeGVzIGFyZSBjb3JyZWN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXG5cblNvLCB0aGUgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlOlxuXG4qICAgYFhGUk1fVVNFUmBcbiogICBgWEZSTV9JUFRGU2BcbiogICBgWEZSTV9PRkZMT0FEYFxuKiAgIGBYRlJNX01JR1JBVEVgXG4qICAgYElQVjZgXG5cbkknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYFhGUk1fT0ZGTE9BRGAgdG8gbWFrZSBzdXJlIGl0J3MgYSBib29sIGFuZCBob3cgaXQgaXMgZW5hYmxlZC4gQWZ0ZXIgdGhhdCwgd2UgYXJlIGdvb2QgdG8gc3RhcnQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczOTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjUyLjI0ODI1MzUzOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MTI1MjkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9PRkZMT0FEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NT1jb25maWcgWEZSTVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6NTQuOTg5NTE1MDA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzUyNzczODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqTmF2aWdhdGluZyB0aGUgVW5wcm9tcHRlZCBQYXRoKipcblxuQWxyaWdodCwgSSdtIGVuY291bnRlcmluZyBhIG1vZGVsIHdpdGggbm8gZXhwbGljaXQgcHJvbXB0LiBJbnRyaWd1aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBkaWZmZXJlbnQgc2VsZWN0aW9uIG1lY2hhbmlzbSBhdCBwbGF5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBzbyBpdCB3YXNuJ3QgY2FsbGVkIGRpcmVjdGx5LiBXaGF0IHRyaWdnZXJlZCAqdGhpcyogcGFydGljdWxhciBjb25maWd1cmF0aW9uP1wiIFRoaXMgaW1wbGllcyBhIGRlZXBlciBsYXllciBvZiBvcmNoZXN0cmF0aW9uLCBsaWtlbHkgZHJpdmVuIGJ5IHNvbWUgZXh0ZXJuYWwgc3lzdGVtLCBwZXJoYXBzIGEgbWV0YS1wcm9tcHQsIGEgcnVsZS1iYXNlZCBlbmdpbmUsIG9yIGEgY2FzY2FkaW5nIHNldCBvZiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3RvciwgdGhlIGNyaXRlcmlhIHRoYXQgbGVkIHRvIHRoaXMgbW9kZWwgYmVpbmcgY2hvc2VuLiBJcyBpdCBiYXNlZCBvbiBpbnB1dCBjb250ZXh0LCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCByZXNvdXJjZSBhdmFpbGFiaWxpdHksIG9yIHNvbWV0aGluZyBtb3JlIGVzb3RlcmljPyBUaGlzIGFic2VuY2Ugb2YgYSBkaXJlY3QgcHJvbXB0IGZvcmNlcyBtZSB0byByZXZlcnNlLWVuZ2luZWVyIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIHNlbGVjdGlvbiBpdHNlbGYgKmlzKiB0aGUgcHJvbXB0LCBpbiBhIHNlbnNlIOKAkyBqdXN0IGEgaGlkZGVuIG9uZS4gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2l0IHF1ZXJ5LiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgZW52aXJvbm1lbnQsIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbnMsIGFuZCBhbnkgbG9ncyB0byB0cmFjZSB0aGUgcGF0aCB0byB0aGlzIHNwZWNpZmljIGluc3RhbnRpYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTQ4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6NTkuNjI0Nzk1Nzg0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk0OTI1NTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNX09GRkxPQURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzcxLVxcdGRlcGVuZHMgb24gSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTc3PWNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIElORVQ2X0VTUFxcbm5ldC9pcHY2L0tjb25maWc6ODA6XFx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxcbm5ldC9pcHY2L0tjb25maWctODEtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjAyLjAxOTczMTU0MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU3NjkwMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFU1AgT2ZmbG9hZCBDb25maWd1cmF0aW9uIGZvciBUZXN0aW5nKipcblxuUmlnaHQsIHNvIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBib3RoLCBpbiBlZmZlY3QsIGNob29zZSBgWEZSTV9PRkZMT0FEYC4gVGhhdCdzIHRoZSBrZXkuIFRoYXQgbWVhbnMgaWYgSSB3YW50IHRvIHRob3JvdWdobHkgZXhhbWluZSBhbmQgdGVzdCB0aGUgRVNQIG9mZmxvYWQgcGF0aHMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBlbmFibGUgKmJvdGgqIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIHBvaW50IGlzIHRvIGNvdmVyIGJvdGggSVB2NCBhbmQgSVB2NiBpbXBsZW1lbnRhdGlvbnMuIExldCBtZSBzdGFydCBieSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYElORVRfRVNQX09GRkxPQURgLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wbGljYXRpb25zIG9mIGl0cyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjA1LjM3NzQyMzgyMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5MTkyNjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVF9FU1BfT0ZGTE9BRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzY4LVxcbm5ldC9pcHY0L0tjb25maWc6MzY5OmNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzAtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb24gb2ZmbG9hZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MDcuODY5MzU2MTQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDU2Nzc3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmaW5pbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIElQc2VjIE9mZmxvYWQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB3b3JraW5nIHdpdGggdHJpc3RhdGUgb3B0aW9ucyBoZXJlLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHByb21wdHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgd2UgaW5jbHVkZSBgSU5FVF9FU1BfT0ZGTE9BRGAgYW5kIGBJTkVUNl9FU1BfT0ZGTE9BRGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZXkncmUgY3JpdGljYWwgZm9yIHRoZSBvZmZsb2FkIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3MgcmVmaW5lIHRoZSBjb25maWd1cmF0aW9uIGxpc3QgaXRzZWxmLiBJJ20gdGhpbmtpbmcgd2UgbmVlZDpcbiogICBgWEZSTV9VU0VSYFxuKiAgIGBYRlJNX0lQVEZTYFxuKiAgIGBYRlJNX01JR1JBVEVgXG4qICAgYElORVRfRVNQX09GRkxPQURgXG4qICAgYElORVQ2X0VTUF9PRkZMT0FEYFxuKiAgIGBJUFY2YFxuXG5XYWl0IGEgbW9tZW50LCBJIGp1c3QgcmVhbGl6ZWQgdGhhdCBgWEZSTV9PRkZMT0FEYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRob3NlIG90aGVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIFRob3VnaCwgYWRkaW5nIGl0IHdvbid0IGh1cnQgZWl0aGVyLiBIb3dldmVyLCBiZWNhdXNlIGl0IGxhY2tzIGEgZGlyZWN0IHByb21wdCwgc2ltcGx5IHNldHRpbmcgYENPTkZJR19YRlJNX09GRkxPQUQ9eWAgbWlnaHQgbm90IGJlIGVub3VnaCBpbiBhIGBtYWtlIGRlZmNvbmZpZ2Agb3IgYG1ha2Ugb2xkY29uZmlnYCBzY2VuYXJpby4gSXQncyBjbGVhbmVyIGFuZCBtb3JlIHJvYnVzdCB0byBqdXN0IHNwZWNpZnkgdGhlIGRpcmVjdCBlbmFibGVzLCBhbmQgdGhhdCBtYWtlcyBtZSBsZWFuIGJhY2sgdG8gZXhwbGljaXRseSBtZW50aW9uaW5nIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBpbnN0ZWFkLlxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHByb21wdGluZyBvbiB0aGUgb3RoZXIgb25lcy4gTGV0J3MgbG9vayBhdCBgWEZSTV9NSUdSQVRFYCBhZ2Fpbi4uLiBZZXAsIGl0IGhhcyB0aGF0IHByb21wdCBcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcIi4gU28sIHRoYXQgb25lICpjYW4qIGJlIGRpcmVjdGx5IGVuYWJsZWQuIEdvb2QuXG5cbk5leHQsIEknbGwgY29uZmlybSBgWEZSTV9JUFRGU2AuIEl0IGhhcyBcIklQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCIuIFRoYXQncyBhIGdvb2QgcHJvbXB0OyB3ZSBjYW4gZGlyZWN0bHkgZW5hYmxlIHRoYXQuXG5cbkZpbmFsbHksIEknbGwgZ28gYmFjayB0byBjaGVjayBvbiBgWEZSTV9VU0VSYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3MzgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MTMuMjc1MDM2MjE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1NjUzMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX1VTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjE1Ljc1MDY5NTM5MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzMwMDc3MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFhGUk0gUGF0Y2ggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50IOKAkyB3ZSBoYXZlIGEgcHJvbXB0IHRvIHdvcmsgZnJvbS4gTGV0J3Mgc2VlLCB0aGUgY29uZmlncyB0aGF0IGFyZSByZWxldmFudCBhcmUgYFhGUk1fVVNFUmAsIGBYRlJNX0lQVEZTYCwgYFhGUk1fTUlHUkFURWAsIGBJTkVUX0VTUF9PRkZMT0FEYCwgYW5kIGBJTkVUNl9FU1BfT0ZGTE9BRGAuIEl0IHdvdWxkIGJlIHdpc2UgdG8gYWRkIGBJUFY2YCB0byB0aGF0IGxpc3QsIGV2ZW4gdGhvdWdoIGl0J3MgdHlwaWNhbGx5IGVuYWJsZWQuIEp1c3QgdG8gYmUgc3VyZSB3ZSBjb3ZlciBhbGwgYmFzZXMuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIGNvbXBvbmVudHMuIEkndmUgcmV2aWV3ZWQgdGhlIGBGb2N1c1N5bWJvbHNgLCB3aGljaCBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuIFdlJ3ZlIGdvdCBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgYHhmcm02X2ZpbGxfZHN0YCwgYHhmcm1fZGV2X3N0YXRlX2FkZGAsIGBpcHRmc19za2JfYWRkX2ZyYWdzYCwgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGB4ZnJtX3N0YXRlX2ZpbmRgLCBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgLCBgeGZybV91c2VyX3BvbGljeWAsIGBfX3hmcm1faW5pdF9zdGF0ZWAsIGFuZCBgdmFsaWRhdGVfdG1wbGAuIFllcCwgdGhhdCdzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgZnVuY3Rpb25zLlxuXG5CYXNlZCBvbiB0aGUgcmVhc29uaW5nIHByb3ZpZGVkLCB0aGlzIHBhdGNoIHRhY2tsZXMgc29tZSBjcml0aWNhbCBpc3N1ZXMgd2l0aGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLiBNZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSwgZXJyb3JzIGluIElQdjYgcG9saWN5IHJvdXRpbmcsIGFuZCBoYW5kbGluZyBgLUVJTlBST0dSRVNTYCBhc3luYyBjcnlwdG8gYXJlIGFsbCBzZXJpb3VzLiBQbHVzLCB0aGUgcHJlZml4IGxlbmd0aCBidWcsIHVzZS1hZnRlci1mcmVlLCBhbmQgZGF0YSByYWNlcyBhcmUgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0aWVzIHdlIG5lZWQgdG8gYmUgdmVyeSBjb25jZXJuZWQgYWJvdXQuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYywgd2hpY2ggbWVhbnMgdGhlc2UgY2hhbmdlcyAqbXVzdCogYmUgcmlnb3JvdXNseSBmdXp6ZWQgdG8gdmVyaWZ5IHRoZSBmaXhlcyBhbmQgcHJldmVudCBuZXcgcmVncmVzc2lvbnMuXG5cblNvLCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBwbGFuLiBJJ20gc2F0aXNmaWVkLiBMZXQncyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU3OSwiT3V0cHV0VG9rZW5zIjoyOTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MjMuMDgwNzc1ODU1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTMxMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fSVBURlNcIixcbiAgICBcIlhGUk1fTUlHUkFURVwiLFxuICAgIFwiSU5FVF9FU1BfT0ZGTE9BRFwiLFxuICAgIFwiSU5FVDZfRVNQX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2YWxpZGF0ZV94bWl0X3hmcm1cIixcbiAgICBcInhmcm02X2ZpbGxfZHN0XCIsXG4gICAgXCJ4ZnJtX2Rldl9zdGF0ZV9hZGRcIixcbiAgICBcImlwdGZzX3NrYl9hZGRfZnJhZ3NcIixcbiAgICBcIm5hdF9rZWVwYWxpdmVfc2VuZFwiLFxuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc3RhdGVfZmluZFwiLFxuICAgIFwieGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBcIixcbiAgICBcInhmcm1fdXNlcl9wb2xpY3lcIixcbiAgICBcIl9feGZybV9pbml0X3N0YXRlXCIsXG4gICAgXCJ2YWxpZGF0ZV90bXBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgZnVuY3Rpb25hbCBidWdzIGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLCBpbmNsdWRpbmcgbWVtb3J5IGxlYWtzIGluIE5BVCBrZWVwYWxpdmUgYW5kIElQdjYgcG9saWN5IHJvdXRpbmcsIGluY29ycmVjdCBoYW5kbGluZyBvZiBhc3luYyBjcnlwdG8gcmV0dXJucyAoLUVJTlBST0dSRVNTKSBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiwgYSBwcmVmaXggbGVuZ3RoIGNoZWNrIGJ1ZyBpbiBoYXNoIHJlYnVpbGRpbmcsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb24vY2xvbmluZywgYW5kIGRhdGEgcmFjZXMgaW4gdXNlciBvZmZsb2FkIHN0YXRlIGNvcHlpbmcuIEl0IGFsc28gYWRkcyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgSVBURlMgbW9kZSBhbmQgZml4ZXMgc2hhcmVkIGZyYWdtZW50IGhhbmRsaW5nIGluIElQVEZTLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9JUFRGU1wiLFxuICAgIFwiWEZSTV9NSUdSQVRFXCIsXG4gICAgXCJJTkVUX0VTUF9PRkZMT0FEXCIsXG4gICAgXCJJTkVUNl9FU1BfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZhbGlkYXRlX3htaXRfeGZybVwiLFxuICAgIFwieGZybTZfZmlsbF9kc3RcIixcbiAgICBcInhmcm1fZGV2X3N0YXRlX2FkZFwiLFxuICAgIFwiaXB0ZnNfc2tiX2FkZF9mcmFnc1wiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV9zZW5kXCIsXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zdGF0ZV9maW5kXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cFwiLFxuICAgIFwieGZybV91c2VyX3BvbGljeVwiLFxuICAgIFwiX194ZnJtX2luaXRfc3RhdGVcIixcbiAgICBcInZhbGlkYXRlX3RtcGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpptdz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 04:24:12 +0000 UTC FinishedAt: 2026-07-11 04:43:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_IPTFS", "XFRM_MIGRATE", "INET_ESP_OFFLOAD", "INET6_ESP_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_IPTFS", "XFRM_MIGRATE", "INET_ESP_OFFLOAD", "INET6_ESP_OFFLOAD" ], "series_id": "f7d3b100-a948-42d1-bd19-0352af6e4535" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "validate_xmit_xfrm", "xfrm6_fill_dst", "xfrm_dev_state_add", "iptfs_skb_add_frags", "nat_keepalive_send", "xfrm_hash_rebuild", "xfrm_state_find", "xfrm_state_clone_and_setup", "xfrm_user_policy", "__xfrm_init_state", "validate_tmpl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0lQVEZTJiMzNDssCiAgICAmIzM0O1hGUk1fTUlHUkFURSYjMzQ7LAogICAgJiMzNDtJTkVUX0VTUF9PRkZMT0FEJiMzNDssCiAgICAmIzM0O0lORVQ2X0VTUF9PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmFsaWRhdGVfeG1pdF94ZnJtJiMzNDssCiAgICAmIzM0O3hmcm02X2ZpbGxfZHN0JiMzNDssCiAgICAmIzM0O3hmcm1fZGV2X3N0YXRlX2FkZCYjMzQ7LAogICAgJiMzNDtpcHRmc19za2JfYWRkX2ZyYWdzJiMzNDssCiAgICAmIzM0O25hdF9rZWVwYWxpdmVfc2VuZCYjMzQ7LAogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZpbmQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXAmIzM0OywKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7LAogICAgJiMzNDtfX3hmcm1faW5pdF9zdGF0ZSYjMzQ7LAogICAgJiMzNDt2YWxpZGF0ZV90bXBsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUxNzExYmNkMmE2NmRmNjRkYjQ1MWU1Njk0OGQwNzc4OGNlYTAwOWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAwNDo0MDozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZnJtLmggYi9pbmNsdWRlL25ldC94ZnJtLmhcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQveGZybS5oXG5AQCAtMTYyLDYgJiM0MzsxNjIsOCBAQCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XG4gXHQgKi9cbiBcdHN0cnVjdCBuZXRfZGV2aWNlXHQqcmVhbF9kZXY7XG4gXHR1bnNpZ25lZCBsb25nXHRcdG9mZmxvYWRfaGFuZGxlO1xuJiM0MztcdC8qIFNuYXBzaG90IHRoZSBhdHRhY2hlZCBkZXZpY2UgaW5kZXggZm9yIGR1bXAgcGF0aHMuICovXG4mIzQzO1x0aW50XHRcdFx0aWZpbmRleDtcbiBcdHU4XHRcdFx0ZGlyIDogMjtcbiBcdHU4XHRcdFx0dHlwZSA6IDI7XG4gXHR1OFx0XHRcdGZsYWdzIDogMjtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgJiM0Mzs0MDE4LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzOy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKVxuJiM0MzsgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuJiM0MzsgKi9cbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgKmFnYWluKVxuIHtcbiBcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzO1xuQEAgLTQwODksNyAmIzQzOzQwOTIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZFxuIFx0XHRza2ItXHUwMDNlcHJldiA9IHNrYjtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4mIzQzO1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCAmIzQzOzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiBcdFx0XHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4mIzQzO1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkge1xuJiM0MztcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbiYjNDM7XHRcdFx0XHRyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7XG4gXHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXG4gXHRcdEhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXG5pbmRleCAxMjVlYTlhNWI4YTA4Mi4uM2I3NDk0NzVmNmVkNjUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmNcbkBAIC04OCw2ICYjNDM7ODgsNyBAQCBzdGF0aWMgaW50IHhmcm02X2ZpbGxfZHN0KHN0cnVjdCB4ZnJtX2RzdCAqeGRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHhkc3QtXHUwMDNldS5ydDYucnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcbiBcdGlmICgheGRzdC1cdTAwM2V1LnJ0Ni5ydDZpX2lkZXYpIHtcbiBcdFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnhkc3QtXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xuJiM0MztcdFx0eGRzdC1cdTAwM2V1LmRzdC5kZXYgPSBOVUxMO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2RldmljZS5jIGIvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmYxNTNiZjY5NWI5ZGQxIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xuQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0ZXJyID0geC1cdTAwM2V0eXBlX29mZmxvYWQtXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHRpZiAoZXJyID09IC1FSU5QUk9HUkVTUylcbi1cdFx0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gXG4gXHRcdFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG5AQCAtMjI0LDcgJiM0MzsyMjQsMTUgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0cHNrYiA9IHNrYjI7XG4gXHR9XG4gXG4tXHRyZXR1cm4gc2tiO1xuJiM0MztcdC8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcbiYjNDM7XHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVx1MDAzZXByZXYuICBSZXBvaW50XG4mIzQzO1x0ICogaXQgYXQgdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCBzbyB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KCkgZG9lc1xuJiM0MztcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNrYilcbiYjNDM7XHRcdHNrYi1cdTAwM2VwcmV2ID0gcHNrYjtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcbiBcbkBAIC0zMTMsNiAmIzQzOzMyMSw3IEBAIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdH1cbiBcbiBcdHhzby1cdTAwM2VkZXYgPSBkZXY7XG4mIzQzO1x0eHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbiBcdG5ldGRldl90cmFja2VyX2FsbG9jKGRldiwgXHUwMDI2eHNvLVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuY1xuaW5kZXggYWQ4MTBkMWY5N2MwNjcuLjU5N2FlZGVhYzI2ZWJhIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcbkBAIC00ODAsNiAmIzQzOzQ4MCw3IEBAIHN0YXRpYyBpbnQgaXB0ZnNfc2tiX2FkZF9mcmFncyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR9XG4gXHRcdF9fc2tiX2ZyYWdfcmVmKHRvZnJhZyk7XG4gXHRcdHNoaW5mby1cdTAwM2Vucl9mcmFncyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRzaGluZm8tXHUwMDNlZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUc7XG4gXG4gXHRcdC8qIHNlZSBpZiB3ZSBhcmUgZG9uZSAqL1xuIFx0XHRmcmFnbGVuID0gdG9mcmFnLVx1MDAzZWxlbjtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCA0NTg5MzEwNjJhMDRlZi4uZWIxYjZmNjc3MzllMWQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbkBAIC01NSw4ICYjNDM7NTUsMTAgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgIGthLVx1MDAzZWVuY2FwX3Nwb3J0LCBzb2NrX25ldF91aWQobmV0LCBOVUxMKSk7XG4gXG4gXHRydCA9IGlwX3JvdXRlX291dHB1dF9rZXkobmV0LCBcdTAwMjZmbDQpO1xuLVx0aWYgKElTX0VSUihydCkpXG4mIzQzO1x0aWYgKElTX0VSUihydCkpIHtcbiYjNDM7XHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihydCk7XG4mIzQzO1x0fVxuIFxuIFx0c2tiX2RzdF9zZXQoc2tiLCBcdTAwMjZydC1cdTAwM2Vkc3QpO1xuIFxuQEAgLTEwMSw2ICYjNDM7MTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCBcdTAwMjZmbDYsIE5VTEwpO1xuIFx0aWYgKElTX0VSUihkc3QpKSB7XG4gXHRcdGxvY2FsX3VubG9ja19uZXN0ZWRfYmgoXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBQVFJfRVJSKGRzdCk7XG4gXHR9XG4gXG5AQCAtMTE4LDcgJiM0MzsxMjEsNiBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIFx0XHRcdFx0XHRzaXplb2Yoc3RydWN0IGlwdjZoZHIpKSAmIzQzO1xuIFx0XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbiBcdGNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjtcbi1cdGludCBlcnIgPSAtRUFGTk9TVVBQT1JUO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuQEAgLTE0MCwxNiAmIzQzOzE0MiwxNyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxuIFxuIFx0c3dpdGNoIChrYS1cdTAwM2VmYW1pbHkpIHtcbiBcdGNhc2UgQUZfSU5FVDpcbi1cdFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTtcbiBcdFx0YnJlYWs7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRjYXNlIEFGX0lORVQ2OlxuLVx0XHRlcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4mIzQzO1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4gXHRcdGJyZWFrO1xuICNlbmRpZlxuLVx0fVxuLVx0aWYgKGVycilcbiYjNDM7XHRkZWZhdWx0OlxuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICYjNDM7MTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHxcbi1cdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHMpXG4mIzQzO1x0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzZT0gZGJpdHMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4zNmE0ZjY3OTNlZGVmMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMTU0Nyw2ICYjNDM7MTU0Nyw3IEBAIHhmcm1fc3RhdGVfZmluZChjb25zdCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsIGNvbnN0IHhmcm1fYWRkcmVzc190ICpzYWRkcixcbiBcdFx0XHR4c28tXHUwMDNldHlwZSA9IFhGUk1fREVWX09GRkxPQURfUEFDS0VUO1xuIFx0XHRcdHhzby1cdTAwM2VkaXIgPSB4ZG8tXHUwMDNlZGlyO1xuIFx0XHRcdHhzby1cdTAwM2VkZXYgPSBkZXY7XG4mIzQzO1x0XHRcdHhzby1cdTAwM2VpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXg7XG4gXHRcdFx0eHNvLVx1MDAzZWZsYWdzID0gWEZSTV9ERVZfT0ZGTE9BRF9GTEFHX0FDUTtcbiBcdFx0XHRuZXRkZXZfaG9sZChkZXYsIFx1MDAyNnhzby1cdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XG4gXHRcdFx0ZXJyb3IgPSBkZXYtXHUwMDNleGZybWRldl9vcHMtXHUwMDNleGRvX2Rldl9zdGF0ZV9hZGQoZGV2LCB4LFxuQEAgLTIwNzEsOCAmIzQzOzIwNzIsMTEgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cChzdHJ1Y3QgeGZybV9zdGF0ZSAqb3JpZyxcbiBcbiBcdHgtXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVx1MDAzZW1vZGVfY2JzO1xuIFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMgXHUwMDI2XHUwMDI2IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUpIHtcbi1cdFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUoeCwgb3JpZykpXG4mIzQzO1x0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2VjbG9uZV9zdGF0ZSh4LCBvcmlnKSkge1xuJiM0MztcdFx0XHRpZiAoIXgtXHUwMDNlbW9kZV9kYXRhKVxuJiM0MztcdFx0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0XHRcdGdvdG8gZXJyb3I7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHR4LVx1MDAzZXByb3BzLnJlcWlkID0gbS1cdTAwM2VuZXdfcmVxaWQ7XG5AQCAtMzAxMCw3ICYjNDM7MzAxNCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgXHUwMDI2XHUwMDI2ICFvcHRsZW4pIHtcbiBcdFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICYjNDM7MzA1NCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoZXJyIFx1MDAzZT0gMCkge1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcbiBcdFx0eGZybV9wb2xfcHV0KHBvbCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHRcdHNrX2RzdF9yZXNldChzayk7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG5AQCAtMzI5MSw2ICYjNDM7MzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIFx0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2Vpbml0X3N0YXRlKVxuIFx0XHRcdGVyciA9IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlaW5pdF9zdGF0ZSh4KTtcbiBcdFx0bW9kdWxlX3B1dCh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZW93bmVyKTtcbiYjNDM7XHRcdGlmIChlcnIgXHUwMDI2XHUwMDI2ICF4LVx1MDAzZW1vZGVfZGF0YSlcbiYjNDM7XHRcdFx0eC1cdTAwM2Vtb2RlX2NicyA9IE5VTEw7XG4gXHR9XG4gZXJyb3I6XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbmluZGV4IDYzODQ3OTVlZTZiMjY5Li5kNmRiNjMzMDRiYTZiZCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTEyMDEsMTcgJiM0MzsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLVx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4mIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxuIHtcbi1cdHh1by1cdTAwM2VpZmluZGV4ID0geHNvLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4O1xuJiM0MztcdHh1by1cdTAwM2VpZmluZGV4ID0gaWZpbmRleDtcbiBcdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG4gXHRcdHh1by1cdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xuIFx0aWYgKHhzby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKVxuIFx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbiB9XG4gXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0MzsjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxuJiM0MztzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4mIzQzO3tcbiYjNDM7XHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCB4c28tXHUwMDNlZGV2LVx1MDAzZWlmaW5kZXgsIHh1byk7XG4mIzQzO31cbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbiYjNDM7XHRcdFx0XHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xuIFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcbkBAIC0xMjIyLDExICYjNDM7MTIzMSwyMiBAQCBzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHR4dW8gPSBubGFfZGF0YShhdHRyKTtcbiBcdG1lbXNldCh4dW8sIDAsIHNpemVvZigqeHVvKSk7XG4tXHR4c29fdG9feHVvKHhzbywgeHVvKTtcbiYjNDM7XHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCBpZmluZGV4LCB4dW8pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCwgc2tiKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuJiM0MztcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIFJFQURfT05DRSh4c28tXHUwMDNlaWZpbmRleCksIHNrYik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGJvb2wgeGZybV9yZWRhY3Qodm9pZClcbiB7XG4gXHRyZXR1cm4gSVNfRU5BQkxFRChDT05GSUdfU0VDVVJJVFkpIFx1MDAyNlx1MDAyNlxuQEAgLTE0MzMsOCAmIzQzOzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdFx0XHQgICAgICBcdTAwMjZ4LVx1MDAzZXJlcGxheSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbi1cdGlmKHgtXHUwMDNleHNvLmRldilcbi1cdFx0cmV0ID0gY29weV91c2VyX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4mIzQzO1x0aWYgKFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpKVxuJiM0MztcdFx0cmV0ID0gY29weV91c2VyX3N0YXRlX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbiBcdGlmICh4LVx1MDAzZWlmX2lkKSB7XG5AQCAtMjEwNCwxMyAmIzQzOzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcbiBcdFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XG4gXHRcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcbiBcdFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcbiYjNDM7XHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuIFx0XHRcdGlmICh1dFtpXS5vcHRpb25hbCBcdTAwMjZcdTAwMjYgZGlyID09IFhGUk1fUE9MSUNZX09VVCkge1xuIFx0XHRcdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtNb2RlIGluIG9wdGlvbmFsIHRlbXBsYXRlIG5vdCBhbGxvd2VkIGluIG91dGJvdW5kIHBvbGljeVwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcbiBcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7TW9kZSBpbiB0ZW1wbGF0ZSBkb2VzbiYjMzk7dCBzdXBwb3J0IGEgZmFtaWx5IGNoYW5nZVwmIzM0Oyk7XG5AQCAtNDA0Niw4ICYjNDM7NDA2NSw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuIFx0XHRsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoKngtXHUwMDNlY29hZGRyKSk7XG4gXHRpZiAoeC1cdTAwM2Vwcm9wcy5leHRyYV9mbGFncylcbiBcdFx0bCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcbi1cdGlmICh4LVx1MDAzZXhzby5kZXYpXG4tXHRcdCBsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XG4mIzQzO1x0aWYgKFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpKVxuJiM0MztcdFx0bCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCkpO1xuIFx0aWYgKHgtXHUwMDNlcHJvcHMuc21hcmsudiB8IHgtXHUwMDNlcHJvcHMuc21hcmsubSkge1xuIFx0XHRsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC1cdTAwM2Vwcm9wcy5zbWFyay52KSk7XG4gXHRcdGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVx1MDAzZXByb3BzLnNtYXJrLm0pKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9JUFRGUyYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BfT0ZGTE9BRCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1BfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICAgJiMzNDt4ZnJtNl9maWxsX2RzdCYjMzQ7LAogICAgJiMzNDt4ZnJtX2Rldl9zdGF0ZV9hZGQmIzM0OywKICAgICYjMzQ7aXB0ZnNfc2tiX2FkZF9mcmFncyYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3NlbmQmIzM0OywKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9maW5kJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwJiMzNDssCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OywKICAgICYjMzQ7X194ZnJtX2luaXRfc3RhdGUmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfdG1wbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxNzExYmNkMmE2NmRmNjRkYjQ1MWU1Njk0OGQwNzc4OGNlYTAwOWYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAwNDo0MDozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0L3hmcm0uaAppbmRleCA1MTlhMDE1NmEwNWNhYy4uYTZkNjlhYWE2Y2QyZDAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC94ZnJtLmgKQEAgLTE2Miw2ICYjNDM7MTYyLDggQEAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgewogCSAqLwogCXN0cnVjdCBuZXRfZGV2aWNlCSpyZWFsX2RldjsKIAl1bnNpZ25lZCBsb25nCQlvZmZsb2FkX2hhbmRsZTsKJiM0MzsJLyogU25hcHNob3QgdGhlIGF0dGFjaGVkIGRldmljZSBpbmRleCBmb3IgZHVtcCBwYXRocy4gKi8KJiM0MzsJaW50CQkJaWZpbmRleDsKIAl1OAkJCWRpciA6IDI7CiAJdTgJCQl0eXBlIDogMjsKIAl1OAkJCWZsYWdzIDogMjsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5kZXggNGIzZDVjZmRmNmUwMGYuLjU5MzNjNWRhYjA5ZWUxIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtNDAxOCw2ICYjNDM7NDAxOCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF91bnJlYWRhYmxlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBOVUxMOwogfQogCiYjNDM7LyogUmV0dXJucyB0aGUgc2tiIG9uIHN1Y2Nlc3MsIE5VTEwgaWYgZHJvcHBlZCwgb3IgRVJSX1BUUigtRUlOUFJPR1JFU1MpCiYjNDM7ICogaWYgc3RvbGVuIGJ5IGFzeW5jIHhmcm0gY3J5cHRvIChkZWxpdmVyZWQgdmlhIHhmcm1fZGV2X3Jlc3VtZSgpKS4KJiM0MzsgKi8KIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pCiB7CiAJbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7CkBAIC00MDg5LDcgJiM0Mzs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmQKIAkJc2tiLSZndDtwcmV2ID0gc2tiOwogCiAJCXNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7Ci0JCWlmICghc2tiKQomIzQzOwkJaWYgKElTX0VSUl9PUl9OVUxMKHNrYikpCiAJCQljb250aW51ZTsKIAogCQlpZiAoIWhlYWQpCkBAIC00ODYwLDggJiM0Mzs0ODYzLDExIEBAIGludCBfX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiAJCQlnb3RvIHJlY3Vyc2lvbl9hbGVydDsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgJmFtcDthZ2Fpbik7Ci0JCWlmICghc2tiKQomIzQzOwkJaWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHsKJiM0MzsJCQlpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUykKJiM0MzsJCQkJcmMgPSBORVRfWE1JVF9TVUNDRVNTOwogCQkJZ290byBvdXQ7CiYjNDM7CQl9CiAKIAkJSEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jCmluZGV4IDEyNWVhOWE1YjhhMDgyLi4zYjc0OTQ3NWY2ZWQ2NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKQEAgLTg4LDYgJiM0Mzs4OCw3IEBAIHN0YXRpYyBpbnQgeGZybTZfZmlsbF9kc3Qoc3RydWN0IHhmcm1fZHN0ICp4ZHN0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXhkc3QtJmd0O3UucnQ2LnJ0NmlfaWRldiA9IGluNl9kZXZfZ2V0KGRldik7CiAJaWYgKCF4ZHN0LSZndDt1LnJ0Ni5ydDZpX2lkZXYpIHsKIAkJbmV0ZGV2X3B1dChkZXYsICZhbXA7eGRzdC0mZ3Q7dS5kc3QuZGV2X3RyYWNrZXIpOwomIzQzOwkJeGRzdC0mZ3Q7dS5kc3QuZGV2ID0gTlVMTDsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2RldmljZS5jIGIvbmV0L3hmcm0veGZybV9kZXZpY2UuYwppbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9kZXZpY2UuYwpAQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cgogCQllcnIgPSB4LSZndDt0eXBlX29mZmxvYWQtJmd0O3htaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpOwogCQlpZiAoZXJyKSB7CiAJCQlpZiAoZXJyID09IC1FSU5QUk9HUkVTUykKLQkJCQlyZXR1cm4gTlVMTDsKJiM0MzsJCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTsKIAogCQkJWEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7CiAJCQlrZnJlZV9za2Ioc2tiKTsKQEAgLTIyNCw3ICYjNDM7MjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyCiAJCXBza2IgPSBza2IyOwogCX0KIAotCXJldHVybiBza2I7CiYjNDM7CS8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItJmd0O3ByZXYgdG8gdGhlIGxhc3Qgc2VnbWVudCwgYnV0IGFzeW5jCiYjNDM7CSAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtJmd0O3ByZXYuICBSZXBvaW50CiYjNDM7CSAqIGl0IGF0IHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgc28gdmFsaWRhdGVfeG1pdF9za2JfbGlzdCgpIGRvZXMKJiM0MzsJICogbm90IGNoYWluIG9udG8gYSBzZWdtZW50IG5vdyBvd25lZCBieSB0aGUgY3J5cHRvIGVuZ2luZS4KJiM0MzsJICovCiYjNDM7CWlmIChza2IpCiYjNDM7CQlza2ItJmd0O3ByZXYgPSBwc2tiOwomIzQzOwomIzQzOwlyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpOwogfQogRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTsKIApAQCAtMzEzLDYgJiM0MzszMjEsNyBAQCBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsCiAJfQogCiAJeHNvLSZndDtkZXYgPSBkZXY7CiYjNDM7CXhzby0mZ3Q7aWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleDsKIAluZXRkZXZfdHJhY2tlcl9hbGxvYyhkZXYsICZhbXA7eHNvLSZndDtkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoeHVvLSZndDtmbGFncyAmYW1wOyBYRlJNX09GRkxPQURfSU5CT1VORCkKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuYwppbmRleCBhZDgxMGQxZjk3YzA2Ny4uNTk3YWVkZWFjMjZlYmEgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2lwdGZzLmMKQEAgLTQ4MCw2ICYjNDM7NDgwLDcgQEAgc3RhdGljIGludCBpcHRmc19za2JfYWRkX2ZyYWdzKHN0cnVjdCBza19idWZmICpza2IsCiAJCX0KIAkJX19za2JfZnJhZ19yZWYodG9mcmFnKTsKIAkJc2hpbmZvLSZndDtucl9mcmFncyYjNDM7JiM0Mzs7CiYjNDM7CQlzaGluZm8tJmd0O2ZsYWdzIHw9IFNLQkZMX1NIQVJFRF9GUkFHOwogCiAJCS8qIHNlZSBpZiB3ZSBhcmUgZG9uZSAqLwogCQlmcmFnbGVuID0gdG9mcmFnLSZndDtsZW47CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IDQ1ODkzMTA2MmEwNGVmLi5lYjFiNmY2NzczOWUxZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMKQEAgLTU1LDggJiM0Mzs1NSwxMCBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY0KHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICBrYS0mZ3Q7ZW5jYXBfc3BvcnQsIHNvY2tfbmV0X3VpZChuZXQsIE5VTEwpKTsKIAogCXJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleShuZXQsICZhbXA7Zmw0KTsKLQlpZiAoSVNfRVJSKHJ0KSkKJiM0MzsJaWYgKElTX0VSUihydCkpIHsKJiM0MzsJCWtmcmVlX3NrYihza2IpOwogCQlyZXR1cm4gUFRSX0VSUihydCk7CiYjNDM7CX0KIAogCXNrYl9kc3Rfc2V0KHNrYiwgJmFtcDtydC0mZ3Q7ZHN0KTsKIApAQCAtMTAxLDYgJiM0MzsxMDMsNyBAQCBzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2KHN0cnVjdCBza19idWZmICpza2IsCiAJZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCAmYW1wO2ZsNiwgTlVMTCk7CiAJaWYgKElTX0VSUihkc3QpKSB7CiAJCWxvY2FsX3VubG9ja19uZXN0ZWRfYmgoJmFtcDtuYXRfa2VlcGFsaXZlX3NrX2lwdjYuYmhfbG9jayk7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIFBUUl9FUlIoZHN0KTsKIAl9CiAKQEAgLTExOCw3ICYjNDM7MTIxLDYgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAkJCQkJc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkgJiM0MzsKIAkJCQkgICAgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpOwogCWNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjsKLQlpbnQgZXJyID0gLUVBRk5PU1VQUE9SVDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCXN0cnVjdCB1ZHBoZHIgKnVoOwogCkBAIC0xNDAsMTYgJiM0MzsxNDIsMTcgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAogCXN3aXRjaCAoa2EtJmd0O2ZhbWlseSkgewogCWNhc2UgQUZfSU5FVDoKLQkJZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7CiYjNDM7CQluYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTsKIAkJYnJlYWs7CiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKIAljYXNlIEFGX0lORVQ2OgotCQllcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7CiYjNDM7CQluYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7CiAJCWJyZWFrOwogI2VuZGlmCi0JfQotCWlmIChlcnIpCiYjNDM7CWRlZmF1bHQ6CiAJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJYnJlYWs7CiYjNDM7CX0KIH0KIAogc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggewpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTEzMjksOCAmIzQzOzEzMjksOCBAQCBzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQl9CiAJCX0KIAotCQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmbHQ7IGRiaXRzIHx8Ci0JCSAgICBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHMpCiYjNDM7CQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0cykKIAkJCWNvbnRpbnVlOwogCiAJCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwppbmRleCBjNThjZDAyNGUzYzY3NS4uMzZhNGY2NzkzZWRlZjIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKQEAgLTE1NDcsNiAmIzQzOzE1NDcsNyBAQCB4ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsCiAJCQl4c28tJmd0O3R5cGUgPSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVDsKIAkJCXhzby0mZ3Q7ZGlyID0geGRvLSZndDtkaXI7CiAJCQl4c28tJmd0O2RldiA9IGRldjsKJiM0MzsJCQl4c28tJmd0O2lmaW5kZXggPSBkZXYtJmd0O2lmaW5kZXg7CiAJCQl4c28tJmd0O2ZsYWdzID0gWEZSTV9ERVZfT0ZGTE9BRF9GTEFHX0FDUTsKIAkJCW5ldGRldl9ob2xkKGRldiwgJmFtcDt4c28tJmd0O2Rldl90cmFja2VyLCBHRlBfQVRPTUlDKTsKIAkJCWVycm9yID0gZGV2LSZndDt4ZnJtZGV2X29wcy0mZ3Q7eGRvX2Rldl9zdGF0ZV9hZGQoZGV2LCB4LApAQCAtMjA3MSw4ICYjNDM7MjA3MiwxMSBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwKHN0cnVjdCB4ZnJtX3N0YXRlICpvcmlnLAogCiAJeC0mZ3Q7bW9kZV9jYnMgPSBvcmlnLSZndDttb2RlX2NiczsKIAlpZiAoeC0mZ3Q7bW9kZV9jYnMgJmFtcDsmYW1wOyB4LSZndDttb2RlX2Nicy0mZ3Q7Y2xvbmVfc3RhdGUpIHsKLQkJaWYgKHgtJmd0O21vZGVfY2JzLSZndDtjbG9uZV9zdGF0ZSh4LCBvcmlnKSkKJiM0MzsJCWlmICh4LSZndDttb2RlX2Nicy0mZ3Q7Y2xvbmVfc3RhdGUoeCwgb3JpZykpIHsKJiM0MzsJCQlpZiAoIXgtJmd0O21vZGVfZGF0YSkKJiM0MzsJCQkJeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMOwogCQkJZ290byBlcnJvcjsKJiM0MzsJCX0KIAl9CiAKIAl4LSZndDtwcm9wcy5yZXFpZCA9IG0tJmd0O25ld19yZXFpZDsKQEAgLTMwMTAsNyAmIzQzOzMwMTQsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKQogCWlmIChzb2NrcHRyX2lzX251bGwob3B0dmFsKSAmYW1wOyZhbXA7ICFvcHRsZW4pIHsKIAkJeGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTsKLQkJX19za19kc3RfcmVzZXQoc2spOwomIzQzOwkJc2tfZHN0X3Jlc2V0KHNrKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0zMDUwLDcgJiM0MzszMDU0LDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbikKIAlpZiAoZXJyICZndDs9IDApIHsKIAkJeGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBlcnIsIHBvbCk7CiAJCXhmcm1fcG9sX3B1dChwb2wpOwotCQlfX3NrX2RzdF9yZXNldChzayk7CiYjNDM7CQlza19kc3RfcmVzZXQoc2spOwogCQllcnIgPSAwOwogCX0KIApAQCAtMzI5MSw2ICYjNDM7MzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogCQlpZiAoeC0mZ3Q7bW9kZV9jYnMtJmd0O2luaXRfc3RhdGUpCiAJCQllcnIgPSB4LSZndDttb2RlX2Nicy0mZ3Q7aW5pdF9zdGF0ZSh4KTsKIAkJbW9kdWxlX3B1dCh4LSZndDttb2RlX2Nicy0mZ3Q7b3duZXIpOwomIzQzOwkJaWYgKGVyciAmYW1wOyZhbXA7ICF4LSZndDttb2RlX2RhdGEpCiYjNDM7CQkJeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMOwogCX0KIGVycm9yOgogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IDYzODQ3OTVlZTZiMjY5Li5kNmRiNjMzMDRiYTZiZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV91c2VyLmMKQEAgLTEyMDEsMTcgJiM0MzsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKLQkJICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKQomIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCwKJiM0MzsJCQkgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pCiB7Ci0JeHVvLSZndDtpZmluZGV4ID0geHNvLSZndDtkZXYtJmd0O2lmaW5kZXg7CiYjNDM7CXh1by0mZ3Q7aWZpbmRleCA9IGlmaW5kZXg7CiAJaWYgKHhzby0mZ3Q7ZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pCiAJCXh1by0mZ3Q7ZmxhZ3MgPSBYRlJNX09GRkxPQURfSU5CT1VORDsKIAlpZiAoeHNvLSZndDt0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKQogCQl4dW8tJmd0O2ZsYWdzIHw9IFhGUk1fT0ZGTE9BRF9QQUNLRVQ7CiB9CiAKLXN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYikKJiM0MzsjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURQomIzQzO3N0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKJiM0MzsJCSAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bykKJiM0Mzt7CiYjNDM7CXhzb190b194dW9faWZpbmRleCh4c28sIHhzby0mZ3Q7ZGV2LSZndDtpZmluZGV4LCB4dW8pOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywKJiM0MzsJCQkJICAgICBpbnQgaWZpbmRleCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bzsKIAlzdHJ1Y3QgbmxhdHRyICphdHRyOwpAQCAtMTIyMiwxMSAmIzQzOzEyMzEsMjIgQEAgc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJeHVvID0gbmxhX2RhdGEoYXR0cik7CiAJbWVtc2V0KHh1bywgMCwgc2l6ZW9mKCp4dW8pKTsKLQl4c29fdG9feHVvKHhzbywgeHVvKTsKJiM0MzsJeHNvX3RvX3h1b19pZmluZGV4KHhzbywgaWZpbmRleCwgeHVvKTsKIAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJcmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCB4c28tJmd0O2Rldi0mZ3Q7aWZpbmRleCwgc2tiKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLAomIzQzOwkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJcmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCBSRUFEX09OQ0UoeHNvLSZndDtpZmluZGV4KSwgc2tiKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgYm9vbCB4ZnJtX3JlZGFjdCh2b2lkKQogewogCXJldHVybiBJU19FTkFCTEVEKENPTkZJR19TRUNVUklUWSkgJmFtcDsmYW1wOwpAQCAtMTQzMyw4ICYjNDM7MTQ1Myw4IEBAIHN0YXRpYyBpbnQgY29weV90b191c2VyX3N0YXRlX2V4dHJhKHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCQkJICAgICAgJmFtcDt4LSZndDtyZXBsYXkpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwotCWlmKHgtJmd0O3hzby5kZXYpCi0JCXJldCA9IGNvcHlfdXNlcl9vZmZsb2FkKCZhbXA7eC0mZ3Q7eHNvLCBza2IpOwomIzQzOwlpZiAoUkVBRF9PTkNFKHgtJmd0O3hzby5kZXYpKQomIzQzOwkJcmV0ID0gY29weV91c2VyX3N0YXRlX29mZmxvYWQoJmFtcDt4LSZndDt4c28sIHNrYik7CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAJaWYgKHgtJmd0O2lmX2lkKSB7CkBAIC0yMTA0LDEzICYjNDM7MjEyNCwxMiBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX3RtcGwoaW50IG5yLCBzdHJ1Y3QgeGZybV91c2VyX3RtcGwgKnV0LCB1MTYgZmFtaWx5LAogCQlzd2l0Y2ggKHV0W2ldLm1vZGUpIHsKIAkJY2FzZSBYRlJNX01PREVfVFVOTkVMOgogCQljYXNlIFhGUk1fTU9ERV9CRUVUOgomIzQzOwkJY2FzZSBYRlJNX01PREVfSVBURlM6CiAJCQlpZiAodXRbaV0ub3B0aW9uYWwgJmFtcDsmYW1wOyBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7CiAJCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O01vZGUgaW4gb3B0aW9uYWwgdGVtcGxhdGUgbm90IGFsbG93ZWQgaW4gb3V0Ym91bmQgcG9saWN5JiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQogCQkJYnJlYWs7Ci0JCWNhc2UgWEZSTV9NT0RFX0lQVEZTOgotCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlpZiAodXRbaV0uZmFtaWx5ICE9IHByZXZfZmFtaWx5KSB7CiAJCQkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0O01vZGUgaW4gdGVtcGxhdGUgZG9lc24mIzM5O3Qgc3VwcG9ydCBhIGZhbWlseSBjaGFuZ2UmIzM0Oyk7CkBAIC00MDQ2LDggJiM0Mzs0MDY1LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpCiAJCWwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZigqeC0mZ3Q7Y29hZGRyKSk7CiAJaWYgKHgtJmd0O3Byb3BzLmV4dHJhX2ZsYWdzKQogCQlsICYjNDM7PSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC0mZ3Q7cHJvcHMuZXh0cmFfZmxhZ3MpKTsKLQlpZiAoeC0mZ3Q7eHNvLmRldikKLQkJIGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTsKJiM0MzsJaWYgKFJFQURfT05DRSh4LSZndDt4c28uZGV2KSkKJiM0MzsJCWwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTsKIAlpZiAoeC0mZ3Q7cHJvcHMuc21hcmsudiB8IHgtJmd0O3Byb3BzLnNtYXJrLm0pIHsKIAkJbCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtJmd0O3Byb3BzLnNtYXJrLnYpKTsKIAkJbCAmIzQzOz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtJmd0O3Byb3BzLnNtYXJrLm0pKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU3NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDY5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYW5kIFJlZmluaW5nIHRoZSBYRlJNIChJUHNlYykgU3Vic3lzdGVtIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSwgYW5kIGltbWVkaWF0ZWx5IEkmIzM5O20gbm90aWNpbmcgYSBnb29kIG1peCBvZiBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIGltcG9ydGFudCBmaXhlcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkmIzM5O2QgZXhwZWN0IHdoZW4gZGVhbGluZyB3aXRoIGEgY29yZSBuZXR3b3JrIHNlY3VyaXR5IGNvbXBvbmVudC4KCkZpcnN0LCB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN0cnVjdCBnZXRzIGEgbmV3IGBpZmluZGV4YCBmaWVsZCBpbiBgaW5jbHVkZS9uZXQveGZybS5oYC4gVGhpcyBsaWtlbHkgYWltcyB0byBpbXByb3ZlIGludGVyZmFjZSBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhlIG9mZmxvYWQgcGF0aC4gTWFrZXMgc2Vuc2U7IGlmIHdlJiMzOTtyZSBvZmZsb2FkaW5nLCB3ZSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIHRyYWZmaWMgb3JpZ2luYXRlcyBvciBpcyBkZXN0aW5lZC4KCkRpdmluZyBpbnRvIGBuZXQvY29yZS9kZXYuY2AsIEkgc2VlIGVycm9yIGhhbmRsaW5nIGZvciBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAuIFRoaXMgaXMgZ29vZDsgaXQgc2hvd3MgYSB0aG91Z2h0ZnVsIGFwcHJvYWNoIHRvIGRlYWxpbmcgd2l0aCBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4gSSYjMzk7bSBnbGFkIHRvIHNlZSB0aGF0IGhhbmRsZWQgaW4gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJlY2F1c2UgdGhvc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucy4KCkluIGBuZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY2AsIHNldHRpbmcgYHhkc3QtJmd0O3UuZHN0LmRldiA9IE5VTExgIGluIGB4ZnJtNl9maWxsX2RzdGAgbWlnaHQgc2VlbSBtaW5vciwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGEgY3J1Y2lhbCBlZGdlIGNhc2UgY2xlYW51cCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzdXNlIG9mIGRhbmdsaW5nIHBvaW50ZXJzLiBBIHN1YnRsZSwgYnV0IHZpdGFsLCBjb3JyZWN0aW9uLgoKYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIGhhcyBhIGZldyBpbnRlcmVzdGluZyBjaGFuZ2VzLiBSZXR1cm5pbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGVycm9yIGhhbmRsaW5nIGluIGBkZXYuY2AsIHNvIEkmIzM5O20gaGFwcHkgdG8gc2VlIHRoYXQgY29uc2lzdGVuY3kuIFRoZSBmaXggZm9yIGBza2ItJmd0O3ByZXZgIHdoZW4gYXN5bmMgY3J5cHRvIHN0ZWFscyB0aGUgU0tCIGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2dpYyBiZXR0ZXIgLSBhc3luYyBjcnlwdG8gaW50ZXJhY3Rpb25zIGNhbiBiZSB0cmlja3ksIHNvIGl0JiMzOTtzIGdvb2QgdG8gc2VlIHRoaXMgYWRkcmVzc2VkIGRpcmVjdGx5LiBUaGUgYHhzby0mZ3Q7aWZpbmRleCA9IGRldi0mZ3Q7aWZpbmRleGAgYXNzaWdubWVudCBpbiBgeGZybV9kZXZfc3RhdGVfYWRkYCBhbmQgYHhmcm1fc3RhdGVfZmluZGAgYXJlIGFsc28gY3JpdGljYWwgdXBkYXRlcyB0byBsaW5rIGludGVyZmFjZSBpbmRleCB0byBzdGF0ZSBpbmZvcm1hdGlvbi4KCmBuZXQveGZybS94ZnJtX2lwdGZzLmNgIGFkZHMgYHNoaW5mby0mZ3Q7ZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUdgIGluIGBpcHRmc19za2JfYWRkX2ZyYWdzYC4gVGhpcyBsb29rcyBsaWtlIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBhIHJlcXVpcmVtZW50LCB0byBjb3JyZWN0bHkgaGFuZGxlIHNoYXJlZCBmcmFnbWVudHMgd2l0aGluIElQVEZTLiBBbm90aGVyIGdvb2QsIGZvY3VzZWQgY2hhbmdlLgoKSW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgdGhlIG1lbW9yeSBsZWFrIGZpeGVzIGluIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NGAsIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGFuZCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBieSBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgb24gZXJyb3IgcGF0aHMgYXJlICplc3NlbnRpYWwqLiBNZW1vcnkgbGVha3MgYXJlIHVuYWNjZXB0YWJsZSwgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29tcG9uZW50LCBzbyBrdWRvcyB0byB0aGF0LgoKVGhlIGNoYW5nZSBpbiBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2Agd2l0aCB0aGUgcHJlZml4bGVuIGNoZWNrIGluIGB4ZnJtX2hhc2hfcmVidWlsZGAgKCBgJmx0O2AgdG8gYCZndDs9YCkgaXMgYSBjbGFzc2ljIGxvZ2ljIGJ1Zy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBlcnJvcnMgdGhhdCBjYW4gY2F1c2UgYWxsIHNvcnRzIG9mIG9ic2N1cmUgbmV0d29yayBtaXNiZWhhdmlvciwgc28gaXQmIzM5O3MgYSBnb29kIHNwb3QgdG8gaGF2ZSBjYXVnaHQgdGhhdC4KCmBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGFsc28gYWRkcmVzc2VzIGludGVyZmFjZSBpbmRleGVzIGFuZCBlcnJvciBoYW5kbGluZzogc2V0dGluZyBgeHNvLSZndDtpZmluZGV4ID0gZGV2LSZndDtpZmluZGV4YCBpbiBgeGZybV9zdGF0ZV9maW5kYCBhbmQgc2V0dGluZyBgeC0mZ3Q7bW9kZV9jYnMgPSBOVUxMYCBvbiBlcnJvciBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLiBTZXR0aW5nIGB4LSZndDttb2RlX2NicyA9IE5VTExgIG9uIGVycm9yIGhlbHBzIHdpdGggdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdXNpbmcgYHNrX2RzdF9yZXNldChzaylgIGluc3RlYWQgb2YgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgIGlzIGxpa2VseSBhIGNoYW5nZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBwb3RlbnRpYWxseSBpbiByZXNwb25zZSB0byBzb21lIGxvY2tpbmcgY2hhbmdlcy4KCkZpbmFsbHksIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgdXNlcyBgUkVBRF9PTkNFKHhzby0mZ3Q7aWZpbmRleClgIGFuZCBgUkVBRF9PTkNFKHgtJmd0O3hzby5kZXYpYCB0byBlbGltaW5hdGUgZGF0YSByYWNlcy4gVGhpcyBpcyBhIHZlcnkgd2VsY29tZSBpbXByb3ZlbWVudCBpbiBlbnN1cmluZyBzYWZlIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLiBNb3ZpbmcgYFhGUk1fTU9ERV9JUFRGU2AgaW4gYHZhbGlkYXRlX3RtcGxgIG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZ3JvdXBpbmcgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSBzaG91bGQgdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEkga25vdyBgQ09ORklHX1hGUk1gIGVuYWJsZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgYENPTkZJR19YRlJNX0lQVEZTYCBlbmFibGVzIGBYRlJNX0lQVEZTYCwgYW5kIGBDT05GSUdfWEZSTV9VU0VSYCBlbmFibGVzIGBYRlJNX1VTRVJgLiBJJiMzOTtsbCBjb25maXJtIGhvdyBgWEZSTV9OQVRgIGlzIGVuYWJsZWQuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fbmF0X2tlZXBhbGl2ZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxuLS1cbm5ldC94ZnJtL01ha2VmaWxlLTE2LVx0XHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XHRcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSAmIzQzOz0geGZybV9wcm9jLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDU0CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgWEZSTSBNb2R1bGVzKioKClJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlLm9gIGlzIGRlZmluaXRlbHkgYnVpbHQgYW5kIGluY2x1ZGVkIHdoZW4gdGhlIGBDT05GSUdfWEZSTWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQgYW5kIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdywgbXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLi4uIHdoYXQgYWJvdXQgYHhmcm1faXB0ZnMub2A/IEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25kaXRpb25zIGZvciB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBJcyBpdCBhbHNvIHRpZWQgZGlyZWN0bHkgdG8gYENPTkZJR19YRlJNYD8gT3IgZG9lcyBpdCBkZXBlbmQgb24gZnVydGhlciwgbW9yZSBzcGVjaWZpYyBzdWItb3B0aW9ucyB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLCBwZXJoYXBzIHJlbGF0ZWQgdG8gSVBzZWMgdHJhbnNwb3J0IHNlY3VyaXR5IG9yIGZpcmV3YWxsIGludGVncmF0aW9uPyBVbmRlcnN0YW5kaW5nIHRoYXQgcmVsYXRpb25zaGlwIHdpbGwgYmUga2V5IGZvciBrbm93aW5nIHdoZW4gYW5kIHdoZXJlIHRvIGV4cGVjdCBpdHMgcHJlc2VuY2UgaW4gYSBrZXJuZWwgYnVpbGQuIExldCYjMzk7cyBzZWUuLi4gSSBiZXQgSSBjYW4gZmluZCB0aGUgYW5zd2VyIHF1aWNrbHkgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faXB0ZnMubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfWEZSTV9JTlRFUkZBQ0UpICYjNDM7PSB4ZnJtX2ludGVyZmFjZS5vXG5uZXQveGZybS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfWEZSTV9JUFRGUykgJiM0Mzs9IHhmcm1faXB0ZnMub1xubmV0L3hmcm0vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1hGUk1fRVNQSU5UQ1ApICYjNDM7PSBlc3BpbnRjcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMwoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlhGUk0gSVBURlMgRGVwZW5kZW5jeSBDb25maXJtYXRpb24qKgoKQWxyaWdodCwgdGhlIG5lZWQgZm9yIGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgZGVmaW5pdGVseSBjb21pbmcgaW50byBmb2N1cy4gTm93IEkgbmVlZCB0byBjb25maXJtIGl0cyBwcmVzZW5jZSBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB3aXRoaW4gdGhlIGJyb2FkZXIgYHhmcm1gIGFyY2hpdGVjdHVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBuZXQveGZybS94ZnJtX2RldmljZS5jYC4gVGhpcyBmaWxlIG9mdGVuIGhvbGRzIHRoZSBrZXkgZGVwZW5kZW5jaWVzIGFuZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyByZWxhdGVkIHRvIFhGUk0gZGV2aWNlcywgYW5kIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgbGFpZCBvdXQgdGhlcmUuIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZGlyZWN0aXZlcyB3aXRoaW4gYHhmcm1fZGV2aWNlLmNgIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgaW5kZWVkIGEgaGFyZCByZXF1aXJlbWVudCwgb3IgYXQgbGVhc3QgYSBoaWdobHkgcmVjb21tZW5kZWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRvIGVuc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseSBhbmQgdGhlIG1vZHVsZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGRpcmVjdCBkZXBlbmRlbmNpZXMgb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMgdGhhdCBtYWtlIHRoaXMgY29ubmVjdGlvbiBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RldmljZS5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMTUKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFhGUk0gS2VybmVsIENvZGUqKgoKUmlnaHQsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBidWlsdCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gR2l2ZW4gdGhhdCwgbXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlIHdvdWxkIGJlIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQmIzM5O3Mgc3RhcnQgdGhlcmU7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMgYmV0d2VlbiB1c2VyLXNwYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBrZXJuZWwmIzM5O3MgWEZSTSBzdWJzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHVzZXItc3BhY2UgY29tcG9uZW50cyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUga2VybmVsLXNpZGUgc3RydWN0dXJlcywgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV91c2VyLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdD02NT1pbmhlcml0cyB0aGUgdmFsdWUgZnJvbSB0aGUgZXhpc3RpbmcgU0EgKG9taXQtdG8taW5oZXJpdCkuXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04MC0gICAqIC0gYGBYRlJNQV9PRkZMT0FEX0RFVmBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0OjgxOiAgICAgLSBIYXJkd2FyZSBvZmZsb2FkIGNvbmZpZ3VyYXRpb24gKGBgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkYGApLiBBYnNlbnRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fbWlncmF0ZV9zdGF0ZS5yc3QtODItICAgICAgIGNvcGllcyBvZmZsb2FkIGZyb20gdGhlIGV4aXN0aW5nIFNBLiBXaGVuXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTY4Mj1zdHJ1Y3QgeGZybV9taWdyYXRlIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtNjg3LVx0c3RydWN0IHhmcm1fZW5jYXBfdG1wbCAqZW5jYXA7XG5pbmNsdWRlL25ldC94ZnJtLmg6Njg4Olx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XG5pbmNsdWRlL25ldC94ZnJtLmgtNjg5LVx0c3RydWN0IHhmcm1fbWFyayAgICAgICAgb2xkX21hcms7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE5MzA9aW50IHhmcm1fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE5MzQtXHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkzNTpcdFx0IHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xOTM2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTI0PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTI1Olx0XHQgICAgICAgY29uc3Qgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyNi1cdFx0ICAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXG5pbmNsdWRlL25ldC94ZnJtLmg6MjEyODpcdFx0XHRzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bywgdTggZGlyLFxuaW5jbHVkZS9uZXQveGZybS5oLTIxMjktXHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjE5Nj1zdGF0aWMgaW5saW5lIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTk3Olx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTk4LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTIyMTE9c3RhdGljIGlubGluZSBpbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXG5pbmNsdWRlL25ldC94ZnJtLmg6MjIxMjpcdFx0XHRcdCAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXG5pbmNsdWRlL25ldC94ZnJtLmgtMjIxMy1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTI3Mj1lbnVtIHhmcm1fYWVfZnR5cGVfdCB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODUtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjI4NjpzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODctXHRfX3U4XHRcdHR5cGU7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD0yOTM9ZW51bSB4ZnJtX2F0dHJfdHlwZV90IHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMC1cdFhGUk1BX1NBLFx0XHQvKiBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzAxOlx0WEZSTUFfUE9MSUNZLFx0XHQvKnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMDItXHRYRlJNQV9TRUNfQ1RYLFx0XHQvKiBzdHJ1Y3QgeGZybV9zZWNfY3R4ICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMDktXHRYRlJNQV9MQVNUVVNFRCxcdFx0LyogX191NjQgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzEwOlx0WEZSTUFfUE9MSUNZX1RZUEUsXHQvKiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzExLVx0WEZSTUFfTUlHUkFURSxcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMyMS1cdFhGUk1BX1BBRCxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6MzIyOlx0WEZSTUFfT0ZGTE9BRF9ERVYsXHQvKiBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKi9cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzIzLVx0WEZSTUFfU0VUX01BUkssXHRcdC8qIF9fdTMyICovXG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00MzE9c3RydWN0IHhmcm1fdXNlcnNwaV9pbmZvIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQzNi1cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDM3OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQzOC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yXHRcdHNlbDtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1NC1cbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDU1OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00NTYtXHRzdHJ1Y3QgeGZybV9zZWxlY3Rvclx0XHRzZWw7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00NjE9c3RydWN0IHhmcm1fdXNlcl9hY3F1aXJlIHtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2NC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yXHRcdHNlbDtcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDY1Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXHRwb2xpY3k7XG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2Ni1cdF9fdTMyXHRcdFx0XHRhYWxnb3M7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00Nzc9c3RydWN0IHhmcm1fdXNlcl9wb2xleHBpcmUge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo0Nzg6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm9cdHBvbDtcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDc5LVx0X191OFx0XHRcdFx0aGFyZDtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU0ND1zdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlciB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTEtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU1MjpzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTMtXHRpbnRcdFx0XHRcdGlmaW5kZXg7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzAtXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MTpzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzItI2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfVU5TUEVDXHQwXG4tLVxubmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlLTIxLW9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTk9c3RydWN0IGNvbXBhdF94ZnJtX2xpZmV0aW1lX2N1ciB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy0yMi1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjM6c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTI0LVx0c3RydWN0IHhmcm1fc2VsZWN0b3Igc2VsO1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NDU9c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJfYWNxdWlyZSB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy00OC1cdHN0cnVjdCB4ZnJtX3NlbGVjdG9yIHNlbDtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6NDk6XHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbGljeTtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNTAtXHQvKiA0IGJ5dGVzIGFkZGl0aW9uYWwgcGFkZGluZyBvbiA2NGJpdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NjY9c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJfcG9sZXhwaXJlIHtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Njc6XHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbDtcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjgtXHQvKiA4IGJ5dGVzIGFkZGl0aW9uYWwgcGFkZGluZyBvbiA2NGJpdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NzQ9c3RhdGljIGNvbnN0IGludCBjb21wYXRfbXNnX21pbltYRlJNX05SX01TR1RZUEVTXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTc3LVx0W1hGUk1fTVNHX0dFVFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJzYV9pZCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjc4Olx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8pLFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo3OTpcdFtYRlJNX01TR19ERUxQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2lkKSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODA6XHRbWEZSTV9NU0dfR0VUUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTgxLVx0W1hGUk1fTVNHX0FMTE9DU1BJICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc3BpX2luZm8pLFxuLS1cbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtODMtXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJfZXhwaXJlKSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODQ6XHRbWEZSTV9NU0dfVVBEUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTg1LVx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc2FfaW5mbyksXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy05MS1cdFtYRlJNX01TR19SRVBPUlQgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX3JlcG9ydCksXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjkyOlx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV9jb21wYXQuYy05My1cdFtYRlJNX01TR19ORVdTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYz0xMDE9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGNvbXBhdF9wb2xpY3lbWEZSTUFfTUFYJiM0MzsxXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEwMy1cdFtYRlJNQV9TQV1cdFx0PSB7IC5sZW4gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc2FfaW5mbyl9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMDQ6XHRbWEZSTUFfUE9MSUNZXVx0XHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYy0xMDUtXHRbWEZSTUFfTEFTVFVTRURdXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTExOS1cdFtYRlJNQV9DT0FERFJdXHRcdD0geyAubGVuID0gc2l6ZW9mKHhmcm1fYWRkcmVzc190KSB9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjA6XHRbWEZSTUFfUE9MSUNZX1RZUEVdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTIxLVx0W1hGUk1BX01JR1JBVEVdXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEyOC1cdFtYRlJNQV9BRERSRVNTX0ZJTFRFUl1cdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX2FkZHJlc3NfZmlsdGVyKSB9LFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjk6XHRbWEZSTUFfT0ZGTE9BRF9ERVZdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpIH0sXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTEzMC1cdFtYRlJNQV9TRVRfTUFSS11cdD0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTIzOT1zdGF0aWMgaW50IHhmcm1feGxhdGU2NF9hdHRyKHN0cnVjdCBza19idWZmICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKnNyYylcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTI1NC1cdGNhc2UgWEZSTUFfUE9MSUNZOlxubmV0L3hmcm0veGZybV9jb21wYXQuYzoyNTU6XHRcdHJldHVybiB4ZnJtX25sYV9jcHkoZHN0LCBzcmMsIFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbykpO1xubmV0L3hmcm0veGZybV9jb21wYXQuYy0yNTYtXHRjYXNlIFhGUk1BX1NFQ19DVFg6XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYz02NDU9c3RhdGljIGludCB4ZnJtX3VzZXJfcG9saWN5X2NvbXBhdCh1OCAqKnBkYXRhMzIsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0Ni17XG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NzpcdHN0cnVjdCBjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8gKnAgPSAodm9pZCAqKSpwZGF0YTMyO1xubmV0L3hmcm0veGZybV9jb21wYXQuYy02NDgtXHR1OCAqc3JjX3RlbXBsYXRlcywgKmRzdF90ZW1wbGF0ZXM7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDA6XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQxLVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MzU5PWludCB4ZnJtX2Rldl9wb2xpY3lfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fcG9saWN5ICp4cCxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYwOlx0XHRcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2MS1cdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NjU2PWludCB4ZnJtX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDY1OS1cdFx0IHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwLCB1MzIgaWZfaWQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ2NjA6XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NjYxLXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMDU6XHRcdFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwNi17XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTIxNT1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE2Olx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE3LXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjIyPXN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWRfaWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjQte1xubmV0L3hmcm0veGZybV91c2VyLmM6MTIyNTpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTIyNi1cdHN0cnVjdCBubGF0dHIgKmF0dHI7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTk4MT1zdGF0aWMgaW50IHZlcmlmeV9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTk5Ny1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE5OTg6c3RhdGljIGludCB2ZXJpZnlfbmV3cG9saWN5X2luZm8oc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwLFxubmV0L3hmcm0veGZybV91c2VyLmMtMTk5OS1cdFx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjE4OT1zdGF0aWMgaW50IGNvcHlfZnJvbV91c2VyX3BvbGljeV90eXBlKHU4ICp0cCwgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTItXHRzdHJ1Y3QgbmxhdHRyICpydCA9IGF0dHJzW1hGUk1BX1BPTElDWV9UWVBFXTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIxOTM6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKnVwdDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTQtXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMDktXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMjEwOnN0YXRpYyB2b2lkIGNvcHlfZnJvbV91c2VyX3BvbGljeShzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLCBzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnApXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjExLXtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjIxLVxubmV0L3hmcm0veGZybV91c2VyLmM6MjIyMjpzdGF0aWMgdm9pZCBjb3B5X3RvX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCwgaW50IGRpcilcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMjMte1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIyMzc9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIyMzg6XHRcdFx0XHRcdFx0IHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMzktXHRcdFx0XHRcdFx0IHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yMjg0PXN0YXRpYyBpbnQgeGZybV9hZGRfcG9saWN5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyODgtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6MjI4OTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyOTAtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIzNzc9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgdXNlcnBvbGljeV90eXBlX2F0dHJzaXplKHZvaWQpXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM3OS0jaWZkZWYgQ09ORklHX1hGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0veGZybV91c2VyLmM6MjM4MDpcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlKSk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzgxLSNlbHNlXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjM4Nz1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4OC17XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzg5Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHVwdDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzOTAtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzkxOlx0LyogU2FkbHkgdGhlcmUgYXJlIHR3byBob2xlcyBpbiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzOTItXHRtZW1zZXQoXHUwMDI2dXB0LCAwLCBzaXplb2YodXB0KSk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjQwNT1zdGF0aWMgaW50IGR1bXBfb25lX3BvbGljeShzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLCBpbnQgZGlyLCBpbnQgY291bnQsIHZvaWQgKnB0cilcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNDA3LVx0c3RydWN0IHhmcm1fZHVtcF9pbmZvICpzcCA9IHB0cjtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI0MDg6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnA7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNDA5LVx0c3RydWN0IHNrX2J1ZmYgKmluX3NrYiA9IHNwLVx1MDAzZWluX3NrYjtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTE0PXN0YXRpYyBpbnQgeGZybV9ub3RpZnlfdXNlcnBvbGljeShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTE1LXtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1MTY6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjUxNy1cdGludCBsZW4gPSBOTE1TR19BTElHTihzaXplb2YoKnVwKSk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0NS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NDY6c3RhdGljIGJvb2wgeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKF9fdTggcG9saWN5KVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjU1Mj1zdGF0aWMgaW50IHhmcm1fc2V0X2RlZmF1bHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMjU1NS1cdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTU2Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0ICp1cCA9IG5sbXNnX2RhdGEobmxoKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTctXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTU4Olx0aWYgKHhmcm1fdXNlcnBvbGljeV9pc192YWxpZCh1cC1cdTAwM2VpbikpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTU5LVx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0lOXSwgdXAtXHUwMDNlaW4pO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjU2MC1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NjE6XHRpZiAoeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKHVwLVx1MDAzZWZ3ZCkpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYyLVx0XHRXUklURV9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0ZXRF0sIHVwLVx1MDAzZWZ3ZCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MjU2NDpcdGlmICh4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQodXAtXHUwMDNlb3V0KSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NjUtXHRcdFdSSVRFX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSwgdXAtXHUwMDNlb3V0KTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTczPXN0YXRpYyBpbnQgeGZybV9nZXRfZGVmYXVsdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTc4LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVx1MDAzZXNrKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1Nzk6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnJfdXA7XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTgwOlx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQpKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1ODEtXHR1MzIgcG9ydGlkID0gTkVUTElOS19DQihza2IpLnBvcnRpZDtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNjAzPXN0YXRpYyBpbnQgeGZybV9nZXRfcG9saWN5KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI2MDgtXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xubmV0L3hmcm0veGZybV91c2VyLmM6MjYwOTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnA7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNjEwLVx0dTggdHlwZSA9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTjtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yOTM3PXN0YXRpYyBpbnQgeGZybV9hZGRfcG9sX2V4cGlyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yOTQzLVx0c3RydWN0IHhmcm1fdXNlcl9wb2xleHBpcmUgKnVwID0gbmxtc2dfZGF0YShubGgpO1xubmV0L3hmcm0veGZybV91c2VyLmM6Mjk0NDpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IFx1MDAyNnVwLVx1MDAzZXBvbDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI5NDUtXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxODM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzE4NS17XG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTg2Olx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqcGkgPSBubG1zZ19kYXRhKG5saCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTg3LVx0c3RydWN0IHhmcm1fbWlncmF0ZSBtW1hGUk1fTUFYX0RFUFRIXSA9IHt9O1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTMtXHRzdHJ1Y3QgeGZybV9lbmNhcF90bXBsICAqZW5jYXAgPSBOVUxMO1xubmV0L3hmcm0veGZybV91c2VyLmM6MzE5NDpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvID0gTlVMTDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTUtXHR1MzIgaWZfaWQgPSAwO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzMTMtXHRcdChtLVx1MDAzZWVuY2FwID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwpKSA6IDApICYjNDM7XG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzE0Olx0XHQobS1cdTAwM2V4dW8gPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSkgOiAwKSAmIzQzO1xubmV0L3hmcm0veGZybV91c2VyLmMtMzMxNS1cdFx0KG0tXHUwMDNlbmV3X21hcmsgPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fbWFyaykpIDogMCkgJiM0Mztcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzQzPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDctXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXHUwMDNlc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6MzM0ODpcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCB4dW8gPSB7fTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMzNDktXHRzdHJ1Y3QgeGZybV9taWdyYXRlIG0gPSB7fTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTcxPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fbWlncmF0ZV9tc2dzaXplKGludCBudW1fbWlncmF0ZSwgaW50IHdpdGhfa21hLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1NzMte1xubmV0L3hmcm0veGZybV91c2VyLmM6MzU3NDpcdHJldHVybiBOTE1TR19BTElHTihzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCkpXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTc1LVx0ICAgICAgJiM0MzsgKHdpdGhfa21hID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2ttYWRkcmVzcykpIDogMClcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTgxPXN0YXRpYyBpbnQgYnVpbGRfbWlncmF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1ODYtXHRjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptcDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1ODc6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkICpwb2xfaWQ7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTg4LVx0c3RydWN0IG5sbXNnaGRyICpubGg7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzY1OT1jb25zdCBpbnQgeGZybV9tc2dfbWluW1hGUk1fTlJfTVNHVFlQRVNdID0ge1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjItXHRbWEZSTV9NU0dfR0VUU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnNhX2lkKSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjM6XHRbWEZSTV9NU0dfTkVXUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pbmZvKSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjQ6XHRbWEZSTV9NU0dfREVMUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjY1Olx0W1hGUk1fTVNHX0dFVFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY2Ni1cdFtYRlJNX01TR19BTExPQ1NQSSAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc3BpX2luZm8pLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjgtXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcl9leHBpcmUpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2OTpcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2luZm8pLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3MC1cdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaW5mbyksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3Ni1cdFtYRlJNX01TR19SRVBPUlQgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX3JlcG9ydCksXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjc3Olx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY3OC1cdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzY4MS1cdFtYRlJNX01TR19NQVBQSU5HICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX21hcHBpbmcpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MjpcdFtYRlJNX01TR19TRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2RlZmF1bHQpLFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MzpcdFtYRlJNX01TR19HRVRERUZBVUxUICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2RlZmF1bHQpLFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY4NC1cdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSksXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzY5MD1jb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB4ZnJtYV9wb2xpY3lbWEZSTUFfTUFYJiM0MzsxXSA9IHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjkyLVx0W1hGUk1BX1NBXVx0XHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyl9LFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY5MzpcdFtYRlJNQV9QT0xJQ1ldXHRcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY5NC1cdFtYRlJNQV9MQVNUVVNFRF1cdD0geyAudHlwZSA9IE5MQV9VNjR9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MDgtXHRbWEZSTUFfQ09BRERSXVx0XHQ9IHsgLmxlbiA9IHNpemVvZih4ZnJtX2FkZHJlc3NfdCkgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MDk6XHRbWEZSTUFfUE9MSUNZX1RZUEVdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTAtXHRbWEZSTUFfTUlHUkFURV1cdFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9taWdyYXRlKSB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTctXHRbWEZSTUFfQUREUkVTU19GSUxURVJdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlcikgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MTg6XHRbWEZSTUFfT0ZGTE9BRF9ERVZdXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzE5LVx0W1hGUk1BX1NFVF9NQVJLXVx0PSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQwMzk9c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtNDA2OC1cdGlmIChSRUFEX09OQ0UoeC1cdTAwM2V4c28uZGV2KSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQwNjk6XHRcdGwgJiM0Mzs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQwNzAtXHRpZiAoeC1cdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cdTAwM2Vwcm9wcy5zbWFyay5tKSB7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9NDI1NT1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX2NvbXBpbGVfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjU4LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xubmV0L3hmcm0veGZybV91c2VyLmM6NDI1OTpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IChzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKilkYXRhO1xubmV0L3hmcm0veGZybV91c2VyLmMtNDI2MC1cdHN0cnVjdCB4ZnJtX3VzZXJfdG1wbCAqdXQgPSAoc3RydWN0IHhmcm1fdXNlcl90bXBsICopIChwICYjNDM7IDEpO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQzNzQ9c3RhdGljIGludCB4ZnJtX25vdGlmeV9wb2xpY3koc3RydWN0IHhmcm1fcG9saWN5ICp4cCwgaW50IGRpciwgY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQzNzctXHRzdHJ1Y3QgbmV0ICpuZXQgPSB4cF9uZXQoeHApO1xubmV0L3hmcm0veGZybV91c2VyLmM6NDM3ODpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzk6XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkICppZDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQzODAtXHRzdHJ1Y3Qgbmxtc2doZHIgKm5saDtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYz0xMTAxPXN0YXRpYyBpbnQgeGZybV9wb2xpY3lfYWRkKGludCB4ZnJtX3NvY2ssIHVpbnQzMl90IHNlcSwgdWludDMyX3Qgc3BpLFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTExMDYtXHRcdHN0cnVjdCBubG1zZ2hkclx0XHRcdG5oO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmM6MTEwNzpcdFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXHRpbmZvO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTEwOC1cdFx0Y2hhclx0XHRcdFx0YXR0cmJ1ZltNQVhfUEFZTE9BRF07XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmM9MTE3Nj1zdGF0aWMgaW50IHhmcm1fcG9saWN5X2RlbChpbnQgeGZybV9zb2NrLCB1aW50MzJfdCBzZXEsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTE4MS1cdFx0c3RydWN0IG5sbXNnaGRyXHRcdFx0bmg7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoxMTgyOlx0XHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkXHRpZDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTExODMtXHRcdGNoYXJcdFx0XHRcdGF0dHJidWZbTUFYX1BBWUxPQURdO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTIwODc9c3RhdGljIGludCB3cml0ZV9wcm90b19wbGFuKGludCBmZCwgaW50IHByb3RvKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTIxMzMtICogICBzaXplb2YoeGZybV91c2Vyc2FfaW5mbykgICAgID0gMjIwICB8ICBzaXplb2YoeGZybV91c2Vyc2FfaW5mbykgICAgID0gMjI0XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoyMTM0OiAqICAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2NCAgfCAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2OFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMjEzNS0gKiAgIHNpemVvZih4ZnJtX3VzZXJzcGlfaW5mbykgICAgPSAyMjggIHwgIHNpemVvZih4ZnJtX3VzZXJzcGlfaW5mbykgICAgPSAyMzJcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jPTE0NTI9c3RhdGljIGludCBjb25maWdfeGZybV9wb2xpY3koaW50IHNkLCBzdHJ1Y3Qgc29ja19hcmdzICphcmdzKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYy0xNDUzLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmM6MTQ1NDpcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyBwb2xpY3kgPSB7fTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmMtMTQ1NS1cdGludCB0eXBlID0gVURQX0VOQ0FQX0VTUElOVURQO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODkyMgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKlhGUk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgWEZSTSBjb25maWd1cmF0aW9uLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19YRlJNX1VTRVJgIOKAkyB0aGF0JiMzOTtzIGEgZ2l2ZW4gZm9yIHVzZXItc3BhY2UgY29udHJvbC4gSG1tLCB3aGF0IGFib3V0IGBDT05GSUdfWEZSTV9PRkZMT0FEYD8gSXQmIzM5O3MgYmVlbiBhIHdoaWxlIHNpbmNlIEkgcGxheWVkIGFyb3VuZCB3aXRoIGhhcmR3YXJlIG9mZmxvYWRpbmcgc3VwcG9ydC4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGBpbmNsdWRlL25ldC94ZnJtLmhgLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBsb2NhdGUgdGhlIGB4ZnJtX2Rldl9vZmZsb2FkYCBzeW1ib2wgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBhbmQgd2hldGhlciBpdCYjMzk7cyBhcHByb3ByaWF0ZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBlbmFibGluZyBldmVyeXRoaW5nIG5lY2Vzc2FyeSwgYnV0IG5vdGhpbmcgdW5uZWNlc3NhcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZGV2X29mZmxvYWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQveGZybS5oPTE0NT1lbnVtIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMTQ4LVxuaW5jbHVkZS9uZXQveGZybS5oOjE0OTpzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XG5pbmNsdWRlL25ldC94ZnJtLmgtMTUwLVx0LyogVGhlIGRldmljZSBmb3IgdGhpcyBvZmZsb2FkLlxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTA9c3RydWN0IHhmcm1fc3RhdGUge1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0yOTMtXG5pbmNsdWRlL25ldC94ZnJtLmg6Mjk0Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgeHNvO1xuaW5jbHVkZS9uZXQveGZybS5oLTI5NS1cbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9NjM0PXN0cnVjdCB4ZnJtX3BvbGljeSB7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTY2Ni1cbmluY2x1ZGUvbmV0L3hmcm0uaDo2Njc6XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4ZG87XG5pbmNsdWRlL25ldC94ZnJtLmgtNjY4LX07XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTE3MjM9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbmluY2x1ZGUvbmV0L3hmcm0uaC0xNzI0LXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoxNzI1Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNngtXHUwMDNleHNvO1xuaW5jbHVkZS9uZXQveGZybS5oLTE3MjYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhkby1cdTAwM2VkZXYpO1xuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTI3PWludCB4ZnJtX2Rldl9wb2xpY3lfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fcG9saWN5ICp4cCxcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuaW5jbHVkZS9uZXQveGZybS5oOjIxMzA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTMxLXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEzND1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfc3RhdGVfYWR2YW5jZV9lc24oc3RydWN0IHhmcm1fc3RhdGUgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEzNS17XG5pbmNsdWRlL25ldC94ZnJtLmg6MjEzNjpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTM3LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4c28tXHUwMDNlZGV2KTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjE2MT1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfcG9saWN5X2RlbGV0ZShzdHJ1Y3QgeGZybV9wb2xpY3kgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE2Mi17XG5pbmNsdWRlL25ldC94ZnJtLmg6MjE2MzpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcdTAwMjZ4LVx1MDAzZXhkbztcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTY0LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cdTAwM2VkZXY7XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTIxNzA9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTcxLXtcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTcyOlx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNngtXHUwMDNleGRvO1xuaW5jbHVkZS9uZXQveGZybS5oLTIxNzMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0geGRvLVx1MDAzZWRldjtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjIyMj1zdGF0aWMgaW5saW5lIHZvaWQgeGZybV9kZXZfcG9saWN5X2ZyZWUoc3RydWN0IHhmcm1fcG9saWN5ICp4KVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI1LVxuaW5jbHVkZS9uZXQveGZybS5oOjIyMjY6c3RhdGljIGlubGluZSBib29sIHhmcm1fZGV2X29mZmxvYWRfb2soc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHhmcm1fc3RhdGUgKngpXG5pbmNsdWRlL25ldC94ZnJtLmgtMjIyNy17XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQ1LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjQ2Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFx1MDAyNngtXHUwMDNleHNvO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNDctXHR4ZnJtX2FkZHJlc3NfdCAqc2FkZHI7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTk9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzYyLXtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYzOlx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFx1MDAyNnhwLVx1MDAzZXhkbztcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY0LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTQxOD1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX2Rldl9wb2xpY3lfYWRkKTtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDE5LVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzo0MjA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy00MjEte1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDczLX1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6NDc0OkVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fZGV2X29mZmxvYWRfb2spO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy00NzUtXG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYz03NTA9aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc3Mi1cdGlmICh4LVx1MDAzZXhzby50eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc3MzpcdFx0aWYgKCF4ZnJtX2Rldl9vZmZsb2FkX29rKHNrYiwgeCkpIHtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzc0LVx0XHRcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1PVVRFUlJPUik7XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03OTQtXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc5NTpcdGlmICh4ZnJtX2Rldl9vZmZsb2FkX29rKHNrYiwgeCkpIHtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzk2LVx0XHRzdHJ1Y3Qgc2VjX3BhdGggKnNwO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjY9dm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY3LXtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3Njg6XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXHUwMDI2eC1cdTAwM2V4c287XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY5LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4c28tXHUwMDNlZGV2KTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9NzgwPXZvaWQgeGZybV9kZXZfc3RhdGVfZnJlZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03ODEte1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc4MjpcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03ODMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhzby1cdTAwM2VkZXYpO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04ODY9eGZybV9kZXZfc3RhdGVfZmx1c2hfc2VjY3R4X2NoZWNrKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCB0YXNrX3ZhbGlkKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTEtXHRcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg5MjpcdFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTMtXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk2NC1cdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6OTY1Olx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NjYtXHRpbnQgaSwgZXJyID0gMCwgY250ID0gMDtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTEzMT1zdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKl9feGZybV9zdGF0ZV9sb29rdXBfYWxsKGNvbnN0IHN0cnVjdCB4ZnJtX2hhc2hfc3RhdGVfcHRycyAqc3RhdGVfcHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTEzNS1cdFx0XHRcdFx0XHQgIHVuc2lnbmVkIHNob3J0IGZhbWlseSxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTM2Olx0XHRcdFx0XHRcdCAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbylcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTM3LXtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTM1Nj14ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDItXHRcdGlmIChwb2wtXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTQzOlx0XHRcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcdTAwMjZwb2wtXHUwMDNleGRvO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1NDQ6XHRcdFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFx1MDAyNngtXHUwMDNleHNvO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDUtXHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cdTAwM2VkZXY7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE2MDEtI2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNjAyOlx0XHRcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcdTAwMjZ4LVx1MDAzZXhzbztcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNjAzLVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExODM9c3RhdGljIGludCBjb3B5X3NlY19jdHgoc3RydWN0IHhmcm1fc2VjX2N0eCAqcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjAzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIwNDpzdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA1LVx0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE0LSNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE1OnN0YXRpYyB2b2lkIHhzb190b194dW8oY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTYtXHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjIxLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIyMjpzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjMtXHRcdFx0XHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjM5OnN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDAte1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjQ0OnN0YXRpYyBpbnQgY29weV91c2VyX3N0YXRlX29mZmxvYWQoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI0NAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGRlcGVuZGVuY2llcyBoZXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBlbmFibGVkIGJlY2F1c2UgaXQmIzM5O3MgY3J1Y2lhbCBmb3IgdGhlIGB4ZnJtX2Rldl9vZmZsb2FkYCBsb2dpYy4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgaXNzdWUuCgpOb3csIGxldCYjMzk7cyBqdXN0IHJ1biB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0byBiZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgWEZSTWAsIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGFuZCwgb2YgY291cnNlLCB0aGUgb25lIEkgbWVudGlvbmVkIGFscmVhZHk6IGBYRlJNX09GRkxPQURgLgoKSSYjMzk7bSBwYXVzaW5nIGJyaWVmbHkgb24gYFhGUk1fTkFUYCwgdGhvdWdoLiBJdCYjMzk7cyBhIGJpdCBvZiBhIGdyYXkgYXJlYSBpbiBteSBtZW1vcnkuIElzIGl0IGFjdHVhbGx5IGBDT05GSUdfWEZSTV9OQVRgIGFzIGEgc2VwYXJhdGUgb3B0aW9uLCBvciBpcyB0aGUgTkFUIGZ1bmN0aW9uYWxpdHkganVzdCBpbXBsaWNpdGx5IHRpZWQgdG8gYENPTkZJR19YRlJNYD8gVG8gYmUgc3VyZSwgSSBzaG91bGQgcmVhbGx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGJ1aWxkaW5nIHNvbWV0aGluZyBsaWtlIGB4ZnJtX25hdF9rZWVwYWxpdmUub2AuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBmaWxlIGlzIGJ1aWx0IG9ubHkgaWYgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLCBidXQgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhIHNwZWNpZmljIGBDT05GSUdfWEZSTV9OQVRgLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQmIzM5O3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IGV2ZW4gZXhpc3RzIGFuZCB0aGF0IGl0JiMzOTtzIHNlcGFyYXRlLCBvciBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBqdXN0IHBhcnQgb2YgdGhlIGNvcmUgWEZSTSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19YRlJNX05BVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzQ0CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzOgoKKipOYXZpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O3ZlIGdvdCB0byBkbyBpcyBmaWd1cmUgb3V0IHdoZXJlIHRoZXNlIG9wdGlvbnMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIHdhcyBsb29raW5nIGZvciBgQ09ORklHX1hGUk1fTkFUYCwgYW5kLCB3ZWxsLCBpdCBhcHBlYXJzIHRoYXQgcGFydGljdWxhciBmbGFnIGlzbiYjMzk7dCBkZWZpbmVkLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBjYXNlIG9mIGVpdGhlciBhIHR5cG8sIGFuIG91dGRhdGVkIHJlZmVyZW5jZSwgb3IgcGVyaGFwcyB0aGUgZnVuY3Rpb25hbGl0eSBpdCByZXByZXNlbnRzIGlzIGZvbGRlZCBpbnRvIHNvbWV0aGluZyBlbHNlLgoKU2luY2UgYENPTkZJR19YRlJNX05BVGAgaXNuJiMzOTt0IHRoZXJlLCBpdCYjMzk7cyB0aW1lIHRvIHNoaWZ0IGdlYXJzLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgZm9yIGBDT05GSUdfWEZSTV9NSUdSQVRFYC4gSG9wZWZ1bGx5LCB0aGlzIGV4aXN0cywgYW5kIGV2ZW4gaWYgbm90LCBpdCBwcm92aWRlcyBzb21lIHVzZWZ1bCBjb250ZXh0LCBvciB3aWxsIHBvaW50IG1lIGluIHRoZSBkaXJlY3Rpb24gb2Ygd2hlcmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG1heSByZXNpZGUuIE1heWJlIGl0IHJlbGF0ZXMgdG8gdGhlIHNhbWUgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBhdCBsZWFzdCBhIHJlbGF0ZWQgYXJlYSBvZiBuZXR3b3JrIHN0YWNrIGNvbmZpZ3VyYXRpb24gdGhhdCBJIHNob3VsZCBjb25zaWRlci4gS25vd2luZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19YRlJNX01JR1JBVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdD0xOTE9VXNlcnNwYWNlIGNhbiBwcm9iZSBmb3Iga2VybmVsIHN1cHBvcnQgYnkgc2VuZGluZyBhIG1pbmltYWxcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5NS0gIGlzIG91dCBvZiByYW5nZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdDoxOTY6LSBgYC1FTk9QUk9UT09QVGBgOiBtZXNzYWdlIHR5cGUgaXMga25vd24gYnV0IGBgQ09ORklHX1hGUk1fTUlHUkFURWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5Ny0gIGlzIG5vdCBlbmFibGVkXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01OT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NjA6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnLTYxLUNPTkZJR19YRlJNX1NUQVRJU1RJQ1M9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz01Mz1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZy01NS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz00OT1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6NTA6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTUxLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc9NTY9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NTc6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNTgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo0NzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZy00OC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTQ4PUNPTkZJR19UTFM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjQ5OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTUwLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnPTQ3PUNPTkZJR19UTFM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNDktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz02Nz1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo2ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy02OS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9NDU9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo0NjpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTQ3LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjQ3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctNDgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjQ4OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZy00OS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9NDI9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc9NDM9Q09ORklHX1RMUz1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NDQ6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctNDUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzY9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy0zOC1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz00ND1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc6NDU6Q09ORklHX1hGUk1fTUlHUkFURT15XG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUPXlcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MTkwOT1pbnQgeGZybV9za19wb2xpY3lfaW5zZXJ0KHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHhmcm1fcG9saWN5ICpwb2wpO1xuaW5jbHVkZS9uZXQveGZybS5oLTE5MTAtXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkxMTojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxuaW5jbHVkZS9uZXQveGZybS5oLTE5MTItaW50IGttX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0yMDM1PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fcmVwbGF5X3N0YXRlX2Vzbl9sZW4oc3RydWN0IHhmcm1fcmVwbGF5X3N0YXRlX2VzbiAqcmVwbGF5X2Vzbilcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjAzOS1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMDQwOiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5pbmNsdWRlL25ldC94ZnJtLmgtMjA0MS1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3JlcGxheV9jbG9uZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ0ODQ9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9hdWRpdF9wb2xpY3lfZGVsZXRlKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0ODYtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQ0ODc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDQ4OC1zdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5ICp4ZnJtX21pZ3JhdGVfcG9saWN5X2ZpbmQoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTk0OT1FWFBPUlRfU1lNQk9MKHhmcm1fc3RhdGVfYWRkKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTUwLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTUyLXN0YXRpYyBpbmxpbmUgaW50IGNsb25lX3NlY3VyaXR5KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgeGZybV9zZWNfY3R4ICpzZWN1cml0eSlcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9Mjg4ND1FWFBPUlRfU1lNQk9MKGttX3BvbGljeV9leHBpcmVkKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg1LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjI4ODY6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg3LWludCBrbV9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX3NlbGVjdG9yICpzZWwsIHU4IGRpciwgdTggdHlwZSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEzLVxubmV0L3hmcm0veGZybV91c2VyLmM6MTIxNDojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNS1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MzA0Mj1zdGF0aWMgaW50IHhmcm1fYWRkX2FjcXVpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzExNi1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxMTc6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTgtc3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgeGZybV9taWdyYXRlICptYSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNTMyPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1MzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNTM5OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQwLXN0YXRpYyBpbnQgY29weV90b191c2VyX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fbWlncmF0ZSAqbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA4ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBjb3JlIG9mIGl0IGJvaWxzIGRvd24gdG8gdGhlIGB4c29fdG9feHVvYCBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZCB0byBjb252ZXJ0IGRhdGEgZnJvbSBhbiBgeGZybV9kZXZfb2ZmbG9hZGAgc3RydWN0dXJlIChgeHNvYCkgdG8gYW4gYHhmcm1fdXNlcl9vZmZsb2FkYCBzdHJ1Y3R1cmUgKGB4dW9gKS4gQW5kIG5vdyBJIGNhbiBzZWUsIGBDT05GSUdfWEZSTV9NSUdSQVRFYCBpcyBndWFyZGluZyB0aGF0IGZ1bmN0aW9uLgoKU3BlY2lmaWNhbGx5LCBJIGNhbiBzZWUgdGhhdCB0aGlzIGAjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURWAgYmxvY2sgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGhhdmUgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVkIHRvIGdldCB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uCgpJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gc3VwcG9ydCBtaWdyYXRpb24uIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB3aXRoIHRoaXMgZnVuY3Rpb25hbGl0eSBlbmFibGVkLCBhIGRpZmZlcmVudCBpbnRlcmZhY2UgaW5kZXggbmVlZHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBpbiBzb21lIGNpcmN1bXN0YW5jZXMsIGFuZCB0aGlzIGlzIHdoeSBhIG5ldyBmdW5jdGlvbiwgYHhzb190b194dW9faWZpbmRleGAsIGhhcyBiZWVuIGNyZWF0ZWQuIEkgc2VlIHRoYXQgdGhlIG9yaWdpbmFsIGB4c29fdG9feHVvYCBub3cgY2FsbHMgYHhzb190b194dW9faWZpbmRleGAgcGFzc2luZyBpbiB0aGUgaWZpbmRleC4gQWxzbywgSSBzZWUgdGhhdCB0aGUgbmV3IGZ1bmN0aW9uIGBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZGAgaXMgbm93IGNhbGxpbmcgYGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXhgIGFuZCBwYXNzZXMgaW4gdGhlIGlmaW5kZXggZnJvbSB0aGUgYHhzb2AuCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUgYWJvdXQgdGhlIGNvbnRleHQgb2YgdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZW51bWVyYXRlIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBhdCBwbGF5IGhlcmUuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSB0aGlua2luZzogYFhGUk1fVVNFUmAsIGBYRlJNX0lQVEZTYCwgYW5kIGBYRlJNX09GRkxPQURgICh0aGF0IG9uZSYjMzk7cyBpbXBvcnRhbnQsIEkgdGhpbmsgaXQmIzM5O3MgdGhlIGJhc2lzIGZvciB0aGUgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5KSBhbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBvbmUsIGBYRlJNX01JR1JBVEVgLiBJIGNhbiBqdXN0IGFkZCBgWEZSTWAgZm9yIGNvbXBsZXRlbmVzcywgdGhhdCBzZWVtcyBsaWtlIGEgYmFzZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX09GRkxPQUQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz01PWNvbmZpZyBYRlJNXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY4MzIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqQ2hlY2tpbmcgWEZSTSBPZmZsb2FkIGFuZCBJUFRGUyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBgWEZSTV9PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIE5vdywganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJyb2FkZXIgcGljdHVyZSwgbGV0JiMzOTtzIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgS2NvbmZpZyBkb2N1bWVudGF0aW9uIGZvciBgWEZSTV9JUFRGU2AuIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBvciBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVzZSBmZWF0dXJlcy4gSXQmIzM5O3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZm9yZXN0IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgb2YgdGhpcyBjb21wbGV4aXR5LCBhbmQgYSBxdWljayBkb3VibGUtY2hlY2sgY2FuIHByZXZlbnQgYSBsb3Qgb2YgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIGp1c3QgZ29vZCBwcmFjdGljZSB0byByZXZpZXcgdGhlIHJlbGF0ZWQgb3B0aW9ucyB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fSVBURlMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxuLS1cbm5ldC94ZnJtL0tjb25maWctMTQwLVxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcbm5ldC94ZnJtL0tjb25maWctMTQyLVx0dHJpc3RhdGUgXCYjMzQ7SVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcxNDgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgWEZSTV9JUFRGU2AgaXMgYSBsZWdpdGltYXRlIGFuZCBhY2NlcHRhYmxlIHNldHRpbmcuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBjb25maXJtaW5nIGl0JiMzOTtzIGEga25vd24gY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHJlbGF0ZWQgdG8gaXQuIE15IG5leHQgY2hlY2sgaXMgZ29pbmcgdG8gYmUgb24gYFhGUk1fTUlHUkFURWAuIEkgbmVlZCB0byBhc3Nlc3MgaG93IHRoYXQgcGxheXMgaW50byB0aGUgb3ZlcmFsbCBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fTUlHUkFURSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTUxPWNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbi0tXG5uZXQveGZybS9LY29uZmlnLTYwLVxubmV0L3hmcm0vS2NvbmZpZzo2MTpjb25maWcgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTYyLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBtaWdyYXRlIGRhdGFiYXNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Mzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgWEZSTSBTdWJzeXN0ZW0gRml4ZXMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGFkZHJlc3Npbmcgc2V2ZXJhbCBpc3N1ZXMgd2l0aGluIHRoZSBYRlJNIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB5ZXMsIGBYRlJNX01JR1JBVEVgIGlzIGEgdmFsaWQgY29uZmlnLiAgQW5kIHNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVB2Ni1yZWxhdGVkIGNvZGUgaW4gYG5ldC9pcHY2L3hmcm02X3BvbGljeS5jYCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2YCwgYENPTkZJR19JUFY2YCBpcyBkZWZpbml0ZWx5IGEgcmVxdWlyZW1lbnQsIHRob3VnaCBpdCYjMzk7cyB1c3VhbGx5IGVuYWJsZWQsIHNvIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gSSBpbml0aWFsbHkgaWRlbnRpZmllZCBhIGxvbmcgbGlzdCwgYnV0IHdlIG5lZWQgdG8gbmFycm93IGl0IGRvd24gdG8gdGhlIG1vc3QgcmVsZXZhbnQ6CgoqICAgYHZhbGlkYXRlX3htaXRfeGZybWAKKiAgIGB4ZnJtNl9maWxsX2RzdGAKKiAgIGB4ZnJtX2Rldl9zdGF0ZV9hZGRgCiogICBgaXB0ZnNfc2tiX2FkZF9mcmFnc2AKKiAgIGBuYXRfa2VlcGFsaXZlX3NlbmRgCiogICBgeGZybV9oYXNoX3JlYnVpbGRgCiogICBgeGZybV9zdGF0ZV9maW5kYAoqICAgYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYAoqICAgYHhmcm1fdXNlcl9wb2xpY3lgCiogICBgX194ZnJtX2luaXRfc3RhdGVgCiogICBgY29weV90b191c2VyX3N0YXRlX2V4dHJhYAoqICAgYHZhbGlkYXRlX3RtcGxgCgpJJiMzOTttIGZpbHRlcmluZyBvdXQgdGhlIGhvdC1wYXRoIGZ1bmN0aW9ucyBsaWtlIGBfX2Rldl9xdWV1ZV94bWl0YCBhbmQgYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgLCBmb2N1c2luZyBvbiB0aGUgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbnMuIFRoZW4gSSByZWZpbmVkIHRoaXMgbGlzdCBiYXNlZCBvbiB3aGF0IHRoZSBwYXRjaCBpcyBjaGFuZ2luZy4KClRha2luZyBhIGNsb3NlciBsb29rLCBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyBpbiBgbmV0L3hmcm0veGZybV9kZXZpY2UuY2AgYW5kIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAsIHNvIGl0JiMzOTtzIHNvbWV3aGF0IGhvdC1wYXRoLCBidXQgZGVmaW5pdGVseSBzcGVjaWZpYyB0byBYRlJNIG9mZmxvYWQuIGBpcHRmc19za2JfYWRkX2ZyYWdzYCBpcyBJUFRGUyBzcGVjaWZpYywgYG5hdF9rZWVwYWxpdmVfc2VuZGAgaXMgTkFUIGtlZXBhbGl2ZSwgYW5kIHNvIG9uLgoKTm93IHRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgc3ltYm9sIHZpc2liaWxpdHkuIEkgY2hlY2tlZCBpZiB0aGUgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEhlcmUgYXJlIHRoZSBpbXBvcnRhbnQgb25lczoKKiBgdmFsaWRhdGVfeG1pdF94ZnJtYCAtIGV4cG9ydGVkLgoqIGB4ZnJtNl9maWxsX2RzdGAgLSBSZWxldmFudC4KKiBgeGZybV9kZXZfc3RhdGVfYWRkYCAtIFJlbGV2YW50LgoqIGBpcHRmc19za2JfYWRkX2ZyYWdzYCAtIHN0YXRpYy4KKiBgbmF0X2tlZXBhbGl2ZV9zZW5kYCAtIHN0YXRpYy4KKiBgeGZybV9oYXNoX3JlYnVpbGRgIC0gc3RhdGljLgoqIGB4ZnJtX3N0YXRlX2ZpbmRgIC0gZXhwb3J0ZWQuCiogYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCAtIHN0YXRpYy4KKiBgeGZybV91c2VyX3BvbGljeWAgLSBleHBvcnRlZC4KKiBgX194ZnJtX2luaXRfc3RhdGVgIC0gZXhwb3J0ZWQuCiogYHZhbGlkYXRlX3RtcGxgIC0gc3RhdGljLgoKQmFzZWQgb24gdGhhdCwgSSB3YW50IHRvIGluY2x1ZGUgZXhwb3J0ZWQgZnVuY3Rpb25zIGJ1dCBhbHNvIHNvbWUgaW1wb3J0YW50IHN0YXRpYyBvbmVzLCBhbmQgdGhlbiBsZXQmIzM5O3Mgc2VlIHdoeSB0aGlzIGxpc3QgaXMgbmVlZGVkLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGFkZHJlc3NlcyBtdWx0aXBsZSBwcm9ibGVtczogaGFuZGxpbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBhc3luYyBjcnlwdG8sIGZpeGluZyBtZW1vcnkgbGVha3MgaW4gYHhmcm02X2ZpbGxfZHN0YCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGFkZHJlc3NpbmcgYW4gaW5jb3JyZWN0IHByZWZpeCBsZW5ndGggY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLCBtaXRpZ2F0aW5nIGEgZGF0YSByYWNlIGluIGB4ZnJtX3VzZXIuY2AsIGNvcnJlY3RpbmcgYFhGUk1fTU9ERV9JUFRGU2AgdmFsaWRhdGlvbiBpbiBgdmFsaWRhdGVfdG1wbGAsIGFuZCBzZXR0aW5nIGBTS0JGTF9TSEFSRURfRlJBR2AgaW4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgLgoKVGhlc2UgYXJlIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlcyBjb3ZlcmluZyBjb3JlIFhGUk0gbG9naWMsIElQc2VjIG9mZmxvYWQsIElQVEZTLCBhbmQgTkFUIGtlZXBhbGl2ZS4gVGhlcmVmb3JlLCB0aGV5IGFsbCB3YXJyYW50IGZ1enppbmcgdG8gZW5zdXJlIHRoZSBmaXhlcyBhcmUgY29ycmVjdCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4KClNvLCB0aGUgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlOgoKKiAgIGBYRlJNX1VTRVJgCiogICBgWEZSTV9JUFRGU2AKKiAgIGBYRlJNX09GRkxPQURgCiogICBgWEZSTV9NSUdSQVRFYAoqICAgYElQVjZgCgpJJiMzOTtsbCBxdWlja2x5IGRvdWJsZS1jaGVjayBgWEZSTV9PRkZMT0FEYCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYSBib29sIGFuZCBob3cgaXQgaXMgZW5hYmxlZC4gQWZ0ZXIgdGhhdCwgd2UgYXJlIGdvb2QgdG8gc3RhcnQgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMDQ6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnPTU9Y29uZmlnIFhGUk1cbi0tXG5uZXQveGZybS9LY29uZmlnLTEwLVxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXG5uZXQveGZybS9LY29uZmlnLTEyLVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0OAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgVW5wcm9tcHRlZCBQYXRoKioKCkFscmlnaHQsIEkmIzM5O20gZW5jb3VudGVyaW5nIGEgbW9kZWwgd2l0aCBubyBleHBsaWNpdCBwcm9tcHQuIEludHJpZ3VpbmcuIFRoYXQgaW1tZWRpYXRlbHkgc2lnbmFscyBhIGRpZmZlcmVudCBzZWxlY3Rpb24gbWVjaGFuaXNtIGF0IHBsYXkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHNvIGl0IHdhc24mIzM5O3QgY2FsbGVkIGRpcmVjdGx5LiBXaGF0IHRyaWdnZXJlZCAqdGhpcyogcGFydGljdWxhciBjb25maWd1cmF0aW9uPyYjMzQ7IFRoaXMgaW1wbGllcyBhIGRlZXBlciBsYXllciBvZiBvcmNoZXN0cmF0aW9uLCBsaWtlbHkgZHJpdmVuIGJ5IHNvbWUgZXh0ZXJuYWwgc3lzdGVtLCBwZXJoYXBzIGEgbWV0YS1wcm9tcHQsIGEgcnVsZS1iYXNlZCBlbmdpbmUsIG9yIGEgY2FzY2FkaW5nIHNldCBvZiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3RvciwgdGhlIGNyaXRlcmlhIHRoYXQgbGVkIHRvIHRoaXMgbW9kZWwgYmVpbmcgY2hvc2VuLiBJcyBpdCBiYXNlZCBvbiBpbnB1dCBjb250ZXh0LCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCByZXNvdXJjZSBhdmFpbGFiaWxpdHksIG9yIHNvbWV0aGluZyBtb3JlIGVzb3RlcmljPyBUaGlzIGFic2VuY2Ugb2YgYSBkaXJlY3QgcHJvbXB0IGZvcmNlcyBtZSB0byByZXZlcnNlLWVuZ2luZWVyIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIHNlbGVjdGlvbiBpdHNlbGYgKmlzKiB0aGUgcHJvbXB0LCBpbiBhIHNlbnNlIOKAkyBqdXN0IGEgaGlkZGVuIG9uZS4gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2l0IHF1ZXJ5LiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGVudmlyb25tZW50LCB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb25zLCBhbmQgYW55IGxvZ3MgdG8gdHJhY2UgdGhlIHBhdGggdG8gdGhpcyBzcGVjaWZpYyBpbnN0YW50aWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTV9PRkZMT0FEJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXHRkZXBlbmRzIG9uIElORVRfRVNQXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcdHNlbGVjdCBYRlJNX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzczLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzk1CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRVNQIE9mZmxvYWQgQ29uZmlndXJhdGlvbiBmb3IgVGVzdGluZyoqCgpSaWdodCwgc28gYElORVRfRVNQX09GRkxPQURgIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgIGJvdGgsIGluIGVmZmVjdCwgY2hvb3NlIGBYRlJNX09GRkxPQURgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFRoYXQgbWVhbnMgaWYgSSB3YW50IHRvIHRob3JvdWdobHkgZXhhbWluZSBhbmQgdGVzdCB0aGUgRVNQIG9mZmxvYWQgcGF0aHMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBlbmFibGUgKmJvdGgqIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIHBvaW50IGlzIHRvIGNvdmVyIGJvdGggSVB2NCBhbmQgSVB2NiBpbXBsZW1lbnRhdGlvbnMuIExldCBtZSBzdGFydCBieSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYElORVRfRVNQX09GRkxPQURgLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wbGljYXRpb25zIG9mIGl0cyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVF9FU1BfT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1Bcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM2OC1cbm5ldC9pcHY0L0tjb25maWc6MzY5OmNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG5uZXQvaXB2NC9LY29uZmlnLTM3MC1cdHRyaXN0YXRlIFwmIzM0O0lQOiBFU1AgdHJhbnNmb3JtYXRpb24gb2ZmbG9hZFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDczOAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgSVBzZWMgT2ZmbG9hZCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgd29ya2luZyB3aXRoIHRyaXN0YXRlIG9wdGlvbnMgaGVyZSwgcGFydGljdWxhcmx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBwcm9tcHRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHdlIGluY2x1ZGUgYElORVRfRVNQX09GRkxPQURgIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGV5JiMzOTtyZSBjcml0aWNhbCBmb3IgdGhlIG9mZmxvYWQgZnVuY3Rpb25hbGl0eS4KCk5vdywgbGV0JiMzOTtzIHJlZmluZSB0aGUgY29uZmlndXJhdGlvbiBsaXN0IGl0c2VsZi4gSSYjMzk7bSB0aGlua2luZyB3ZSBuZWVkOgoqICAgYFhGUk1fVVNFUmAKKiAgIGBYRlJNX0lQVEZTYAoqICAgYFhGUk1fTUlHUkFURWAKKiAgIGBJTkVUX0VTUF9PRkZMT0FEYAoqICAgYElORVQ2X0VTUF9PRkZMT0FEYAoqICAgYElQVjZgCgpXYWl0IGEgbW9tZW50LCBJIGp1c3QgcmVhbGl6ZWQgdGhhdCBgWEZSTV9PRkZMT0FEYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRob3NlIG90aGVycywgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gbGlzdCBpdCBleHBsaWNpdGx5LiBUaG91Z2gsIGFkZGluZyBpdCB3b24mIzM5O3QgaHVydCBlaXRoZXIuIEhvd2V2ZXIsIGJlY2F1c2UgaXQgbGFja3MgYSBkaXJlY3QgcHJvbXB0LCBzaW1wbHkgc2V0dGluZyBgQ09ORklHX1hGUk1fT0ZGTE9BRD15YCBtaWdodCBub3QgYmUgZW5vdWdoIGluIGEgYG1ha2UgZGVmY29uZmlnYCBvciBgbWFrZSBvbGRjb25maWdgIHNjZW5hcmlvLiBJdCYjMzk7cyBjbGVhbmVyIGFuZCBtb3JlIHJvYnVzdCB0byBqdXN0IHNwZWNpZnkgdGhlIGRpcmVjdCBlbmFibGVzLCBhbmQgdGhhdCBtYWtlcyBtZSBsZWFuIGJhY2sgdG8gZXhwbGljaXRseSBtZW50aW9uaW5nIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBpbnN0ZWFkLgoKSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBwcm9tcHRpbmcgb24gdGhlIG90aGVyIG9uZXMuIExldCYjMzk7cyBsb29rIGF0IGBYRlJNX01JR1JBVEVgIGFnYWluLi4uIFllcCwgaXQgaGFzIHRoYXQgcHJvbXB0ICYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZSYjMzQ7LiBTbywgdGhhdCBvbmUgKmNhbiogYmUgZGlyZWN0bHkgZW5hYmxlZC4gR29vZC4KCk5leHQsIEkmIzM5O2xsIGNvbmZpcm0gYFhGUk1fSVBURlNgLiBJdCBoYXMgJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydCYjMzQ7LiBUaGF0JiMzOTtzIGEgZ29vZCBwcm9tcHQ7IHdlIGNhbiBkaXJlY3RseSBlbmFibGUgdGhhdC4KCkZpbmFsbHksIEkmIzM5O2xsIGdvIGJhY2sgdG8gY2hlY2sgb24gYFhGUk1fVVNFUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX1VTRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDA0OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNTc5CgkJCQkJCQlvdXRwdXQ6IDI5MwoJCQkJCQkJdGhvdWdodHM6IDM1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBYRlJNIFBhdGNoIGFuZCBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50IOKAkyB3ZSBoYXZlIGEgcHJvbXB0IHRvIHdvcmsgZnJvbS4gTGV0JiMzOTtzIHNlZSwgdGhlIGNvbmZpZ3MgdGhhdCBhcmUgcmVsZXZhbnQgYXJlIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGBYRlJNX01JR1JBVEVgLCBgSU5FVF9FU1BfT0ZGTE9BRGAsIGFuZCBgSU5FVDZfRVNQX09GRkxPQURgLiBJdCB3b3VsZCBiZSB3aXNlIHRvIGFkZCBgSVBWNmAgdG8gdGhhdCBsaXN0LCBldmVuIHRob3VnaCBpdCYjMzk7cyB0eXBpY2FsbHkgZW5hYmxlZC4gSnVzdCB0byBiZSBzdXJlIHdlIGNvdmVyIGFsbCBiYXNlcy4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBjb21wb25lbnRzLiBJJiMzOTt2ZSByZXZpZXdlZCB0aGUgYEZvY3VzU3ltYm9sc2AsIHdoaWNoIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldy4gV2UmIzM5O3ZlIGdvdCBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgYHhmcm02X2ZpbGxfZHN0YCwgYHhmcm1fZGV2X3N0YXRlX2FkZGAsIGBpcHRmc19za2JfYWRkX2ZyYWdzYCwgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGB4ZnJtX3N0YXRlX2ZpbmRgLCBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgLCBgeGZybV91c2VyX3BvbGljeWAsIGBfX3hmcm1faW5pdF9zdGF0ZWAsIGFuZCBgdmFsaWRhdGVfdG1wbGAuIFllcCwgdGhhdCYjMzk7cyBhIGNvbXByZWhlbnNpdmUgc2V0IG9mIGZ1bmN0aW9ucy4KCkJhc2VkIG9uIHRoZSByZWFzb25pbmcgcHJvdmlkZWQsIHRoaXMgcGF0Y2ggdGFja2xlcyBzb21lIGNyaXRpY2FsIGlzc3VlcyB3aXRoaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0uIE1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlLCBlcnJvcnMgaW4gSVB2NiBwb2xpY3kgcm91dGluZywgYW5kIGhhbmRsaW5nIGAtRUlOUFJPR1JFU1NgIGFzeW5jIGNyeXB0byBhcmUgYWxsIHNlcmlvdXMuIFBsdXMsIHRoZSBwcmVmaXggbGVuZ3RoIGJ1ZywgdXNlLWFmdGVyLWZyZWUsIGFuZCBkYXRhIHJhY2VzIGFyZSB0aGUga2luZCBvZiB2dWxuZXJhYmlsaXRpZXMgd2UgbmVlZCB0byBiZSB2ZXJ5IGNvbmNlcm5lZCBhYm91dC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYywgd2hpY2ggbWVhbnMgdGhlc2UgY2hhbmdlcyAqbXVzdCogYmUgcmlnb3JvdXNseSBmdXp6ZWQgdG8gdmVyaWZ5IHRoZSBmaXhlcyBhbmQgcHJldmVudCBuZXcgcmVncmVzc2lvbnMuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgcGxhbi4gSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAwNDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDssCiAgICAmIzM0O1hGUk1fSVBURlMmIzM0OywKICAgICYjMzQ7WEZSTV9NSUdSQVRFJiMzNDssCiAgICAmIzM0O0lORVRfRVNQX09GRkxPQUQmIzM0OywKICAgICYjMzQ7SU5FVDZfRVNQX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2YWxpZGF0ZV94bWl0X3hmcm0mIzM0OywKICAgICYjMzQ7eGZybTZfZmlsbF9kc3QmIzM0OywKICAgICYjMzQ7eGZybV9kZXZfc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O2lwdGZzX3NrYl9hZGRfZnJhZ3MmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV9zZW5kJiMzNDssCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfZmluZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cCYjMzQ7LAogICAgJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgICAmIzM0O19feGZybV9pbml0X3N0YXRlJiMzNDssCiAgICAmIzM0O3ZhbGlkYXRlX3RtcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgZnVuY3Rpb25hbCBidWdzIGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLCBpbmNsdWRpbmcgbWVtb3J5IGxlYWtzIGluIE5BVCBrZWVwYWxpdmUgYW5kIElQdjYgcG9saWN5IHJvdXRpbmcsIGluY29ycmVjdCBoYW5kbGluZyBvZiBhc3luYyBjcnlwdG8gcmV0dXJucyAoLUVJTlBST0dSRVNTKSBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiwgYSBwcmVmaXggbGVuZ3RoIGNoZWNrIGJ1ZyBpbiBoYXNoIHJlYnVpbGRpbmcsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb24vY2xvbmluZywgYW5kIGRhdGEgcmFjZXMgaW4gdXNlciBvZmZsb2FkIHN0YXRlIGNvcHlpbmcuIEl0IGFsc28gYWRkcyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgSVBURlMgbW9kZSBhbmQgZml4ZXMgc2hhcmVkIGZyYWdtZW50IGhhbmRsaW5nIGluIElQVEZTLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9JUFRGUyYjMzQ7LAogICAgJiMzNDtYRlJNX01JR1JBVEUmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BfT0ZGTE9BRCYjMzQ7LAogICAgJiMzNDtJTkVUNl9FU1BfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICAgJiMzNDt4ZnJtNl9maWxsX2RzdCYjMzQ7LAogICAgJiMzNDt4ZnJtX2Rldl9zdGF0ZV9hZGQmIzM0OywKICAgICYjMzQ7aXB0ZnNfc2tiX2FkZF9mcmFncyYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3NlbmQmIzM0OywKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9maW5kJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwJiMzNDssCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OywKICAgICYjMzQ7X194ZnJtX2luaXRfc3RhdGUmIzM0OywKICAgICYjMzQ7dmFsaWRhdGVfdG1wbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MDo0MC4xNzI1MDU3MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwNjQ0MzY0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0lQVEZTXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIixcbiAgICBcIklORVRfRVNQX09GRkxPQURcIixcbiAgICBcIklORVQ2X0VTUF9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gICAgXCJ4ZnJtNl9maWxsX2RzdFwiLFxuICAgIFwieGZybV9kZXZfc3RhdGVfYWRkXCIsXG4gICAgXCJpcHRmc19za2JfYWRkX2ZyYWdzXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3NlbmRcIixcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZpbmRcIixcbiAgICBcInhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwXCIsXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gICAgXCJfX3hmcm1faW5pdF9zdGF0ZVwiLFxuICAgIFwidmFsaWRhdGVfdG1wbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDA6NDAuMTcyNTEwNzI4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODAzMzE1ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MTcxMWJjZDJhNjZkZjY0ZGI0NTFlNTY5NDhkMDc3ODhjZWEwMDlmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDA0OjQwOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3hmcm0uaCBiL2luY2x1ZGUvbmV0L3hmcm0uaFxcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC94ZnJtLmhcXG4rKysgYi9pbmNsdWRlL25ldC94ZnJtLmhcXG5AQCAtMTYyLDYgKzE2Miw4IEBAIHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkIHtcXG4gXFx0ICovXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlXFx0KnJlYWxfZGV2O1xcbiBcXHR1bnNpZ25lZCBsb25nXFx0XFx0b2ZmbG9hZF9oYW5kbGU7XFxuK1xcdC8qIFNuYXBzaG90IHRoZSBhdHRhY2hlZCBkZXZpY2UgaW5kZXggZm9yIGR1bXAgcGF0aHMuICovXFxuK1xcdGludFxcdFxcdFxcdGlmaW5kZXg7XFxuIFxcdHU4XFx0XFx0XFx0ZGlyIDogMjtcXG4gXFx0dThcXHRcXHRcXHR0eXBlIDogMjtcXG4gXFx0dThcXHRcXHRcXHRmbGFncyA6IDI7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XFxuLS0tIGEvbmV0L2NvcmUvZGV2LmNcXG4rKysgYi9uZXQvY29yZS9kZXYuY1xcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuKy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKVxcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxcbisgKi9cXG4gc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG4ge1xcbiBcXHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcztcXG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcXG4gXFx0XFx0c2tiLVxcdTAwM2VwcmV2ID0gc2tiO1xcbiBcXG4gXFx0XFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcXG4tXFx0XFx0aWYgKCFza2IpXFxuK1xcdFxcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGlmICghaGVhZClcXG5AQCAtNDg2MCw4ICs0ODYzLDExIEBAIGludCBfX2Rldl9xdWV1ZV94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXFxuIFxcdFxcdFxcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xcbiBcXG4gXFx0XFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFxcdTAwMjZhZ2Fpbik7XFxuLVxcdFxcdGlmICghc2tiKVxcbitcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkge1xcbitcXHRcXHRcXHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcXG4rXFx0XFx0XFx0XFx0cmMgPSBORVRfWE1JVF9TVUNDRVNTO1xcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0SEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMgYi9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xcbmluZGV4IDEyNWVhOWE1YjhhMDgyLi4zYjc0OTQ3NWY2ZWQ2NSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xcbisrKyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXFxuQEAgLTg4LDYgKzg4LDcgQEAgc3RhdGljIGludCB4ZnJtNl9maWxsX2RzdChzdHJ1Y3QgeGZybV9kc3QgKnhkc3QsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdHhkc3QtXFx1MDAzZXUucnQ2LnJ0NmlfaWRldiA9IGluNl9kZXZfZ2V0KGRldik7XFxuIFxcdGlmICgheGRzdC1cXHUwMDNldS5ydDYucnQ2aV9pZGV2KSB7XFxuIFxcdFxcdG5ldGRldl9wdXQoZGV2LCBcXHUwMDI2eGRzdC1cXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xcbitcXHRcXHR4ZHN0LVxcdTAwM2V1LmRzdC5kZXYgPSBOVUxMO1xcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9kZXZpY2UuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG5AQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXFxuIFxcdFxcdGVyciA9IHgtXFx1MDAzZXR5cGVfb2ZmbG9hZC1cXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XFxuIFxcdFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0XFx0aWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpXFxuLVxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xcbiBcXG4gXFx0XFx0XFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbkBAIC0yMjQsNyArMjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXFxuIFxcdFxcdHBza2IgPSBza2IyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZXR1cm4gc2tiO1xcbitcXHQvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLVxcdTAwM2VwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luY1xcbitcXHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVxcdTAwM2VwcmV2LiAgUmVwb2ludFxcbitcXHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXFxuK1xcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoc2tiKVxcbitcXHRcXHRza2ItXFx1MDAzZXByZXYgPSBwc2tiO1xcbitcXG4rXFx0cmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xcbiBcXG5AQCAtMzEzLDYgKzMyMSw3IEBAIGludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0fVxcbiBcXG4gXFx0eHNvLVxcdTAwM2VkZXYgPSBkZXY7XFxuK1xcdHhzby1cXHUwMDNlaWZpbmRleCA9IGRldi1cXHUwMDNlaWZpbmRleDtcXG4gXFx0bmV0ZGV2X3RyYWNrZXJfYWxsb2MoZGV2LCBcXHUwMDI2eHNvLVxcdTAwM2VkZXZfdHJhY2tlciwgR0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRpZiAoeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX2lwdGZzLmMgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcXG5pbmRleCBhZDgxMGQxZjk3YzA2Ny4uNTk3YWVkZWFjMjZlYmEgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9pcHRmcy5jXFxuQEAgLTQ4MCw2ICs0ODAsNyBAQCBzdGF0aWMgaW50IGlwdGZzX3NrYl9hZGRfZnJhZ3Moc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0fVxcbiBcXHRcXHRfX3NrYl9mcmFnX3JlZih0b2ZyYWcpO1xcbiBcXHRcXHRzaGluZm8tXFx1MDAzZW5yX2ZyYWdzKys7XFxuK1xcdFxcdHNoaW5mby1cXHUwMDNlZmxhZ3MgfD0gU0tCRkxfU0hBUkVEX0ZSQUc7XFxuIFxcbiBcXHRcXHQvKiBzZWUgaWYgd2UgYXJlIGRvbmUgKi9cXG4gXFx0XFx0ZnJhZ2xlbiA9IHRvZnJhZy1cXHUwMDNlbGVuO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuaW5kZXggNDU4OTMxMDYyYTA0ZWYuLmViMWI2ZjY3NzM5ZTFkIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcXG5AQCAtNTUsOCArNTUsMTAgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgICBrYS1cXHUwMDNlZW5jYXBfc3BvcnQsIHNvY2tfbmV0X3VpZChuZXQsIE5VTEwpKTtcXG4gXFxuIFxcdHJ0ID0gaXBfcm91dGVfb3V0cHV0X2tleShuZXQsIFxcdTAwMjZmbDQpO1xcbi1cXHRpZiAoSVNfRVJSKHJ0KSlcXG4rXFx0aWYgKElTX0VSUihydCkpIHtcXG4rXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHJ0KTtcXG4rXFx0fVxcbiBcXG4gXFx0c2tiX2RzdF9zZXQoc2tiLCBcXHUwMDI2cnQtXFx1MDAzZWRzdCk7XFxuIFxcbkBAIC0xMDEsNiArMTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRkc3QgPSBpcDZfZHN0X2xvb2t1cF9mbG93KG5ldCwgc2ssIFxcdTAwMjZmbDYsIE5VTEwpO1xcbiBcXHRpZiAoSVNfRVJSKGRzdCkpIHtcXG4gXFx0XFx0bG9jYWxfdW5sb2NrX25lc3RlZF9iaChcXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xcbitcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoZHN0KTtcXG4gXFx0fVxcbiBcXG5AQCAtMTE4LDcgKzEyMSw2IEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuIFxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaXB2NmhkcikpICtcXG4gXFx0XFx0XFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcXG4gXFx0Y29uc3QgdTggbmF0X2thX3BheWxvYWQgPSAweEZGO1xcbi1cXHRpbnQgZXJyID0gLUVBRk5PU1VQUE9SVDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gXFx0c3RydWN0IHVkcGhkciAqdWg7XFxuIFxcbkBAIC0xNDAsMTYgKzE0MiwxNyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3NlbmQoc3RydWN0IG5hdF9rZWVwYWxpdmUgKmthKVxcbiBcXG4gXFx0c3dpdGNoIChrYS1cXHUwMDNlZmFtaWx5KSB7XFxuIFxcdGNhc2UgQUZfSU5FVDpcXG4tXFx0XFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XFxuK1xcdFxcdG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY0KHNrYiwga2EpO1xcbiBcXHRcXHRicmVhaztcXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuIFxcdGNhc2UgQUZfSU5FVDY6XFxuLVxcdFxcdGVyciA9IG5hdF9rZWVwYWxpdmVfc2VuZF9pcHY2KHNrYiwga2EsIHVoKTtcXG4rXFx0XFx0bmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjYoc2tiLCBrYSwgdWgpO1xcbiBcXHRcXHRicmVhaztcXG4gI2VuZGlmXFxuLVxcdH1cXG4tXFx0aWYgKGVycilcXG4rXFx0ZGVmYXVsdDpcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9wb2xpY3kuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdGlmIChwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFxcdTAwM2MgZGJpdHMgfHxcXG4tXFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzYyBzYml0cylcXG4rXFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXFx1MDAzZT0gZGJpdHMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzZT0gc2JpdHMpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0YmluID0geGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19iaW4ocG9saWN5LCBkaXIpO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG5pbmRleCBjNThjZDAyNGUzYzY3NS4uMzZhNGY2NzkzZWRlZjIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuQEAgLTE1NDcsNiArMTU0Nyw3IEBAIHhmcm1fc3RhdGVfZmluZChjb25zdCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsIGNvbnN0IHhmcm1fYWRkcmVzc190ICpzYWRkcixcXG4gXFx0XFx0XFx0eHNvLVxcdTAwM2V0eXBlID0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQ7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZGlyID0geGRvLVxcdTAwM2VkaXI7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZGV2ID0gZGV2O1xcbitcXHRcXHRcXHR4c28tXFx1MDAzZWlmaW5kZXggPSBkZXYtXFx1MDAzZWlmaW5kZXg7XFxuIFxcdFxcdFxcdHhzby1cXHUwMDNlZmxhZ3MgPSBYRlJNX0RFVl9PRkZMT0FEX0ZMQUdfQUNRO1xcbiBcXHRcXHRcXHRuZXRkZXZfaG9sZChkZXYsIFxcdTAwMjZ4c28tXFx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcXG4gXFx0XFx0XFx0ZXJyb3IgPSBkZXYtXFx1MDAzZXhmcm1kZXZfb3BzLVxcdTAwM2V4ZG9fZGV2X3N0YXRlX2FkZChkZXYsIHgsXFxuQEAgLTIwNzEsOCArMjA3MiwxMSBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwKHN0cnVjdCB4ZnJtX3N0YXRlICpvcmlnLFxcbiBcXG4gXFx0eC1cXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVxcdTAwM2Vtb2RlX2NicztcXG4gXFx0aWYgKHgtXFx1MDAzZW1vZGVfY2JzIFxcdTAwMjZcXHUwMDI2IHgtXFx1MDAzZW1vZGVfY2JzLVxcdTAwM2VjbG9uZV9zdGF0ZSkge1xcbi1cXHRcXHRpZiAoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKVxcbitcXHRcXHRpZiAoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKSB7XFxuK1xcdFxcdFxcdGlmICgheC1cXHUwMDNlbW9kZV9kYXRhKVxcbitcXHRcXHRcXHRcXHR4LVxcdTAwM2Vtb2RlX2NicyA9IE5VTEw7XFxuIFxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0eC1cXHUwMDNlcHJvcHMucmVxaWQgPSBtLVxcdTAwM2VuZXdfcmVxaWQ7XFxuQEAgLTMwMTAsNyArMzAxNCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuIFxcdGlmIChzb2NrcHRyX2lzX251bGwob3B0dmFsKSBcXHUwMDI2XFx1MDAyNiAhb3B0bGVuKSB7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xcbiBcXHRcXHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XFxuLVxcdFxcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcXG4rXFx0XFx0c2tfZHN0X3Jlc2V0KHNrKTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuQEAgLTMwNTAsNyArMzA1NCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxuIFxcdGlmIChlcnIgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcXG4gXFx0XFx0eGZybV9wb2xfcHV0KHBvbCk7XFxuLVxcdFxcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcXG4rXFx0XFx0c2tfZHN0X3Jlc2V0KHNrKTtcXG4gXFx0XFx0ZXJyID0gMDtcXG4gXFx0fVxcbiBcXG5AQCAtMzI5MSw2ICszMjk1LDggQEAgaW50IF9feGZybV9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIFxcdFxcdGlmICh4LVxcdTAwM2Vtb2RlX2Nicy1cXHUwMDNlaW5pdF9zdGF0ZSlcXG4gXFx0XFx0XFx0ZXJyID0geC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZWluaXRfc3RhdGUoeCk7XFxuIFxcdFxcdG1vZHVsZV9wdXQoeC1cXHUwMDNlbW9kZV9jYnMtXFx1MDAzZW93bmVyKTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiAheC1cXHUwMDNlbW9kZV9kYXRhKVxcbitcXHRcXHRcXHR4LVxcdTAwM2Vtb2RlX2NicyA9IE5VTEw7XFxuIFxcdH1cXG4gZXJyb3I6XFxuIFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcXG5pbmRleCA2Mzg0Nzk1ZWU2YjI2OS4uZDZkYjYzMzA0YmE2YmQgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbkBAIC0xMjAxLDE3ICsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLVxcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxcbitcXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuIHtcXG4tXFx0eHVvLVxcdTAwM2VpZmluZGV4ID0geHNvLVxcdTAwM2VkZXYtXFx1MDAzZWlmaW5kZXg7XFxuK1xcdHh1by1cXHUwMDNlaWZpbmRleCA9IGlmaW5kZXg7XFxuIFxcdGlmICh4c28tXFx1MDAzZWRpciA9PSBYRlJNX0RFVl9PRkZMT0FEX0lOKVxcbiBcXHRcXHR4dW8tXFx1MDAzZWZsYWdzID0gWEZSTV9PRkZMT0FEX0lOQk9VTkQ7XFxuIFxcdGlmICh4c28tXFx1MDAzZXR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpXFxuIFxcdFxcdHh1by1cXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbisjaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbitzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuK1xcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG4re1xcbitcXHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCB4c28tXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCwgeHVvKTtcXG4rfVxcbisjZW5kaWZcXG4rXFxuK3N0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWRfaWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbitcXHRcXHRcXHRcXHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvO1xcbiBcXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xcbkBAIC0xMjIyLDExICsxMjMxLDIyIEBAIHN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFxuIFxcdHh1byA9IG5sYV9kYXRhKGF0dHIpO1xcbiBcXHRtZW1zZXQoeHVvLCAwLCBzaXplb2YoKnh1bykpO1xcbi1cXHR4c29fdG9feHVvKHhzbywgeHVvKTtcXG4rXFx0eHNvX3RvX3h1b19pZmluZGV4KHhzbywgaWZpbmRleCwgeHVvKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkKHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0cmV0dXJuIGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoeHNvLCB4c28tXFx1MDAzZWRldi1cXHUwMDNlaWZpbmRleCwgc2tiKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbitcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbit7XFxuK1xcdHJldHVybiBjb3B5X3VzZXJfb2ZmbG9hZF9pZmluZGV4KHhzbywgUkVBRF9PTkNFKHhzby1cXHUwMDNlaWZpbmRleCksIHNrYik7XFxuK31cXG4rXFxuIHN0YXRpYyBib29sIHhmcm1fcmVkYWN0KHZvaWQpXFxuIHtcXG4gXFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX1NFQ1VSSVRZKSBcXHUwMDI2XFx1MDAyNlxcbkBAIC0xNDMzLDggKzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0XFx0XFx0ICAgICAgXFx1MDAyNngtXFx1MDAzZXJlcGxheSk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gb3V0O1xcbi1cXHRpZih4LVxcdTAwM2V4c28uZGV2KVxcbi1cXHRcXHRyZXQgPSBjb3B5X3VzZXJfb2ZmbG9hZChcXHUwMDI2eC1cXHUwMDNleHNvLCBza2IpO1xcbitcXHRpZiAoUkVBRF9PTkNFKHgtXFx1MDAzZXhzby5kZXYpKVxcbitcXHRcXHRyZXQgPSBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChcXHUwMDI2eC1cXHUwMDNleHNvLCBza2IpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0aWYgKHgtXFx1MDAzZWlmX2lkKSB7XFxuQEAgLTIxMDQsMTMgKzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcXG4gXFx0XFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XFxuIFxcdFxcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcXG4gXFx0XFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcXG4rXFx0XFx0Y2FzZSBYRlJNX01PREVfSVBURlM6XFxuIFxcdFxcdFxcdGlmICh1dFtpXS5vcHRpb25hbCBcXHUwMDI2XFx1MDAyNiBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7XFxuIFxcdFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIk1vZGUgaW4gb3B0aW9uYWwgdGVtcGxhdGUgbm90IGFsbG93ZWQgaW4gb3V0Ym91bmQgcG9saWN5XFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFhGUk1fTU9ERV9JUFRGUzpcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGRlZmF1bHQ6XFxuIFxcdFxcdFxcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcXG4gXFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiTW9kZSBpbiB0ZW1wbGF0ZSBkb2Vzbid0IHN1cHBvcnQgYSBmYW1pbHkgY2hhbmdlXFxcIik7XFxuQEAgLTQwNDYsOCArNDA2NSw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbiBcXHRcXHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZigqeC1cXHUwMDNlY29hZGRyKSk7XFxuIFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5leHRyYV9mbGFncylcXG4gXFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2YoeC1cXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcXG4tXFx0aWYgKHgtXFx1MDAzZXhzby5kZXYpXFxuLVxcdFxcdCBsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcXG4rXFx0aWYgKFJFQURfT05DRSh4LVxcdTAwM2V4c28uZGV2KSlcXG4rXFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XFxuIFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cXHUwMDNlcHJvcHMuc21hcmsubSkge1xcbiBcXHRcXHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVxcdTAwM2Vwcm9wcy5zbWFyay52KSk7XFxuIFxcdFxcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXFx1MDAzZXByb3BzLnNtYXJrLm0pKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDA6NDAuNzU0MDU2NjE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI0ODI4NTcwNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0lQVEZTXCIsXG4gICAgXCJYRlJNX01JR1JBVEVcIixcbiAgICBcIklORVRfRVNQX09GRkxPQURcIixcbiAgICBcIklORVQ2X0VTUF9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gICAgXCJ4ZnJtNl9maWxsX2RzdFwiLFxuICAgIFwieGZybV9kZXZfc3RhdGVfYWRkXCIsXG4gICAgXCJpcHRmc19za2JfYWRkX2ZyYWdzXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3NlbmRcIixcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZpbmRcIixcbiAgICBcInhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwXCIsXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gICAgXCJfX3hmcm1faW5pdF9zdGF0ZVwiLFxuICAgIFwidmFsaWRhdGVfdG1wbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG11bHRpcGxlIGZ1bmN0aW9uYWwgYnVncyBpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgaW5jbHVkaW5nIG1lbW9yeSBsZWFrcyBpbiBOQVQga2VlcGFsaXZlIGFuZCBJUHY2IHBvbGljeSByb3V0aW5nLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgYXN5bmMgY3J5cHRvIHJldHVybnMgKC1FSU5QUk9HUkVTUykgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24sIGEgcHJlZml4IGxlbmd0aCBjaGVjayBidWcgaW4gaGFzaCByZWJ1aWxkaW5nLCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMgZHVyaW5nIHN0YXRlIGluaXRpYWxpemF0aW9uL2Nsb25pbmcsIGFuZCBkYXRhIHJhY2VzIGluIHVzZXIgb2ZmbG9hZCBzdGF0ZSBjb3B5aW5nLiBJdCBhbHNvIGFkZHMgcHJvcGVyIHZhbGlkYXRpb24gZm9yIElQVEZTIG1vZGUgYW5kIGZpeGVzIHNoYXJlZCBmcmFnbWVudCBoYW5kbGluZyBpbiBJUFRGUy4gVGhlc2UgYXJlIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MTcxMWJjZDJhNjZkZjY0ZGI0NTFlNTY5NDhkMDc3ODhjZWEwMDlmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMDQ6NDA6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94ZnJtLmggYi9pbmNsdWRlL25ldC94ZnJtLmhcbmluZGV4IDUxOWEwMTU2YTA1Y2FjLi5hNmQ2OWFhYTZjZDJkMCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3hmcm0uaFxuKysrIGIvaW5jbHVkZS9uZXQveGZybS5oXG5AQCAtMTYyLDYgKzE2Miw4IEBAIHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkIHtcbiBcdCAqL1xuIFx0c3RydWN0IG5ldF9kZXZpY2VcdCpyZWFsX2RldjtcbiBcdHVuc2lnbmVkIGxvbmdcdFx0b2ZmbG9hZF9oYW5kbGU7XG4rXHQvKiBTbmFwc2hvdCB0aGUgYXR0YWNoZWQgZGV2aWNlIGluZGV4IGZvciBkdW1wIHBhdGhzLiAqL1xuK1x0aW50XHRcdFx0aWZpbmRleDtcbiBcdHU4XHRcdFx0ZGlyIDogMjtcbiBcdHU4XHRcdFx0dHlwZSA6IDI7XG4gXHR1OFx0XHRcdGZsYWdzIDogMjtcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA0YjNkNWNmZGY2ZTAwZi4uNTkzM2M1ZGFiMDllZTEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuKyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcbiBcdFx0c2tiLVx1MDAzZXByZXYgPSBza2I7XG4gXG4gXHRcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XG4tXHRcdGlmICghc2tiKVxuK1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbitcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcbitcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbitcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuIFxuIFx0XHRIQVJEX1RYX0xPQ0soZGV2LCB0eHEsIGNwdSk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMgYi9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY1xuaW5kZXggMTI1ZWE5YTViOGEwODIuLjNiNzQ5NDc1ZjZlZDY1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmNcbisrKyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jXG5AQCAtODgsNiArODgsNyBAQCBzdGF0aWMgaW50IHhmcm02X2ZpbGxfZHN0KHN0cnVjdCB4ZnJtX2RzdCAqeGRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHhkc3QtXHUwMDNldS5ydDYucnQ2aV9pZGV2ID0gaW42X2Rldl9nZXQoZGV2KTtcbiBcdGlmICgheGRzdC1cdTAwM2V1LnJ0Ni5ydDZpX2lkZXYpIHtcbiBcdFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnhkc3QtXHUwMDNldS5kc3QuZGV2X3RyYWNrZXIpO1xuK1x0XHR4ZHN0LVx1MDAzZXUuZHN0LmRldiA9IE5VTEw7XG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uZjE1M2JmNjk1YjlkZDEgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5AQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXG4gXHRcdGVyciA9IHgtXHUwMDNldHlwZV9vZmZsb2FkLVx1MDAzZXhtaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpO1xuIFx0XHRpZiAoZXJyKSB7XG4gXHRcdFx0aWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpXG4tXHRcdFx0XHRyZXR1cm4gTlVMTDtcbitcdFx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gXG4gXHRcdFx0WEZSTV9JTkNfU1RBVFMoeHNfbmV0KHgpLCBMSU5VWF9NSUJfWEZSTU9VVFNUQVRFUFJPVE9FUlJPUik7XG4gXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG5AQCAtMjI0LDcgKzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRwc2tiID0gc2tiMjtcbiBcdH1cbiBcbi1cdHJldHVybiBza2I7XG4rXHQvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLVx1MDAzZXByZXYgdG8gdGhlIGxhc3Qgc2VnbWVudCwgYnV0IGFzeW5jXG4rXHQgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLVx1MDAzZXByZXYuICBSZXBvaW50XG4rXHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXG4rXHQgKiBub3QgY2hhaW4gb250byBhIHNlZ21lbnQgbm93IG93bmVkIGJ5IHRoZSBjcnlwdG8gZW5naW5lLlxuK1x0ICovXG4rXHRpZiAoc2tiKVxuK1x0XHRza2ItXHUwMDNlcHJldiA9IHBza2I7XG4rXG4rXHRyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xuIFxuQEAgLTMxMyw2ICszMjEsNyBAQCBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHR9XG4gXG4gXHR4c28tXHUwMDNlZGV2ID0gZGV2O1xuK1x0eHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleDtcbiBcdG5ldGRldl90cmFja2VyX2FsbG9jKGRldiwgXHUwMDI2eHNvLVx1MDAzZWRldl90cmFja2VyLCBHRlBfQVRPTUlDKTtcbiBcbiBcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKVxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1faXB0ZnMuYyBiL25ldC94ZnJtL3hmcm1faXB0ZnMuY1xuaW5kZXggYWQ4MTBkMWY5N2MwNjcuLjU5N2FlZGVhYzI2ZWJhIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9pcHRmcy5jXG4rKysgYi9uZXQveGZybS94ZnJtX2lwdGZzLmNcbkBAIC00ODAsNiArNDgwLDcgQEAgc3RhdGljIGludCBpcHRmc19za2JfYWRkX2ZyYWdzKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdH1cbiBcdFx0X19za2JfZnJhZ19yZWYodG9mcmFnKTtcbiBcdFx0c2hpbmZvLVx1MDAzZW5yX2ZyYWdzKys7XG4rXHRcdHNoaW5mby1cdTAwM2VmbGFncyB8PSBTS0JGTF9TSEFSRURfRlJBRztcbiBcbiBcdFx0Lyogc2VlIGlmIHdlIGFyZSBkb25lICovXG4gXHRcdGZyYWdsZW4gPSB0b2ZyYWctXHUwMDNlbGVuO1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jIGIvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbmluZGV4IDQ1ODkzMTA2MmEwNGVmLi5lYjFiNmY2NzczOWUxZCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTU1LDggKzU1LDEwIEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICBrYS1cdTAwM2VlbmNhcF9zcG9ydCwgc29ja19uZXRfdWlkKG5ldCwgTlVMTCkpO1xuIFxuIFx0cnQgPSBpcF9yb3V0ZV9vdXRwdXRfa2V5KG5ldCwgXHUwMDI2Zmw0KTtcbi1cdGlmIChJU19FUlIocnQpKVxuK1x0aWYgKElTX0VSUihydCkpIHtcbitcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiBQVFJfRVJSKHJ0KTtcbitcdH1cbiBcbiBcdHNrYl9kc3Rfc2V0KHNrYiwgXHUwMDI2cnQtXHUwMDNlZHN0KTtcbiBcbkBAIC0xMDEsNiArMTAzLDcgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0ZHN0ID0gaXA2X2RzdF9sb29rdXBfZmxvdyhuZXQsIHNrLCBcdTAwMjZmbDYsIE5VTEwpO1xuIFx0aWYgKElTX0VSUihkc3QpKSB7XG4gXHRcdGxvY2FsX3VubG9ja19uZXN0ZWRfYmgoXHUwMDI2bmF0X2tlZXBhbGl2ZV9za19pcHY2LmJoX2xvY2spO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIoZHN0KTtcbiBcdH1cbiBcbkBAIC0xMTgsNyArMTIxLDYgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcbiBcdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSkgK1xuIFx0XHRcdFx0ICAgIHNpemVvZihzdHJ1Y3QgdWRwaGRyKTtcbiBcdGNvbnN0IHU4IG5hdF9rYV9wYXlsb2FkID0gMHhGRjtcbi1cdGludCBlcnIgPSAtRUFGTk9TVVBQT1JUO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuQEAgLTE0MCwxNiArMTQyLDE3IEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXG4gXHRzd2l0Y2ggKGthLVx1MDAzZWZhbWlseSkge1xuIFx0Y2FzZSBBRl9JTkVUOlxuLVx0XHRlcnIgPSBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NChza2IsIGthKTtcbitcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjQoc2tiLCBrYSk7XG4gXHRcdGJyZWFrO1xuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuIFx0Y2FzZSBBRl9JTkVUNjpcbi1cdFx0ZXJyID0gbmF0X2tlZXBhbGl2ZV9zZW5kX2lwdjYoc2tiLCBrYSwgdWgpO1xuK1x0XHRuYXRfa2VlcGFsaXZlX3NlbmRfaXB2Nihza2IsIGthLCB1aCk7XG4gXHRcdGJyZWFrO1xuICNlbmRpZlxuLVx0fVxuLVx0aWYgKGVycilcbitcdGRlZmF1bHQ6XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRicmVhaztcbitcdH1cbiB9XG4gXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzYyBkYml0cyB8fFxuLVx0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0cylcbitcdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4zNmE0ZjY3OTNlZGVmMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMTU0Nyw2ICsxNTQ3LDcgQEAgeGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxuIFx0XHRcdHhzby1cdTAwM2V0eXBlID0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQ7XG4gXHRcdFx0eHNvLVx1MDAzZWRpciA9IHhkby1cdTAwM2VkaXI7XG4gXHRcdFx0eHNvLVx1MDAzZWRldiA9IGRldjtcbitcdFx0XHR4c28tXHUwMDNlaWZpbmRleCA9IGRldi1cdTAwM2VpZmluZGV4O1xuIFx0XHRcdHhzby1cdTAwM2VmbGFncyA9IFhGUk1fREVWX09GRkxPQURfRkxBR19BQ1E7XG4gXHRcdFx0bmV0ZGV2X2hvbGQoZGV2LCBcdTAwMjZ4c28tXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9BVE9NSUMpO1xuIFx0XHRcdGVycm9yID0gZGV2LVx1MDAzZXhmcm1kZXZfb3BzLVx1MDAzZXhkb19kZXZfc3RhdGVfYWRkKGRldiwgeCxcbkBAIC0yMDcxLDggKzIwNzIsMTEgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cChzdHJ1Y3QgeGZybV9zdGF0ZSAqb3JpZyxcbiBcbiBcdHgtXHUwMDNlbW9kZV9jYnMgPSBvcmlnLVx1MDAzZW1vZGVfY2JzO1xuIFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMgXHUwMDI2XHUwMDI2IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUpIHtcbi1cdFx0aWYgKHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlY2xvbmVfc3RhdGUoeCwgb3JpZykpXG4rXHRcdGlmICh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZWNsb25lX3N0YXRlKHgsIG9yaWcpKSB7XG4rXHRcdFx0aWYgKCF4LVx1MDAzZW1vZGVfZGF0YSlcbitcdFx0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0XHRcdGdvdG8gZXJyb3I7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHgtXHUwMDNlcHJvcHMucmVxaWQgPSBtLVx1MDAzZW5ld19yZXFpZDtcbkBAIC0zMDEwLDcgKzMwMTQsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuIFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFx1MDAyNlx1MDAyNiAhb3B0bGVuKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICszMDU0LDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiBcdGlmIChlcnIgXHUwMDNlPSAwKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xuIFx0XHR4ZnJtX3BvbF9wdXQocG9sKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuK1x0XHRza19kc3RfcmVzZXQoc2spO1xuIFx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuQEAgLTMyOTEsNiArMzI5NSw4IEBAIGludCBfX3hmcm1faW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIFx0XHRpZiAoeC1cdTAwM2Vtb2RlX2Nicy1cdTAwM2Vpbml0X3N0YXRlKVxuIFx0XHRcdGVyciA9IHgtXHUwMDNlbW9kZV9jYnMtXHUwMDNlaW5pdF9zdGF0ZSh4KTtcbiBcdFx0bW9kdWxlX3B1dCh4LVx1MDAzZW1vZGVfY2JzLVx1MDAzZW93bmVyKTtcbitcdFx0aWYgKGVyciBcdTAwMjZcdTAwMjYgIXgtXHUwMDNlbW9kZV9kYXRhKVxuK1x0XHRcdHgtXHUwMDNlbW9kZV9jYnMgPSBOVUxMO1xuIFx0fVxuIGVycm9yOlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCA2Mzg0Nzk1ZWU2YjI2OS4uZDZkYjYzMzA0YmE2YmQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3VzZXIuY1xuKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbkBAIC0xMjAxLDE3ICsxMjAxLDI2IEBAIHN0YXRpYyBpbnQgY29weV9zZWNfY3R4KHN0cnVjdCB4ZnJtX3NlY19jdHggKnMsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuLVx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxuK1x0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcbiB7XG4tXHR4dW8tXHUwMDNlaWZpbmRleCA9IHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleDtcbitcdHh1by1cdTAwM2VpZmluZGV4ID0gaWZpbmRleDtcbiBcdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG4gXHRcdHh1by1cdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xuIFx0aWYgKHhzby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKVxuIFx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbiB9XG4gXG4tc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuKyNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXG4rc3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuK1x0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXG4re1xuK1x0eHNvX3RvX3h1b19pZmluZGV4KHhzbywgeHNvLVx1MDAzZWRldi1cdTAwM2VpZmluZGV4LCB4dW8pO1xuK31cbisjZW5kaWZcbitcbitzdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcbitcdFx0XHRcdCAgICAgaW50IGlmaW5kZXgsIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XG4gXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xuQEAgLTEyMjIsMTEgKzEyMzEsMjIgQEAgc3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZChzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFxuIFx0eHVvID0gbmxhX2RhdGEoYXR0cik7XG4gXHRtZW1zZXQoeHVvLCAwLCBzaXplb2YoKnh1bykpO1xuLVx0eHNvX3RvX3h1byh4c28sIHh1byk7XG4rXHR4c29fdG9feHVvX2lmaW5kZXgoeHNvLCBpZmluZGV4LCB4dW8pO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIHhzby1cdTAwM2VkZXYtXHUwMDNlaWZpbmRleCwgc2tiKTtcbit9XG4rXG4rc3RhdGljIGludCBjb3B5X3VzZXJfc3RhdGVfb2ZmbG9hZChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxuK1x0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbit7XG4rXHRyZXR1cm4gY29weV91c2VyX29mZmxvYWRfaWZpbmRleCh4c28sIFJFQURfT05DRSh4c28tXHUwMDNlaWZpbmRleCksIHNrYik7XG4rfVxuK1xuIHN0YXRpYyBib29sIHhmcm1fcmVkYWN0KHZvaWQpXG4ge1xuIFx0cmV0dXJuIElTX0VOQUJMRUQoQ09ORklHX1NFQ1VSSVRZKSBcdTAwMjZcdTAwMjZcbkBAIC0xNDMzLDggKzE0NTMsOCBAQCBzdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9zdGF0ZV9leHRyYShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdFx0XHQgICAgICBcdTAwMjZ4LVx1MDAzZXJlcGxheSk7XG4gXHRpZiAocmV0KVxuIFx0XHRnb3RvIG91dDtcbi1cdGlmKHgtXHUwMDNleHNvLmRldilcbi1cdFx0cmV0ID0gY29weV91c2VyX29mZmxvYWQoXHUwMDI2eC1cdTAwM2V4c28sIHNrYik7XG4rXHRpZiAoUkVBRF9PTkNFKHgtXHUwMDNleHNvLmRldikpXG4rXHRcdHJldCA9IGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkKFx1MDAyNngtXHUwMDNleHNvLCBza2IpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBvdXQ7XG4gXHRpZiAoeC1cdTAwM2VpZl9pZCkge1xuQEAgLTIxMDQsMTMgKzIxMjQsMTIgQEAgc3RhdGljIGludCB2YWxpZGF0ZV90bXBsKGludCBuciwgc3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCwgdTE2IGZhbWlseSxcbiBcdFx0c3dpdGNoICh1dFtpXS5tb2RlKSB7XG4gXHRcdGNhc2UgWEZSTV9NT0RFX1RVTk5FTDpcbiBcdFx0Y2FzZSBYRlJNX01PREVfQkVFVDpcbitcdFx0Y2FzZSBYRlJNX01PREVfSVBURlM6XG4gXHRcdFx0aWYgKHV0W2ldLm9wdGlvbmFsIFx1MDAyNlx1MDAyNiBkaXIgPT0gWEZSTV9QT0xJQ1lfT1VUKSB7XG4gXHRcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiTW9kZSBpbiBvcHRpb25hbCB0ZW1wbGF0ZSBub3QgYWxsb3dlZCBpbiBvdXRib3VuZCBwb2xpY3lcIik7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgWEZSTV9NT0RFX0lQVEZTOlxuLVx0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdGlmICh1dFtpXS5mYW1pbHkgIT0gcHJldl9mYW1pbHkpIHtcbiBcdFx0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCJNb2RlIGluIHRlbXBsYXRlIGRvZXNuJ3Qgc3VwcG9ydCBhIGZhbWlseSBjaGFuZ2VcIik7XG5AQCAtNDA0Niw4ICs0MDY1LDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgeGZybV9zYV9sZW4oc3RydWN0IHhmcm1fc3RhdGUgKngpXG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKCp4LVx1MDAzZWNvYWRkcikpO1xuIFx0aWYgKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpXG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuZXh0cmFfZmxhZ3MpKTtcbi1cdGlmICh4LVx1MDAzZXhzby5kZXYpXG4tXHRcdCBsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKTtcbitcdGlmIChSRUFEX09OQ0UoeC1cdTAwM2V4c28uZGV2KSlcbitcdFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XG4gXHRpZiAoeC1cdTAwM2Vwcm9wcy5zbWFyay52IHwgeC1cdTAwM2Vwcm9wcy5zbWFyay5tKSB7XG4gXHRcdGwgKz0gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHgtXHUwMDNlcHJvcHMuc21hcmsudikpO1xuIFx0XHRsICs9IG5sYV90b3RhbF9zaXplKHNpemVvZih4LVx1MDAzZXByb3BzLnNtYXJrLm0pKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjQwLjc1NDA1OTU5N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDU2NzE0OTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhbmQgUmVmaW5pbmcgdGhlIFhGUk0gKElQc2VjKSBTdWJzeXN0ZW0gUGF0Y2ggU2VyaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgdGFyZ2V0aW5nIHRoZSBYRlJNIHN1YnN5c3RlbSwgYW5kIGltbWVkaWF0ZWx5IEknbSBub3RpY2luZyBhIGdvb2QgbWl4IG9mIGZ1bmN0aW9uYWwgY2hhbmdlcyBhbmQgaW1wb3J0YW50IGZpeGVzLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSdkIGV4cGVjdCB3aGVuIGRlYWxpbmcgd2l0aCBhIGNvcmUgbmV0d29yayBzZWN1cml0eSBjb21wb25lbnQuXG5cbkZpcnN0LCB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN0cnVjdCBnZXRzIGEgbmV3IGBpZmluZGV4YCBmaWVsZCBpbiBgaW5jbHVkZS9uZXQveGZybS5oYC4gVGhpcyBsaWtlbHkgYWltcyB0byBpbXByb3ZlIGludGVyZmFjZSBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhlIG9mZmxvYWQgcGF0aC4gTWFrZXMgc2Vuc2U7IGlmIHdlJ3JlIG9mZmxvYWRpbmcsIHdlIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgdHJhZmZpYyBvcmlnaW5hdGVzIG9yIGlzIGRlc3RpbmVkLlxuXG5EaXZpbmcgaW50byBgbmV0L2NvcmUvZGV2LmNgLCBJIHNlZSBlcnJvciBoYW5kbGluZyBmb3IgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBgdmFsaWRhdGVfeG1pdF9za2JgLiBUaGlzIGlzIGdvb2Q7IGl0IHNob3dzIGEgdGhvdWdodGZ1bCBhcHByb2FjaCB0byBkZWFsaW5nIHdpdGggYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMuIEknbSBnbGFkIHRvIHNlZSB0aGF0IGhhbmRsZWQgaW4gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJlY2F1c2UgdGhvc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucy5cblxuSW4gYG5ldC9pcHY2L3hmcm02X3BvbGljeS5jYCwgc2V0dGluZyBgeGRzdC1cdTAwM2V1LmRzdC5kZXYgPSBOVUxMYCBpbiBgeGZybTZfZmlsbF9kc3RgIG1pZ2h0IHNlZW0gbWlub3IsIGJ1dCBpdCdzIHByb2JhYmx5IGEgY3J1Y2lhbCBlZGdlIGNhc2UgY2xlYW51cCB0byBwcmV2ZW50IGFueSBwb3RlbnRpYWwgbWlzdXNlIG9mIGRhbmdsaW5nIHBvaW50ZXJzLiBBIHN1YnRsZSwgYnV0IHZpdGFsLCBjb3JyZWN0aW9uLlxuXG5gbmV0L3hmcm0veGZybV9kZXZpY2UuY2AgaGFzIGEgZmV3IGludGVyZXN0aW5nIGNoYW5nZXMuIFJldHVybmluZyBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBmcm9tIGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGRldi5jYCwgc28gSSdtIGhhcHB5IHRvIHNlZSB0aGF0IGNvbnNpc3RlbmN5LiBUaGUgZml4IGZvciBgc2tiLVx1MDAzZXByZXZgIHdoZW4gYXN5bmMgY3J5cHRvIHN0ZWFscyB0aGUgU0tCIGlzIGltcG9ydGFudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBsb2dpYyBiZXR0ZXIgLSBhc3luYyBjcnlwdG8gaW50ZXJhY3Rpb25zIGNhbiBiZSB0cmlja3ksIHNvIGl0J3MgZ29vZCB0byBzZWUgdGhpcyBhZGRyZXNzZWQgZGlyZWN0bHkuIFRoZSBgeHNvLVx1MDAzZWlmaW5kZXggPSBkZXYtXHUwMDNlaWZpbmRleGAgYXNzaWdubWVudCBpbiBgeGZybV9kZXZfc3RhdGVfYWRkYCBhbmQgYHhmcm1fc3RhdGVfZmluZGAgYXJlIGFsc28gY3JpdGljYWwgdXBkYXRlcyB0byBsaW5rIGludGVyZmFjZSBpbmRleCB0byBzdGF0ZSBpbmZvcm1hdGlvbi5cblxuYG5ldC94ZnJtL3hmcm1faXB0ZnMuY2AgYWRkcyBgc2hpbmZvLVx1MDAzZWZsYWdzIHw9IFNLQkZMX1NIQVJFRF9GUkFHYCBpbiBgaXB0ZnNfc2tiX2FkZF9mcmFnc2AuIFRoaXMgbG9va3MgbGlrZSBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSByZXF1aXJlbWVudCwgdG8gY29ycmVjdGx5IGhhbmRsZSBzaGFyZWQgZnJhZ21lbnRzIHdpdGhpbiBJUFRGUy4gQW5vdGhlciBnb29kLCBmb2N1c2VkIGNoYW5nZS5cblxuSW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgdGhlIG1lbW9yeSBsZWFrIGZpeGVzIGluIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NGAsIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGFuZCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBieSBjYWxsaW5nIGBrZnJlZV9za2Ioc2tiKWAgb24gZXJyb3IgcGF0aHMgYXJlICplc3NlbnRpYWwqLiBNZW1vcnkgbGVha3MgYXJlIHVuYWNjZXB0YWJsZSwgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29tcG9uZW50LCBzbyBrdWRvcyB0byB0aGF0LlxuXG5UaGUgY2hhbmdlIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCB3aXRoIHRoZSBwcmVmaXhsZW4gY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCAoIGBcdTAwM2NgIHRvIGBcdTAwM2U9YCkgaXMgYSBjbGFzc2ljIGxvZ2ljIGJ1Zy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBlcnJvcnMgdGhhdCBjYW4gY2F1c2UgYWxsIHNvcnRzIG9mIG9ic2N1cmUgbmV0d29yayBtaXNiZWhhdmlvciwgc28gaXQncyBhIGdvb2Qgc3BvdCB0byBoYXZlIGNhdWdodCB0aGF0LlxuXG5gbmV0L3hmcm0veGZybV9zdGF0ZS5jYCBhbHNvIGFkZHJlc3NlcyBpbnRlcmZhY2UgaW5kZXhlcyBhbmQgZXJyb3IgaGFuZGxpbmc6IHNldHRpbmcgYHhzby1cdTAwM2VpZmluZGV4ID0gZGV2LVx1MDAzZWlmaW5kZXhgIGluIGB4ZnJtX3N0YXRlX2ZpbmRgIGFuZCBzZXR0aW5nIGB4LVx1MDAzZW1vZGVfY2JzID0gTlVMTGAgb24gZXJyb3IgaW4gYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCBhbmQgYF9feGZybV9pbml0X3N0YXRlYC4gU2V0dGluZyBgeC1cdTAwM2Vtb2RlX2NicyA9IE5VTExgIG9uIGVycm9yIGhlbHBzIHdpdGggdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdXNpbmcgYHNrX2RzdF9yZXNldChzaylgIGluc3RlYWQgb2YgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgIGlzIGxpa2VseSBhIGNoYW5nZSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBwb3RlbnRpYWxseSBpbiByZXNwb25zZSB0byBzb21lIGxvY2tpbmcgY2hhbmdlcy5cblxuRmluYWxseSwgYG5ldC94ZnJtL3hmcm1fdXNlci5jYCB1c2VzIGBSRUFEX09OQ0UoeHNvLVx1MDAzZWlmaW5kZXgpYCBhbmQgYFJFQURfT05DRSh4LVx1MDAzZXhzby5kZXYpYCB0byBlbGltaW5hdGUgZGF0YSByYWNlcy4gVGhpcyBpcyBhIHZlcnkgd2VsY29tZSBpbXByb3ZlbWVudCBpbiBlbnN1cmluZyBzYWZlIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHNoYXJlZCBkYXRhLiBNb3ZpbmcgYFhGUk1fTU9ERV9JUFRGU2AgaW4gYHZhbGlkYXRlX3RtcGxgIG1ha2VzIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUgYnkgZ3JvdXBpbmcgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5CZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZC4gSSBrbm93IGBDT05GSUdfWEZSTWAgZW5hYmxlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBgQ09ORklHX1hGUk1fSVBURlNgIGVuYWJsZXMgYFhGUk1fSVBURlNgLCBhbmQgYENPTkZJR19YRlJNX1VTRVJgIGVuYWJsZXMgYFhGUk1fVVNFUmAuIEknbGwgY29uZmlybSBob3cgYFhGUk1fTkFUYCBpcyBlbmFibGVkLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcgaW4gYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU3NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjUyLjIxMDc3OTM2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDU3MzM0MTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fbmF0X2tlZXBhbGl2ZS5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZS0xNi1cXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5uZXQveGZybS9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfWEZSTV9TVEFUSVNUSUNTKSArPSB4ZnJtX3Byb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MDo1NS4yNjgxMTg5OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM5MjEwOTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIFhGUk0gTW9kdWxlcyoqXG5cblJpZ2h0LCBzbyBgeGZybV9uYXRfa2VlcGFsaXZlLm9gIGlzIGRlZmluaXRlbHkgYnVpbHQgYW5kIGluY2x1ZGVkIHdoZW4gdGhlIGBDT05GSUdfWEZSTWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZW5hYmxlZC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMuLi4gd2hhdCBhYm91dCBgeGZybV9pcHRmcy5vYD8gSSBuZWVkIHRvIHF1aWNrbHkgcmVjYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmRpdGlvbnMgZm9yIHRoYXQgcGFydGljdWxhciBtb2R1bGUuIElzIGl0IGFsc28gdGllZCBkaXJlY3RseSB0byBgQ09ORklHX1hGUk1gPyBPciBkb2VzIGl0IGRlcGVuZCBvbiBmdXJ0aGVyLCBtb3JlIHNwZWNpZmljIHN1Yi1vcHRpb25zIHdpdGhpbiB0aGUgWEZSTSBmcmFtZXdvcmssIHBlcmhhcHMgcmVsYXRlZCB0byBJUHNlYyB0cmFuc3BvcnQgc2VjdXJpdHkgb3IgZmlyZXdhbGwgaW50ZWdyYXRpb24/IFVuZGVyc3RhbmRpbmcgdGhhdCByZWxhdGlvbnNoaXAgd2lsbCBiZSBrZXkgZm9yIGtub3dpbmcgd2hlbiBhbmQgd2hlcmUgdG8gZXhwZWN0IGl0cyBwcmVzZW5jZSBpbiBhIGtlcm5lbCBidWlsZC4gTGV0J3Mgc2VlLi4uIEkgYmV0IEkgY2FuIGZpbmQgdGhlIGFuc3dlciBxdWlja2x5IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBYRlJNIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ1NCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQwOjU4LjUwNzMzMjc5M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg5MzgwOTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1faXB0ZnMub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfWEZSTV9JTlRFUkZBQ0UpICs9IHhmcm1faW50ZXJmYWNlLm9cXG5uZXQveGZybS9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfWEZSTV9JUFRGUykgKz0geGZybV9pcHRmcy5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX1hGUk1fRVNQSU5UQ1ApICs9IGVzcGludGNwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDEuMzk2NzE5MzQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAyNDA0Nzg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqWEZSTSBJUFRGUyBEZXBlbmRlbmN5IENvbmZpcm1hdGlvbioqXG5cbkFscmlnaHQsIHRoZSBuZWVkIGZvciBgQ09ORklHX1hGUk1fSVBURlNgIGlzIGRlZmluaXRlbHkgY29taW5nIGludG8gZm9jdXMuIE5vdyBJIG5lZWQgdG8gY29uZmlybSBpdHMgcHJlc2VuY2UgYW5kIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGB4ZnJtYCBhcmNoaXRlY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UsIHNwZWNpZmljYWxseSBgbmV0L3hmcm0veGZybV9kZXZpY2UuY2AuIFRoaXMgZmlsZSBvZnRlbiBob2xkcyB0aGUga2V5IGRlcGVuZGVuY2llcyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgcmVsYXRlZCB0byBYRlJNIGRldmljZXMsIGFuZCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGxhaWQgb3V0IHRoZXJlLiBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZGlyZWN0aXZlcyB3aXRoaW4gYHhmcm1fZGV2aWNlLmNgIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfWEZSTV9JUFRGU2AgaXMgaW5kZWVkIGEgaGFyZCByZXF1aXJlbWVudCwgb3IgYXQgbGVhc3QgYSBoaWdobHkgcmVjb21tZW5kZWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRvIGVuc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIGNvcnJlY3RseSBhbmQgdGhlIG1vZHVsZSB3aWxsIGZ1bmN0aW9uIGFzIGludGVuZGVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGlyZWN0IGRlcGVuZGVuY2llcyBvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBwYXRocyB0aGF0IG1ha2UgdGhpcyBjb25uZWN0aW9uIGNsZWFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODEzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDUuNDIwNzY5NzM5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODU4OTAyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kZXZpY2Uub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcXHRcXHQgICAgICB4ZnJtX3N5c2N0bC5vIHhmcm1fcmVwbGF5Lm8geGZybV9kZXZpY2UubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTctXFx0XFx0ICAgICAgeGZybV9uYXRfa2VlcGFsaXZlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MDguMDA2NjY1NDMzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA2NTc1ODA1NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBYRlJNIEtlcm5lbCBDb2RlKipcblxuUmlnaHQsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBidWlsdCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCBuYXJyb3dzIHRoaW5ncyBkb3duIGNvbnNpZGVyYWJseS4gR2l2ZW4gdGhhdCwgbXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBmaW5kIHRoZSByZWxldmFudCBjb2RlIHdvdWxkIGJlIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBMZXQncyBzdGFydCB0aGVyZTsgdGhhdCdzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIGJldHdlZW4gdXNlci1zcGFjZSBjb25maWd1cmF0aW9uIGFuZCB0aGUga2VybmVsJ3MgWEZSTSBzdWJzeXN0ZW0uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdXNlci1zcGFjZSBjb21wb25lbnRzIGFyZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBrZXJuZWwtc2lkZSBzdHJ1Y3R1cmVzLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjE1LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MTguNjY0MjQ4NjMzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjA3NjAwNjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fdXNlci5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtL3hmcm1fbWlncmF0ZV9zdGF0ZS5yc3Q9NjU9aW5oZXJpdHMgdGhlIHZhbHVlIGZyb20gdGhlIGV4aXN0aW5nIFNBIChvbWl0LXRvLWluaGVyaXQpLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04MC0gICAqIC0gYGBYRlJNQV9PRkZMT0FEX0RFVmBgXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdDo4MTogICAgIC0gSGFyZHdhcmUgb2ZmbG9hZCBjb25maWd1cmF0aW9uIChgYHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZGBgKS4gQWJzZW50XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC04Mi0gICAgICAgY29waWVzIG9mZmxvYWQgZnJvbSB0aGUgZXhpc3RpbmcgU0EuIFdoZW5cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD02ODI9c3RydWN0IHhmcm1fbWlncmF0ZSB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtNjg3LVxcdHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDo2ODg6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XFxuaW5jbHVkZS9uZXQveGZybS5oLTY4OS1cXHRzdHJ1Y3QgeGZybV9tYXJrICAgICAgICBvbGRfbWFyaztcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTMwPWludCB4ZnJtX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fc2VsZWN0b3IgKnNlbCwgdTggZGlyLCB1OCB0eXBlLFxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTE5MzQtXFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTkzNTpcXHRcXHQgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pO1xcbmluY2x1ZGUvbmV0L3hmcm0uaC0xOTM2LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxMjQ9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTI1OlxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyNi1cXHRcXHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuaW5jbHVkZS9uZXQveGZybS5oOjIxMjg6XFx0XFx0XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sIHU4IGRpcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxOTY9c3RhdGljIGlubGluZSBpbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuaW5jbHVkZS9uZXQveGZybS5oOjIxOTc6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1byxcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE5OC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0yMjExPXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMjEyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLCB1OCBkaXIsXFxuaW5jbHVkZS9uZXQveGZybS5oLTIyMTMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD0yNzI9ZW51bSB4ZnJtX2FlX2Z0eXBlX3Qge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0yODUtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDoyODY6c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTI4Ny1cXHRfX3U4XFx0XFx0dHlwZTtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg9MjkzPWVudW0geGZybV9hdHRyX3R5cGVfdCB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMC1cXHRYRlJNQV9TQSxcXHRcXHQvKiBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjMwMTpcXHRYRlJNQV9QT0xJQ1ksXFx0XFx0LypzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMwMi1cXHRYRlJNQV9TRUNfQ1RYLFxcdFxcdC8qIHN0cnVjdCB4ZnJtX3NlY19jdHggKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzA5LVxcdFhGUk1BX0xBU1RVU0VELFxcdFxcdC8qIF9fdTY0ICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDozMTA6XFx0WEZSTUFfUE9MSUNZX1RZUEUsXFx0Lyogc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC0zMTEtXFx0WEZSTUFfTUlHUkFURSxcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtMzIxLVxcdFhGUk1BX1BBRCxcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjMyMjpcXHRYRlJNQV9PRkZMT0FEX0RFVixcXHQvKiBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTMyMy1cXHRYRlJNQV9TRVRfTUFSSyxcXHRcXHQvKiBfX3UzMiAqL1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD00MzE9c3RydWN0IHhmcm1fdXNlcnNwaV9pbmZvIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDM2LVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NDM3OnN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00MzgtXFx0c3RydWN0IHhmcm1fc2VsZWN0b3JcXHRcXHRzZWw7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1NC1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjQ1NTpzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ1Ni1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvclxcdFxcdHNlbDtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg9NDYxPXN0cnVjdCB4ZnJtX3VzZXJfYWNxdWlyZSB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTQ2NC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvclxcdFxcdHNlbDtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjQ2NTpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm9cXHRwb2xpY3k7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC00NjYtXFx0X191MzJcXHRcXHRcXHRcXHRhYWxnb3M7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTQ3Nz1zdHJ1Y3QgeGZybV91c2VyX3BvbGV4cGlyZSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo0Nzg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXFx0cG9sO1xcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmgtNDc5LVxcdF9fdThcXHRcXHRcXHRcXHRoYXJkO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaD01NDQ9c3RydWN0IHhmcm1fYWRkcmVzc19maWx0ZXIge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NTEtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NTI6c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkIHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU1My1cXHRpbnRcXHRcXHRcXHRcXHRpZmluZGV4O1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzAtXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzE6c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0IHtcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU3Mi0jZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9VTlNQRUNcXHQwXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGUtMjEtb2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTk9c3RydWN0IGNvbXBhdF94ZnJtX2xpZmV0aW1lX2N1ciB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTIyLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjM6c3RydWN0IGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyB7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYy0yNC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvciBzZWw7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTQ1PXN0cnVjdCBjb21wYXRfeGZybV91c2VyX2FjcXVpcmUge1xcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy00OC1cXHRzdHJ1Y3QgeGZybV9zZWxlY3RvciBzZWw7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo0OTpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbGljeTtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTUwLVxcdC8qIDQgYnl0ZXMgYWRkaXRpb25hbCBwYWRkaW5nIG9uIDY0Yml0ICovXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY2PXN0cnVjdCBjb21wYXRfeGZybV91c2VyX3BvbGV4cGlyZSB7XFxubmV0L3hmcm0veGZybV9jb21wYXQuYzo2NzpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvIHBvbDtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY4LVxcdC8qIDggYnl0ZXMgYWRkaXRpb25hbCBwYWRkaW5nIG9uIDY0Yml0ICovXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTc0PXN0YXRpYyBjb25zdCBpbnQgY29tcGF0X21zZ19taW5bWEZSTV9OUl9NU0dUWVBFU10gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTc3LVxcdFtYRlJNX01TR19HRVRTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Nzg6XFx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2VycG9saWN5X2luZm8pLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Nzk6XFx0W1hGUk1fTVNHX0RFTFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6ODA6XFx0W1hGUk1fTVNHX0dFVFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtODEtXFx0W1hGUk1fTVNHX0FMTE9DU1BJICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRShjb21wYXRfeGZybV91c2Vyc3BpX2luZm8pLFxcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy04My1cXHRbWEZSTV9NU0dfRVhQSVJFICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJfZXhwaXJlKSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjg0OlxcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvKSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTg1LVxcdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoY29tcGF0X3hmcm1fdXNlcnNhX2luZm8pLFxcbi0tXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy05MS1cXHRbWEZSTV9NU0dfUkVQT1JUICAgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcl9yZXBvcnQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6OTI6XFx0W1hGUk1fTVNHX01JR1JBVEUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaWQpLFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtOTMtXFx0W1hGUk1fTVNHX05FV1NBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSBzaXplb2YodTMyKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9MTAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBjb21wYXRfcG9saWN5W1hGUk1BX01BWCsxXSA9IHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTAzLVxcdFtYRlJNQV9TQV1cXHRcXHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJzYV9pbmZvKX0sXFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMDQ6XFx0W1hGUk1BX1BPTElDWV1cXHRcXHQ9IHsgLmxlbiA9IFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbyl9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTA1LVxcdFtYRlJNQV9MQVNUVVNFRF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTE5LVxcdFtYRlJNQV9DT0FERFJdXFx0XFx0PSB7IC5sZW4gPSBzaXplb2YoeGZybV9hZGRyZXNzX3QpIH0sXFxubmV0L3hmcm0veGZybV9jb21wYXQuYzoxMjA6XFx0W1hGUk1BX1BPTElDWV9UWVBFXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfdHlwZSl9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTIxLVxcdFtYRlJNQV9NSUdSQVRFXVxcdFxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTI4LVxcdFtYRlJNQV9BRERSRVNTX0ZJTFRFUl1cXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV9hZGRyZXNzX2ZpbHRlcikgfSxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjEyOTpcXHRbWEZSTUFfT0ZGTE9BRF9ERVZdXFx0PSB7IC5sZW4gPSBzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSB9LFxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMTMwLVxcdFtYRlJNQV9TRVRfTUFSS11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTIzOT1zdGF0aWMgaW50IHhmcm1feGxhdGU2NF9hdHRyKHN0cnVjdCBza19idWZmICpkc3QsIGNvbnN0IHN0cnVjdCBubGF0dHIgKnNyYylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMjU0LVxcdGNhc2UgWEZSTUFfUE9MSUNZOlxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6MjU1OlxcdFxcdHJldHVybiB4ZnJtX25sYV9jcHkoZHN0LCBzcmMsIFhNU0dTSVpFKGNvbXBhdF94ZnJtX3VzZXJwb2xpY3lfaW5mbykpO1xcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtMjU2LVxcdGNhc2UgWEZSTUFfU0VDX0NUWDpcXG4tLVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM9NjQ1PXN0YXRpYyBpbnQgeGZybV91c2VyX3BvbGljeV9jb21wYXQodTggKipwZGF0YTMyLCBpbnQgb3B0bGVuKVxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjQ2LXtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NzpcXHRzdHJ1Y3QgY29tcGF0X3hmcm1fdXNlcnBvbGljeV9pbmZvICpwID0gKHZvaWQgKikqcGRhdGEzMjtcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0OC1cXHR1OCAqc3JjX3RlbXBsYXRlcywgKmRzdF90ZW1wbGF0ZXM7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTIzOT1pbnQgeGZybV9kZXZfc3RhdGVfYWRkKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDA6XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvLFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQxLVxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTM1OT1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjA6XFx0XFx0XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8sIHU4IGRpcixcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2MS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQ2NTY9aW50IHhmcm1fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ2NTktXFx0XFx0IHN0cnVjdCB4ZnJtX2VuY2FwX3RtcGwgKmVuY2FwLCB1MzIgaWZfaWQsXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0NjYwOlxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDY2MS17XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMjA0PXN0YXRpYyB2b2lkIHhzb190b194dW9faWZpbmRleChjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLCBpbnQgaWZpbmRleCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjA1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQgKnh1bylcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTEyMTU9c3RhdGljIHZvaWQgeHNvX3RvX3h1byhjb25zdCBzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMTY6XFx0XFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCAqeHVvKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTcte1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTIyMj1zdGF0aWMgaW50IGNvcHlfdXNlcl9vZmZsb2FkX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMjQte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMjU6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW87XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIyNi1cXHRzdHJ1Y3QgbmxhdHRyICphdHRyO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTk4MT1zdGF0aWMgaW50IHZlcmlmeV9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xOTk3LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE5OTg6c3RhdGljIGludCB2ZXJpZnlfbmV3cG9saWN5X2luZm8oc3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE5OTktXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIxODk9c3RhdGljIGludCBjb3B5X2Zyb21fdXNlcl9wb2xpY3lfdHlwZSh1OCAqdHAsIHN0cnVjdCBubGF0dHIgKiphdHRycyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIxOTItXFx0c3RydWN0IG5sYXR0ciAqcnQgPSBhdHRyc1tYRlJNQV9QT0xJQ1lfVFlQRV07XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjE5MzpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKnVwdDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMTk0LVxcdHU4IHR5cGUgPSBYRlJNX1BPTElDWV9UWVBFX01BSU47XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjA5LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIyMTA6c3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcClcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjExLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyMjEtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjIyMjpzdGF0aWMgdm9pZCBjb3B5X3RvX3VzZXJfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCwgaW50IGRpcilcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMjIzLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTIyMzc9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9wb2xpY3lfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMjM4OlxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnAsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjIzOS1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjI4ND1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbGljeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIyODgtXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjI4OTpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKnAgPSBubG1zZ19kYXRhKG5saCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjI5MC1cXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM3Nz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB1c2VycG9saWN5X3R5cGVfYXR0cnNpemUodm9pZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzNzktI2lmZGVmIENPTkZJR19YRlJNX1NVQl9QT0xJQ1lcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyMzgwOlxcdHJldHVybiBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlKSk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjM4MS0jZWxzZVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjM4Nz1zdGF0aWMgaW50IGNvcHlfdG9fdXNlcl9wb2xpY3lfdHlwZSh1OCB0eXBlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTIzODgte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIzODk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV90eXBlIHVwdDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzkwLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjIzOTE6XFx0LyogU2FkbHkgdGhlcmUgYXJlIHR3byBob2xlcyBpbiBzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUgKi9cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yMzkyLVxcdG1lbXNldChcXHUwMDI2dXB0LCAwLCBzaXplb2YodXB0KSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNDA1PXN0YXRpYyBpbnQgZHVtcF9vbmVfcG9saWN5KHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsIGludCBkaXIsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjQwNy1cXHRzdHJ1Y3QgeGZybV9kdW1wX2luZm8gKnNwID0gcHRyO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI0MDg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI0MDktXFx0c3RydWN0IHNrX2J1ZmYgKmluX3NrYiA9IHNwLVxcdTAwM2Vpbl9za2I7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTE0PXN0YXRpYyBpbnQgeGZybV9ub3RpZnlfdXNlcnBvbGljeShzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjUxNS17XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjUxNjpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1MTctXFx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZigqdXApKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NDUtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU0NjpzdGF0aWMgYm9vbCB4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQoX191OCBwb2xpY3kpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTUyPXN0YXRpYyBpbnQgeGZybV9zZXRfZGVmYXVsdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTUtXFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLVxcdTAwM2Vzayk7XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU1NjpcXHRzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQgKnVwID0gbmxtc2dfZGF0YShubGgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTctXFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU1ODpcXHRpZiAoeGZybV91c2VycG9saWN5X2lzX3ZhbGlkKHVwLVxcdTAwM2VpbikpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU1OS1cXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9JTl0sIHVwLVxcdTAwM2Vpbik7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU2MC1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTYxOlxcdGlmICh4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQodXAtXFx1MDAzZWZ3ZCkpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU2Mi1cXHRcXHRXUklURV9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9GV0RdLCB1cC1cXHUwMDNlZndkKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTYzLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NjQ6XFx0aWYgKHhmcm1fdXNlcnBvbGljeV9pc192YWxpZCh1cC1cXHUwMDNlb3V0KSlcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTY1LVxcdFxcdFdSSVRFX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0sIHVwLVxcdTAwM2VvdXQpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjU3Mz1zdGF0aWMgaW50IHhmcm1fZ2V0X2RlZmF1bHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1Nzk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0ICpyX3VwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1ODA6XFx0aW50IGxlbiA9IE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQpKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yNTgxLVxcdHUzMiBwb3J0aWQgPSBORVRMSU5LX0NCKHNrYikucG9ydGlkO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjYwMz1zdGF0aWMgaW50IHhmcm1fZ2V0X3BvbGljeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI2MDgtXFx0c3RydWN0IHhmcm1fcG9saWN5ICp4cDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNjA5OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnA7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMjYxMC1cXHR1OCB0eXBlID0gWEZSTV9QT0xJQ1lfVFlQRV9NQUlOO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjkzNz1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbF9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0yOTQzLVxcdHN0cnVjdCB4ZnJtX3VzZXJfcG9sZXhwaXJlICp1cCA9IG5sbXNnX2RhdGEobmxoKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoyOTQ0OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IFxcdTAwMjZ1cC1cXHUwMDNlcG9sO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI5NDUtXFx0dTggdHlwZSA9IFhGUk1fUE9MSUNZX1RZUEVfTUFJTjtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMxODM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMTg1LXtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMTg2OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWQgKnBpID0gbmxtc2dfZGF0YShubGgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxODctXFx0c3RydWN0IHhmcm1fbWlncmF0ZSBtW1hGUk1fTUFYX0RFUFRIXSA9IHt9O1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzE5My1cXHRzdHJ1Y3QgeGZybV9lbmNhcF90bXBsICAqZW5jYXAgPSBOVUxMO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMxOTQ6XFx0c3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8gPSBOVUxMO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxOTUtXFx0dTMyIGlmX2lkID0gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzMDk9c3RhdGljIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfc3RhdGVfbXNnc2l6ZShjb25zdCBzdHJ1Y3QgeGZybV9taWdyYXRlICptLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzMxMy1cXHRcXHQobS1cXHUwMDNlZW5jYXAgPyBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fZW5jYXBfdG1wbCkpIDogMCkgK1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMzMTQ6XFx0XFx0KG0tXFx1MDAzZXh1byA/IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV91c2VyX29mZmxvYWQpKSA6IDApICtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzE1LVxcdFxcdChtLVxcdTAwM2VuZXdfbWFyayA/IG5sYV90b3RhbF9zaXplKHNpemVvZihzdHJ1Y3QgeGZybV9tYXJrKSkgOiAwKSArXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMzQzPXN0YXRpYyBpbnQgeGZybV9kb19taWdyYXRlX3N0YXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzM0Ny1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChza2ItXFx1MDAzZXNrKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMzQ4OlxcdHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCB4dW8gPSB7fTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMzQ5LVxcdHN0cnVjdCB4ZnJtX21pZ3JhdGUgbSA9IHt9O1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzU3MT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB4ZnJtX21pZ3JhdGVfbXNnc2l6ZShpbnQgbnVtX21pZ3JhdGUsIGludCB3aXRoX2ttYSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1NzMte1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1NzQ6XFx0cmV0dXJuIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2lkKSlcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTc1LVxcdCAgICAgICsgKHdpdGhfa21hID8gbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHN0cnVjdCB4ZnJtX2ttYWRkcmVzcykpIDogMClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM1ODE9c3RhdGljIGludCBidWlsZF9taWdyYXRlKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTg2LVxcdGNvbnN0IHN0cnVjdCB4ZnJtX21pZ3JhdGUgKm1wO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1ODc6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqcG9sX2lkO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM1ODgtXFx0c3RydWN0IG5sbXNnaGRyICpubGg7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNjU5PWNvbnN0IGludCB4ZnJtX21zZ19taW5bWEZSTV9OUl9NU0dUWVBFU10gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjYyLVxcdFtYRlJNX01TR19HRVRTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2Vyc2FfaWQpLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2NjM6XFx0W1hGUk1fTVNHX05FV1BPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfaW5mbyksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2NDpcXHRbWEZSTV9NU0dfREVMUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY2NTpcXHRbWEZSTV9NU0dfR0VUUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9pZCksXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzY2Ni1cXHRbWEZSTV9NU0dfQUxMT0NTUEkgICAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnNwaV9pbmZvKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NjgtXFx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfZXhwaXJlKSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjY5OlxcdFtYRlJNX01TR19VUERQT0xJQ1kgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2luZm8pLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NzAtXFx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJzYV9pbmZvKSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM2NzYtXFx0W1hGUk1fTVNHX1JFUE9SVCAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfcmVwb3J0KSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNjc3OlxcdFtYRlJNX01TR19NSUdSQVRFICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VycG9saWN5X2lkKSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjc4LVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0gc2l6ZW9mKHUzMiksXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjgxLVxcdFtYRlJNX01TR19NQVBQSU5HICAgICAtIFhGUk1fTVNHX0JBU0VdID0gWE1TR1NJWkUoeGZybV91c2VyX21hcHBpbmcpLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2ODI6XFx0W1hGUk1fTVNHX1NFVERFRkFVTFQgIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJwb2xpY3lfZGVmYXVsdCksXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzY4MzpcXHRbWEZSTV9NU0dfR0VUREVGQVVMVCAgLSBYRlJNX01TR19CQVNFXSA9IFhNU0dTSVpFKHhmcm1fdXNlcnBvbGljeV9kZWZhdWx0KSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjg0LVxcdFtYRlJNX01TR19NSUdSQVRFX1NUQVRFIC0gWEZSTV9NU0dfQkFTRV0gPSBYTVNHU0laRSh4ZnJtX3VzZXJfbWlncmF0ZV9zdGF0ZSksXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNjkwPWNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHhmcm1hX3BvbGljeVtYRlJNQV9NQVgrMV0gPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjkyLVxcdFtYRlJNQV9TQV1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyl9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM2OTM6XFx0W1hGUk1BX1BPTElDWV1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8pfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNjk0LVxcdFtYRlJNQV9MQVNUVVNFRF1cXHQ9IHsgLnR5cGUgPSBOTEFfVTY0fSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MDgtXFx0W1hGUk1BX0NPQUREUl1cXHRcXHQ9IHsgLmxlbiA9IHNpemVvZih4ZnJtX2FkZHJlc3NfdCkgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzA5OlxcdFtYRlJNQV9QT0xJQ1lfVFlQRV1cXHQ9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgeGZybV91c2VycG9saWN5X3R5cGUpfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzEwLVxcdFtYRlJNQV9NSUdSQVRFXVxcdFxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfbWlncmF0ZSkgfSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3MTctXFx0W1hGUk1BX0FERFJFU1NfRklMVEVSXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX2FkZHJlc3NfZmlsdGVyKSB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3MTg6XFx0W1hGUk1BX09GRkxPQURfREVWXVxcdD0geyAubGVuID0gc2l6ZW9mKHN0cnVjdCB4ZnJtX3VzZXJfb2ZmbG9hZCkgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzE5LVxcdFtYRlJNQV9TRVRfTUFSS11cXHQ9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz00MDM5PXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHhmcm1fc2FfbGVuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDA2OC1cXHRpZiAoUkVBRF9PTkNFKHgtXFx1MDAzZXhzby5kZXYpKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQwNjk6XFx0XFx0bCArPSBubGFfdG90YWxfc2l6ZShzaXplb2Yoc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkKSk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtNDA3MC1cXHRpZiAoeC1cXHUwMDNlcHJvcHMuc21hcmsudiB8IHgtXFx1MDAzZXByb3BzLnNtYXJrLm0pIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQyNTU9c3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeSAqeGZybV9jb21waWxlX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjU4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzo0MjU5OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyAqcCA9IChzdHJ1Y3QgeGZybV91c2VycG9saWN5X2luZm8gKilkYXRhO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTQyNjAtXFx0c3RydWN0IHhmcm1fdXNlcl90bXBsICp1dCA9IChzdHJ1Y3QgeGZybV91c2VyX3RtcGwgKikgKHAgKyAxKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQzNzQ9c3RhdGljIGludCB4ZnJtX25vdGlmeV9wb2xpY3koc3RydWN0IHhmcm1fcG9saWN5ICp4cCwgaW50IGRpciwgY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDM3Ny1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSB4cF9uZXQoeHApO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzg6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvICpwO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQzNzk6XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pZCAqaWQ7XFxubmV0L3hmcm0veGZybV91c2VyLmMtNDM4MC1cXHRzdHJ1Y3Qgbmxtc2doZHIgKm5saDtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTExMDE9c3RhdGljIGludCB4ZnJtX3BvbGljeV9hZGQoaW50IHhmcm1fc29jaywgdWludDMyX3Qgc2VxLCB1aW50MzJfdCBzcGksXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTA2LVxcdFxcdHN0cnVjdCBubG1zZ2hkclxcdFxcdFxcdG5oO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jOjExMDc6XFx0XFx0c3RydWN0IHhmcm1fdXNlcnBvbGljeV9pbmZvXFx0aW5mbztcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTA4LVxcdFxcdGNoYXJcXHRcXHRcXHRcXHRhdHRyYnVmW01BWF9QQVlMT0FEXTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTExNzY9c3RhdGljIGludCB4ZnJtX3BvbGljeV9kZWwoaW50IHhmcm1fc29jaywgdWludDMyX3Qgc2VxLFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMTE4MS1cXHRcXHRzdHJ1Y3Qgbmxtc2doZHJcXHRcXHRcXHRuaDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoxMTgyOlxcdFxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaWRcXHRpZDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYy0xMTgzLVxcdFxcdGNoYXJcXHRcXHRcXHRcXHRhdHRyYnVmW01BWF9QQVlMT0FEXTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jPTIwODc9c3RhdGljIGludCB3cml0ZV9wcm90b19wbGFuKGludCBmZCwgaW50IHByb3RvKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2lwc2VjLmMtMjEzMy0gKiAgIHNpemVvZih4ZnJtX3VzZXJzYV9pbmZvKSAgICAgPSAyMjAgIHwgIHNpemVvZih4ZnJtX3VzZXJzYV9pbmZvKSAgICAgPSAyMjRcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvaXBzZWMuYzoyMTM0OiAqICAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2NCAgfCAgc2l6ZW9mKHhmcm1fdXNlcnBvbGljeV9pbmZvKSA9IDE2OFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jLTIxMzUtICogICBzaXplb2YoeGZybV91c2Vyc3BpX2luZm8pICAgID0gMjI4ICB8ICBzaXplb2YoeGZybV91c2Vyc3BpX2luZm8pICAgID0gMjMyXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jPTE0NTI9c3RhdGljIGludCBjb25maWdfeGZybV9wb2xpY3koaW50IHNkLCBzdHJ1Y3Qgc29ja19hcmdzICphcmdzKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXR0ZXN0LmMtMTQ1My17XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L25ldHRlc3QuYzoxNDU0OlxcdHN0cnVjdCB4ZnJtX3VzZXJwb2xpY3lfaW5mbyBwb2xpY3kgPSB7fTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0dGVzdC5jLTE0NTUtXFx0aW50IHR5cGUgPSBVRFBfRU5DQVBfRVNQSU5VRFA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQxOjIxLjI3MTg1NTg0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU1MDYyNjU0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqWEZSTSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgWEZSTSBjb25maWd1cmF0aW9uLiBEZWZpbml0ZWx5IG5lZWQgYENPTkZJR19YRlJNX1VTRVJgIOKAkyB0aGF0J3MgYSBnaXZlbiBmb3IgdXNlci1zcGFjZSBjb250cm9sLiBIbW0sIHdoYXQgYWJvdXQgYENPTkZJR19YRlJNX09GRkxPQURgPyBJdCdzIGJlZW4gYSB3aGlsZSBzaW5jZSBJIHBsYXllZCBhcm91bmQgd2l0aCBoYXJkd2FyZSBvZmZsb2FkaW5nIHN1cHBvcnQuIExldCdzIHNlZS4uLiBJJ2xsIHF1aWNrbHkgY2hlY2sgYGluY2x1ZGUvbmV0L3hmcm0uaGAuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGxvY2F0ZSB0aGUgYHhmcm1fZGV2X29mZmxvYWRgIHN5bWJvbCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGFuZCB3aGV0aGVyIGl0J3MgYXBwcm9wcmlhdGUgZm9yIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4gR290dGEgbWFrZSBzdXJlIEknbSBlbmFibGluZyBldmVyeXRoaW5nIG5lY2Vzc2FyeSwgYnV0IG5vdGhpbmcgdW5uZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4OTIyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDE6MzYuODIyNDg1MzQ4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYwMTc0OTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fZGV2X29mZmxvYWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTE0NT1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xNDgtXFxuaW5jbHVkZS9uZXQveGZybS5oOjE0OTpzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE1MC1cXHQvKiBUaGUgZGV2aWNlIGZvciB0aGlzIG9mZmxvYWQuXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTkwPXN0cnVjdCB4ZnJtX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yOTMtXFxuaW5jbHVkZS9uZXQveGZybS5oOjI5NDpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4c287XFxuaW5jbHVkZS9uZXQveGZybS5oLTI5NS1cXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD02MzQ9c3RydWN0IHhmcm1fcG9saWN5IHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC02NjYtXFxuaW5jbHVkZS9uZXQveGZybS5oOjY2NzpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCB4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTY2OC19O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTE3MjM9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTcyNC17XFxuaW5jbHVkZS9uZXQveGZybS5oOjE3MjU6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxuaW5jbHVkZS9uZXQveGZybS5oLTE3MjYtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IFJFQURfT05DRSh4ZG8tXFx1MDAzZWRldik7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjEyNz1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEyOS1cXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMTMwOmJvb2wgeGZybV9kZXZfb2ZmbG9hZF9vayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxMzEtdm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxMzQ9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3N0YXRlX2FkdmFuY2VfZXNuKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMTM1LXtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MjEzNjpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjEzNy1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gUkVBRF9PTkNFKHhzby1cXHUwMDNlZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0yMTYxPXN0YXRpYyBpbmxpbmUgdm9pZCB4ZnJtX2Rldl9wb2xpY3lfZGVsZXRlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE2Mi17XFxuaW5jbHVkZS9uZXQveGZybS5oOjIxNjM6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxNjQtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIxNzA9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG5pbmNsdWRlL25ldC94ZnJtLmgtMjE3MS17XFxuaW5jbHVkZS9uZXQveGZybS5oOjIxNzI6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbyA9IFxcdTAwMjZ4LVxcdTAwM2V4ZG87XFxuaW5jbHVkZS9uZXQveGZybS5oLTIxNzMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTIyMjI9c3RhdGljIGlubGluZSB2b2lkIHhmcm1fZGV2X3BvbGljeV9mcmVlKHN0cnVjdCB4ZnJtX3BvbGljeSAqeClcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI1LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMjI2OnN0YXRpYyBpbmxpbmUgYm9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMjI3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MjM5PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjQ1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNDY6XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNDctXFx0eGZybV9hZGRyZXNzX3QgKnNhZGRyO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTk9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjIte1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzYzOlxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcXHUwMDI2eHAtXFx1MDAzZXhkbztcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz00MTg9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9kZXZfcG9saWN5X2FkZCk7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy00MTktXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzo0MjA6Ym9vbCB4ZnJtX2Rldl9vZmZsb2FkX29rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDIxLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNDczLX1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX2Rldl9vZmZsb2FkX29rKTtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTQ3NS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NzUwPWludCB4ZnJtX291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc3Mi1cXHRpZiAoeC1cXHUwMDNleHNvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc3MzpcXHRcXHRpZiAoIXhmcm1fZGV2X29mZmxvYWRfb2soc2tiLCB4KSkge1xcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzc0LVxcdFxcdFxcdFhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1PVVRFUlJPUik7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTc5NC1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc5NTpcXHRpZiAoeGZybV9kZXZfb2ZmbG9hZF9vayhza2IsIHgpKSB7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03OTYtXFx0XFx0c3RydWN0IHNlY19wYXRoICpzcDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjY9dm9pZCB4ZnJtX2Rldl9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTc2Ny17XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc2ODpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY5LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBSRUFEX09OQ0UoeHNvLVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTc4MD12b2lkIHhmcm1fZGV2X3N0YXRlX2ZyZWUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTc4MS17XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjc4MjpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzgzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBSRUFEX09OQ0UoeHNvLVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg4Nj14ZnJtX2Rldl9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODkxLVxcdFxcdHN0cnVjdCB4ZnJtX3N0YXRlICp4O1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4OTI6XFx0XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODkzLVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTY0LVxcdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk2NTpcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NjYtXFx0aW50IGksIGVyciA9IDAsIGNudCA9IDA7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTEzMT1zdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKl9feGZybV9zdGF0ZV9sb29rdXBfYWxsKGNvbnN0IHN0cnVjdCB4ZnJtX2hhc2hfc3RhdGVfcHRycyAqc3RhdGVfcHRycyxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTM1LVxcdFxcdFxcdFxcdFxcdFxcdCAgdW5zaWduZWQgc2hvcnQgZmFtaWx5LFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTM2OlxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhkbylcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTEzNy17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MTM1Nj14ZnJtX3N0YXRlX2ZpbmQoY29uc3QgeGZybV9hZGRyZXNzX3QgKmRhZGRyLCBjb25zdCB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU0Mi1cXHRcXHRpZiAocG9sLVxcdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTQzOlxcdFxcdFxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4ZG8gPSBcXHUwMDI2cG9sLVxcdTAwM2V4ZG87XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1NDQ6XFx0XFx0XFx0c3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbyA9IFxcdTAwMjZ4LVxcdTAwM2V4c287XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1NDUtXFx0XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHhkby1cXHUwMDNlZGV2O1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE2MDEtI2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTYwMjpcXHRcXHRcXHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXFx1MDAyNngtXFx1MDAzZXhzbztcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTYwMy1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExODM9c3RhdGljIGludCBjb3B5X3NlY19jdHgoc3RydWN0IHhmcm1fc2VjX2N0eCAqcywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMDMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTIwNDpzdGF0aWMgdm9pZCB4c29fdG9feHVvX2lmaW5kZXgoY29uc3Qgc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgaW50IGlmaW5kZXgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwNS1cXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjE0LSNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTIxNTpzdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNi1cXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcl9vZmZsb2FkICp4dW8pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjIxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMjI6c3RhdGljIGludCBjb3B5X3VzZXJfb2ZmbG9hZF9pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIyMy1cXHRcXHRcXHRcXHQgICAgIGludCBpZmluZGV4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIzOC1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjM5OnN0YXRpYyBpbnQgY29weV91c2VyX29mZmxvYWQoc3RydWN0IHhmcm1fZGV2X29mZmxvYWQgKnhzbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjQwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyNDMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTI0NDpzdGF0aWMgaW50IGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTI0NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTozOS4wODI2NjQ3NjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMwNjM3MjY0MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIGVuYWJsZWQgYmVjYXVzZSBpdCdzIGNydWNpYWwgZm9yIHRoZSBgeGZybV9kZXZfb2ZmbG9hZGAgbG9naWMuIFRoYXQncyB0aGUgY29yZSBvZiB0aGUgaXNzdWUuXG5cbk5vdywgbGV0J3MganVzdCBydW4gdGhyb3VnaCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSBlbmFibGVkOiBgWEZSTWAsIGBYRlJNX1VTRVJgLCBgWEZSTV9JUFRGU2AsIGFuZCwgb2YgY291cnNlLCB0aGUgb25lIEkgbWVudGlvbmVkIGFscmVhZHk6IGBYRlJNX09GRkxPQURgLlxuXG5JJ20gcGF1c2luZyBicmllZmx5IG9uIGBYRlJNX05BVGAsIHRob3VnaC4gSXQncyBhIGJpdCBvZiBhIGdyYXkgYXJlYSBpbiBteSBtZW1vcnkuIElzIGl0IGFjdHVhbGx5IGBDT05GSUdfWEZSTV9OQVRgIGFzIGEgc2VwYXJhdGUgb3B0aW9uLCBvciBpcyB0aGUgTkFUIGZ1bmN0aW9uYWxpdHkganVzdCBpbXBsaWNpdGx5IHRpZWQgdG8gYENPTkZJR19YRlJNYD8gVG8gYmUgc3VyZSwgSSBzaG91bGQgcmVhbGx5IGRvdWJsZS1jaGVjayB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGJ1aWxkaW5nIHNvbWV0aGluZyBsaWtlIGB4ZnJtX25hdF9rZWVwYWxpdmUub2AuIEknbSBwcmV0dHkgc3VyZSB0aGF0IGZpbGUgaXMgYnVpbHQgb25seSBpZiBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQsIGJ1dCBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgQ09ORklHX1hGUk1fTkFUYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0J3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IGV2ZW4gZXhpc3RzIGFuZCB0aGF0IGl0J3Mgc2VwYXJhdGUsIG9yIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGp1c3QgcGFydCBvZiB0aGUgY29yZSBYRlJNIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjQ0LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQxOjUyLjE0NjM5NDk3M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0NDY0ODI3NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1hGUk1fTkFUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTo1NC44OTEwNTE2NDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MDE4MDM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czpcblxuKipOYXZpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSd2ZSBnb3QgdG8gZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGVzZSBvcHRpb25zIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSSB3YXMgbG9va2luZyBmb3IgYENPTkZJR19YRlJNX05BVGAsIGFuZCwgd2VsbCwgaXQgYXBwZWFycyB0aGF0IHBhcnRpY3VsYXIgZmxhZyBpc24ndCBkZWZpbmVkLiBUaGF0J3MgYSBjbGFzc2ljIGNhc2Ugb2YgZWl0aGVyIGEgdHlwbywgYW4gb3V0ZGF0ZWQgcmVmZXJlbmNlLCBvciBwZXJoYXBzIHRoZSBmdW5jdGlvbmFsaXR5IGl0IHJlcHJlc2VudHMgaXMgZm9sZGVkIGludG8gc29tZXRoaW5nIGVsc2UuXG5cblNpbmNlIGBDT05GSUdfWEZSTV9OQVRgIGlzbid0IHRoZXJlLCBpdCdzIHRpbWUgdG8gc2hpZnQgZ2VhcnMuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayBmb3IgYENPTkZJR19YRlJNX01JR1JBVEVgLiBIb3BlZnVsbHksIHRoaXMgZXhpc3RzLCBhbmQgZXZlbiBpZiBub3QsIGl0IHByb3ZpZGVzIHNvbWUgdXNlZnVsIGNvbnRleHQsIG9yIHdpbGwgcG9pbnQgbWUgaW4gdGhlIGRpcmVjdGlvbiBvZiB3aGVyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb24gbWF5IHJlc2lkZS4gTWF5YmUgaXQgcmVsYXRlcyB0byB0aGUgc2FtZSBjb3JlIGZ1bmN0aW9uYWxpdHksIG9yIGF0IGxlYXN0IGEgcmVsYXRlZCBhcmVhIG9mIG5ldHdvcmsgc3RhY2sgY29uZmlndXJhdGlvbiB0aGF0IEkgc2hvdWxkIGNvbnNpZGVyLiBLbm93aW5nIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbnMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NDQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQwNDo0MTo1OC4zNTEyMzQ1NjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzI1MTI2NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX1hGUk1fTUlHUkFURVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0PTE5MT1Vc2Vyc3BhY2UgY2FuIHByb2JlIGZvciBrZXJuZWwgc3VwcG9ydCBieSBzZW5kaW5nIGEgbWluaW1hbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm0veGZybV9taWdyYXRlX3N0YXRlLnJzdC0xOTUtICBpcyBvdXQgb2YgcmFuZ2VcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0OjE5NjotIGBgLUVOT1BST1RPT1BUYGA6IG1lc3NhZ2UgdHlwZSBpcyBrbm93biBidXQgYGBDT05GSUdfWEZSTV9NSUdSQVRFYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybS94ZnJtX21pZ3JhdGVfc3RhdGUucnN0LTE5Ny0gIGlzIG5vdCBlbmFibGVkXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTU5PUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWc6NjA6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy02MS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz01Mz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6NTQ6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc9NDk9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo1MDpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTUxLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz01Nj1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6NTc6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTU4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz00Nj1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWc6NDc6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTQ4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz00OD1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NDk6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTUwLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnLTQ5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz02Nz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Njg6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTY5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTQ1PUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjQ2OkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTQ3LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTQ2PUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjQ3OkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTQ4LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NDc9Q09ORklHX1RMUz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZzo0ODpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTQ5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnPTQyPUNPTkZJR19UTFM9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX01JR1JBVEU9eVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz00Mz1DT05GSUdfVExTPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NDQ6Q09ORklHX1hGUk1fTUlHUkFURT15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTQ1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzY9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzozNzpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM4LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9NDQ9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0NTpDT05GSUdfWEZSTV9NSUdSQVRFPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUPXlcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaD0xOTA5PWludCB4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbCk7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE5MTAtXFxuaW5jbHVkZS9uZXQveGZybS5oOjE5MTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTkxMi1pbnQga21fbWlncmF0ZShjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLCB1OCBkaXIsIHU4IHR5cGUsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjAzNT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB4ZnJtX3JlcGxheV9zdGF0ZV9lc25fbGVuKHN0cnVjdCB4ZnJtX3JlcGxheV9zdGF0ZV9lc24gKnJlcGxheV9lc24pXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMjAzOS1cXG5pbmNsdWRlL25ldC94ZnJtLmg6MjA0MDojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMDQxLXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcmVwbGF5X2Nsb25lKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00NDg0PUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fYXVkaXRfcG9saWN5X2RlbGV0ZSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQ0ODYtXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0NDg3OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00NDg4LXN0YXRpYyBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhmcm1fbWlncmF0ZV9wb2xpY3lfZmluZChjb25zdCBzdHJ1Y3QgeGZybV9zZWxlY3RvciAqc2VsLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE5NDk9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FkZCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5NTAtXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NTE6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTk1Mi1zdGF0aWMgaW5saW5lIGludCBjbG9uZV9zZWN1cml0eShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHhmcm1fc2VjX2N0eCAqc2VjdXJpdHkpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9Mjg4ND1FWFBPUlRfU1lNQk9MKGttX3BvbGljeV9leHBpcmVkKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjg4NS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6Mjg4NjojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yODg3LWludCBrbV9taWdyYXRlKGNvbnN0IHN0cnVjdCB4ZnJtX3NlbGVjdG9yICpzZWwsIHU4IGRpciwgdTggdHlwZSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTEyMDQ9c3RhdGljIHZvaWQgeHNvX3RvX3h1b19pZmluZGV4KGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sIGludCBpZmluZGV4LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxMy1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjE0OiNpZmRlZiBDT05GSUdfWEZSTV9NSUdSQVRFXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTIxNS1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMDQyPXN0YXRpYyBpbnQgeGZybV9hZGRfYWNxdWlyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzExNzojaWZkZWYgQ09ORklHX1hGUk1fTUlHUkFURVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMxMTgtc3RhdGljIHZvaWQgY29weV9mcm9tX3VzZXJfbWlncmF0ZV9zdGF0ZShzdHJ1Y3QgeGZybV9taWdyYXRlICptYSxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTM1MzI9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTM4LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM1Mzk6I2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNTQwLXN0YXRpYyBpbnQgY29weV90b191c2VyX21pZ3JhdGUoY29uc3Qgc3RydWN0IHhmcm1fbWlncmF0ZSAqbSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MDAuNzIzNzU2NDEyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMTY2OTU2OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlIGNvcmUgb2YgaXQgYm9pbHMgZG93biB0byB0aGUgYHhzb190b194dW9gIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VkIHRvIGNvbnZlcnQgZGF0YSBmcm9tIGFuIGB4ZnJtX2Rldl9vZmZsb2FkYCBzdHJ1Y3R1cmUgKGB4c29gKSB0byBhbiBgeGZybV91c2VyX29mZmxvYWRgIHN0cnVjdHVyZSAoYHh1b2ApLiBBbmQgbm93IEkgY2FuIHNlZSwgYENPTkZJR19YRlJNX01JR1JBVEVgIGlzIGd1YXJkaW5nIHRoYXQgZnVuY3Rpb24uXG5cblNwZWNpZmljYWxseSwgSSBjYW4gc2VlIHRoYXQgdGhpcyBgI2lmZGVmIENPTkZJR19YRlJNX01JR1JBVEVgIGJsb2NrIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBoYXZlIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gZW5hYmxlZCB0byBnZXQgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uLlxuXG5JdCdzIGNsZWFyIHRoYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBzdXBwb3J0IG1pZ3JhdGlvbi4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHdpdGggdGhpcyBmdW5jdGlvbmFsaXR5IGVuYWJsZWQsIGEgZGlmZmVyZW50IGludGVyZmFjZSBpbmRleCBuZWVkcyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGluIHNvbWUgY2lyY3Vtc3RhbmNlcywgYW5kIHRoaXMgaXMgd2h5IGEgbmV3IGZ1bmN0aW9uLCBgeHNvX3RvX3h1b19pZmluZGV4YCwgaGFzIGJlZW4gY3JlYXRlZC4gSSBzZWUgdGhhdCB0aGUgb3JpZ2luYWwgYHhzb190b194dW9gIG5vdyBjYWxscyBgeHNvX3RvX3h1b19pZmluZGV4YCBwYXNzaW5nIGluIHRoZSBpZmluZGV4LiBBbHNvLCBJIHNlZSB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gYGNvcHlfdXNlcl9zdGF0ZV9vZmZsb2FkYCBpcyBub3cgY2FsbGluZyBgY29weV91c2VyX29mZmxvYWRfaWZpbmRleGAgYW5kIHBhc3NlcyBpbiB0aGUgaWZpbmRleCBmcm9tIHRoZSBgeHNvYC5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlIGFib3V0IHRoZSBjb250ZXh0IG9mIHRoaXMsIEkgc2hvdWxkIHByb2JhYmx5IGVudW1lcmF0ZSB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgYXQgcGxheSBoZXJlLiBMZXQncyBzZWUuLi4gSSdtIHRoaW5raW5nOiBgWEZSTV9VU0VSYCwgYFhGUk1fSVBURlNgLCBhbmQgYFhGUk1fT0ZGTE9BRGAgKHRoYXQgb25lJ3MgaW1wb3J0YW50LCBJIHRoaW5rIGl0J3MgdGhlIGJhc2lzIGZvciB0aGUgb2ZmbG9hZCBmdW5jdGlvbmFsaXR5KSBhbmQsIG9mIGNvdXJzZSwgdGhlIGtleSBvbmUsIGBYRlJNX01JR1JBVEVgLiBJIGNhbiBqdXN0IGFkZCBgWEZSTWAgZm9yIGNvbXBsZXRlbmVzcywgdGhhdCBzZWVtcyBsaWtlIGEgYmFzZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDUxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjExLjg5MDcxNjI1NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5MTUyMzU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9PRkZMT0FEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NT1jb25maWcgWEZSTVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MTQuMzgyMjQ3NzA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyOTg0OTY3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIFhGUk0gT2ZmbG9hZCBhbmQgSVBURlMgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBgWEZSTV9PRkZMT0FEYCBpcyBkZWZpbml0ZWx5IGEgYm9vbGVhbiBjb25maWcgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIE5vdywganVzdCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJyb2FkZXIgcGljdHVyZSwgbGV0J3MgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCB3aXRoIHRoZSBLY29uZmlnIGRvY3VtZW50YXRpb24gZm9yIGBYRlJNX0lQVEZTYC4gSSBuZWVkIHRvIGVuc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlc2UgZmVhdHVyZXMuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZm9yZXN0IHdoZW4gZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgb2YgdGhpcyBjb21wbGV4aXR5LCBhbmQgYSBxdWljayBkb3VibGUtY2hlY2sgY2FuIHByZXZlbnQgYSBsb3Qgb2YgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUuIEl0J3MganVzdCBnb29kIHByYWN0aWNlIHRvIHJldmlldyB0aGUgcmVsYXRlZCBvcHRpb25zIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjgzMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjIxLjY4MDc0NzMyNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0Njg4OTIyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9JUFRGU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6MjQuMTI3NjQyNzAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzUyMjQ0MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhhdCBgWEZSTV9JUFRGU2AgaXMgYSBsZWdpdGltYXRlIGFuZCBhY2NlcHRhYmxlIHNldHRpbmcuIFRoYXQncyBnb29kIHRvIGtub3csIGNvbmZpcm1pbmcgaXQncyBhIGtub3duIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBOb3csIGxldCdzIHNlZSB3aGF0J3MgcmVsYXRlZCB0byBpdC4gTXkgbmV4dCBjaGVjayBpcyBnb2luZyB0byBiZSBvbiBgWEZSTV9NSUdSQVRFYC4gSSBuZWVkIHRvIGFzc2VzcyBob3cgdGhhdCBwbGF5cyBpbnRvIHRoZSBvdmVyYWxsIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzE0OCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjI3LjYwMjg3MTI3MloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ3NDU3MzM2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9NSUdSQVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NTE9Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjMwLjA3NzQ0OTcxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE3MDgwMDg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgWEZSTSBTdWJzeXN0ZW0gRml4ZXMgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggYWRkcmVzc2luZyBzZXZlcmFsIGlzc3VlcyB3aXRoaW4gdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHllcywgYFhGUk1fTUlHUkFURWAgaXMgYSB2YWxpZCBjb25maWcuICBBbmQgc2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIElQdjYtcmVsYXRlZCBjb2RlIGluIGBuZXQvaXB2Ni94ZnJtNl9wb2xpY3kuY2AgYW5kIGBuYXRfa2VlcGFsaXZlX3NlbmRfaXB2NmAsIGBDT05GSUdfSVBWNmAgaXMgZGVmaW5pdGVseSBhIHJlcXVpcmVtZW50LCB0aG91Z2ggaXQncyB1c3VhbGx5IGVuYWJsZWQsIHNvIGxldCdzIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scyB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gSSBpbml0aWFsbHkgaWRlbnRpZmllZCBhIGxvbmcgbGlzdCwgYnV0IHdlIG5lZWQgdG8gbmFycm93IGl0IGRvd24gdG8gdGhlIG1vc3QgcmVsZXZhbnQ6XG5cbiogICBgdmFsaWRhdGVfeG1pdF94ZnJtYFxuKiAgIGB4ZnJtNl9maWxsX2RzdGBcbiogICBgeGZybV9kZXZfc3RhdGVfYWRkYFxuKiAgIGBpcHRmc19za2JfYWRkX2ZyYWdzYFxuKiAgIGBuYXRfa2VlcGFsaXZlX3NlbmRgXG4qICAgYHhmcm1faGFzaF9yZWJ1aWxkYFxuKiAgIGB4ZnJtX3N0YXRlX2ZpbmRgXG4qICAgYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYFxuKiAgIGB4ZnJtX3VzZXJfcG9saWN5YFxuKiAgIGBfX3hmcm1faW5pdF9zdGF0ZWBcbiogICBgY29weV90b191c2VyX3N0YXRlX2V4dHJhYFxuKiAgIGB2YWxpZGF0ZV90bXBsYFxuXG5JJ20gZmlsdGVyaW5nIG91dCB0aGUgaG90LXBhdGggZnVuY3Rpb25zIGxpa2UgYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGZvY3VzaW5nIG9uIHRoZSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9ucy4gVGhlbiBJIHJlZmluZWQgdGhpcyBsaXN0IGJhc2VkIG9uIHdoYXQgdGhlIHBhdGNoIGlzIGNoYW5naW5nLlxuXG5UYWtpbmcgYSBjbG9zZXIgbG9vaywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgaW4gYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIGFuZCBpdCdzIGNhbGxlZCBmcm9tIGB2YWxpZGF0ZV94bWl0X3NrYmAsIHNvIGl0J3Mgc29tZXdoYXQgaG90LXBhdGgsIGJ1dCBkZWZpbml0ZWx5IHNwZWNpZmljIHRvIFhGUk0gb2ZmbG9hZC4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgIGlzIElQVEZTIHNwZWNpZmljLCBgbmF0X2tlZXBhbGl2ZV9zZW5kYCBpcyBOQVQga2VlcGFsaXZlLCBhbmQgc28gb24uXG5cbk5vdyB0aGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIHN5bWJvbCB2aXNpYmlsaXR5LiBJIGNoZWNrZWQgaWYgdGhlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkLiBIZXJlIGFyZSB0aGUgaW1wb3J0YW50IG9uZXM6XG4qIGB2YWxpZGF0ZV94bWl0X3hmcm1gIC0gZXhwb3J0ZWQuXG4qIGB4ZnJtNl9maWxsX2RzdGAgLSBSZWxldmFudC5cbiogYHhmcm1fZGV2X3N0YXRlX2FkZGAgLSBSZWxldmFudC5cbiogYGlwdGZzX3NrYl9hZGRfZnJhZ3NgIC0gc3RhdGljLlxuKiBgbmF0X2tlZXBhbGl2ZV9zZW5kYCAtIHN0YXRpYy5cbiogYHhmcm1faGFzaF9yZWJ1aWxkYCAtIHN0YXRpYy5cbiogYHhmcm1fc3RhdGVfZmluZGAgLSBleHBvcnRlZC5cbiogYHhmcm1fc3RhdGVfY2xvbmVfYW5kX3NldHVwYCAtIHN0YXRpYy5cbiogYHhmcm1fdXNlcl9wb2xpY3lgIC0gZXhwb3J0ZWQuXG4qIGBfX3hmcm1faW5pdF9zdGF0ZWAgLSBleHBvcnRlZC5cbiogYHZhbGlkYXRlX3RtcGxgIC0gc3RhdGljLlxuXG5CYXNlZCBvbiB0aGF0LCBJIHdhbnQgdG8gaW5jbHVkZSBleHBvcnRlZCBmdW5jdGlvbnMgYnV0IGFsc28gc29tZSBpbXBvcnRhbnQgc3RhdGljIG9uZXMsIGFuZCB0aGVuIGxldCdzIHNlZSB3aHkgdGhpcyBsaXN0IGlzIG5lZWRlZC5cblxuVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGFkZHJlc3NlcyBtdWx0aXBsZSBwcm9ibGVtczogaGFuZGxpbmcgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgZnJvbSBhc3luYyBjcnlwdG8sIGZpeGluZyBtZW1vcnkgbGVha3MgaW4gYHhmcm02X2ZpbGxfZHN0YCBhbmQgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGFkZHJlc3NpbmcgYW4gaW5jb3JyZWN0IHByZWZpeCBsZW5ndGggY2hlY2sgaW4gYHhmcm1faGFzaF9yZWJ1aWxkYCwgZml4aW5nIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgIGFuZCBgX194ZnJtX2luaXRfc3RhdGVgLCBtaXRpZ2F0aW5nIGEgZGF0YSByYWNlIGluIGB4ZnJtX3VzZXIuY2AsIGNvcnJlY3RpbmcgYFhGUk1fTU9ERV9JUFRGU2AgdmFsaWRhdGlvbiBpbiBgdmFsaWRhdGVfdG1wbGAsIGFuZCBzZXR0aW5nIGBTS0JGTF9TSEFSRURfRlJBR2AgaW4gYGlwdGZzX3NrYl9hZGRfZnJhZ3NgLlxuXG5UaGVzZSBhcmUgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2VzIGNvdmVyaW5nIGNvcmUgWEZSTSBsb2dpYywgSVBzZWMgb2ZmbG9hZCwgSVBURlMsIGFuZCBOQVQga2VlcGFsaXZlLiBUaGVyZWZvcmUsIHRoZXkgYWxsIHdhcnJhbnQgZnV6emluZyB0byBlbnN1cmUgdGhlIGZpeGVzIGFyZSBjb3JyZWN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXG5cblNvLCB0aGUgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBlbnN1cmUgYXJlIGVuYWJsZWQgYXJlOlxuXG4qICAgYFhGUk1fVVNFUmBcbiogICBgWEZSTV9JUFRGU2BcbiogICBgWEZSTV9PRkZMT0FEYFxuKiAgIGBYRlJNX01JR1JBVEVgXG4qICAgYElQVjZgXG5cbkknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgYFhGUk1fT0ZGTE9BRGAgdG8gbWFrZSBzdXJlIGl0J3MgYSBib29sIGFuZCBob3cgaXQgaXMgZW5hYmxlZC4gQWZ0ZXIgdGhhdCwgd2UgYXJlIGdvb2QgdG8gc3RhcnQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjczOTYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQyOjUyLjI0ODI1MzUzOFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MTI1MjkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9PRkZMT0FEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9NT1jb25maWcgWEZSTVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xMC1cXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcXG5uZXQveGZybS9LY29uZmlnLTEyLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6NTQuOTg5NTE1MDA1WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzUyNzczODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqTmF2aWdhdGluZyB0aGUgVW5wcm9tcHRlZCBQYXRoKipcblxuQWxyaWdodCwgSSdtIGVuY291bnRlcmluZyBhIG1vZGVsIHdpdGggbm8gZXhwbGljaXQgcHJvbXB0LiBJbnRyaWd1aW5nLiBUaGF0IGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBkaWZmZXJlbnQgc2VsZWN0aW9uIG1lY2hhbmlzbSBhdCBwbGF5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBzbyBpdCB3YXNuJ3QgY2FsbGVkIGRpcmVjdGx5LiBXaGF0IHRyaWdnZXJlZCAqdGhpcyogcGFydGljdWxhciBjb25maWd1cmF0aW9uP1wiIFRoaXMgaW1wbGllcyBhIGRlZXBlciBsYXllciBvZiBvcmNoZXN0cmF0aW9uLCBsaWtlbHkgZHJpdmVuIGJ5IHNvbWUgZXh0ZXJuYWwgc3lzdGVtLCBwZXJoYXBzIGEgbWV0YS1wcm9tcHQsIGEgcnVsZS1iYXNlZCBlbmdpbmUsIG9yIGEgY2FzY2FkaW5nIHNldCBvZiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3RvciwgdGhlIGNyaXRlcmlhIHRoYXQgbGVkIHRvIHRoaXMgbW9kZWwgYmVpbmcgY2hvc2VuLiBJcyBpdCBiYXNlZCBvbiBpbnB1dCBjb250ZXh0LCBwZXJmb3JtYW5jZSBiZW5jaG1hcmtzLCByZXNvdXJjZSBhdmFpbGFiaWxpdHksIG9yIHNvbWV0aGluZyBtb3JlIGVzb3RlcmljPyBUaGlzIGFic2VuY2Ugb2YgYSBkaXJlY3QgcHJvbXB0IGZvcmNlcyBtZSB0byByZXZlcnNlLWVuZ2luZWVyIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIHNlbGVjdGlvbiBpdHNlbGYgKmlzKiB0aGUgcHJvbXB0LCBpbiBhIHNlbnNlIOKAkyBqdXN0IGEgaGlkZGVuIG9uZS4gSSBoYXZlIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2l0IHF1ZXJ5LiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgZW52aXJvbm1lbnQsIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbnMsIGFuZCBhbnkgbG9ncyB0byB0cmFjZSB0aGUgcGF0aCB0byB0aGlzIHNwZWNpZmljIGluc3RhbnRpYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5OTQ4LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDI6NTkuNjI0Nzk1Nzg0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk0OTI1NTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNX09GRkxPQURcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzcxLVxcdGRlcGVuZHMgb24gSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnOjM3MjpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTc3PWNvbmZpZyBJTkVUNl9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy03OS1cXHRkZXBlbmRzIG9uIElORVQ2X0VTUFxcbm5ldC9pcHY2L0tjb25maWc6ODA6XFx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxcbm5ldC9pcHY2L0tjb25maWctODEtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjAyLjAxOTczMTU0MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU3NjkwMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFU1AgT2ZmbG9hZCBDb25maWd1cmF0aW9uIGZvciBUZXN0aW5nKipcblxuUmlnaHQsIHNvIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBib3RoLCBpbiBlZmZlY3QsIGNob29zZSBgWEZSTV9PRkZMT0FEYC4gVGhhdCdzIHRoZSBrZXkuIFRoYXQgbWVhbnMgaWYgSSB3YW50IHRvIHRob3JvdWdobHkgZXhhbWluZSBhbmQgdGVzdCB0aGUgRVNQIG9mZmxvYWQgcGF0aHMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBlbmFibGUgKmJvdGgqIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIHBvaW50IGlzIHRvIGNvdmVyIGJvdGggSVB2NCBhbmQgSVB2NiBpbXBsZW1lbnRhdGlvbnMuIExldCBtZSBzdGFydCBieSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gYElORVRfRVNQX09GRkxPQURgLCBtYWtpbmcgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgaW1wbGljYXRpb25zIG9mIGl0cyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5NSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjA1LjM3NzQyMzgyMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5MTkyNjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVF9FU1BfT0ZGTE9BRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzY4LVxcbm5ldC9pcHY0L0tjb25maWc6MzY5OmNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXFxubmV0L2lwdjQvS2NvbmZpZy0zNzAtXFx0dHJpc3RhdGUgXFxcIklQOiBFU1AgdHJhbnNmb3JtYXRpb24gb2ZmbG9hZFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MDcuODY5MzU2MTQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MDU2Nzc3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmaW5pbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIElQc2VjIE9mZmxvYWQqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB3b3JraW5nIHdpdGggdHJpc3RhdGUgb3B0aW9ucyBoZXJlLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggdGhlIHByb21wdHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgd2UgaW5jbHVkZSBgSU5FVF9FU1BfT0ZGTE9BRGAgYW5kIGBJTkVUNl9FU1BfT0ZGTE9BRGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFRoZXkncmUgY3JpdGljYWwgZm9yIHRoZSBvZmZsb2FkIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3MgcmVmaW5lIHRoZSBjb25maWd1cmF0aW9uIGxpc3QgaXRzZWxmLiBJJ20gdGhpbmtpbmcgd2UgbmVlZDpcbiogICBgWEZSTV9VU0VSYFxuKiAgIGBYRlJNX0lQVEZTYFxuKiAgIGBYRlJNX01JR1JBVEVgXG4qICAgYElORVRfRVNQX09GRkxPQURgXG4qICAgYElORVQ2X0VTUF9PRkZMT0FEYFxuKiAgIGBJUFY2YFxuXG5XYWl0IGEgbW9tZW50LCBJIGp1c3QgcmVhbGl6ZWQgdGhhdCBgWEZSTV9PRkZMT0FEYCBpcyBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IHRob3NlIG90aGVycywgc28gd2UgZG9uJ3QgbmVlZCB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIFRob3VnaCwgYWRkaW5nIGl0IHdvbid0IGh1cnQgZWl0aGVyLiBIb3dldmVyLCBiZWNhdXNlIGl0IGxhY2tzIGEgZGlyZWN0IHByb21wdCwgc2ltcGx5IHNldHRpbmcgYENPTkZJR19YRlJNX09GRkxPQUQ9eWAgbWlnaHQgbm90IGJlIGVub3VnaCBpbiBhIGBtYWtlIGRlZmNvbmZpZ2Agb3IgYG1ha2Ugb2xkY29uZmlnYCBzY2VuYXJpby4gSXQncyBjbGVhbmVyIGFuZCBtb3JlIHJvYnVzdCB0byBqdXN0IHNwZWNpZnkgdGhlIGRpcmVjdCBlbmFibGVzLCBhbmQgdGhhdCBtYWtlcyBtZSBsZWFuIGJhY2sgdG8gZXhwbGljaXRseSBtZW50aW9uaW5nIGBJTkVUX0VTUF9PRkZMT0FEYCBhbmQgYElORVQ2X0VTUF9PRkZMT0FEYCBpbnN0ZWFkLlxuXG5JIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIHByb21wdGluZyBvbiB0aGUgb3RoZXIgb25lcy4gTGV0J3MgbG9vayBhdCBgWEZSTV9NSUdSQVRFYCBhZ2Fpbi4uLiBZZXAsIGl0IGhhcyB0aGF0IHByb21wdCBcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcIi4gU28sIHRoYXQgb25lICpjYW4qIGJlIGRpcmVjdGx5IGVuYWJsZWQuIEdvb2QuXG5cbk5leHQsIEknbGwgY29uZmlybSBgWEZSTV9JUFRGU2AuIEl0IGhhcyBcIklQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCIuIFRoYXQncyBhIGdvb2QgcHJvbXB0OyB3ZSBjYW4gZGlyZWN0bHkgZW5hYmxlIHRoYXQuXG5cbkZpbmFsbHksIEknbGwgZ28gYmFjayB0byBjaGVjayBvbiBgWEZSTV9VU0VSYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3MzgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MTMuMjc1MDM2MjE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1NjUzMTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNX1VTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDA0OjQzOjE1Ljc1MDY5NTM5MVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzMwMDc3MjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFhGUk0gUGF0Y2ggYW5kIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggd2l0aCBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50IOKAkyB3ZSBoYXZlIGEgcHJvbXB0IHRvIHdvcmsgZnJvbS4gTGV0J3Mgc2VlLCB0aGUgY29uZmlncyB0aGF0IGFyZSByZWxldmFudCBhcmUgYFhGUk1fVVNFUmAsIGBYRlJNX0lQVEZTYCwgYFhGUk1fTUlHUkFURWAsIGBJTkVUX0VTUF9PRkZMT0FEYCwgYW5kIGBJTkVUNl9FU1BfT0ZGTE9BRGAuIEl0IHdvdWxkIGJlIHdpc2UgdG8gYWRkIGBJUFY2YCB0byB0aGF0IGxpc3QsIGV2ZW4gdGhvdWdoIGl0J3MgdHlwaWNhbGx5IGVuYWJsZWQuIEp1c3QgdG8gYmUgc3VyZSB3ZSBjb3ZlciBhbGwgYmFzZXMuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIGNvbXBvbmVudHMuIEkndmUgcmV2aWV3ZWQgdGhlIGBGb2N1c1N5bWJvbHNgLCB3aGljaCBnaXZlcyBtZSBhIGdvb2Qgb3ZlcnZpZXcuIFdlJ3ZlIGdvdCBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgYHhmcm02X2ZpbGxfZHN0YCwgYHhmcm1fZGV2X3N0YXRlX2FkZGAsIGBpcHRmc19za2JfYWRkX2ZyYWdzYCwgYG5hdF9rZWVwYWxpdmVfc2VuZGAsIGB4ZnJtX2hhc2hfcmVidWlsZGAsIGB4ZnJtX3N0YXRlX2ZpbmRgLCBgeGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBgLCBgeGZybV91c2VyX3BvbGljeWAsIGBfX3hmcm1faW5pdF9zdGF0ZWAsIGFuZCBgdmFsaWRhdGVfdG1wbGAuIFllcCwgdGhhdCdzIGEgY29tcHJlaGVuc2l2ZSBzZXQgb2YgZnVuY3Rpb25zLlxuXG5CYXNlZCBvbiB0aGUgcmVhc29uaW5nIHByb3ZpZGVkLCB0aGlzIHBhdGNoIHRhY2tsZXMgc29tZSBjcml0aWNhbCBpc3N1ZXMgd2l0aGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLiBNZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSwgZXJyb3JzIGluIElQdjYgcG9saWN5IHJvdXRpbmcsIGFuZCBoYW5kbGluZyBgLUVJTlBST0dSRVNTYCBhc3luYyBjcnlwdG8gYXJlIGFsbCBzZXJpb3VzLiBQbHVzLCB0aGUgcHJlZml4IGxlbmd0aCBidWcsIHVzZS1hZnRlci1mcmVlLCBhbmQgZGF0YSByYWNlcyBhcmUgdGhlIGtpbmQgb2YgdnVsbmVyYWJpbGl0aWVzIHdlIG5lZWQgdG8gYmUgdmVyeSBjb25jZXJuZWQgYWJvdXQuIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBjb3JlIGtlcm5lbCBsb2dpYywgd2hpY2ggbWVhbnMgdGhlc2UgY2hhbmdlcyAqbXVzdCogYmUgcmlnb3JvdXNseSBmdXp6ZWQgdG8gdmVyaWZ5IHRoZSBmaXhlcyBhbmQgcHJldmVudCBuZXcgcmVncmVzc2lvbnMuXG5cblNvLCB0aGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBwbGFuLiBJJ20gc2F0aXNmaWVkLiBMZXQncyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTU3OSwiT3V0cHV0VG9rZW5zIjoyOTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMDQ6NDM6MjMuMDgwNzc1ODU1WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU2MTMxMzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fSVBURlNcIixcbiAgICBcIlhGUk1fTUlHUkFURVwiLFxuICAgIFwiSU5FVF9FU1BfT0ZGTE9BRFwiLFxuICAgIFwiSU5FVDZfRVNQX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2YWxpZGF0ZV94bWl0X3hmcm1cIixcbiAgICBcInhmcm02X2ZpbGxfZHN0XCIsXG4gICAgXCJ4ZnJtX2Rldl9zdGF0ZV9hZGRcIixcbiAgICBcImlwdGZzX3NrYl9hZGRfZnJhZ3NcIixcbiAgICBcIm5hdF9rZWVwYWxpdmVfc2VuZFwiLFxuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc3RhdGVfZmluZFwiLFxuICAgIFwieGZybV9zdGF0ZV9jbG9uZV9hbmRfc2V0dXBcIixcbiAgICBcInhmcm1fdXNlcl9wb2xpY3lcIixcbiAgICBcIl9feGZybV9pbml0X3N0YXRlXCIsXG4gICAgXCJ2YWxpZGF0ZV90bXBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbXVsdGlwbGUgZnVuY3Rpb25hbCBidWdzIGluIHRoZSBYRlJNIChJUHNlYykgc3Vic3lzdGVtLCBpbmNsdWRpbmcgbWVtb3J5IGxlYWtzIGluIE5BVCBrZWVwYWxpdmUgYW5kIElQdjYgcG9saWN5IHJvdXRpbmcsIGluY29ycmVjdCBoYW5kbGluZyBvZiBhc3luYyBjcnlwdG8gcmV0dXJucyAoLUVJTlBST0dSRVNTKSBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiwgYSBwcmVmaXggbGVuZ3RoIGNoZWNrIGJ1ZyBpbiBoYXNoIHJlYnVpbGRpbmcsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdGllcyBkdXJpbmcgc3RhdGUgaW5pdGlhbGl6YXRpb24vY2xvbmluZywgYW5kIGRhdGEgcmFjZXMgaW4gdXNlciBvZmZsb2FkIHN0YXRlIGNvcHlpbmcuIEl0IGFsc28gYWRkcyBwcm9wZXIgdmFsaWRhdGlvbiBmb3IgSVBURlMgbW9kZSBhbmQgZml4ZXMgc2hhcmVkIGZyYWdtZW50IGhhbmRsaW5nIGluIElQVEZTLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9JUFRGU1wiLFxuICAgIFwiWEZSTV9NSUdSQVRFXCIsXG4gICAgXCJJTkVUX0VTUF9PRkZMT0FEXCIsXG4gICAgXCJJTkVUNl9FU1BfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZhbGlkYXRlX3htaXRfeGZybVwiLFxuICAgIFwieGZybTZfZmlsbF9kc3RcIixcbiAgICBcInhmcm1fZGV2X3N0YXRlX2FkZFwiLFxuICAgIFwiaXB0ZnNfc2tiX2FkZF9mcmFnc1wiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV9zZW5kXCIsXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zdGF0ZV9maW5kXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2Nsb25lX2FuZF9zZXR1cFwiLFxuICAgIFwieGZybV91c2VyX3BvbGljeVwiLFxuICAgIFwiX194ZnJtX2luaXRfc3RhdGVcIixcbiAgICBcInZhbGlkYXRlX3RtcGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBtdWx0aXBsZSBmdW5jdGlvbmFsIGJ1Z3MgaW4gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGluY2x1ZGluZyBtZW1vcnkgbGVha3MgaW4gTkFUIGtlZXBhbGl2ZSBhbmQgSVB2NiBwb2xpY3kgcm91dGluZywgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIGFzeW5jIGNyeXB0byByZXR1cm5zICgtRUlOUFJPR1JFU1MpIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uLCBhIHByZWZpeCBsZW5ndGggY2hlY2sgYnVnIGluIGhhc2ggcmVidWlsZGluZywgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzIGR1cmluZyBzdGF0ZSBpbml0aWFsaXphdGlvbi9jbG9uaW5nLCBhbmQgZGF0YSByYWNlcyBpbiB1c2VyIG9mZmxvYWQgc3RhdGUgY29weWluZy4gSXQgYWxzbyBhZGRzIHByb3BlciB2YWxpZGF0aW9uIGZvciBJUFRGUyBtb2RlIGFuZCBmaXhlcyBzaGFyZWQgZnJhZ21lbnQgaGFuZGxpbmcgaW4gSVBURlMuIFRoZXNlIGFyZSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowpptdz[1] Phase: Succeeded StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 04:43:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 04:43:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2] Phase: Succeeded StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 04:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 04:43:50 +0000 UTC FinishedAt: 2026-07-11 04:44:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowpptdz/series-workflowpptdz-convert-artifact-88327673/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 04:44:47 +0000 UTC FinishedAt: 2026-07-11 05:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 04:44:47 +0000 UTC FinishedAt: 2026-07-11 05:16: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:*c2d7955e-1f61-4dd3-86d3-cb26711b3bdc,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-workflowpptdz/series-workflowpptdz-convert-artifact-88327673/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": "c7d7d1ec-5c4e-4bc3-9723-8ed7eb2f3826", "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-workflowpptdz/series-workflowpptdz-build-action-2740739863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 04:44:47 +0000 UTC FinishedAt: 2026-07-11 05:16:40 +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:*c2d7955e-1f61-4dd3-86d3-cb26711b3bdc,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-workflowpptdz/series-workflowpptdz-convert-artifact-88327673/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": "c7d7d1ec-5c4e-4bc3-9723-8ed7eb2f3826", "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-workflowpptdz/series-workflowpptdz-build-action-2740739863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 05:16:50 +0000 UTC FinishedAt: 2026-07-11 05:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 05:16:50 +0000 UTC FinishedAt: 2026-07-11 05:16:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 05:16:50 +0000 UTC FinishedAt: 2026-07-11 05:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 05:16:50 +0000 UTC FinishedAt: 2026-07-11 05:16:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowpptdz/series-workflowpptdz-convert-artifact-346487244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 05:17:01 +0000 UTC FinishedAt: 2026-07-11 05:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 05:17:01 +0000 UTC FinishedAt: 2026-07-11 05:18:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c7d7d1ec-5c4e-4bc3-9723-8ed7eb2f3826,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-workflowpptdz/series-workflowpptdz-build-action-2740739863/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-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 05:19:04 +0000 UTC FinishedAt: 2026-07-11 05:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 05:19:04 +0000 UTC FinishedAt: 2026-07-11 05:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 05:19:04 +0000 UTC FinishedAt: 2026-07-11 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 05:19:04 +0000 UTC FinishedAt: 2026-07-11 05:45:34 +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:*c2d7955e-1f61-4dd3-86d3-cb26711b3bdc,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-workflowpptdz/series-workflowpptdz-convert-artifact-346487244/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": "983e80ed-102b-47ca-995f-1db622350bca", "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-workflowpptdz/series-workflowpptdz-build-action-4144056296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 05:19:04 +0000 UTC FinishedAt: 2026-07-11 05:44:52 +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:*c2d7955e-1f61-4dd3-86d3-cb26711b3bdc,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-workflowpptdz/series-workflowpptdz-convert-artifact-346487244/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": "983e80ed-102b-47ca-995f-1db622350bca", "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-workflowpptdz/series-workflowpptdz-build-action-4144056296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 05:45:34 +0000 UTC FinishedAt: 2026-07-11 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 05:45:34 +0000 UTC FinishedAt: 2026-07-11 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 05:45:34 +0000 UTC FinishedAt: 2026-07-11 05:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 05:45:34 +0000 UTC FinishedAt: 2026-07-11 05:47:44 +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:*983e80ed-102b-47ca-995f-1db622350bca,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-workflowpptdz/series-workflowpptdz-build-action-4144056296/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-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"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:*c7d7d1ec-5c4e-4bc3-9723-8ed7eb2f3826,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*983e80ed-102b-47ca-995f-1db622350bca,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-workflowpptdz/series-workflowpptdz-build-action-2740739863/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-workflowpptdz/series-workflowpptdz-build-action-4144056296/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 05:48:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 05:47:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"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-workflowpptdz/series-workflowpptdz-convert-artifact-3896476725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 05:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 05:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 05:47:54 +0000 UTC FinishedAt: 2026-07-11 05:47:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 05:48:05 +0000 UTC FinishedAt: 2026-07-11 08:50:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpptdz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm","xfrm6_fill_dst","xfrm_dev_state_add","iptfs_skb_add_frags","nat_keepalive_send","xfrm_hash_rebuild","xfrm_state_find","xfrm_state_clone_and_setup","xfrm_user_policy","__xfrm_init_state","validate_tmpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_IPTFS","XFRM_MIGRATE","INET_ESP_OFFLOAD","INET6_ESP_OFFLOAD"],"series_id":"f7d3b100-a948-42d1-bd19-0352af6e4535","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 05:48:05 +0000 UTC FinishedAt: 2026-07-11 08:50:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c7d7d1ec-5c4e-4bc3-9723-8ed7eb2f3826,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*983e80ed-102b-47ca-995f-1db622350bca,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-workflowpptdz/series-workflowpptdz-build-action-2740739863/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-workflowpptdz/series-workflowpptdz-build-action-4144056296/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-workflowpptdz/series-workflowpptdz-convert-artifact-3896476725/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,}