Name: series-workflowbjvf9 Phase: Succeeded StartedAt: 2026-07-29 20:00:20 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[0] Phase: Succeeded StartedAt: 2026-07-29 20:00:20 +0000 UTC FinishedAt: 2026-07-29 20:05:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 20:00:20 +0000 UTC FinishedAt: 2026-07-29 20:05:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "5c08293d-e332-4e19-a85a-122763c00c92" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_remain_on_channel", "nl80211_tx_mgmt", "nl80211_probe_peer", "nl80211_tx_control_port", "ieee80211_remain_on_channel", "ieee80211_mgmt_tx", "ieee80211_tx_control_port" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDIwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuQEAgLTMwMzQsMjAgJiM0MzszMDM0LDE0IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0ICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiYjNDM7XHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gJiM0MzsmIzQzO3ZpZi1cdTAwM2VsYXN0X3JvY19pZDtcbi1cdGlmIChpZCA9PSAwKSB7XG4tXHRcdC8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovXG4tXHRcdGlkID0gJiM0MzsmIzQzO3ZpZi1cdTAwM2VsYXN0X3JvY19pZDtcbi1cdH1cbi1cdCpjb29raWUgPSBpZDtcbiYjNDM7XHR2aWYtXHUwMDNlbGFzdF9yb2NfaWQgPSBjb29raWU7XG4gXG4gXHRyZXR1cm4gYXRoNmtsX3dtaV9yZW1haW5fb25fY2hubF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCxcbiBcdFx0XHRcdFx0ICAgICBjaGFuLVx1MDAzZWNlbnRlcl9mcmVxLCBkdXJhdGlvbik7XG5AQCAtMzEwNiw2ICYjNDM7MzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgICB1MzIgZnJlcSxcbiBcdFx0XHRcdCAgICAgdTMyIHdhaXQsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHU4ICpidWYsXG5AQCAtMzEzOCw2ICYjNDM7MzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIFx0XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1nbXRfYnVmLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWlkID0gaWQ7XG4mIzQzO1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICYjNDM7MzE4Niw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG5AQCAtMzIyMiw3ICYjNDM7MzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICYjNDM7MzIzMCwxNSBAQCBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGlkID0gdmlmLVx1MDAzZXNlbmRfYWN0aW9uX2lkJiM0MzsmIzQzOztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbiYjNDM7XHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBjb29raWUsIGZyZXEsIHdhaXQsXG4mIzQzO1x0XHRcdFx0XHRcdCAgYnVmLCBsZW4sIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbiBcdFx0aWYgKHF1ZXVlZClcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiYjNDM7XHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7XG4gXHR1MzIgZnJlcTtcbiBcdHUzMiB3YWl0O1xuIFx0dTMyIGlkO1xuJiM0MztcdHU2NCBjb29raWU7XG4gXHRib29sIG5vX2NjaztcbiBcdHNpemVfdCBsZW47XG4gXHR1OCBidWZbXTtcbkBAIC02MzEsOCAmIzQzOzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbiYjNDM7XHR1NjQgbGFzdF9yb2NfaWQ7XG4mIzQzO1x0dTY0IGxhc3RfY2FuY2VsX3JvY19pZDtcbiBcdHUzMiBzZW5kX2FjdGlvbl9pZDtcbiBcdGJvb2wgcHJvYmVfcmVxX3JlcG9ydDtcbiBcdHUxNiBhc3NvY19ic3NfYmVhY29uX2ludDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG5pbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG5AQCAtODk4LDYgJiM0Mzs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbiYjNDM7XHRcdGFyLVx1MDAzZXdtaS1cdTAwM2VsYXN0X21nbXRfdHhfY29va2llID0gbWdtdF9idWYtXHUwMDNlY29va2llO1xuIFx0XHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCxcbiBcdFx0XHRcdFx0IG1nbXRfYnVmLVx1MDAzZWlkLCBtZ210X2J1Zi1cdTAwM2VmcmVxLFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNld2FpdCwgbWdtdF9idWYtXHUwMDNlYnVmLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbmluZGV4IDk3ZmRhYzcyMzdlMjYuLmI0ZDNjNWNmZjg4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNDY5LDYgJiM0MzsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldClcbiBcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2Vwc3FfbG9jayk7XG4gXHRcdFx0XHRcdGlkeCA9IHZpZi1cdTAwM2Vmd192aWZfaWR4O1xuIFxuJiM0MztcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IGMwYzQ1NWQ2ZTJkY2MuLjg4OGJiYmI1ZDE3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTg0LDcgJiM0Mzs1ODQsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuIFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXCYjMzQ7dHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XFxuXCYjMzQ7LFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4mIzQzO1x0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2Rldiwgd21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUsXG4gXHRcdFx0XHRcdHdtaS1cdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUsXG4gXHRcdFx0XHRcdHdtaS1cdTAwM2VsYXN0X21nbXRfdHhfZnJhbWVfbGVuLFxuIFx0XHRcdFx0XHQhIWV2LVx1MDAzZWFja19zdGF0dXMsIEdGUF9BVE9NSUMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5pbmRleCA4ZmJlY2UzZmRhZDlmLi44OWNlMmFiYmIxY2RjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxuQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IHdtaSB7XG4gXG4gXHR1OCAqbGFzdF9tZ210X3R4X2ZyYW1lO1xuIFx0c2l6ZV90IGxhc3RfbWdtdF90eF9mcmFtZV9sZW47XG4mIzQzO1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyAmIzQzOzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4gXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cdTAwM2VidWY7XG4gXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbkBAIC0xNDg4LDggJiM0MzsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xuIFxuIFx0cmV0dXJuIHJjO1xuIH1cbkBAIC0xNzM1LDcgJiM0MzsxNzM0LDcgQEAgc3RhdGljIGludCB3aWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbiBcdFx0XHRcdCB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuJiM0MztcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyAmIzQzOzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpXG4gXG4gc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSBuZGV2X3RvX3ZpZihkZXYpO1xuQEAgLTIzOTksMTMgJiM0MzsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbiYjNDM7XHRyZXEtXHUwMDNlY29va2llID0gY29va2llO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cmVxLVx1MDAzZWxpc3QsIFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfcGVuZGluZyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9tdXRleCk7XG4gXG4tXHQqY29va2llID0gcmVxLVx1MDAzZWNvb2tpZTtcbiBcdHF1ZXVlX3dvcmsod2lsLVx1MDAzZXdxX3NlcnZpY2UsIFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfd29ya2VyKTtcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcbmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuQEAgLTk4NSw3ICYjNDM7OTg1LDcgQEAgc3RhdGljIHNzaXplX3Qgd2lsX3dyaXRlX2ZpbGVfdHhtZ210KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0cGFyYW1zLmJ1ZiA9IGZyYW1lO1xuIFx0cGFyYW1zLmxlbiA9IGxlbjtcbiBcbi1cdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFx1MDAyNnBhcmFtcywgTlVMTCk7XG4mIzQzO1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCYjMzQ7LVx1MDAzZSAlZFxcblwmIzM0OywgcmMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbkBAIC0xMjQsNyAmIzQzOzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gd2Rldl90b192aWYod2lsLCB3ZGV2KTtcbiBcdHN0cnVjdCB3aWxfcDJwX2luZm8gKnAycCA9IFx1MDAyNnZpZi1cdTAwM2VwMnA7XG5AQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0fVxuIFxuIFx0bWVtY3B5KFx1MDAyNnAycC1cdTAwM2VsaXN0ZW5fY2hhbiwgY2hhbiwgc2l6ZW9mKCpjaGFuKSk7XG4tXHQqY29va2llID0gJiM0MzsmIzQzO3AycC1cdTAwM2Vjb29raWU7XG4mIzQzO1x0cDJwLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdHAycC1cdTAwM2VsaXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2d2lsLVx1MDAzZXZpZl9tdXRleCk7XG5AQCAtMTY2LDcgJiM0MzsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuIFxuIG91dDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcbmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuQEAgLTEzMDEsNyAmIzQzOzEzMDEsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcXVlc3QpO1xuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgJiM0MzsxMzE3LDcgQEAgaW50IHdtaV9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7XG4gXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpO1xuIGludCB3aWxfY2ZnODAyMTFfaWZhY2VfY29tYmluYXRpb25zX2Zyb21fZncoXG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggMjBmN2ZjY2Q2MTIxNS4uODA5MzcyNGU2ZDIyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTU1NTQsNyAmIzQzOzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuJiM0MztcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtNTU3Myw4ICYjNDM7NTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4tXG4gXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcbiBcbiBcdGlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuQEAgLTU2MDUsNyAmIzQzOzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLFxuIFx0XHRcdFx0XHQgICAgXHUwMDI2YnVmW2llX29mZnNldF0sXG4gXHRcdFx0XHRcdCAgICBpZV9sZW4pO1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICYjNDM7IERPVDExX01HTVRfSERSX0xFTikge1xuQEAgLTU2MjEsNyAmIzQzOzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdH1cbiBcdFx0YWN0aW9uX2ZyYW1lID0gXHUwMDI2YWZfcGFyYW1zLVx1MDAzZWFjdGlvbl9mcmFtZTtcbiBcdFx0LyogQWRkIHRoZSBwYWNrZXQgSWQgKi9cbi1cdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuJiM0MztcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICYjNDM7NTY0NywxMiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSk7XG4gXG4gXHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7QWN0aW9uIGZyYW1lLCBjb29raWU9JWxsZCwgbGVuPSVkLCBjaGFubmVsPSVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4mIzQzO1x0XHRcdCAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSxcbiBcdFx0XHQgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cdTAwM2VjaGFubmVsKSk7XG4gXG4gXHRcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSh2aWYtXHUwMDNlaWZwLCBhZl9wYXJhbXMpO1xuIFxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLFxuIFx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0XHRrZnJlZShhZl9wYXJhbXMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbkBAIC00OTcsNiAmIzQzOzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XG4gXG4gI2VuZGlmIC8qIEJSQ01GTUFDX0NGRzgwMjExX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5pbmRleCBjZTA5ZDQ0ZmE3M2NmLi40OWIzM2VmZTIyYjQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5AQCAtMTAwLDcgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApXG4gXG4gc3RhdGljXG4gaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgJiM0MzsxMjMsNiBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0cmV0dXJuIGJyY21mX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbiBcbi1cdCpjb29raWUgPSAwO1xuIFx0dmlmID0gY29udGFpbmVyX29mKHdkZXYsIHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYsIHdkZXYpO1xuIFxuIFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2dmlmLVx1MDAzZW1nbXRfdHgpO1xuQEAgLTE1NSw3ICYjNDM7MTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWJzc2lkWzBdLCBcdTAwMjZtZ210LVx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XG4tXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4mIzQzO1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCAmIzQzOzE4Niw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0fVxuIFxuIHR4X3N0YXR1czpcbi1cdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4tXHRcdFx0XHRHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIGZyZWU6XG4gXHRrZnJlZShtZl9wYXJhbXMpO1xuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbmluZGV4IGM3ZDdiMzVhYjEyNTMuLjMyYTAxNWQ2Yjc2OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTk3OSwxMCAmIzQzOzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuJiM0MztcdGlmICghZXJyKVxuIFx0XHRzZXRfYml0KEJSQ01GX1AyUF9TVEFUVVNfRElTQ09WRVJfTElTVEVOLCBcdTAwMjZwMnAtXHUwMDNlc3RhdHVzKTtcbi1cdFx0cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSYjNDM7JiM0Mzs7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyAmIzQzOzk5OCw3IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gICovXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcbkBAIC0xMDIwLDggJiM0MzsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSA9IGNvb2tpZTtcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuIFxuIGV4aXQ6XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG5AQCAtMTU3LDcgJiM0MzsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfZXZlbnRfbXNnICplLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbmluZGV4IDk5ZDk2MDg4ZTM2NGMuLmRlOTk1M2VjYmVmZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gICovXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCAmIzQzOzI1OSwxMyBAQCBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHR4X2luZm8tXHUwMDNlcGt0X2xlbiA9IHBrdF9sZW47XG4gXG4gXHRtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShza2IsIGJ1ZiwgbGVuKTtcbi1cdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcbiBcbiBcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdHNrYiA9IG13aWZpZXhfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcbiBcdFx0XHRcdFx0XHQgICAgICBza2IsXG4tXHRcdFx0XHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XG4mIzQzO1x0XHRcdFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcdTAwMjZjb29raWUpO1xuIFx0ZWxzZVxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgJiM0MzszMDMsMTMgQEAgc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPSBtd2lmaWV4X25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcbiYjNDM7XHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7SW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTMyNiwxNSAmIzQzOzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuJiM0MztcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcbiBcbi1cdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLFxuJiM0MztcdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXG4gXHRcdFx0XHRcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xuIFxuIFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG4tXHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00NTYwLDcgJiM0Mzs0NTU4LDcgQEAgbXdpZmlleF9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxuLVx0XHRcdCAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJiMzOTt0IHN1cHBvcnQpLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcbmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcbkBAIC0xMTAwLDI0ICYjNDM7MTEwMCwxOSBAQCBzdGF0aWMgdm9pZCB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLCB1NjQgY29va2llKVxuIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCYjMzQ7UmVxdWlyZWQgd2hpbGUgaW4gQVAgbW9kZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHRpZCA9ICYjNDM7JiM0Mztwcml2LVx1MDAzZWluY19yb2NfY29va2llO1xuLVx0aWYgKGlkID09IDApXG4tXHRcdGlkID0gJiM0MzsmIzQzO3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4mIzQzO1x0cmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGNvb2tpZSwgY2hhbi1cdTAwM2Vod192YWx1ZSxcbiBcdFx0XHRcdCAgICAgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTExMjUsMTIgJiM0MzsxMTIwLDExIEBAIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHZpZi1cdTAwM2V3aWxjLVx1MDAzZW9wX2NoID0gY2hhbi1cdTAwM2Vod192YWx1ZTtcbiBcbiBcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuO1xuLVx0cHJpdi1cdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDtcbi1cdCpjb29raWUgPSBpZDtcbiYjNDM7XHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuIFx0bW9kX3RpbWVyKFx1MDAyNnZpZi1cdTAwM2VoaWZfZHJ2LVx1MDAzZXJlbWFpbl9vbl9jaF90aW1lcixcbiBcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gJiM0MzsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyAmIzQzOzExNDcsNyBAQCBzdGF0aWMgaW50IGNhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cdTAwM2VjaGFuO1xuIFx0dW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtXHUwMDNld2FpdDtcbkBAIC0xMTcwLDggJiM0MzsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRwcml2LVx1MDAzZXR4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiAvKiBjZmc4MDIxMSBvcGVyYXRpb24gaGFuZGxlciB0byB0cmFuc21pdCBhIG1hbmFnZW1lbnQgZnJhbWUuICovXG4gc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCAmIzQzOzIxMiwxMyBAQCBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHR4X2luZm8tXHUwMDNlcGt0X2xlbiA9IHBrdF9sZW47XG4gXG4gXHRueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShza2IsIGJ1ZiwgbGVuKTtcbi1cdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi1cdTAwM2VhZGFwdGVyKTtcbiBcbiBcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdHNrYiA9IG54cHdpZmlfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcbiBcdFx0XHRcdFx0XHQgICAgICBza2IsXG4tXHRcdFx0XHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XG4mIzQzO1x0XHRcdFx0TlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcdTAwMjZjb29raWUpO1xuIFx0ZWxzZVxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgJiM0MzsyNTMsMTQgQEAgc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4mIzQzO1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5AQCAtMjc3LDE1ICYjNDM7Mjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuJiM0MztcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcbiBcbi1cdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLFxuJiM0MztcdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXG4gXHRcdFx0XHRcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xuIFxuIFx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwmIzM0OywgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICBcJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwmIzM0OywgY29va2llKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtMzYxOCw3ICYjNDM7MzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxuLVx0XHRcdCAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICYjNDM7NDQ2LDcgQEAgcXRuZl91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gc3RhdGljIGludFxuIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgcXRuZl92aWYgKnZpZiA9IHF0bmZfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZWJ1ZjtcbkBAIC00NTQsOCAmIzQzOzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCAxNWMwOGIyNDUwMmZkLi43YjM0NjIyNmZlNzQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDcsNyAmIzQzOzUxMDcsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiBAdGRsc19vcGVyOiBQZXJmb3JtIGEgaGlnaC1sZXZlbCBURExTIG9wZXJhdGlvbiAoZS5nLiBURExTIGxpbmsgc2V0dXApLlxuICAqXG4gICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksXG4tICpcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxuJiM0MzsgKlx0bXVzdCB1c2UgdGhlIEBjb29raWUgYXMgcHJvdmlkZWQgd2hpY2ggaXMgbGF0ZXIgcGFzc2VkIHRvXG4mIzQzOyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE4LDcgJiM0Mzs1MjE5LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4gICogICAgIHVzZXIgc3BhY2VcbiAgKlxuICAqIEB0eF9jb250cm9sX3BvcnQ6IFRYIGEgY29udHJvbCBwb3J0IGZyYW1lIChFQVBvTCkuICBUaGUgbm9lbmNyeXB0IHBhcmFtZXRlclxuLSAqXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLlxuJiM0MzsgKlx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llXG4mIzQzOyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU1LDE0ICYjNDM7NTQ1NywxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4gXHRpbnRcdCgqY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUwOSw3ICYjNDM7NTUxMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcbiBcbiBcdGludFx0KCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTU2MDcsNyAmIzQzOzU2MDksNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHRcdCAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbmluZGV4IGRmNjhhNWJkZWIyZjAuLjMxMGMxNDU2MDA2NWQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTQ4MjcsMTkgJiM0Mzs0ODI3LDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG4gfVxuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4te1xuLVx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuLVxuLVx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdC8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi9cbi1cdGlmIChXQVJOX09OKGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlciA9PSAwKSlcbi1cdFx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY0LDcgJiM0Mzs0ODUxLDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cdTAwM2VzdGF0dXNfZGF0YV9pZHIgPSAxO1xuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhID0gaWQ7XG4gXG4tXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbiBcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC00OTUwLDcgJiM0Mzs0OTM2LDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA1Nyw3ICYjNDM7NTA0Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChxb3MpXG4gXHRcdG51bGxmdW5jLVx1MDAzZXFvc19jdHJsID0gY3B1X3RvX2xlMTYoNyk7XG4gXG4tXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggMTFmNDQ5ZThmZjAwMy4uNGYxZjUyZjZlZGNiYiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE3MDgsOCAmIzQzOzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk4OSw3ICYjNDM7MTk4Nyw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIFxuIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9xdWV1ZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7XG4gXG5AQCAtMjE1MSwxMiAmIzQzOzIxNDgsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG4gXG5AQCAtMjIzNSw3ICYjNDM7MjIzMiw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdCAgdTMyIGN0cmxfZmxhZ3MsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI0OSw3ICYjNDM7MjI0Niw3IEBAIHZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXG4tXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7XG4gdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcbmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5AQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4mIzQzO1x0ICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTFcbiBcdCAqL1xuLVx0aWYgKCF0eHNrYikge1xuLVx0XHRyb2MtXHUwMDNlY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbi1cdFx0KmNvb2tpZSA9IHJvYy1cdTAwM2Vjb29raWU7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGlmICghdHhza2IpXG4mIzQzO1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRlbHNlXG4gXHRcdHJvYy1cdTAwM2VtZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7XG4tXHR9XG4gXG4gXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlc2Nhbl9yZXEpO1xuIFxuQEAgLTcwNCw3ICYjNDM7NzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiBcbiBcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxuLVx0XHRcdFx0XHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgTlVMTCxcbiBcdFx0XHRcdFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XG4gfVxuIFxuQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC0xMDE2LDE4ICYjNDM7MTAxNCwxMSBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0LyogbWFrZSBhIGNvcHkgdG8gcHJlc2VydmUgdGhlIGZyYW1lIGNvbnRlbnRzXG4gXHRcdCAqIGluIGNhc2Ugb2YgZW5jcnlwdGlvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG9cbi1cdFx0ICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWVcbi1cdFx0ICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2hcbi1cdFx0ICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLlxuLVx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDB4ZmZmZmZmZmY7XG4gXHR9XG4gXG4gXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xuQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xuIFx0cmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLVx1MDAzZWNoYW4sXG4tXHRcdFx0XHQgICAgICAgcGFyYW1zLVx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICYjNDM7MTEyMSw3IEBAIGllZWU4MDIxMV90ZGxzX3ByZXBfbWdtdF9wYWNrZXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCBmbGFncyxcbi1cdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggZWIzNmYxYjk3NzFiNS4uNTU0OWNiOGQ1Y2RhMSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xuIFx0dTE2IGluZm9faWQgPSAwO1xuQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0aWYgKGlkIFx1MDAzZT0gMCkge1xuIFx0XHRcdGluZm9faWQgPSBpZDtcbiBcdFx0XHQqaW5mb19mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX1JFUV9UWF9TVEFUVVM7XG4tXHRcdFx0aWYgKGNvb2tpZSkge1xuLVx0XHRcdFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XG4tXHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xuLVx0XHRcdH1cbiYjNDM7XHRcdFx0aWYgKGNvb2tpZSlcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSBjb29raWU7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0a2ZyZWVfc2tiKGFja19za2IpO1xuIFx0XHR9XG5AQCAtMjY0MSw3ICYjNDM7MjYzOSw3IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00MzM3LDcgJiM0Mzs0MzM1LDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgIHUzMiBpbmZvX2ZsYWdzLFxuIFx0XHRcdFx0ICB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNDUzMiw3ICYjNDM7NDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4mIzQzO1x0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtNDU0Nyw4ICYjNDM7NDU0NSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKF9fZmZzKGxpbmtzKSxcbiBcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuIFxuLVx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NTkwLDcgJiM0Mzs0NTg3LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnF1ZXVlKSkpXG4gXHRcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcbiBcdFx0XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQyxcbi1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgIDApO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIE1MT19NQ0FTVF9NVUxUSV9MSU5LX1RYKSkgfHxcbkBAIC00NjAxLDcgJiM0Mzs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH1cbiBcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG5AQCAtNDcwMCw3ICYjNDM7NDY5Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0LyogZmFsbCBiYWNrIHRvIG5vbi1vZmZsb2FkIHNsb3cgcGF0aCAqL1xuIFx0XHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXG4tXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzM2LDcgJiM0Mzs0NzMzLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcbiBcdGlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItXHUwMDNlc2spKSkge1xuIFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcbi1cdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpbmZvLVx1MDAzZWZsYWdzLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aW5mby1cdTAwM2VmbGFncywgMCk7XG4gXHRcdGlmIChpbmZvLVx1MDAzZXN0YXR1c19kYXRhKVxuIFx0XHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcbiBcdH1cbkBAIC00ODc5LDcgJiM0Mzs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRpZiAoSVNfRVJSKHNrYikpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTY0OTQsNyAmIzQzOzY0OTEsNyBAQCB2b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuLVx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjI5LDcgJiM0Mzs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItXHUwMDNlZGV2LCAwLFxuIFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9TS0lQX01QQVRIX0xPT0tVUCxcbi1cdFx0XHRcdCAgICAgTlVMTCk7XG4mIzQzO1x0XHRcdFx0ICAgICAwKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IDM5OTAzNzUxNDk0M2QuLmIzZWFkOThhZWUwN2EgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICB1NjQgY29va2llKTtcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXBhX21hc2spO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuaW5kZXggMmEyYzE3MzA1OGJhYy4uMzRmOTAwM2Q1YzU0MSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmNcbkBAIC04NTEsNyAmIzQzOzg1MSw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCBhYzBjMGRhNDUyNDE5Li43MDhlOGJiOGRhZmRkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjMwLDggJiM0MzsxNDYzMCw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFx0fVxuIFxuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbixcbi1cdFx0XHRcdCAgICAgZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4NzEsNyAmIzQzOzE0ODcyLDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdH1cbiBcbiBcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xuLVx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFx1MDAyNnBhcmFtcywgXHUwMDI2Y29va2llKTtcbiYjNDM7XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuJiM0MztcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzU5LDcgJiM0MzsxNjM2MSw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4tXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBcdTAwMjZjb29raWUpO1xuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4mIzQzO1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1NzQsMTAgJiM0MzsxODU3NywxMSBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gXHRsaW5rX2lkID0gbmw4MDIxMV9saW5rX2lkX29yX2ludmFsaWQoaW5mby1cdTAwM2VhdHRycyk7XG4gXG4mIzQzO1x0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbiBcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4gXHRcdFx0XHQgICBkZXN0LCBjcHVfdG9fYmUxNihwcm90byksIG5vZW5jcnlwdCwgbGlua19pZCxcbi1cdFx0XHRcdCAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6IFx1MDAyNmNvb2tpZSk7XG4tXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxuJiM0MztcdFx0XHRcdCAgIGNvb2tpZSk7XG4mIzQzO1x0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IGNvb2tpZSlcbiBcdFx0bmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tXHUwMDNlZXh0YWNrLCBjb29raWUpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjIwMzAsNiAmIzQzOzIyMDM0LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuIFx0dm9pZCAqaGRyO1xuIFxuJiM0MztcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbiYjNDM7XHRpZiAoIXN0YXR1cy1cdTAwM2Vjb29raWUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICYjNDM7NzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50XG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9yZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgICAgcnhfYWRkcik7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLFxuIFx0XHRcdFx0XHQgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9tZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICYjNDM7Nzc1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90eF9jb250cm9sX3BvcnQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHRcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IGJvb2wgbm9lbmNyeXB0LCBpbnQgbGluayxcbi1cdFx0XHRcdCAgICAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0ZWxzZVxuIFx0XHR0cmFjZV9yZGV2X3JldHVybl9pbnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuJiM0MztcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYwppbmRleCBlY2RlOTExNTliNTQ2Li4zNDAyNWQ2NGQ2MTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCkBAIC0zMDM0LDIwICYjNDM7MzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCiAJCQkJICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwKLQkJCQkgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQomIzQzOwkJCQkgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpOwogCXN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLSZndDtuZGV2KTsKLQl1MzIgaWQ7CiAKIAkvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCwKIAkgKiByZXR1cm4gLUVCVVNZICovCi0JaWQgPSAmIzQzOyYjNDM7dmlmLSZndDtsYXN0X3JvY19pZDsKLQlpZiAoaWQgPT0gMCkgewotCQkvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqLwotCQlpZCA9ICYjNDM7JiM0Mzt2aWYtJmd0O2xhc3Rfcm9jX2lkOwotCX0KLQkqY29va2llID0gaWQ7CiYjNDM7CXZpZi0mZ3Q7bGFzdF9yb2NfaWQgPSBjb29raWU7CiAKIAlyZXR1cm4gYXRoNmtsX3dtaV9yZW1haW5fb25fY2hubF9jbWQoYXItJmd0O3dtaSwgdmlmLSZndDtmd192aWZfaWR4LAogCQkJCQkgICAgIGNoYW4tJmd0O2NlbnRlcl9mcmVxLCBkdXJhdGlvbik7CkBAIC0zMTA2LDYgJiM0MzszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsCiAKIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLAogCQkJCSAgICAgdTMyIGlkLAomIzQzOwkJCQkgICAgIHU2NCBjb29raWUsCiAJCQkJICAgICB1MzIgZnJlcSwKIAkJCQkgICAgIHUzMiB3YWl0LAogCQkJCSAgICAgY29uc3QgdTggKmJ1ZiwKQEAgLTMxMzgsNiAmIzQzOzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwKIAogCQkJSU5JVF9MSVNUX0hFQUQoJmFtcDttZ210X2J1Zi0mZ3Q7bGlzdCk7CiAJCQltZ210X2J1Zi0mZ3Q7aWQgPSBpZDsKJiM0MzsJCQltZ210X2J1Zi0mZ3Q7Y29va2llID0gY29va2llOwogCQkJbWdtdF9idWYtJmd0O2ZyZXEgPSBmcmVxOwogCQkJbWdtdF9idWYtJmd0O3dhaXQgPSB3YWl0OwogCQkJbWdtdF9idWYtJmd0O2xlbiA9IGxlbjsKQEAgLTMxOTAsNyAmIzQzOzMxODYsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKIH0KIAogc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7CiAJc3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtJmd0O25kZXYpOwpAQCAtMzIyMiw3ICYjNDM7MzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JCiAJCSAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy4KIAkJICovCi0JCSpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqLwogCQlyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTsKIAl9CiAKQEAgLTMyMzUsMTYgJiM0MzszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJaWQgPSB2aWYtJmd0O3NlbmRfYWN0aW9uX2lkJiM0MzsmIzQzOzsKIAl9CiAKLQkqY29va2llID0gaWQ7Ci0KIAkvKiBBUCBtb2RlIFBvd2VyIHNhdmluZyBwcm9jZXNzaW5nICovCiAJaWYgKHZpZi0mZ3Q7bndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7Ci0JCXF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbiwKLQkJCQkJCSAgJmFtcDttb3JlX2RhdGEsIG5vX2Njayk7CiYjNDM7CQlxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgY29va2llLCBmcmVxLCB3YWl0LAomIzQzOwkJCQkJCSAgYnVmLCBsZW4sICZhbXA7bW9yZV9kYXRhLCBub19jY2spOwogCQlpZiAocXVldWVkKQogCQkJcmV0dXJuIDA7CiAJfQogCiYjNDM7CWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBjb29raWU7CiAJcmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsIGlkLCBmcmVxLAogCQkJCQl3YWl0LCBidWYsIGxlbiwgbm9fY2NrKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKaW5kZXggNzdlMDUyMzM2ZWI1Yi4uYTBiMjM2ZWVlYWI1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKQEAgLTQwNCw2ICYjNDM7NDA0LDcgQEAgc3RydWN0IGF0aDZrbF9tZ210X2J1ZmYgewogCXUzMiBmcmVxOwogCXUzMiB3YWl0OwogCXUzMiBpZDsKJiM0MzsJdTY0IGNvb2tpZTsKIAlib29sIG5vX2NjazsKIAlzaXplX3QgbGVuOwogCXU4IGJ1ZltdOwpAQCAtNjMxLDggJiM0Mzs2MzIsOCBAQCBzdHJ1Y3QgYXRoNmtsX3ZpZiB7CiAJc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqc2Nhbl9yZXE7CiAJZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlOwogCWludCByZWNvbm5lY3RfZmxhZzsKLQl1MzIgbGFzdF9yb2NfaWQ7Ci0JdTMyIGxhc3RfY2FuY2VsX3JvY19pZDsKJiM0MzsJdTY0IGxhc3Rfcm9jX2lkOwomIzQzOwl1NjQgbGFzdF9jYW5jZWxfcm9jX2lkOwogCXUzMiBzZW5kX2FjdGlvbl9pZDsKIAlib29sIHByb2JlX3JlcV9yZXBvcnQ7CiAJdTE2IGFzc29jX2Jzc19iZWFjb25faW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwppbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwpAQCAtODk4LDYgJiM0Mzs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKQogCQlzcGluX3VubG9ja19iaCgmYW1wO2Nvbm4tJmd0O3BzcV9sb2NrKTsKIAogCQljb25uLSZndDtzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDsKJiM0MzsJCWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi0mZ3Q7Y29va2llOwogCQlhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItJmd0O3dtaSwgdmlmLSZndDtmd192aWZfaWR4LAogCQkJCQkgbWdtdF9idWYtJmd0O2lkLCBtZ210X2J1Zi0mZ3Q7ZnJlcSwKIAkJCQkJIG1nbXRfYnVmLSZndDt3YWl0LCBtZ210X2J1Zi0mZ3Q7YnVmLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwppbmRleCA5N2ZkYWM3MjM3ZTI2Li5iNGQzYzVjZmY4ODExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwpAQCAtMTQ2OSw2ICYjNDM7MTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpCiAJCQkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7Y29ubi0mZ3Q7cHNxX2xvY2spOwogCQkJCQlpZHggPSB2aWYtJmd0O2Z3X3ZpZl9pZHg7CiAKJiM0MzsJCQkJCWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LSZndDtjb29raWU7CiAJCQkJCWF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLAogCQkJCQkJCQkgaWR4LAogCQkJCQkJCQkgbWdtdC0mZ3Q7aWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwppbmRleCBjMGM0NTVkNmUyZGNjLi44ODhiYmJiNWQxN2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMKQEAgLTU4NCw3ICYjNDM7NTg0LDcgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX3R4X3N0YXR1c19ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbiwKIAlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCAmIzM0O3R4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxuJiMzNDssCiAJCSAgIGlkLCBldi0mZ3Q7YWNrX3N0YXR1cyk7CiAJaWYgKHdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lKSB7Ci0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKCZhbXA7dmlmLSZndDt3ZGV2LCBpZCwKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKCZhbXA7dmlmLSZndDt3ZGV2LCB3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUsCiAJCQkJCXdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lLAogCQkJCQl3bWktJmd0O2xhc3RfbWdtdF90eF9mcmFtZV9sZW4sCiAJCQkJCSEhZXYtJmd0O2Fja19zdGF0dXMsIEdGUF9BVE9NSUMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmgKaW5kZXggOGZiZWNlM2ZkYWQ5Zi4uODljZTJhYmJiMWNkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oCkBAIC0xMjUsNiAmIzQzOzEyNSw3IEBAIHN0cnVjdCB3bWkgewogCiAJdTggKmxhc3RfbWdtdF90eF9mcmFtZTsKIAlzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjsKJiM0MzsJdTY0IGxhc3RfbWdtdF90eF9jb29raWU7CiAJdTggc2F2ZWRfcHdyX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYwppbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMKQEAgLTE0MzIsNyAmIzQzOzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsCiAKIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJIHU2NCAqY29va2llKQomIzQzOwkJCSB1NjQgY29va2llKQogewogCWNvbnN0IHU4ICpidWYgPSBwYXJhbXMtJmd0O2J1ZjsKIAlzaXplX3QgbGVuID0gcGFyYW1zLSZndDtsZW47CkBAIC0xNDg4LDggJiM0MzsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJICovCiAJdHhfc3RhdHVzID0gKHJjID09IDApOwogCXJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjOwotCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSA/ICpjb29raWUgOiAwLCBidWYsIGxlbiwKLQkJCQl0eF9zdGF0dXMsIEdGUF9LRVJORUwpOwomIzQzOwljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpOwogCiAJcmV0dXJuIHJjOwogfQpAQCAtMTczNSw3ICYjNDM7MTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgdW5zaWduZWQgaW50IGR1cmF0aW9uLAotCQkJCSB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkJCSB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpOwogCWludCByYzsKQEAgLTIzODEsNyAmIzQzOzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpCiAKIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCSAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTsKIAlzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IG5kZXZfdG9fdmlmKGRldik7CkBAIC0yMzk5LDEzICYjNDM7MjM5OCwxMiBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcmVxLSZndDtjaWQgPSBjaWQ7Ci0JcmVxLSZndDtjb29raWUgPSBjaWQ7CiYjNDM7CXJlcS0mZ3Q7Y29va2llID0gY29va2llOwogCiAJbXV0ZXhfbG9jaygmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X211dGV4KTsKIAlsaXN0X2FkZF90YWlsKCZhbXA7cmVxLSZndDtsaXN0LCAmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X3BlbmRpbmcpOwogCW11dGV4X3VubG9jaygmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X211dGV4KTsKIAotCSpjb29raWUgPSByZXEtJmd0O2Nvb2tpZTsKIAlxdWV1ZV93b3JrKHdpbC0mZ3Q7d3Ffc2VydmljZSwgJmFtcDt2aWYtJmd0O3Byb2JlX2NsaWVudF93b3JrZXIpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jCmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMKQEAgLTk4NSw3ICYjNDM7OTg1LDcgQEAgc3RhdGljIHNzaXplX3Qgd2lsX3dyaXRlX2ZpbGVfdHhtZ210KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCXBhcmFtcy5idWYgPSBmcmFtZTsKIAlwYXJhbXMubGVuID0gbGVuOwogCi0JcmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgJmFtcDtwYXJhbXMsIE5VTEwpOwomIzQzOwlyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCAmYW1wO3BhcmFtcywgMCk7CiAKIAlrZnJlZShmcmFtZSk7CiAJd2lsX2luZm8od2lsLCAmIzM0Oy0mZ3Q7ICVkXG4mIzM0OywgcmMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwppbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwpAQCAtMTI0LDcgJiM0MzsxMjQsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsCiAKIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkgICB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpOwogCXN0cnVjdCB3aWxfcDJwX2luZm8gKnAycCA9ICZhbXA7dmlmLSZndDtwMnA7CkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJfQogCiAJbWVtY3B5KCZhbXA7cDJwLSZndDtsaXN0ZW5fY2hhbiwgY2hhbiwgc2l6ZW9mKCpjaGFuKSk7Ci0JKmNvb2tpZSA9ICYjNDM7JiM0MztwMnAtJmd0O2Nvb2tpZTsKJiM0MzsJcDJwLSZndDtjb29raWUgPSBjb29raWU7CiAJcDJwLSZndDtsaXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjsKIAogCW11dGV4X2xvY2soJmFtcDt3aWwtJmd0O3ZpZl9tdXRleCk7CkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJaWYgKHZpZi0mZ3Q7bWlkID09IDApCiAJCXdpbC0mZ3Q7cmFkaW9fd2RldiA9IHdkZXY7CiAKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLAomIzQzOwljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sCiAJCQkJICBHRlBfS0VSTkVMKTsKIAogb3V0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oCmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmgKQEAgLTEzMDEsNyAmIzQzOzEzMDEsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsCiAJCSAgIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcXVlc3QpOwogaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCSAgIHU2NCBjb29raWUpOwogdTggd2lsX3AycF9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7CiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTsKIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCB3bWlfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpOwogCiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJIHU2NCBjb29raWUpOwogdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTsKIGludCB3aWxfY2ZnODAyMTFfaWZhY2VfY29tYmluYXRpb25zX2Zyb21fZncoCiAJc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwppbmRleCAyMGY3ZmNjZDYxMjE1Li44MDkzNzI0ZTZkMjI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtNTU1NCw3ICYjNDM7NTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAogaW50CiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLSZndDtjaGFuOwpAQCAtNTU3Myw4ICYjNDM7NTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCi0JKmNvb2tpZSA9IDA7Ci0KIAltZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjsKIAogCWlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpIHsKQEAgLTU2MDUsNyAmIzQzOzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJCSAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLAogCQkJCQkgICAgJmFtcDtidWZbaWVfb2Zmc2V0XSwKIAkJCQkJICAgIGllX2xlbik7Ci0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0tFUk5FTCk7CiAJfSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKSB7CiAJCWlmIChsZW4gJmd0OyBCUkNNRl9GSUxfQUNUSU9OX0ZSQU1FX1NJWkUgJiM0MzsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7CkBAIC01NjIxLDcgJiM0Mzs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQl9CiAJCWFjdGlvbl9mcmFtZSA9ICZhbXA7YWZfcGFyYW1zLSZndDthY3Rpb25fZnJhbWU7CiAJCS8qIEFkZCB0aGUgcGFja2V0IElkICovCi0JCWFjdGlvbl9mcmFtZS0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CQlhY3Rpb25fZnJhbWUtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7CiAJCS8qIEFkZCBCU1NJRCAqLwogCQltZW1jcHkoJmFtcDthY3Rpb25fZnJhbWUtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJCW1lbWNweSgmYW1wO2FmX3BhcmFtcy0mZ3Q7YnNzaWRbMF0sICZhbXA7bWdtdC0mZ3Q7YnNzaWRbMF0sIEVUSF9BTEVOKTsKQEAgLTU2NDksMTIgJiM0Mzs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS0mZ3Q7bGVuKSk7CiAKIAkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0FjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxuJiMzNDssCi0JCQkgICpjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS0mZ3Q7bGVuKSwKJiM0MzsJCQkgIGNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pLAogCQkJICBsZTMyX3RvX2NwdShhZl9wYXJhbXMtJmd0O2NoYW5uZWwpKTsKIAogCQlhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUodmlmLSZndDtpZnAsIGFmX3BhcmFtcyk7CiAKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywKIAkJCQkJR0ZQX0tFUk5FTCk7CiBmcmVlOgogCQlrZnJlZShhZl9wYXJhbXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAppbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaApAQCAtNDk3LDYgJiM0Mzs0OTcsNiBAQCB2b2lkIGJyY21mX2NmZzgwMjExX2ZyZWVfdmlmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTsKIAogaW50IGJyY21mX3NldF93c2VjKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBjb25zdCB1OCAqa2V5LCB1MTYga2V5X2xlbiwgdTE2IGZsYWdzKTsKIGludCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTsKIAogI2VuZGlmIC8qIEJSQ01GTUFDX0NGRzgwMjExX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKaW5kZXggY2UwOWQ0NGZhNzNjZi4uNDliMzNlZmUyMmI0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKQogCiBzdGF0aWMKIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CkBAIC0xMjMsNyAmIzQzOzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCWlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCXJldHVybiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7CiAKLQkqY29va2llID0gMDsKIAl2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7CiAKIAlyZWluaXRfY29tcGxldGlvbigmYW1wO3ZpZi0mZ3Q7bWdtdF90eCk7CkBAIC0xNTUsNyAmIzQzOzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtkYVswXSwgJmFtcDttZ210LSZndDtkYVswXSwgRVRIX0FMRU4pOwogCW1lbWNweSgmYW1wO21mX3BhcmFtcy0mZ3Q7YnNzaWRbMF0sICZhbXA7bWdtdC0mZ3Q7YnNzaWRbMF0sIEVUSF9BTEVOKTsKLQltZl9wYXJhbXMtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpOwomIzQzOwltZl9wYXJhbXMtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7CiAJbWVtY3B5KG1mX3BhcmFtcy0mZ3Q7ZGF0YSwgJmFtcDtidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSwKIAkgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLSZndDtsZW4pKTsKIApAQCAtMTg3LDggJiM0MzsxODYsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl9CiAKIHR4X3N0YXR1czoKLQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLAotCQkJCUdGUF9LRVJORUwpOwomIzQzOwljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpOwogZnJlZToKIAlrZnJlZShtZl9wYXJhbXMpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtOTc5LDEwICYjNDM7OTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbikKIAlwMnAtJmd0O2NmZy0mZ3Q7ZDExaW5mLmVuY2Noc3BlYygmYW1wO2NoKTsKIAllcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi0mZ3Q7aWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sCiAJCQkJCSAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7Ci0JaWYgKCFlcnIpIHsKJiM0MzsJaWYgKCFlcnIpCiAJCXNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sICZhbXA7cDJwLSZndDtzdGF0dXMpOwotCQlwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSYjNDM7JiM0Mzs7Ci0JfQogZXhpdDoKIAlyZXR1cm4gZXJyOwogfQpAQCAtMTAwMCw3ICYjNDM7OTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbikKICAqLwogaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbCwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7CkBAIC0xMDIwLDggJiM0MzsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlnb3RvIGV4aXQ7CiAKIAltZW1jcHkoJmFtcDtwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTsKLQkqY29va2llID0gcDJwLSZndDtyZW1haW5fb25fY2hhbm5lbF9jb29raWU7Ci0JY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CXAycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llOwomIzQzOwljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpOwogCiBleGl0OgogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgKaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaApAQCAtMTU3LDcgJiM0MzsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTsKIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsCi0JCQkJdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkJdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLAogCQkJCWNvbnN0IHU4ICpyeF9hZGRyKTsKIGludCBicmNtZl9wMnBfbm90aWZ5X2xpc3Rlbl9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCmluZGV4IDk5ZDk2MDg4ZTM2NGMuLmRlOTk1M2VjYmVmZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pCiAgKi8KIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTI1OSwxNCAmIzQzOzI1OSwxMyBAQCBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl0eF9pbmZvLSZndDtwa3RfbGVuID0gcGt0X2xlbjsKIAogCW13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pOwotCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTsKIAogCWlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlza2IgPSBtd2lmaWV4X2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsCiAJCQkJCQkgICAgICBza2IsCi0JCQkJTVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpOwomIzQzOwkJCQlNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsICZhbXA7Y29va2llKTsKIAllbHNlCi0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0FUT01JQyk7CiAKIAltd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpOwpAQCAtMzA0LDEzICYjNDM7MzAzLDEzIEBAIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJaW50IHJldDsKIAotCWlmICghY2hhbiB8fCAhY29va2llKSB7CiYjNDM7CWlmICghY2hhbikgewogCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBFUlJPUiwgJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTMyNiwxNSAmIzQzOzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSBkdXJhdGlvbik7CiAKIAlpZiAoIXJldCkgewotCQkqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7Ci0JCXByaXYtJmd0O3JvY19jZmcuY29va2llID0gKmNvb2tpZTsKJiM0MzsJCXByaXYtJmd0O3JvY19jZmcuY29va2llID0gY29va2llOwogCQlwcml2LSZndDtyb2NfY2ZnLmNoYW4gPSAqY2hhbjsKIAotCQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sCiYjNDM7CQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwKIAkJCQkJICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7CiAKIAkJbXdpZmlleF9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgSU5GTywKLQkJCSAgICAmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XG4mIzM0OywgKmNvb2tpZSk7CiYjNDM7CQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCBjb29raWUpOwogCX0KIAogCXJldHVybiByZXQ7CkBAIC00NTYwLDcgJiM0Mzs0NTU4LDcgQEAgbXdpZmlleF9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSwKIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJICAgIHU2NCAqY29va2llKQomIzQzOwkJCSAgICB1NjQgY29va2llKQogewogCS8qIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsCiAJICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24mIzM5O3Qgc3VwcG9ydCkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCkBAIC0xMTAwLDI0ICYjNDM7MTEwMCwxOSBAQCBzdGF0aWMgdm9pZCB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLCB1NjQgY29va2llKQogc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkgICAgIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gJmFtcDt2aWYtJmd0O3ByaXY7Ci0JdTY0IGlkOwogCiAJaWYgKHdkZXYtJmd0O2lmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkgewogCQluZXRkZXZfZGJnKHZpZi0mZ3Q7bmRldiwgJiMzNDtSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXG4mIzM0Oyk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWQgPSAmIzQzOyYjNDM7cHJpdi0mZ3Q7aW5jX3JvY19jb29raWU7Ci0JaWYgKGlkID09IDApCi0JCWlkID0gJiM0MzsmIzQzO3ByaXYtJmd0O2luY19yb2NfY29va2llOwotCi0JcmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGlkLCBjaGFuLSZndDtod192YWx1ZSwKJiM0MzsJcmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGNvb2tpZSwgY2hhbi0mZ3Q7aHdfdmFsdWUsCiAJCQkJICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTEyNSwxMiAmIzQzOzExMjAsMTEgQEAgc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCXZpZi0mZ3Q7d2lsYy0mZ3Q7b3BfY2ggPSBjaGFuLSZndDtod192YWx1ZTsKIAogCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjsKLQlwcml2LSZndDtyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDsKLQkqY29va2llID0gaWQ7CiYjNDM7CXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTsKIAlwcml2LSZndDtwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTsKIAlwcml2LSZndDtyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uOwogCi0JY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiAJbW9kX3RpbWVyKCZhbXA7dmlmLSZndDtoaWZfZHJ2LSZndDtyZW1haW5fb25fY2hfdGltZXIsCiAJCSAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICYjNDM7IDEwMDApKTsKIApAQCAtMTE1Myw3ICYjNDM7MTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCSAgIHU2NCAqY29va2llKQomIzQzOwkJICAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CiAJdW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtJmd0O3dhaXQ7CkBAIC0xMTcwLDggJiM0MzsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJY29uc3QgdTggKnZlbmRvcl9pZTsKIAlpbnQgcmV0ID0gMDsKIAotCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpOwotCXByaXYtJmd0O3R4X2Nvb2tpZSA9ICpjb29raWU7CiYjNDM7CXByaXYtJmd0O3R4X2Nvb2tpZSA9IGNvb2tpZTsKIAltZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjsKIAogCWlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwppbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKIC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIHRyYW5zbWl0IGEgbWFuYWdlbWVudCBmcmFtZS4gKi8KIHN0YXRpYyBpbnQKIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTIxMiwxNCAmIzQzOzIxMiwxMyBAQCBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl0eF9pbmZvLSZndDtwa3RfbGVuID0gcGt0X2xlbjsKIAogCW54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pOwotCSpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi0mZ3Q7YWRhcHRlcik7CiAKIAlpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LSZndDtmcmFtZV9jb250cm9sKSkKIAkJc2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LAogCQkJCQkJICAgICAgc2tiLAotCQkJCU5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTsKJiM0MzsJCQkJTlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCAmYW1wO2Nvb2tpZSk7CiAJZWxzZQotCQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiAJCQkJCUdGUF9BVE9NSUMpOwogCiAJbnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTsKQEAgLTI1NCwxNCAmIzQzOzI1MywxNCBAQCBzdGF0aWMgaW50CiBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCQkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLAogCQkJCSAgIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCXN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LSZndDtuZXRkZXYpOwogCXN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LSZndDthZGFwdGVyOwogCWludCByZXQ7CiAKLQlpZiAoIWNoYW4gfHwgIWNvb2tpZSkgewomIzQzOwlpZiAoIWNoYW4pIHsKIAkJbnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsICYjMzQ7SW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0yNzcsMTUgJiM0MzsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCQkgZHVyYXRpb24pOwogCiAJaWYgKCFyZXQpIHsKLQkJKmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTsKLQkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSAqY29va2llOwomIzQzOwkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSBjb29raWU7CiAJCXByaXYtJmd0O3JvY19jZmcuY2hhbiA9ICpjaGFuOwogCi0JCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwKJiM0MzsJCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLAogCQkJCQkgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTsKIAogCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLAotCQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCAqY29va2llKTsKJiM0MzsJCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssIGNvb2tpZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTM2MTgsNyAmIzQzOzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogc3RhdGljIGludAogbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlciwKLQkJCSAgICAgIHU2NCAqY29va2llKQomIzQzOwkJCSAgICAgIHU2NCBjb29raWUpCiB7CiAJLyoKIAkgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMKaW5kZXggOWU0NGM4NWQyMDUxYy4uNDVlMmI3YWU5NjMzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jCkBAIC00NDYsNyAmIzQzOzQ0Niw3IEBAIHF0bmZfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCiBzdGF0aWMgaW50CiBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgcXRuZl92aWYgKnZpZiA9IHF0bmZfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtJmd0O2J1ZjsKQEAgLTQ1NCw4ICYjNDM7NDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJdTE2IGZsYWdzID0gMDsKIAl1MTYgZnJlcTsKIAotCSpjb29raWUgPSBzaG9ydF9jb29raWU7Ci0KIAlpZiAocGFyYW1zLSZndDtvZmZjaGFuKQogCQlmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCmluZGV4IDE1YzA4YjI0NTAyZmQuLjdiMzQ2MjI2ZmU3NDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaApAQCAtNTEwNyw3ICYjNDM7NTEwNyw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3MgewogICogQHRkbHNfb3BlcjogUGVyZm9ybSBhIGhpZ2gtbGV2ZWwgVERMUyBvcGVyYXRpb24gKGUuZy4gVERMUyBsaW5rIHNldHVwKS4KICAqCiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSwKLSAqCW11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLgomIzQzOyAqCW11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0bwomIzQzOyAqCWNmZzgwMjExX3Byb2JlX3N0YXR1cygpLgogICoKICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuCiAgKgpAQCAtNTIxOCw3ICYjNDM7NTIxOSw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3MgewogICogICAgIHVzZXIgc3BhY2UKICAqCiAgKiBAdHhfY29udHJvbF9wb3J0OiBUWCBhIGNvbnRyb2wgcG9ydCBmcmFtZSAoRUFQb0wpLiAgVGhlIG5vZW5jcnlwdCBwYXJhbWV0ZXIKLSAqCXRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuCiYjNDM7ICoJdGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llCiYjNDM7ICoJdmFsdWUgb2YgMCBtZWFucyB0aGUgY2FsbGVyIGRvZXMgbm90IHdhbnQgVFggc3RhdHVzIHJlcG9ydGluZy4KICAqCiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLgogICoJU3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC4KQEAgLTU0NTUsMTQgJiM0Mzs1NDU3LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMgewogCQkJCSAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwKLQkJCQkgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7CiYjNDM7CQkJCSAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpOwogCWludAkoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkJICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJCSAgICB1NjQgY29va2llKTsKIAogCWludAkoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICB1NjQgY29va2llKTsKIAlpbnQJKCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgICAgICB1NjQgY29va2llKTsKQEAgLTU1MDksNyAmIzQzOzU1MTEsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCSAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTsKIAogCWludAkoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkgICAgICBjb25zdCB1OCAqcGVlciwgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTsKIAogCWludAkoKnNldF9ub2Fja19tYXApKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtNTYwNyw3ICYjNDM7NTYwOSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMgewogCQkJCSAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sCiAJCQkJICAgY29uc3QgdTggKmRlc3QsIGNvbnN0IF9fYmUxNiBwcm90bywKIAkJCQkgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsCi0JCQkJICAgdTY0ICpjb29raWUpOwomIzQzOwkJCQkgICB1NjQgY29va2llKTsKIAogCWludAkoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggZGY2OGE1YmRlYjJmMC4uMzEwYzE0NTYwMDY1ZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuYwpAQCAtNDgyNywxOSAmIzQzOzQ4MjcsNiBAQCBpbnQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJcmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7CiB9CiAKLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpCi17Ci0JbG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtJmd0O2h3LndpcGh5KTsKLQotCWxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXImIzQzOyYjNDM7OwotCi0JLyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqLwotCWlmIChXQVJOX09OKGxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXIgPT0gMCkpCi0JCWxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXImIzQzOyYjNDM7OwotCi0JcmV0dXJuIGxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXI7Ci19Ci0KIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApCiB7CkBAIC00ODY0LDcgJiM0Mzs0ODUxLDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlJRUVFODAyMTFfU0tCX0NCKHNrYiktJmd0O3N0YXR1c19kYXRhX2lkciA9IDE7CiAJSUVFRTgwMjExX1NLQl9DQihza2IpLSZndDtzdGF0dXNfZGF0YSA9IGlkOwogCi0JKmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7CiAJSUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS0mZ3Q7YWNrLmNvb2tpZSA9ICpjb29raWU7CiAKIAlyZXR1cm4gMDsKQEAgLTQ5NTAsNyAmIzQzOzQ5MzYsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogfQogCiBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkJY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKQomIzQzOwkJCQljb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC01MDU3LDcgJiM0Mzs1MDQzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChxb3MpCiAJCW51bGxmdW5jLSZndDtxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpOwogCi0JcmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7CiYjNDM7CXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCAmYW1wO2Nvb2tpZSwgR0ZQX0FUT01JQyk7CiAJaWYgKHJldCkgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKaW5kZXggMTFmNDQ5ZThmZjAwMy4uNGYxZjUyZjZlZGNiYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKQEAgLTE3MDgsOCAmIzQzOzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJvY19saXN0OwogCXN0cnVjdCB3aXBoeV93b3JrIGh3X3JvY19zdGFydCwgaHdfcm9jX2RvbmU7CiAJdW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTsKLQl1NjQgcm9jX2Nvb2tpZV9jb3VudGVyOwotCiAJc3RydWN0IGlkciBhY2tfc3RhdHVzX2ZyYW1lczsKIAlzcGlubG9ja190IGFja19zdGF0dXNfbG9jazsKIApAQCAtMTk4OSw3ICYjNDM7MTk4Nyw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpOwogCiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7CiAKLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpOwogaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7CiAKQEAgLTIxNTEsMTIgJiM0MzsyMTQ4LDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJCSBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7CiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcik7CiBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTsKIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpOwomIzQzOwkJICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpOwogaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTsKIApAQCAtMjIzNSw3ICYjNDM7MjIzMiw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIHUzMiBpbmZvX2ZsYWdzLAogCQkJCSAgdTMyIGN0cmxfZmxhZ3MsCi0JCQkJICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJCSAgdTY0IGNvb2tpZSk7CiBzdHJ1Y3Qgc2tfYnVmZiAqCiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvX2ZsYWdzKTsKQEAgLTIyNDksNyAmIzQzOzIyNDYsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpOwogaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sCiAJCQkgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLAotCQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7CiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7CiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jCmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYwpAQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCiAJLyoKIAkgKiBjb29raWUgaXMgZWl0aGVyIHRoZSByb2MgY29va2llIChmb3Igbm9ybWFsIHJvYykKLQkgKiBvciB0aGUgU0tCIChmb3IgbWdtdCBUWCkKJiM0MzsJICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTEKIAkgKi8KLQlpZiAoIXR4c2tiKSB7Ci0JCXJvYy0mZ3Q7Y29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTsKLQkJKmNvb2tpZSA9IHJvYy0mZ3Q7Y29va2llOwotCX0gZWxzZSB7CiYjNDM7CWlmICghdHhza2IpCiYjNDM7CQlyb2MtJmd0O2Nvb2tpZSA9ICpjb29raWU7CiYjNDM7CWVsc2UKIAkJcm9jLSZndDttZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7Ci0JfQogCiAJcmVxID0gd2lwaHlfZGVyZWZlcmVuY2UobG9jYWwtJmd0O2h3LndpcGh5LCBsb2NhbC0mZ3Q7c2Nhbl9yZXEpOwogCkBAIC03MDQsNyAmIzQzOzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTsKQEAgLTcxMyw3ICYjNDM7NzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLSZndDtody53aXBoeSk7CiAKIAlyZXR1cm4gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgY2hhbiwKLQkJCQkJZHVyYXRpb24sIGNvb2tpZSwgTlVMTCwKJiM0MzsJCQkJCWR1cmF0aW9uLCAmYW1wO2Nvb2tpZSwgTlVMTCwKIAkJCQkJSUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7CiB9CiAKQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIH0KIAogaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtMTAxNiwxOCAmIzQzOzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCS8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50cwogCQkgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uCiAJCSAqLwotCQlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTsKJiM0MzsJCXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCAmYW1wO2Nvb2tpZSwgR0ZQX0tFUk5FTCk7CiAJCWlmIChyZXQpIHsKIAkJCWtmcmVlX3NrYihza2IpOwogCQkJZ290byBvdXRfdW5sb2NrOwogCQl9Ci0JfSBlbHNlIHsKLQkJLyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCYjMzk7cyBub3Qgc2VudCB0bwotCQkgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZQotCQkgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaAotCQkgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuCi0JCSAqLwotCQkqY29va2llID0gMHhmZmZmZmZmZjsKIAl9CiAKIAlpZiAoIW5lZWRfb2ZmY2hhbikgewpAQCAtMTA0NCw3ICYjNDM7MTAzNSw3IEBAIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJLyogVGhpcyB3aWxsIGhhbmRsZSBhbGwga2luZHMgb2YgY29hbGVzY2luZyBhbmQgaW1tZWRpYXRlIFRYICovCiAJcmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLSZndDtjaGFuLAotCQkJCSAgICAgICBwYXJhbXMtJmd0O3dhaXQsIGNvb2tpZSwgc2tiLAomIzQzOwkJCQkgICAgICAgcGFyYW1zLSZndDt3YWl0LCAmYW1wO2Nvb2tpZSwgc2tiLAogCQkJCSAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7CiAJaWYgKHJldCkKIAkJaWVlZTgwMjExX2ZyZWVfdHhza2IoJmFtcDtsb2NhbC0mZ3Q7aHcsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdGRscy5jIGIvbmV0L21hYzgwMjExL3RkbHMuYwppbmRleCBmZmQ1NzVhOGQxODhmLi5kYzJmNjYyZmU0YzQ2IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90ZGxzLmMKQEAgLTExMjEsNyAmIzQzOzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi8KIAlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsCi0JCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpOwomIzQzOwkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBlYjM2ZjFiOTc3MWI1Li41NTQ5Y2I4ZDVjZGExIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtMjU4Myw3ICYjNDM7MjU4Myw3IEBAIGludCBpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICB1MzIgKmluZm9fZmxhZ3MsCi0JCQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHNrX2J1ZmYgKmFja19za2I7CiAJdTE2IGluZm9faWQgPSAwOwpAQCAtMjYwNSwxMCAmIzQzOzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQlpZiAoaWQgJmd0Oz0gMCkgewogCQkJaW5mb19pZCA9IGlkOwogCQkJKmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTOwotCQkJaWYgKGNvb2tpZSkgewotCQkJCSpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpOwotCQkJCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSAqY29va2llOwotCQkJfQomIzQzOwkJCWlmIChjb29raWUpCiYjNDM7CQkJCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSBjb29raWU7CiAJCX0gZWxzZSB7CiAJCQlrZnJlZV9za2IoYWNrX3NrYik7CiAJCX0KQEAgLTI2NDEsNyAmIzQzOzI2MzksNyBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncywKIAkJCQkJICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLAotCQkJCQkgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CiAJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvOwpAQCAtNDMzNyw3ICYjNDM7NDMzNSw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIHUzMiBpbmZvX2ZsYWdzLAogCQkJCSAgdTMyIGN0cmxfZmxhZ3MsCi0JCQkJICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLSZndDtsb2NhbDsKQEAgLTQ1MzIsNyAmIzQzOzQ1MzAsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCXJldHVybjsKIAogCWN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKGxpbmtfaWQsIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTsKLQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgTlVMTCk7CiYjNDM7CV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS0mZ3Q7ZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTQ1NDcsOCAmIzQzOzQ1NDUsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQljdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksCiAJCQkJCSAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTsKIAotCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywKLQkJCQkJICAgICBOVUxMKTsKJiM0MzsJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBzZGF0YS0mZ3Q7ZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDU5MCw3ICYjNDM7NDU4Nyw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJCXdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO3F1ZXVlKSkpCiAJCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLAogCQkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJCSAgICAgMCk7CiAJfSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3NkYXRhLSZndDt2aWYpICZhbXA7JmFtcDsKIAkJICAgKChzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgJmFtcDsmYW1wOwogCQkgICAgICFpZWVlODAyMTFfaHdfY2hlY2soJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O2h3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8CkBAIC00NjAxLDcgJiM0Mzs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIG5vcm1hbDoKIAkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCwKIAkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCQkgICAgIDApOwogCX0KIAogCXJldHVybiBORVRERVZfVFhfT0s7CkBAIC00NzAwLDcgJiM0Mzs0Njk3LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCS8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi8KIAkJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsCiAJCQkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywKLQkJCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCQkJICAgICAwKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC00NzM2LDcgJiM0Mzs0NzMzLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAogCWlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItJmd0O3NrKSkpIHsKIAkJaW5mby0mZ3Q7c3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLAotCQkJCQkJCSAgICAmYW1wO2luZm8tJmd0O2ZsYWdzLCBOVUxMKTsKJiM0MzsJCQkJCQkJICAgICZhbXA7aW5mby0mZ3Q7ZmxhZ3MsIDApOwogCQlpZiAoaW5mby0mZ3Q7c3RhdHVzX2RhdGEpCiAJCQlpbmZvLSZndDtzdGF0dXNfZGF0YV9pZHIgPSAxOwogCX0KQEAgLTQ4NzksNyAmIzQzOzQ4NzYsNyBAQCBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAl9CiAKIAlza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSwKLQkJCQkgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7CiYjNDM7CQkJCSAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTsKIAlpZiAoSVNfRVJSKHNrYikpCiAJCWdvdG8gb3V0OwogCkBAIC02NDk0LDcgJiM0Mzs2NDkxLDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCwKLQkJCSAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC02NjI5LDcgJiM0Mzs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi0mZ3Q7ZGV2LCAwLAogCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsCi0JCQkJICAgICBOVUxMKTsKJiM0MzsJCQkJICAgICAwKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmgKaW5kZXggMzk5MDM3NTE0OTQzZC4uYjNlYWQ5OGFlZTA3YSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oCkBAIC00MDIsNyAmIzQzOzQwMiw3IEBAIHZvaWQgY2ZnODAyMTFfbWxtZV9wdXJnZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpOwogaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICB1NjQgY29va2llKTsKIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTsKIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSwKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jCmluZGV4IDJhMmMxNzMwNThiYWMuLjM0ZjkwMDNkNWM1NDEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL21sbWUuYwpAQCAtODUxLDcgJiM0Mzs4NTEsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7CiAJdTE2IHN0eXBlOwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKaW5kZXggYWMwYzBkYTQ1MjQxOS4uNzA4ZThiYjhkYWZkZCAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCkBAIC0xNDYzMCw4ICYjNDM7MTQ2MzAsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZ290byBmcmVlX21zZzsKIAl9CiAKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKIAllcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbiwKLQkJCQkgICAgIGR1cmF0aW9uLCAmYW1wO2Nvb2tpZSwgcnhfYWRkcik7CiYjNDM7CQkJCSAgICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7CiAKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwpAQCAtMTQ4NzEsNyAmIzQzOzE0ODcyLDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAl9CiAKIAlwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjsKLQllcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgJmFtcDtwYXJhbXMsICZhbXA7Y29va2llKTsKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKJiM0MzsJZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsICZhbXA7cGFyYW1zLCBjb29raWUpOwogCWlmIChlcnIpCiAJCWdvdG8gZnJlZV9tc2c7CiAKQEAgLTE2MzU5LDcgJiM0MzsxNjM2MSw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCWdvdG8gZnJlZV9tc2c7CiAJfQogCi0JZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgJmFtcDtjb29raWUpOwomIzQzOwljb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpOwomIzQzOwllcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBjb29raWUpOwogCWlmIChlcnIpCiAJCWdvdG8gZnJlZV9tc2c7CiAKQEAgLTE4NTc0LDEwICYjNDM7MTg1NzcsMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCiAJbGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tJmd0O2F0dHJzKTsKIAomIzQzOwljb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpOwogCWVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sCiAJCQkJICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsCi0JCQkJICAgZG9udF93YWl0X2Zvcl9hY2sgPyBOVUxMIDogJmFtcDtjb29raWUpOwotCWlmICghZXJyICZhbXA7JmFtcDsgIWRvbnRfd2FpdF9mb3JfYWNrKQomIzQzOwkJCQkgICBjb29raWUpOwomIzQzOwlpZiAoIWVyciAmYW1wOyZhbXA7IGNvb2tpZSkKIAkJbmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tJmd0O2V4dGFjaywgY29va2llKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjIwMzAsNiAmIzQzOzIyMDM0LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJc3RydWN0IHNrX2J1ZmYgKm1zZzsKIAl2b2lkICpoZHI7CiAKJiM0MzsJLyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqLwomIzQzOwlpZiAoIXN0YXR1cy0mZ3Q7Y29va2llKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChjb21tYW5kID09IE5MODAyMTFfQ01EX0ZSQU1FX1RYX1NUQVRVUykKIAkJdHJhY2VfY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2Rldiwgc3RhdHVzLSZndDtjb29raWUsCiAJCQkJCSAgICAgIHN0YXR1cy0mZ3Q7YWNrKTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKaW5kZXggNmMzYmFkOGIyZDZmNi4uNDY4NDlmZThkMGIzOSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKQEAgLTczNiwxNCAmIzQzOzczNiwxNCBAQCBzdGF0aWMgaW5saW5lIGludAogcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sCiAJCQkJICAgICByeF9hZGRyKTsKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O3JlbWFpbl9vbl9jaGFubmVsKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHdkZXYsIGNoYW4sCiAJCQkJCSAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpOwotCXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCAqY29va2llKTsKJiM0MzsJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNzYxLDEyICYjNDM7NzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgICAgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgICAgICAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfbWdtdF90eCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBwYXJhbXMpOwogCXJldCA9IHJkZXYtJmd0O29wcy0mZ3Q7bWdtdF90eCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7Ci0JdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03NzUsNyAmIzQzOzc3NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLAogCQkJCSAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLAogCQkJCSAgICAgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmssCi0JCQkJICAgICAgIHU2NCAqY29va2llKQomIzQzOwkJCQkgICAgICAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgYnVmLCBsZW4sCkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O3R4X2NvbnRyb2xfcG9ydCgmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIGJ1ZiwgbGVuLAogCQkJCQkgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTsKIAlpZiAoY29va2llKQotCQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAllbHNlCiAJCXRyYWNlX3JkZXZfcmV0dXJuX2ludCgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQpOwogCXJldHVybiByZXQ7CkBAIC05NTAsMTIgJiM0Mzs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsCi0JCQkJICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICB1NjQgY29va2llKQogewogCWludCByZXQ7CiAJdHJhY2VfcmRldl9wcm9iZV9wZWVyKCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgcGVlcik7CiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDtwcm9iZV9wZWVyKCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgcGVlciwgY29va2llKTsKLQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCBjb29raWUpOwogCXJldHVybiByZXQ7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuOiBSZXZpc2VkIGBjZmc4MDIxMV9vcHNgIENvb2tpZSBQYXNzaW5nKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IHRoZSBgdTY0IGNvb2tpZWAgaXMgcGFzc2VkIHRvIHRoZXNlIGNydWNpYWwgYGNmZzgwMjExX29wc2AgY2FsbGJhY2tzOiBgcmVtYWluX29uX2NoYW5uZWxgLCBgbWdtdF90eGAsIGBwcm9iZV9wZWVyYCwgYW5kIGB0eF9jb250cm9sX3BvcnRgLiBJdCYjMzk7cyBnb2luZyBmcm9tIGEgcG9pbnRlciAoYHU2NCAqY29va2llYCkgdG8gYSB2YWx1ZSAoYHU2NCBjb29raWVgKS4gVGhhdCYjMzk7cyBhIGJpZyBkZWFsIGJlY2F1c2UgdGhlIGNvb2tpZSBhc3NpZ25tZW50IGlzIG5vdyBoYXBwZW5pbmcgY2VudHJhbGx5IHdpdGhpbiBgY2ZnODAyMTFgIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGluc3RlYWQgb2YgYmVpbmcgZHJpdmVyLWdlbmVyYXRlZC4KClRoaXMgaW1wYWN0cyB0aGUgY29yZSA4MDIuMTEgc3RhY2sg4oCTIGJvdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYCDigJMgYW5kLCBvZiBjb3Vyc2UsIGEgYnVuY2ggb2YgZHJpdmVycy4gR2l2ZW4gdGhhdCBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIGFyZSBpbnZvbHZlZCwgd2hpY2ggYXJlIGFsc28gcmVhY2hhYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRob3JvdWdobHkgdGVzdGVkLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFmZmVjdGVkOiBJbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHdlJiMzOTtyZSBsb29raW5nIGF0IGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYG5sODAyMTFfdHhfbWdtdGAsIGBubDgwMjExX3Byb2JlX3BlZXJgLCBhbmQgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSW4gYG5ldC9tYWM4MDIxMS9gLCBpdCYjMzk7cyBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYGllZWU4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4KClJpZ2h0LCBub3csIHdoYXQgYWJvdXQgdGhlIGNvbmZpZyBvcHRpb25zPyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgZW5hYmxlZC4gR29vZCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgaW52YWx1YWJsZSBmb3IgdGVzdGluZy4KCkZvY3VzaW5nIHRoZSBmdXp6aW5nIGVmZm9ydHMg4oCTIEkmIzM5O2xsIHRhcmdldCBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIHJlYWNoYWJsZS4gVXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBJIGNhbiBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGV4aXN0IGFuZCBhcmUgbm90IHN0YXRpYy9pbmxpbmVkIGluIGEgd2F5IHRoYXQgcHJldmVudHMgZnV6emluZy4gQWx0aG91Z2ggYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgIGlzIHN0YXRpYywgaXQmIzM5O3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgc28gU3l6a2FsbGVyIGNhbiByZWFjaCBpdCB2aWEgYG5sODAyMTFgIG5ldGxpbmsgZGVzY3JpcHRpb25zLiBUaGUgYG1hYzgwMjExYCBmdW5jdGlvbnMgYXJlIGFsc28gZmluZSBiZWNhdXNlIHRoZXkgYXJlIGV4cG9ydGVkIG9yIHVzZWQgYXMgb3BzLiBTcGVjaWZpY2FsbHkgSSYjMzk7bSB0aGlua2luZyBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gTGV0IG1lIHF1aWNrbHkgYGdyZXBgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP2ludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ1Mzc9c3RhdGljIGludCBubDgwMjExX3RkbHNfb3BlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ1NTctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0NTU4OnN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU1OS1cdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgwNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpcmVsZXNzIENvbW11bmljYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmdW5jdGlvbnMuIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzZXQgb2Ygd2lyZWxlc3MgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLCBsaWtlbHkgcmVsYXRlZCB0byB0aGUgODAyLjExIHN0YW5kYXJkLCBqdWRnaW5nIGJ5IHRoZSBwcmVmaXhlcy4gVGhlIGxpc3Qgc2hvd3MgZnVuY3Rpb25zIHdpdGggYm90aCB0aGUgYG5sODAyMTFgIGFuZCBgaWVlZTgwMjExYCBwcmVmaXhlcywgc28gd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaXNzdWUgaGVyZS4KCkkmIzM5O2xsIHN0YXJ0IGJ5IGZvY3VzaW5nIG9uIGBubDgwMjExX3R4X21nbXRgLCBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMgdGhhdCBzZWVtIHJlbGF0ZWQsIHNwZWNpZmljYWxseSB0aG9zZSB3aXRoIGEgc2ltaWxhciBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIGBpZWVlODAyMTFfbWdtdF90eGAuIEl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIGFsc28gZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBjaGFubmVsIG1hbmFnZW1lbnQgYW5kIGNvbnRyb2wgcG9ydHMsIG5hbWVseSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAsIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBhbmQgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbi4gQW5kLCB0aGVyZSBpcyBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgd2hpY2ggc3VnZ2VzdHMgcGVlciBkaXNjb3Zlcnkgb3IgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRpZmZlcmVuY2VzIGluIGFic3RyYWN0aW9uLCBhbmQgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb25zIGxpZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP2ludCBubDgwMjExX3R4X21nbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDY5ND1zdGF0aWMgaW50IG5sODAyMTFfcmVnaXN0ZXJfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTEtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0NzUyOnN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzUzLXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODk3LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDg5ODpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0OTEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgc3lzdGVtLiBMb29raW5nIGF0IHRoZSBvcHRpb25zLCBJIGhhdmUgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXRoZXIgYE1BQzgwMjExX0hXU0lNYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbi4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyBpdCYjMzk7cyBhIGtleSBjYW5kaWRhdGUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSB2YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHRoZSByaWdodCBwYXRoIGZvcndhcmQsIG9yIGlmIEkgbmVlZCB0byBjb25zaWRlciB0aGUgb3RoZXIgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3NzYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpSaWdodCwgc28gYE1BQzgwMjExX0hXU0lNYCDigJMgdGhhdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBtYWM4MDIxMSBoYXJkd2FyZSBzaW11bGF0aW9uLCBubyBzdXJwcmlzZXMgdGhlcmUuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgV0xBTiBmcmFtZXdvcmsuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgd2l0aCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBjb25maWd1cmF0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggYE1BQzgwMjExX0hXU0lNYCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5IGZvciB0ZXN0aW5nIG9yIHdoYXRldmVyIEkgaGF2ZSBpbiBtaW5kLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhlc2UgY29tcG9uZW50cywgd2hhdCBpcyBlbmFibGVkLCB3aGF0IGlzIGRpc2FibGVkLCBhbmQgaG93IG15IGN1cnJlbnQgY29uZmlndXJhdGlvbiBmaXRzIHdpdGhpbiB0aGF0IHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk2MwoJCQkJCQkJb3V0cHV0OiAyNjcKCQkJCQkJCXRob3VnaHRzOiA0MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb29raWUgQXNzaWdubWVudCBDaGFuZ2UgaW4gY2ZnODAyMTEgYW5kIG1hYzgwMjExKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAsIGdvdCBpdC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgY29va2llcyBhcmUgYXNzaWduZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYXNzaWduaW5nIGNvb2tpZXMgZm9yIG1hbmFnZW1lbnQgVFgsIHJlbWFpbi1vbi1jaGFubmVsLCBwcm9iZSBwZWVyLCBhbmQgdHggY29udHJvbCBwb3J0IG9wZXJhdGlvbnMgZnJvbSB0aGUgZHJpdmVyIGxldmVsIHVwIGludG8gdGhlIGBjZmc4MDIxMWAgY29yZS4KClRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZGlyZWN0bHkgbWFuaXB1bGF0ZWQgYW5kIHRlc3RlZCB1c2luZyBuZXRsaW5rIGNvbW1hbmRzLiBXZSBjYW4gdmVyaWZ5IHRoZSBjaGFuZ2VzIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGdyZWF0IGZvciB0aGlzIGtpbmQgb2YgY29yZSBzdGFjayBtb2RpZmljYXRpb24uCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBuZXRsaW5rIGNvbW1hbmRzIGludm9sdmVkOiBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIFRoZXNlIGFyZSB0aGUga2V5IHRvdWNocG9pbnRzIHRvIGZvY3VzIG9uLiBXZSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoZXNlIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgaXNzdWVzLiBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfbWdtdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgYXNzaWduZWQgZm9yIHZhcmlvdXMgY2ZnODAyMTEgb3BlcmF0aW9ucyAocmVtYWluLW9uLWNoYW5uZWwsIG1nbXRfdHgsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCksIG1vdmluZyB0aGUgYXNzaWdubWVudCBmcm9tIGluZGl2aWR1YWwgZHJpdmVycyB0byB0aGUgY2ZnODAyMTEgY29yZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgYW5kIHRlc3RlZCB1c2luZyB0aGUgbWFjODAyMTFfaHdzaW0gc29mdHdhcmUtZW11bGF0ZWQgcmFkaW8gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMjA6MDQ6NDQuMzA2MjcxODczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDg3ODk4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIixcbiAgICBcIm5sODAyMTFfdHhfbWdtdFwiLFxuICAgIFwibmw4MDIxMV9wcm9iZV9wZWVyXCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMjA6MDQ6NDQuMzA2Mjc3OTEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkxOTg3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YWM2MDZlODhhZTNlNzAwZGVkMzNjMDZjZTM3MmQ5NzQ5Y2NhZTc3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDIwOjA0OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuQEAgLTMwMzQsMjAgKzMwMzQsMTQgQEAgc3RhdGljIGludCBhdGg2a2xfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXFxuLVxcdFxcdFxcdFxcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdFxcdFxcdCAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XFxuIFxcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVxcdTAwM2VuZGV2KTtcXG4tXFx0dTMyIGlkO1xcbiBcXG4gXFx0LyogVE9ETzogaWYgYWxyZWFkeSBwZW5kaW5nIG9yIG9uZ29pbmcgcmVtYWluLW9uLWNoYW5uZWwsXFxuIFxcdCAqIHJldHVybiAtRUJVU1kgKi9cXG4tXFx0aWQgPSArK3ZpZi1cXHUwMDNlbGFzdF9yb2NfaWQ7XFxuLVxcdGlmIChpZCA9PSAwKSB7XFxuLVxcdFxcdC8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovXFxuLVxcdFxcdGlkID0gKyt2aWYtXFx1MDAzZWxhc3Rfcm9jX2lkO1xcbi1cXHR9XFxuLVxcdCpjb29raWUgPSBpZDtcXG4rXFx0dmlmLVxcdTAwM2VsYXN0X3JvY19pZCA9IGNvb2tpZTtcXG4gXFxuIFxcdHJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgY2hhbi1cXHUwMDNlY2VudGVyX2ZyZXEsIGR1cmF0aW9uKTtcXG5AQCAtMzEwNiw2ICszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuIFxcbiBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgaWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgZnJlcSxcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgd2FpdCxcXG4gXFx0XFx0XFx0XFx0ICAgICBjb25zdCB1OCAqYnVmLFxcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFxuIFxcdFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtZ210X2J1Zi1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2VpZCA9IGlkO1xcbitcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlZnJlcSA9IGZyZXE7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2V3YWl0ID0gd2FpdDtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZWxlbiA9IGxlbjtcXG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xcbiBcXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cXHUwMDNlbmRldik7XFxuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXFxuIFxcdFxcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xcbiBcXHRcXHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcXG4gXFx0fVxcbiBcXG5AQCAtMzIzNSwxNiArMzIzMCwxNSBAQCBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGlkID0gdmlmLVxcdTAwM2VzZW5kX2FjdGlvbl9pZCsrO1xcbiBcXHR9XFxuIFxcbi1cXHQqY29va2llID0gaWQ7XFxuLVxcbiBcXHQvKiBBUCBtb2RlIFBvd2VyIHNhdmluZyBwcm9jZXNzaW5nICovXFxuIFxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xcbi1cXHRcXHRxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgZnJlcSwgd2FpdCwgYnVmLCBsZW4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcXG4rXFx0XFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBidWYsIGxlbiwgXFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcXG4gXFx0XFx0aWYgKHF1ZXVlZClcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuK1xcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBjb29raWU7XFxuIFxcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LCBpZCwgZnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0d2FpdCwgYnVmLCBsZW4sIG5vX2Njayk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbmluZGV4IDc3ZTA1MjMzNmViNWIuLmEwYjIzNmVlZWFiNTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbkBAIC00MDQsNiArNDA0LDcgQEAgc3RydWN0IGF0aDZrbF9tZ210X2J1ZmYge1xcbiBcXHR1MzIgZnJlcTtcXG4gXFx0dTMyIHdhaXQ7XFxuIFxcdHUzMiBpZDtcXG4rXFx0dTY0IGNvb2tpZTtcXG4gXFx0Ym9vbCBub19jY2s7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcdHU4IGJ1ZltdO1xcbkBAIC02MzEsOCArNjMyLDggQEAgc3RydWN0IGF0aDZrbF92aWYge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTtcXG4gXFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xcbiBcXHRpbnQgcmVjb25uZWN0X2ZsYWc7XFxuLVxcdHUzMiBsYXN0X3JvY19pZDtcXG4tXFx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcXG4rXFx0dTY0IGxhc3Rfcm9jX2lkO1xcbitcXHR1NjQgbGFzdF9jYW5jZWxfcm9jX2lkO1xcbiBcXHR1MzIgc2VuZF9hY3Rpb25faWQ7XFxuIFxcdGJvb2wgcHJvYmVfcmVxX3JlcG9ydDtcXG4gXFx0dTE2IGFzc29jX2Jzc19iZWFjb25faW50O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlcHNxX2xvY2spO1xcbiBcXG4gXFx0XFx0Y29ubi1cXHUwMDNlc3RhX2ZsYWdzIHw9IFNUQV9QU19QT0xMRUQ7XFxuK1xcdFxcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cXHUwMDNlY29va2llO1xcbiBcXHRcXHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHQgbWdtdF9idWYtXFx1MDAzZWlkLCBtZ210X2J1Zi1cXHUwMDNlZnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0IG1nbXRfYnVmLVxcdTAwM2V3YWl0LCBtZ210X2J1Zi1cXHUwMDNlYnVmLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuaW5kZXggOTdmZGFjNzIzN2UyNi4uYjRkM2M1Y2ZmODgxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXFxuIFxcdFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2Vwc3FfbG9jayk7XFxuIFxcdFxcdFxcdFxcdFxcdGlkeCA9IHZpZi1cXHUwMDNlZndfdmlmX2lkeDtcXG4gXFxuK1xcdFxcdFxcdFxcdFxcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVxcdTAwM2Vjb29raWU7XFxuIFxcdFxcdFxcdFxcdFxcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbWdtdC1cXHUwMDNlaWQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuaW5kZXggYzBjNDU1ZDZlMmRjYy4uODg4YmJiYjVkMTdhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xcbkBAIC01ODQsNyArNTg0LDcgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX3R4X3N0YXR1c19ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXFxcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgaWQsIGV2LVxcdTAwM2VhY2tfc3RhdHVzKTtcXG4gXFx0aWYgKHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lKSB7XFxuLVxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFxcdTAwMjZ2aWYtXFx1MDAzZXdkZXYsIGlkLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcXHUwMDI2dmlmLVxcdTAwM2V3ZGV2LCB3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUsXFxuIFxcdFxcdFxcdFxcdFxcdHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lLFxcbiBcXHRcXHRcXHRcXHRcXHR3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXFxuIFxcdFxcdFxcdFxcdFxcdCEhZXYtXFx1MDAzZWFja19zdGF0dXMsIEdGUF9BVE9NSUMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xcbiBcXG4gXFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcXG4gXFx0c2l6ZV90IGxhc3RfbWdtdF90eF9mcmFtZV9sZW47XFxuK1xcdHU2NCBsYXN0X21nbXRfdHhfY29va2llO1xcbiBcXHR1OCBzYXZlZF9wd3JfbW9kZTtcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuaW5kZXggNWYyYmQ5YTMxZmFmNi4uOWFjMzNkODI3ZjgwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xcbkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXFxuIFxcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXFx1MDAzZWJ1ZjtcXG4gXFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cXHUwMDNlbGVuO1xcbkBAIC0xNDg4LDggKzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0ICovXFxuIFxcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcXG4gXFx0cmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7XFxuLVxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSA/ICpjb29raWUgOiAwLCBidWYsIGxlbixcXG4tXFx0XFx0XFx0XFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcXG4rXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdHJldHVybiByYztcXG4gfVxcbkBAIC0xNzM1LDcgKzE3MzQsNyBAQCBzdGF0aWMgaW50IHdpbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4gXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBkdXJhdGlvbixcXG4tXFx0XFx0XFx0XFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4rXFx0XFx0XFx0XFx0IHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XFxuIFxcdGludCByYztcXG5AQCAtMjM4MSw3ICsyMzgwLDcgQEAgdm9pZCB3aWxfcHJvYmVfY2xpZW50X2ZsdXNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKVxcbiBcXG4gc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqcGVlciwgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcXG5AQCAtMjM5OSwxMyArMjM5OCwxMiBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0cmVxLVxcdTAwM2VjaWQgPSBjaWQ7XFxuLVxcdHJlcS1cXHUwMDNlY29va2llID0gY2lkO1xcbitcXHRyZXEtXFx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZpZi1cXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2cmVxLVxcdTAwM2VsaXN0LCBcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfcGVuZGluZyk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xcbiBcXG4tXFx0KmNvb2tpZSA9IHJlcS1cXHUwMDNlY29va2llO1xcbiBcXHRxdWV1ZV93b3JrKHdpbC1cXHUwMDNld3Ffc2VydmljZSwgXFx1MDAyNnZpZi1cXHUwMDNlcHJvYmVfY2xpZW50X3dvcmtlcik7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xcbmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuQEAgLTk4NSw3ICs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuIFxcdHBhcmFtcy5idWYgPSBmcmFtZTtcXG4gXFx0cGFyYW1zLmxlbiA9IGxlbjtcXG4gXFxuLVxcdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFxcdTAwMjZwYXJhbXMsIE5VTEwpO1xcbitcXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcXHUwMDI2cGFyYW1zLCAwKTtcXG4gXFxuIFxcdGtmcmVlKGZyYW1lKTtcXG4gXFx0d2lsX2luZm8od2lsLCBcXFwiLVxcdTAwM2UgJWRcXFxcblxcXCIsIHJjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbkBAIC0xMjQsNyArMTI0LDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxcbiBcXG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gd2Rldl90b192aWYod2lsLCB3ZGV2KTtcXG4gXFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXFx1MDAyNnZpZi1cXHUwMDNlcDJwO1xcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0fVxcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZwMnAtXFx1MDAzZWxpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTtcXG4tXFx0KmNvb2tpZSA9ICsrcDJwLVxcdTAwM2Vjb29raWU7XFxuK1xcdHAycC1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXHRwMnAtXFx1MDAzZWxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2d2lsLVxcdTAwM2V2aWZfbXV0ZXgpO1xcbkBAIC0xNjYsNyArMTY2LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0aWYgKHZpZi1cXHUwMDNlbWlkID09IDApXFxuIFxcdFxcdHdpbC1cXHUwMDNlcmFkaW9fd2RldiA9IHdkZXY7XFxuIFxcbi1cXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLFxcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXFxuIFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIFxcbiBvdXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxcbmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuQEAgLTEzMDEsNyArMTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcXG4gXFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7XFxuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgIHU2NCBjb29raWUpO1xcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcXG4gaW50IHdpbF9wMnBfY2FuY2VsX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgdTY0IGNvb2tpZSk7XFxuIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcXG4gXFxuIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCB1NjQgY29va2llKTtcXG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcXG4gaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdyhcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuaW5kZXggMjBmN2ZjY2Q2MTIxNS4uODA5MzcyNGU2ZDIyNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuQEAgLTU1NTQsNyArNTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFxuIGludFxcbiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVxcdTAwM2VjaGFuO1xcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuIFxcbi1cXHQqY29va2llID0gMDtcXG4tXFxuIFxcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xcbiBcXG4gXFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbkBAIC01NjA1LDcgKzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgaWVfbGVuKTtcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG4gXFx0XFx0aWYgKGxlbiBcXHUwMDNlIEJSQ01GX0ZJTF9BQ1RJT05fRlJBTUVfU0laRSArIERPVDExX01HTVRfSERSX0xFTikge1xcbkBAIC01NjIxLDcgKzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdH1cXG4gXFx0XFx0YWN0aW9uX2ZyYW1lID0gXFx1MDAyNmFmX3BhcmFtcy1cXHUwMDNlYWN0aW9uX2ZyYW1lO1xcbiBcXHRcXHQvKiBBZGQgdGhlIHBhY2tldCBJZCAqL1xcbi1cXHRcXHRhY3Rpb25fZnJhbWUtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRcXHRhY3Rpb25fZnJhbWUtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XFxuIFxcdFxcdC8qIEFkZCBCU1NJRCAqL1xcbiBcXHRcXHRtZW1jcHkoXFx1MDAyNmFjdGlvbl9mcmFtZS1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRcXHRtZW1jcHkoXFx1MDAyNmFmX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cXHUwMDNlbGVuKSk7XFxuIFxcbiBcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJBY3Rpb24gZnJhbWUsIGNvb2tpZT0lbGxkLCBsZW49JWQsIGNoYW5uZWw9JWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pLFxcbitcXHRcXHRcXHQgIGNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pLFxcbiBcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cXHUwMDNlY2hhbm5lbCkpO1xcbiBcXG4gXFx0XFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cXHUwMDNlaWZwLCBhZl9wYXJhbXMpO1xcbiBcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLFxcbiBcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4gZnJlZTpcXG4gXFx0XFx0a2ZyZWUoYWZfcGFyYW1zKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbkBAIC00OTcsNiArNDk3LDYgQEAgdm9pZCBicmNtZl9jZmc4MDIxMV9mcmVlX3ZpZihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuIFxcbiBpbnQgYnJjbWZfc2V0X3dzZWMoc3RydWN0IGJyY21mX2lmICppZnAsIGNvbnN0IHU4ICprZXksIHUxNiBrZXlfbGVuLCB1MTYgZmxhZ3MpO1xcbiBpbnQgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XFxuIFxcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuaW5kZXggY2UwOWQ0NGZhNzNjZi4uNDliMzNlZmUyMmI0MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApXFxuIFxcbiBzdGF0aWNcXG4gaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRpZiAoIWllZWU4MDIxMV9pc19hdXRoKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xcbiBcXG4tXFx0KmNvb2tpZSA9IDA7XFxuIFxcdHZpZiA9IGNvbnRhaW5lcl9vZih3ZGV2LCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmLCB3ZGV2KTtcXG4gXFxuIFxcdHJlaW5pdF9jb21wbGV0aW9uKFxcdTAwMjZ2aWYtXFx1MDAzZW1nbXRfdHgpO1xcbkBAIC0xNTUsNyArMTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbi1cXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XFxuIFxcdG1lbWNweShtZl9wYXJhbXMtXFx1MDAzZWRhdGEsIFxcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcXG4gXFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cXHUwMDNlbGVuKSk7XFxuIFxcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdH1cXG4gXFxuIHR4X3N0YXR1czpcXG4tXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcXG4tXFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuK1xcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XFxuIGZyZWU6XFxuIFxcdGtmcmVlKG1mX3BhcmFtcyk7XFxuIFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbmluZGV4IGM3ZDdiMzVhYjEyNTMuLjMyYTAxNWQ2Yjc2OTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuQEAgLTk3OSwxMCArOTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcXG4gXFx0cDJwLVxcdTAwM2VjZmctXFx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXFx1MDAyNmNoKTtcXG4gXFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXFx1MDAzZWlmcCwgV0xfUDJQX0RJU0NfU1RfTElTVEVOLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBjaC5jaHNwZWMsICh1MTYpZHVyYXRpb24pO1xcbi1cXHRpZiAoIWVycikge1xcbitcXHRpZiAoIWVycilcXG4gXFx0XFx0c2V0X2JpdChCUkNNRl9QMlBfU1RBVFVTX0RJU0NPVkVSX0xJU1RFTiwgXFx1MDAyNnAycC1cXHUwMDNlc3RhdHVzKTtcXG4tXFx0XFx0cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWUrKztcXG4tXFx0fVxcbiBleGl0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcXG4gICovXFxuIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xcbkBAIC0xMDIwLDggKzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdG1lbWNweShcXHUwMDI2cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbCwgY2hhbm5lbCwgc2l6ZW9mKCpjaGFubmVsKSk7XFxuLVxcdCpjb29raWUgPSBwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZTtcXG4tXFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuK1xcdHAycC1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbiBcXG4gZXhpdDpcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXFxuaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG5AQCAtMTU3LDcgKzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XFxuIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpyeF9hZGRyKTtcXG4gaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbiBcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCA5OWQ5NjA4OGUzNjRjLi5kZTk5NTNlY2JlZmQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuICAqL1xcbiBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR0eF9pbmZvLVxcdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcXG4gXFxuIFxcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xcbi1cXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XFxuIFxcbiBcXHRpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG4gXFx0XFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBza2IsXFxuLVxcdFxcdFxcdFxcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcXG4rXFx0XFx0XFx0XFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcXHUwMDI2Y29va2llKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRtd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPSBtd2lmaWV4X25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcXG4rXFx0aWYgKCFjaGFuKSB7XFxuIFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcXFwiSW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuQEAgLTMyNiwxNSArMzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0IGR1cmF0aW9uKTtcXG4gXFxuIFxcdGlmICghcmV0KSB7XFxuLVxcdFxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xcbitcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jaGFuID0gKmNoYW47XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXFxuK1xcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgXFxcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxcXG5cXFwiLCBjb29raWUpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC00NTYwLDcgKzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXFxuLVxcdFxcdFxcdCAgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcXG4gXFx0ICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24ndCBzdXBwb3J0KS5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbkBAIC0xMTAwLDI0ICsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpXFxuIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0ICAgICBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXFx1MDAyNnZpZi1cXHUwMDNlcHJpdjtcXG4tXFx0dTY0IGlkO1xcbiBcXG4gXFx0aWYgKHdkZXYtXFx1MDAzZWlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkge1xcbiBcXHRcXHRuZXRkZXZfZGJnKHZpZi1cXHUwMDNlbmRldiwgXFxcIlJlcXVpcmVkIHdoaWxlIGluIEFQIG1vZGVcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRpZCA9ICsrcHJpdi1cXHUwMDNlaW5jX3JvY19jb29raWU7XFxuLVxcdGlmIChpZCA9PSAwKVxcbi1cXHRcXHRpZCA9ICsrcHJpdi1cXHUwMDNlaW5jX3JvY19jb29raWU7XFxuLVxcbi1cXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXFx1MDAzZWh3X3ZhbHVlLFxcbitcXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVxcdTAwM2Vod192YWx1ZSxcXG4gXFx0XFx0XFx0XFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdHZpZi1cXHUwMDNld2lsYy1cXHUwMDNlb3BfY2ggPSBjaGFuLVxcdTAwM2Vod192YWx1ZTtcXG4gXFxuIFxcdHByaXYtXFx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcXG4tXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XFxuLVxcdCpjb29raWUgPSBpZDtcXG4rXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llO1xcbiBcXHRwcml2LVxcdTAwM2VwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTtcXG4gXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcXG4gXFxuLVxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbiBcXHRtb2RfdGltZXIoXFx1MDAyNnZpZi1cXHUwMDNlaGlmX2Rydi1cXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxcbiBcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xcbiBcXG5AQCAtMTE1Myw3ICsxMTQ3LDcgQEAgc3RhdGljIGludCBjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHQgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXFx1MDAzZWNoYW47XFxuIFxcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVxcdTAwM2V3YWl0O1xcbkBAIC0xMTcwLDggKzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0Y29uc3QgdTggKnZlbmRvcl9pZTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbi1cXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcXG4tXFx0cHJpdi1cXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcXG4rXFx0cHJpdi1cXHUwMDNldHhfY29va2llID0gY29va2llO1xcbiBcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcXG4gXFxuIFxcdGlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuaW5kZXggNGY5ZTIwZjcyODExNC4uYzgyMGYwOGQyODM1NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbkBAIC0xNTAsNyArMTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xcbiBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR0eF9pbmZvLVxcdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcXG4gXFxuIFxcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xcbi1cXHQqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKHByaXYtXFx1MDAzZWFkYXB0ZXIpO1xcbiBcXG4gXFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdHNrYiA9IG54cHdpZmlfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc2tiLFxcbi1cXHRcXHRcXHRcXHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XFxuK1xcdFxcdFxcdFxcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXFx1MDAyNmNvb2tpZSk7XFxuIFxcdGVsc2VcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcXG5AQCAtMjU0LDE0ICsyNTMsMTQgQEAgc3RhdGljIGludFxcbiBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xcbitcXHRpZiAoIWNoYW4pIHtcXG4gXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtMjc3LDE1ICsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgZHVyYXRpb24pO1xcbiBcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xcbitcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jaGFuID0gKmNoYW47XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXFxuK1xcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgXFxcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxcXG5cXFwiLCBjb29raWUpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0ICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0LypcXG4gXFx0ICogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXFxuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFxuIHN0YXRpYyBpbnRcXG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtXFx1MDAzZWJ1ZjtcXG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR1MTYgZmxhZ3MgPSAwO1xcbiBcXHR1MTYgZnJlcTtcXG4gXFxuLVxcdCpjb29raWUgPSBzaG9ydF9jb29raWU7XFxuLVxcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VvZmZjaGFuKVxcbiBcXHRcXHRmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDE1YzA4YjI0NTAyZmQuLjdiMzQ2MjI2ZmU3NDggMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtNTEwNyw3ICs1MTA3LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XFxuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXFxuICAqXFxuICAqIEBwcm9iZV9wZWVyOiBwcm9iZSBhIGNvbm5lY3RlZCBwZWVyIChBUDogU1RBIE1BQyByZXF1aXJlZDsgU1RBOiBubyBNQUMpLFxcbi0gKlxcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbisgKlxcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xcbisgKlxcdGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbiAgKlxcbiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLlxcbiAgKlxcbkBAIC01MjE4LDcgKzUyMTksOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4gICogICAgIHVzZXIgc3BhY2VcXG4gICpcXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXFxuLSAqXFx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC5cXG4rICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4rICpcXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxcbiAgKlxcbiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLlxcbiAgKlxcdFN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuXFxuQEAgLTU0NTUsMTQgKzU0NTcsMTQgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xcbiBcXHRpbnRcXHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICB1NjQgY29va2llKTtcXG4gXFxuIFxcdGludFxcdCgqbWdtdF90eCkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcdGludFxcdCgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKTtcXG5AQCAtNTUwOSw3ICs1NTExLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcXG4gXFxuIFxcdGludFxcdCgqcHJvYmVfcGVlcikoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpO1xcbiBcXG4gXFx0aW50XFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTU2MDcsNyArNTYwOSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcbiBcXHRpbnRcXHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5pbmRleCBkZjY4YTViZGViMmYwLi4zMTBjMTQ1NjAwNjVkIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC00ODI3LDE5ICs0ODI3LDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2god2lwaHksIGRldiwgcGFyYW1zKTtcXG4gfVxcbiBcXG4tdTY0IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4te1xcbi1cXHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cXHUwMDNlaHcud2lwaHkpO1xcbi1cXG4tXFx0bG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xcbi1cXG4tXFx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xcbi1cXHRpZiAoV0FSTl9PTihsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxcbi1cXHRcXHRsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyKys7XFxuLVxcbi1cXHRyZXR1cm4gbG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcjtcXG4tfVxcbi1cXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuQEAgLTQ4NjQsNyArNDg1MSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcXG4gXFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVxcdTAwM2VzdGF0dXNfZGF0YSA9IGlkO1xcbiBcXG4tXFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuIFxcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXFx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQ5NTAsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0XFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbkBAIC01MDU3LDcgKzUwNDMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChxb3MpXFxuIFxcdFxcdG51bGxmdW5jLVxcdTAwM2Vxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpO1xcbiBcXG4tXFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7XFxuK1xcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBcXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IDExZjQ0OWU4ZmYwMDMuLjRmMWY1MmY2ZWRjYmIgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbkBAIC0xNzA4LDggKzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDtcXG4gXFx0c3RydWN0IHdpcGh5X3dvcmsgaHdfcm9jX3N0YXJ0LCBod19yb2NfZG9uZTtcXG4gXFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcXG4tXFx0dTY0IHJvY19jb29raWVfY291bnRlcjtcXG4tXFxuIFxcdHN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7XFxuIFxcdHNwaW5sb2NrX3QgYWNrX3N0YXR1c19sb2NrO1xcbiBcXG5AQCAtMTk4OSw3ICsxOTg3LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIFxcbiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XFxuIFxcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcXG4gXFxuQEAgLTIxNTEsMTIgKzIxNDgsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcik7XFxuIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuIFxcbkBAIC0yMjM1LDcgKzIyMzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBpbmZvX2ZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzLFxcbi1cXHRcXHRcXHRcXHQgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKTtcXG4gc3RydWN0IHNrX2J1ZmYgKlxcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MpO1xcbkBAIC0yMjQ5LDcgKzIyNDYsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7XFxuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xcbiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXFxuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXG4gXFx0LypcXG4gXFx0ICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpXFxuLVxcdCAqIG9yIHRoZSBTS0IgKGZvciBtZ210IFRYKVxcbitcXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxcbiBcXHQgKi9cXG4tXFx0aWYgKCF0eHNrYikge1xcbi1cXHRcXHRyb2MtXFx1MDAzZWNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuLVxcdFxcdCpjb29raWUgPSByb2MtXFx1MDAzZWNvb2tpZTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aWYgKCF0eHNrYilcXG4rXFx0XFx0cm9jLVxcdTAwM2Vjb29raWUgPSAqY29va2llO1xcbitcXHRlbHNlXFxuIFxcdFxcdHJvYy1cXHUwMDNlbWdtdF90eF9jb29raWUgPSAqY29va2llO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cXHUwMDNlaHcud2lwaHksIGxvY2FsLVxcdTAwM2VzY2FuX3JlcSk7XFxuIFxcbkBAIC03MDQsNyArNzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG5AQCAtNzEzLDcgKzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuIFxcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxcbi1cXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxcbitcXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgXFx1MDAyNmNvb2tpZSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XFxuIH1cXG4gXFxuQEAgLTgxMCw3ICs4MDgsNyBAQCBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiB9XFxuIFxcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xcbiBcXHRcXHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFxcdTAwMjZjb29raWUsIEdGUF9LRVJORUwpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0LyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCdzIG5vdCBzZW50IHRvXFxuLVxcdFxcdCAqIHVzZXJzcGFjZSBpbiB0aGlzIGNhc2UgYnV0IHdlIHJlbHkgb24gaXRzIHZhbHVlXFxuLVxcdFxcdCAqIGludGVybmFsbHkgaW4gdGhlIG5lZWRfb2ZmY2hhbiBjYXNlIHRvIGRpc3Rpbmd1aXNoXFxuLVxcdFxcdCAqIG1nbXQtdHggZnJvbSByZW1haW4tb24tY2hhbm5lbC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAweGZmZmZmZmZmO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xcbkBAIC0xMDQ0LDcgKzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xcbiBcXHRyZXQgPSBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBwYXJhbXMtXFx1MDAzZWNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgICBwYXJhbXMtXFx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgcGFyYW1zLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y29va2llLCBza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90ZGxzLmMgYi9uZXQvbWFjODAyMTEvdGRscy5jXFxuaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXFxuKysrIGIvbmV0L21hYzgwMjExL3RkbHMuY1xcbkBAIC0xMTIxLDcgKzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXFxuIFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCBlYjM2ZjFiOTc3MWI1Li41NTQ5Y2I4ZDVjZGExIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMjU4Myw3ICsyNTgzLDcgQEAgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgICB1MzIgKmluZm9fZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xcbiBcXHR1MTYgaW5mb19pZCA9IDA7XFxuQEAgLTI2MDUsMTAgKzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRpZiAoaWQgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHRcXHRpbmZvX2lkID0gaWQ7XFxuIFxcdFxcdFxcdCppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUztcXG4tXFx0XFx0XFx0aWYgKGNvb2tpZSkge1xcbi1cXHRcXHRcXHRcXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcXG4tXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKGNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2tiKGFja19za2IpO1xcbiBcXHRcXHR9XFxuQEAgLTI2NDEsNyArMjYzOSw3IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5AQCAtNDMzNyw3ICs0MzM1LDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTQ1MzIsNyArNDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xcbi1cXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XFxuK1xcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS1cXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtNDU0Nyw4ICs0NTQ1LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuIFxcbi1cXHRcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4rXFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVxcdTAwM2VkZXYsIDAsIGN0cmxfZmxhZ3MsIDApO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTQ1OTAsNyArNDU4Nyw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cXVldWUpKSlcXG4gXFx0XFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fFxcbkBAIC00NjAxLDcgKzQ1OTgsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBub3JtYWw6XFxuIFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbkBAIC00NzAwLDcgKzQ2OTcsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovXFxuIFxcdFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ3MzYsNyArNDczMyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLVxcdTAwM2VzaykpKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZpbmZvLVxcdTAwM2VmbGFncywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aW5mby1cXHUwMDNlZmxhZ3MsIDApO1xcbiBcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzX2RhdGEpXFxuIFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XFxuIFxcdH1cXG5AQCAtNDg3OSw3ICs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdH1cXG4gXFxuIFxcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgaW5mb19mbGFncywgc3RhLFxcbi1cXHRcXHRcXHRcXHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcXG4gXFx0aWYgKElTX0VSUihza2IpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuQEAgLTY0OTQsNyArNjQ5MSw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXFxuLVxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5AQCAtNjYyOSw3ICs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbiBcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2tiLVxcdTAwM2VkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsXFxuLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXFxuaW5kZXggMzk5MDM3NTE0OTQzZC4uYjNlYWQ5OGFlZTA3YSAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBjZmc4MDIxMV9tbG1lX3B1cmdlX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgIHU2NCBjb29raWUpO1xcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXFxuIFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTtcXG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xcbmluZGV4IDJhMmMxNzMwNThiYWMuLjM0ZjkwMDNkNWM1NDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9tbG1lLmNcXG5AQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4gXFx0dTE2IHN0eXBlO1xcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbmluZGV4IGFjMGMwZGE0NTI0MTkuLjcwOGU4YmI4ZGFmZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5AQCAtMTQ2MzAsOCArMTQ2MzAsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4rXFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG4gXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgZHVyYXRpb24sIFxcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xcbitcXHRcXHRcXHRcXHQgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbiBcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG5AQCAtMTQ4NzEsNyArMTQ4NzIsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHR9XFxuIFxcbiBcXHRwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjtcXG4tXFx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFxcdTAwMjZwYXJhbXMsIFxcdTAwMjZjb29raWUpO1xcbitcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbitcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFxuQEAgLTE2MzU5LDcgKzE2MzYxLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgXFx1MDAyNmNvb2tpZSk7XFxuK1xcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuK1xcdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIGNvb2tpZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZnJlZV9tc2c7XFxuIFxcbkBAIC0xODU3NCwxMCArMTg1NzcsMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXG4gXFx0bGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tXFx1MDAzZWF0dHJzKTtcXG4gXFxuK1xcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuIFxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi1cXHRcXHRcXHRcXHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcXHUwMDI2Y29va2llKTtcXG4tXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxcbitcXHRcXHRcXHRcXHQgICBjb29raWUpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBjb29raWUpXFxuIFxcdFxcdG5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLVxcdTAwM2VleHRhY2ssIGNvb2tpZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjIwMzAsNiArMjIwMzQsMTAgQEAgc3RhdGljIHZvaWQgbmw4MDIxMV9mcmFtZV90eF9zdGF0dXMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4gXFx0dm9pZCAqaGRyO1xcbiBcXG4rXFx0LyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqL1xcbitcXHRpZiAoIXN0YXR1cy1cXHUwMDNlY29va2llKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpXFxuIFxcdFxcdHRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy1cXHUwMDNlY29va2llLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0dXMtXFx1MDAzZWFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcXG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICAgICByeF9hZGRyKTtcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbi1cXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcXG4rXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtNzYxLDEyICs3NjEsMTIgQEAgcmRldl9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4gXFx0aWYgKGNvb2tpZSlcXG4tXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdFxcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTUwLDEyICs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlcik7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlciwgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjQ1LjExNjA0MTYwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1MjM5MDA5Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBhc3NpZ25lZCBmb3IgdmFyaW91cyBjZmc4MDIxMSBvcGVyYXRpb25zIChyZW1haW4tb24tY2hhbm5lbCwgbWdtdF90eCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KSwgbW92aW5nIHRoZSBhc3NpZ25tZW50IGZyb20gaW5kaXZpZHVhbCBkcml2ZXJzIHRvIHRoZSBjZmc4MDIxMSBjb3JlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyBhbmQgdGVzdGVkIHVzaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBzb2Z0d2FyZS1lbXVsYXRlZCByYWRpbyBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4rXHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gKyt2aWYtXHUwMDNlbGFzdF9yb2NfaWQ7XG4tXHRpZiAoaWQgPT0gMCkge1xuLVx0XHQvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqL1xuLVx0XHRpZCA9ICsrdmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuK1x0dmlmLVx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xuIFxuIFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsXG4gXHRcdFx0XHRcdCAgICAgY2hhbi1cdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xuQEAgLTMxMDYsNiArMzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbiBcbiBcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtZ210X2J1Zi1cdTAwM2VsaXN0KTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VpZCA9IGlkO1xuK1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcbiBcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVx1MDAzZW5kZXYpO1xuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQrKztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbitcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbitcdFx0XHRcdFx0XHQgIGJ1ZiwgbGVuLCBcdTAwMjZtb3JlX2RhdGEsIG5vX2Njayk7XG4gXHRcdGlmIChxdWV1ZWQpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4rXHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgKzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4rXHR1NjQgY29va2llO1xuIFx0Ym9vbCBub19jY2s7XG4gXHRzaXplX3QgbGVuO1xuIFx0dTggYnVmW107XG5AQCAtNjMxLDggKzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbitcdHU2NCBsYXN0X3JvY19pZDtcbitcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XG4gXHR1MzIgc2VuZF9hY3Rpb25faWQ7XG4gXHRib29sIHByb2JlX3JlcV9yZXBvcnQ7XG4gXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbitcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggOTdmZGFjNzIzN2UyNi4uYjRkM2M1Y2ZmODgxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXG4gXHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFx0XHRcdFx0XHRpZHggPSB2aWYtXHUwMDNlZndfdmlmX2lkeDtcbiBcbitcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IGMwYzQ1NWQ2ZTJkY2MuLjg4OGJiYmI1ZDE3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTg0LDcgKzU4NCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcblwiLFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xuIFxuIFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcbiBcdHNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuO1xuK1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuK1x0XHRcdCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMTQ4OCw4ICsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyArMjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbitcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcbiBcdHBhcmFtcy5idWYgPSBmcmFtZTtcbiBcdHBhcmFtcy5sZW4gPSBsZW47XG4gXG4tXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIE5VTEwpO1xuK1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCItXHUwMDNlICVkXFxuXCIsIHJjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5pbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5AQCAtMTI0LDcgKzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xuLVx0KmNvb2tpZSA9ICsrcDJwLVx1MDAzZWNvb2tpZTtcbitcdHAycC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRwMnAtXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNndpbC1cdTAwM2V2aWZfbXV0ZXgpO1xuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbitcdFx0XHQgdTY0IGNvb2tpZSk7XG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDIwZjdmY2NkNjEyMTUuLjgwOTM3MjRlNmQyMjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC01NTU0LDcgKzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiRW50ZXJcXG5cIik7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICs1NjAzLDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfVk5EUl9JRV9QUkJSU1BfRkxBRyxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxuIFx0XHRcdFx0XHQgICAgaWVfbGVuKTtcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHR9XG4gXHRcdGFjdGlvbl9mcmFtZSA9IFx1MDAyNmFmX3BhcmFtcy1cdTAwM2VhY3Rpb25fZnJhbWU7XG4gXHRcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXG4tXHRcdGFjdGlvbl9mcmFtZS1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbitcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcblwiLFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4rXHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdFx0a2ZyZWUoYWZfcGFyYW1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtNDk3LDYgKzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IGNlMDlkNDRmYTczY2YuLjQ5YjMzZWZlMjJiNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFxuIHN0YXRpY1xuIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4rXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgKzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuK1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0a2ZyZWUobWZfcGFyYW1zKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC05NzksMTAgKzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuK1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llKys7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0Y29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG5AQCAtMTAyMCw4ICsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4rXHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuK1x0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiBcbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbmluZGV4IDlmM2YwMWFkZTJiNzcuLjcwNzgwMDk0OTE3MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOTlkOTYwODhlMzY0Yy4uZGU5OTUzZWNiZWZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuICAqL1xuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4rXHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjYsMTUgKzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsICpjb29raWUpO1xuK1x0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJ3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcbiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCJSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4rXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHR2aWYtXHUwMDNld2lsYy1cdTAwM2VvcF9jaCA9IGNoYW4tXHUwMDNlaHdfdmFsdWU7XG4gXG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcbi1cdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XG4tXHQqY29va2llID0gaWQ7XG4rXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyArMTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0ICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbiBcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVx1MDAzZXdhaXQ7XG5AQCAtMTE3MCw4ICsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbitcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgKzE1MCw3IEBAIG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuK1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTI3NywxNSArMjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCAqY29va2llKTtcbitcdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgICB1NjQgKmNvb2tpZSlcbitcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cdTAwM2VidWY7XG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCAxNWMwOGIyNDUwMmZkLi43YjM0NjIyNmZlNzQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDcsNyArNTEwNyw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3Mge1xuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXG4gICpcbiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSxcbi0gKlx0bXVzdCByZXR1cm4gYSBjb29raWUgdGhhdCBpcyBsYXRlciBwYXNzZWQgdG8gY2ZnODAyMTFfcHJvYmVfc3RhdHVzKCkuXG4rICpcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xuKyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE4LDcgKzUyMTksOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiAgICAgdXNlciBzcGFjZVxuICAqXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG4tICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuXG4rICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuKyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU1LDE0ICs1NDU3LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTtcbitcdFx0XHRcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xuIFx0aW50XHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCAgIHU2NCAqY29va2llKTtcbitcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUwOSw3ICs1NTExLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XG4gXHRcdFx0ICAgICBjb25zdCB1OCAqcGVlciwgZW51bSBubDgwMjExX3RkbHNfb3BlcmF0aW9uIG9wZXIpO1xuIFxuIFx0aW50XHQoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcbitcdFx0XHQgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqc2V0X25vYWNrX21hcCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC01NjA3LDcgKzU2MDksNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHRcdFx0ICAgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHMpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggZGY2OGE1YmRlYjJmMC4uMzEwYzE0NTYwMDY1ZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xuKysrIGIvbmV0L21hYzgwMjExL2NmZy5jXG5AQCAtNDgyNywxOSArNDgyNyw2IEBAIGludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpO1xuIH1cbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLXtcbi1cdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbi1cbi1cdGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xuLVxuLVx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xuLVx0aWYgKFdBUk5fT04obG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxuLVx0XHRsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXIrKztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY0LDcgKzQ4NTEsNiBAQCBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHRJRUVFODAyMTFfU0tCX0NCKHNrYiktXHUwMDNlc3RhdHVzX2RhdGEgPSBpZDtcbiBcbi1cdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuIFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ5NTAsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gfVxuIFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA1Nyw3ICs1MDQzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKHFvcylcbiBcdFx0bnVsbGZ1bmMtXHUwMDNlcW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTtcbiBcbi1cdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpO1xuK1x0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbmluZGV4IDExZjQ0OWU4ZmYwMDMuLjRmMWY1MmY2ZWRjYmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0xNzA4LDggKzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk4OSw3ICsxOTg3LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gXG4gdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcbiBcbkBAIC0yMTUxLDEyICsyMTQ4LDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBcbkBAIC0yMjM1LDcgKzIyMzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSk7XG4rXHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI0OSw3ICsyMjQ2LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xuIHZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuKysrIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4rXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxuIFx0ICovXG4tXHRpZiAoIXR4c2tiKSB7XG4tXHRcdHJvYy1cdTAwM2Vjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHQqY29va2llID0gcm9jLVx1MDAzZWNvb2tpZTtcbi1cdH0gZWxzZSB7XG4rXHRpZiAoIXR4c2tiKVxuK1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbitcdGVsc2VcbiBcdFx0cm9jLVx1MDAzZW1nbXRfdHhfY29va2llID0gKmNvb2tpZTtcbi1cdH1cbiBcbiBcdHJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LCBsb2NhbC1cdTAwM2VzY2FuX3JlcSk7XG4gXG5AQCAtNzA0LDcgKzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyArNzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuIFx0cmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sXG4tXHRcdFx0XHRcdGR1cmF0aW9uLCBjb29raWUsIE5VTEwsXG4rXHRcdFx0XHRcdGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIE5VTEwsXG4gXHRcdFx0XHRcdElFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpO1xuIH1cbiBcbkBAIC04MTAsNyArODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xuIFx0XHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXG4gXHRcdCAqL1xuLVx0XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcbitcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQncyBub3Qgc2VudCB0b1xuLVx0XHQgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZVxuLVx0XHQgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaFxuLVx0XHQgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuXG4tXHRcdCAqL1xuLVx0XHQqY29va2llID0gMHhmZmZmZmZmZjtcbiBcdH1cbiBcbiBcdGlmICghbmVlZF9vZmZjaGFuKSB7XG5AQCAtMTA0NCw3ICsxMDM1LDcgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHQvKiBUaGlzIHdpbGwgaGFuZGxlIGFsbCBraW5kcyBvZiBjb2FsZXNjaW5nIGFuZCBpbW1lZGlhdGUgVFggKi9cbiBcdHJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy1cdTAwM2VjaGFuLFxuLVx0XHRcdFx0ICAgICAgIHBhcmFtcy1cdTAwM2V3YWl0LCBjb29raWUsIHNrYixcbitcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4rKysgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi9cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLFxuLVx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpO1xuK1x0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcbmluZGV4IGViMzZmMWI5NzcxYjUuLjU1NDljYjhkNWNkYTEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKmFja19za2I7XG4gXHR1MTYgaW5mb19pZCA9IDA7XG5AQCAtMjYwNSwxMCArMjYwNSw4IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdGlmIChpZCBcdTAwM2U9IDApIHtcbiBcdFx0XHRpbmZvX2lkID0gaWQ7XG4gXHRcdFx0KmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTO1xuLVx0XHRcdGlmIChjb29raWUpIHtcbi1cdFx0XHRcdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHRcdFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbi1cdFx0XHR9XG4rXHRcdFx0aWYgKGNvb2tpZSlcbitcdFx0XHRcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9za2IoYWNrX3NrYik7XG4gXHRcdH1cbkBAIC0yNjQxLDcgKzI2MzksNyBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00MzM3LDcgKzQzMzUsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTQ1MzIsNyArNDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4rXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC00NTQ3LDggKzQ1NDUsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksXG4gXHRcdFx0XHRcdCAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbiBcbi1cdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NTkwLDcgKzQ1ODcsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2cXVldWUpKSlcbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8XG5AQCAtNDYwMSw3ICs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgIDApO1xuIFx0fVxuIFxuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbkBAIC00NzAwLDcgKzQ2OTcsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdC8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi9cbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzM2LDcgKzQ3MzMsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0aWYgKHVubGlrZWx5KHNrX3JlcXVlc3RzX3dpZmlfc3RhdHVzKHNrYi1cdTAwM2VzaykpKSB7XG4gXHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLFxuLVx0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIE5VTEwpO1xuK1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIDApO1xuIFx0XHRpZiAoaW5mby1cdTAwM2VzdGF0dXNfZGF0YSlcbiBcdFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHR9XG5AQCAtNDg3OSw3ICs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbitcdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcbiBcdGlmIChJU19FUlIoc2tiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjQ5NCw3ICs2NDkxLDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjI5LDcgKzY2MjYsNyBAQCBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi1cdTAwM2VkZXYsIDAsXG4gXHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLFxuLVx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0XHRcdCAgICAgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCAzOTkwMzc1MTQ5NDNkLi5iM2VhZDk4YWVlMDdhIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxuQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbitcdFx0XHQgIHU2NCBjb29raWUpO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7XG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jXG5pbmRleCAyYTJjMTczMDU4YmFjLi4zNGY5MDAzZDVjNTQxIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuQEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCBhYzBjMGRhNDUyNDE5Li43MDhlOGJiOGRhZmRkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjMwLDggKzE0NjMwLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuIFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXG4tXHRcdFx0XHQgICAgIGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xuK1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4NzEsNyArMTQ4NzIsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0fVxuIFxuIFx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG4tXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBcdTAwMjZjb29raWUpO1xuK1x0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbitcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzU5LDcgKzE2MzYxLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0Z290byBmcmVlX21zZztcbiBcdH1cbiBcbi1cdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIFx1MDAyNmNvb2tpZSk7XG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuK1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1NzQsMTAgKzE4NTc3LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBcdGxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLVx1MDAzZWF0dHJzKTtcbiBcbitcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0ICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsXG4tXHRcdFx0XHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcdTAwMjZjb29raWUpO1xuLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICFkb250X3dhaXRfZm9yX2FjaylcbitcdFx0XHRcdCAgIGNvb2tpZSk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgY29va2llKVxuIFx0XHRubF9zZXRfZXh0YWNrX2Nvb2tpZV91NjQoaW5mby1cdTAwM2VleHRhY2ssIGNvb2tpZSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0yMjAzMCw2ICsyMjAzNCwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbiBcdHZvaWQgKmhkcjtcbiBcbitcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbitcdGlmICghc3RhdHVzLVx1MDAzZWNvb2tpZSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbisrKyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcbiByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0ICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgICAgIHJ4X2FkZHIpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbixcbiBcdFx0XHRcdFx0ICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiArNzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgICAgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0XHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxuLVx0XHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbitcdFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRlbHNlXG4gXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTAsMTIgKzk1MCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3RkbHNfb3BlcihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuK1x0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjQ1LjExNjA0Mjk4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDUyNzg3NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogUmV2aXNlZCBgY2ZnODAyMTFfb3BzYCBDb29raWUgUGFzc2luZyoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0J3MgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIGB1NjQgY29va2llYCBpcyBwYXNzZWQgdG8gdGhlc2UgY3J1Y2lhbCBgY2ZnODAyMTFfb3BzYCBjYWxsYmFja3M6IGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuIEl0J3MgZ29pbmcgZnJvbSBhIHBvaW50ZXIgKGB1NjQgKmNvb2tpZWApIHRvIGEgdmFsdWUgKGB1NjQgY29va2llYCkuIFRoYXQncyBhIGJpZyBkZWFsIGJlY2F1c2UgdGhlIGNvb2tpZSBhc3NpZ25tZW50IGlzIG5vdyBoYXBwZW5pbmcgY2VudHJhbGx5IHdpdGhpbiBgY2ZnODAyMTFgIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGluc3RlYWQgb2YgYmVpbmcgZHJpdmVyLWdlbmVyYXRlZC5cblxuVGhpcyBpbXBhY3RzIHRoZSBjb3JlIDgwMi4xMSBzdGFjayDigJMgYm90aCBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIOKAkyBhbmQsIG9mIGNvdXJzZSwgYSBidW5jaCBvZiBkcml2ZXJzLiBHaXZlbiB0aGF0IGBtYWM4MDIxMWAgYW5kIGBjZmc4MDIxMWAgYXJlIGludm9sdmVkLCB3aGljaCBhcmUgYWxzbyByZWFjaGFibGUgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGhvcm91Z2hseSB0ZXN0ZWQuXG5cbkxldCdzIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFmZmVjdGVkOiBJbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHdlJ3JlIGxvb2tpbmcgYXQgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJbiBgbmV0L21hYzgwMjExL2AsIGl0J3MgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuXG5cblJpZ2h0LCBub3csIHdoYXQgYWJvdXQgdGhlIGNvbmZpZyBvcHRpb25zPyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgZW5hYmxlZC4gR29vZCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgaW52YWx1YWJsZSBmb3IgdGVzdGluZy5cblxuRm9jdXNpbmcgdGhlIGZ1enppbmcgZWZmb3J0cyDigJMgSSdsbCB0YXJnZXQgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSByZWFjaGFibGUuIFVzaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCwgSSBjYW4gY29uZmlybSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBleGlzdCBhbmQgYXJlIG5vdCBzdGF0aWMvaW5saW5lZCBpbiBhIHdheSB0aGF0IHByZXZlbnRzIGZ1enppbmcuIEFsdGhvdWdoIGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCBpcyBzdGF0aWMsIGl0J3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgc28gU3l6a2FsbGVyIGNhbiByZWFjaCBpdCB2aWEgYG5sODAyMTFgIG5ldGxpbmsgZGVzY3JpcHRpb25zLiBUaGUgYG1hYzgwMjExYCBmdW5jdGlvbnMgYXJlIGFsc28gZmluZSBiZWNhdXNlIHRoZXkgYXJlIGV4cG9ydGVkIG9yIHVzZWQgYXMgb3BzLiBTcGVjaWZpY2FsbHkgSSdtIHRoaW5raW5nIG9mIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgaWVlZTgwMjExX21nbXRfdHhgLCBhbmQgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBMZXQgbWUgcXVpY2tseSBgZ3JlcGAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE3MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjU2LjE2ODgzMzcyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzE4MDYzMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/aW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDUzNz1zdGF0aWMgaW50IG5sODAyMTFfdGRsc19vcGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTU3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ1NTg6c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU1OS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjU5Ljg4NjkwNDkyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzY4ODQxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb21tdW5pY2F0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc2V0IG9mIHdpcmVsZXNzIGNvbW11bmljYXRpb24gcHJpbWl0aXZlcywgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIDgwMi4xMSBzdGFuZGFyZCwganVkZ2luZyBieSB0aGUgcHJlZml4ZXMuIFRoZSBsaXN0IHNob3dzIGZ1bmN0aW9ucyB3aXRoIGJvdGggdGhlIGBubDgwMjExYCBhbmQgYGllZWU4MDIxMWAgcHJlZml4ZXMsIHNvIHdlJ3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaXNzdWUgaGVyZS5cblxuSSdsbCBzdGFydCBieSBmb2N1c2luZyBvbiBgbmw4MDIxMV90eF9tZ210YCwgYW5kIGNvbXBhcmUgaXQgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgc2VlbSByZWxhdGVkLCBzcGVjaWZpY2FsbHkgdGhvc2Ugd2l0aCBhIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBgaWVlZTgwMjExX21nbXRfdHhgLiBJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBhbHNvIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggY2hhbm5lbCBtYW5hZ2VtZW50IGFuZCBjb250cm9sIHBvcnRzLCBuYW1lbHkgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCwgd2hpY2ggSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24uIEFuZCwgdGhlcmUgaXMgYG5sODAyMTFfcHJvYmVfcGVlcmAsIHdoaWNoIHN1Z2dlc3RzIHBlZXIgZGlzY292ZXJ5IG9yIG1hbmFnZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlcyBpbiBhYnN0cmFjdGlvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9ucyBsaWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODA1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjA1LjU2Mzc5Mjg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjk1NjQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT9pbnQgbmw4MDIxMV90eF9tZ210XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ2OTQ9c3RhdGljIGludCBubDgwMjExX3JlZ2lzdGVyX21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTEtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDc1MjpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTMte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0ODk4OnN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210X2NhbmNlbF93YWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjA4Ljc5MzM2NTMzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjk2NDEzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzeXN0ZW0uIExvb2tpbmcgYXQgdGhlIG9wdGlvbnMsIEkgaGF2ZSBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24gd2hldGhlciBgTUFDODAyMTFfSFdTSU1gIGlzIHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIGl0J3MgYSBrZXkgY2FuZGlkYXRlLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgdmFsaWRhdGUgdGhhdCBhc3N1bXB0aW9uLiBMZXQncyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB0aGF0J3MgdGhlIHJpZ2h0IHBhdGggZm9yd2FyZCwgb3IgaWYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBvdGhlciBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ5MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjEzLjEyMzAwOTc3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkxODE4ODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjE1LjAxNDgzNDE3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDQzMDYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvbmZpZ3VyYXRpb25zKipcblxuUmlnaHQsIHNvIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRoYXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoYXQncyB0aGUga2V5IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBtYWM4MDIxMSBoYXJkd2FyZSBzaW11bGF0aW9uLCBubyBzdXJwcmlzZXMgdGhlcmUuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgV0xBTiBmcmFtZXdvcmsuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgd2l0aCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBgTUFDODAyMTFfSFdTSU1gIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRlc3Rpbmcgb3Igd2hhdGV2ZXIgSSBoYXZlIGluIG1pbmQuIEkgbmVlZCB0byBrbm93IHRoZSBzdGF0ZSBvZiB0aGVzZSBjb21wb25lbnRzLCB3aGF0IGlzIGVuYWJsZWQsIHdoYXQgaXMgZGlzYWJsZWQsIGFuZCBob3cgbXkgY3VycmVudCBjb25maWd1cmF0aW9uIGZpdHMgd2l0aGluIHRoYXQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc3NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjE5LjQ1OTE0NDA1N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjAwMjQzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjIxLjI4NTE3OTI2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTg3NzAwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29va2llIEFzc2lnbm1lbnQgQ2hhbmdlIGluIGNmZzgwMjExIGFuZCBtYWM4MDIxMSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0J3MgdGhlIHNldHVwLCBnb3QgaXQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGluIHRoZSA4MDIuMTEgc3RhY2suIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzaGlmdHMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGFzc2lnbmluZyBjb29raWVzIGZvciBtYW5hZ2VtZW50IFRYLCByZW1haW4tb24tY2hhbm5lbCwgcHJvYmUgcGVlciwgYW5kIHR4IGNvbnRyb2wgcG9ydCBvcGVyYXRpb25zIGZyb20gdGhlIGRyaXZlciBsZXZlbCB1cCBpbnRvIHRoZSBgY2ZnODAyMTFgIGNvcmUuXG5cblRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCdzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBkaXJlY3RseSBtYW5pcHVsYXRlZCBhbmQgdGVzdGVkIHVzaW5nIG5ldGxpbmsgY29tbWFuZHMuIFdlIGNhbiB2ZXJpZnkgdGhlIGNoYW5nZXMgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgZ3JlYXQgZm9yIHRoaXMga2luZCBvZiBjb3JlIHN0YWNrIG1vZGlmaWNhdGlvbi5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBuZXRsaW5rIGNvbW1hbmRzIGludm9sdmVkOiBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIFRoZXNlIGFyZSB0aGUga2V5IHRvdWNocG9pbnRzIHRvIGZvY3VzIG9uLiBXZSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoZXNlIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgaXNzdWVzLiBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5NjMsIk91dHB1dFRva2VucyI6MjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjMwLjI3Mjg4MzQ0M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTYzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwibmw4MDIxMV90eF9tZ210XCIsXG4gICAgXCJubDgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIixcbiAgICBcImllZWU4MDIxMV9tZ210X3R4XCIsXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgYXNzaWduZWQgZm9yIHZhcmlvdXMgY2ZnODAyMTEgb3BlcmF0aW9ucyAocmVtYWluLW9uLWNoYW5uZWwsIG1nbXRfdHgsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCksIG1vdmluZyB0aGUgYXNzaWdubWVudCBmcm9tIGluZGl2aWR1YWwgZHJpdmVycyB0byB0aGUgY2ZnODAyMTEgY29yZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgYW5kIHRlc3RlZCB1c2luZyB0aGUgbWFjODAyMTFfaHdzaW0gc29mdHdhcmUtZW11bGF0ZWQgcmFkaW8gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBhc3NpZ25lZCBmb3IgdmFyaW91cyBjZmc4MDIxMSBvcGVyYXRpb25zIChyZW1haW4tb24tY2hhbm5lbCwgbWdtdF90eCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KSwgbW92aW5nIHRoZSBhc3NpZ25tZW50IGZyb20gaW5kaXZpZHVhbCBkcml2ZXJzIHRvIHRoZSBjZmc4MDIxMSBjb3JlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyBhbmQgdGVzdGVkIHVzaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBzb2Z0d2FyZS1lbXVsYXRlZCByYWRpbyBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbjvf9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 20:00:20 +0000 UTC FinishedAt: 2026-07-29 20:05:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "5c08293d-e332-4e19-a85a-122763c00c92" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_remain_on_channel", "nl80211_tx_mgmt", "nl80211_probe_peer", "nl80211_tx_control_port", "ieee80211_remain_on_channel", "ieee80211_mgmt_tx", "ieee80211_tx_control_port" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDIwOjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuQEAgLTMwMzQsMjAgJiM0MzszMDM0LDE0IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0ICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiYjNDM7XHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gJiM0MzsmIzQzO3ZpZi1cdTAwM2VsYXN0X3JvY19pZDtcbi1cdGlmIChpZCA9PSAwKSB7XG4tXHRcdC8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovXG4tXHRcdGlkID0gJiM0MzsmIzQzO3ZpZi1cdTAwM2VsYXN0X3JvY19pZDtcbi1cdH1cbi1cdCpjb29raWUgPSBpZDtcbiYjNDM7XHR2aWYtXHUwMDNlbGFzdF9yb2NfaWQgPSBjb29raWU7XG4gXG4gXHRyZXR1cm4gYXRoNmtsX3dtaV9yZW1haW5fb25fY2hubF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCxcbiBcdFx0XHRcdFx0ICAgICBjaGFuLVx1MDAzZWNlbnRlcl9mcmVxLCBkdXJhdGlvbik7XG5AQCAtMzEwNiw2ICYjNDM7MzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgICB1MzIgZnJlcSxcbiBcdFx0XHRcdCAgICAgdTMyIHdhaXQsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHU4ICpidWYsXG5AQCAtMzEzOCw2ICYjNDM7MzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIFx0XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1nbXRfYnVmLVx1MDAzZWxpc3QpO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWlkID0gaWQ7XG4mIzQzO1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICYjNDM7MzE4Niw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIH1cbiBcbiBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG5AQCAtMzIyMiw3ICYjNDM7MzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICYjNDM7MzIzMCwxNSBAQCBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGlkID0gdmlmLVx1MDAzZXNlbmRfYWN0aW9uX2lkJiM0MzsmIzQzOztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbiYjNDM7XHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBjb29raWUsIGZyZXEsIHdhaXQsXG4mIzQzO1x0XHRcdFx0XHRcdCAgYnVmLCBsZW4sIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbiBcdFx0aWYgKHF1ZXVlZClcbiBcdFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbiYjNDM7XHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7XG4gXHR1MzIgZnJlcTtcbiBcdHUzMiB3YWl0O1xuIFx0dTMyIGlkO1xuJiM0MztcdHU2NCBjb29raWU7XG4gXHRib29sIG5vX2NjaztcbiBcdHNpemVfdCBsZW47XG4gXHR1OCBidWZbXTtcbkBAIC02MzEsOCAmIzQzOzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbiYjNDM7XHR1NjQgbGFzdF9yb2NfaWQ7XG4mIzQzO1x0dTY0IGxhc3RfY2FuY2VsX3JvY19pZDtcbiBcdHUzMiBzZW5kX2FjdGlvbl9pZDtcbiBcdGJvb2wgcHJvYmVfcmVxX3JlcG9ydDtcbiBcdHUxNiBhc3NvY19ic3NfYmVhY29uX2ludDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG5pbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG5AQCAtODk4LDYgJiM0Mzs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbiYjNDM7XHRcdGFyLVx1MDAzZXdtaS1cdTAwM2VsYXN0X21nbXRfdHhfY29va2llID0gbWdtdF9idWYtXHUwMDNlY29va2llO1xuIFx0XHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCxcbiBcdFx0XHRcdFx0IG1nbXRfYnVmLVx1MDAzZWlkLCBtZ210X2J1Zi1cdTAwM2VmcmVxLFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNld2FpdCwgbWdtdF9idWYtXHUwMDNlYnVmLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbmluZGV4IDk3ZmRhYzcyMzdlMjYuLmI0ZDNjNWNmZjg4MTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcbkBAIC0xNDY5LDYgJiM0MzsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldClcbiBcdFx0XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2Y29ubi1cdTAwM2Vwc3FfbG9jayk7XG4gXHRcdFx0XHRcdGlkeCA9IHZpZi1cdTAwM2Vmd192aWZfaWR4O1xuIFxuJiM0MztcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IGMwYzQ1NWQ2ZTJkY2MuLjg4OGJiYmI1ZDE3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTg0LDcgJiM0Mzs1ODQsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxuIFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXCYjMzQ7dHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XFxuXCYjMzQ7LFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4mIzQzO1x0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2Rldiwgd21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUsXG4gXHRcdFx0XHRcdHdtaS1cdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUsXG4gXHRcdFx0XHRcdHdtaS1cdTAwM2VsYXN0X21nbXRfdHhfZnJhbWVfbGVuLFxuIFx0XHRcdFx0XHQhIWV2LVx1MDAzZWFja19zdGF0dXMsIEdGUF9BVE9NSUMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5pbmRleCA4ZmJlY2UzZmRhZDlmLi44OWNlMmFiYmIxY2RjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxuQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IHdtaSB7XG4gXG4gXHR1OCAqbGFzdF9tZ210X3R4X2ZyYW1lO1xuIFx0c2l6ZV90IGxhc3RfbWdtdF90eF9mcmFtZV9sZW47XG4mIzQzO1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyAmIzQzOzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXG4gXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cdTAwM2VidWY7XG4gXHRzaXplX3QgbGVuID0gcGFyYW1zLVx1MDAzZWxlbjtcbkBAIC0xNDg4LDggJiM0MzsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xuIFxuIFx0cmV0dXJuIHJjO1xuIH1cbkBAIC0xNzM1LDcgJiM0MzsxNzM0LDcgQEAgc3RhdGljIGludCB3aWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbiBcdFx0XHRcdCB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuJiM0MztcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyAmIzQzOzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpXG4gXG4gc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSBuZGV2X3RvX3ZpZihkZXYpO1xuQEAgLTIzOTksMTMgJiM0MzsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbiYjNDM7XHRyZXEtXHUwMDNlY29va2llID0gY29va2llO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2cmVxLVx1MDAzZWxpc3QsIFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfcGVuZGluZyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9tdXRleCk7XG4gXG4tXHQqY29va2llID0gcmVxLVx1MDAzZWNvb2tpZTtcbiBcdHF1ZXVlX3dvcmsod2lsLVx1MDAzZXdxX3NlcnZpY2UsIFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfd29ya2VyKTtcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcbmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuQEAgLTk4NSw3ICYjNDM7OTg1LDcgQEAgc3RhdGljIHNzaXplX3Qgd2lsX3dyaXRlX2ZpbGVfdHhtZ210KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLFxuIFx0cGFyYW1zLmJ1ZiA9IGZyYW1lO1xuIFx0cGFyYW1zLmxlbiA9IGxlbjtcbiBcbi1cdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFx1MDAyNnBhcmFtcywgTlVMTCk7XG4mIzQzO1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCYjMzQ7LVx1MDAzZSAlZFxcblwmIzM0OywgcmMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbkBAIC0xMjQsNyAmIzQzOzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gd2Rldl90b192aWYod2lsLCB3ZGV2KTtcbiBcdHN0cnVjdCB3aWxfcDJwX2luZm8gKnAycCA9IFx1MDAyNnZpZi1cdTAwM2VwMnA7XG5AQCAtMTQ0LDcgJiM0MzsxNDQsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0fVxuIFxuIFx0bWVtY3B5KFx1MDAyNnAycC1cdTAwM2VsaXN0ZW5fY2hhbiwgY2hhbiwgc2l6ZW9mKCpjaGFuKSk7XG4tXHQqY29va2llID0gJiM0MzsmIzQzO3AycC1cdTAwM2Vjb29raWU7XG4mIzQzO1x0cDJwLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdHAycC1cdTAwM2VsaXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2d2lsLVx1MDAzZXZpZl9tdXRleCk7XG5AQCAtMTY2LDcgJiM0MzsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuIFxuIG91dDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcbmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuQEAgLTEzMDEsNyAmIzQzOzEzMDEsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcXVlc3QpO1xuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgJiM0MzsxMzE3LDcgQEAgaW50IHdtaV9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7XG4gXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpO1xuIGludCB3aWxfY2ZnODAyMTFfaWZhY2VfY29tYmluYXRpb25zX2Zyb21fZncoXG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuaW5kZXggMjBmN2ZjY2Q2MTIxNS4uODA5MzcyNGU2ZDIyNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuQEAgLTU1NTQsNyAmIzQzOzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuJiM0MztcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtNTU3Myw4ICYjNDM7NTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4tXG4gXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcbiBcbiBcdGlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuQEAgLTU2MDUsNyAmIzQzOzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLFxuIFx0XHRcdFx0XHQgICAgXHUwMDI2YnVmW2llX29mZnNldF0sXG4gXHRcdFx0XHRcdCAgICBpZV9sZW4pO1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICYjNDM7IERPVDExX01HTVRfSERSX0xFTikge1xuQEAgLTU2MjEsNyAmIzQzOzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdH1cbiBcdFx0YWN0aW9uX2ZyYW1lID0gXHUwMDI2YWZfcGFyYW1zLVx1MDAzZWFjdGlvbl9mcmFtZTtcbiBcdFx0LyogQWRkIHRoZSBwYWNrZXQgSWQgKi9cbi1cdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuJiM0MztcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICYjNDM7NTY0NywxMiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSk7XG4gXG4gXHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7QWN0aW9uIGZyYW1lLCBjb29raWU9JWxsZCwgbGVuPSVkLCBjaGFubmVsPSVkXFxuXCYjMzQ7LFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4mIzQzO1x0XHRcdCAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSxcbiBcdFx0XHQgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cdTAwM2VjaGFubmVsKSk7XG4gXG4gXHRcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSh2aWYtXHUwMDNlaWZwLCBhZl9wYXJhbXMpO1xuIFxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLFxuIFx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0XHRrZnJlZShhZl9wYXJhbXMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbkBAIC00OTcsNiAmIzQzOzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XG4gXG4gI2VuZGlmIC8qIEJSQ01GTUFDX0NGRzgwMjExX0ggKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5pbmRleCBjZTA5ZDQ0ZmE3M2NmLi40OWIzM2VmZTIyYjQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5AQCAtMTAwLDcgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApXG4gXG4gc3RhdGljXG4gaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgJiM0MzsxMjMsNiBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0cmV0dXJuIGJyY21mX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbiBcbi1cdCpjb29raWUgPSAwO1xuIFx0dmlmID0gY29udGFpbmVyX29mKHdkZXYsIHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYsIHdkZXYpO1xuIFxuIFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2dmlmLVx1MDAzZW1nbXRfdHgpO1xuQEAgLTE1NSw3ICYjNDM7MTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWJzc2lkWzBdLCBcdTAwMjZtZ210LVx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XG4tXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4mIzQzO1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCAmIzQzOzE4Niw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0fVxuIFxuIHR4X3N0YXR1czpcbi1cdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4tXHRcdFx0XHRHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIGZyZWU6XG4gXHRrZnJlZShtZl9wYXJhbXMpO1xuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbmluZGV4IGM3ZDdiMzVhYjEyNTMuLjMyYTAxNWQ2Yjc2OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuQEAgLTk3OSwxMCAmIzQzOzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuJiM0MztcdGlmICghZXJyKVxuIFx0XHRzZXRfYml0KEJSQ01GX1AyUF9TVEFUVVNfRElTQ09WRVJfTElTVEVOLCBcdTAwMjZwMnAtXHUwMDNlc3RhdHVzKTtcbi1cdFx0cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSYjNDM7JiM0Mzs7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyAmIzQzOzk5OCw3IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gICovXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcbkBAIC0xMDIwLDggJiM0MzsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSA9IGNvb2tpZTtcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuIFxuIGV4aXQ6XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG5AQCAtMTU3LDcgJiM0MzsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfZXZlbnRfbXNnICplLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbmluZGV4IDk5ZDk2MDg4ZTM2NGMuLmRlOTk1M2VjYmVmZDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcbkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gICovXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCAmIzQzOzI1OSwxMyBAQCBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHR4X2luZm8tXHUwMDNlcGt0X2xlbiA9IHBrdF9sZW47XG4gXG4gXHRtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShza2IsIGJ1ZiwgbGVuKTtcbi1cdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcbiBcbiBcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdHNrYiA9IG13aWZpZXhfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcbiBcdFx0XHRcdFx0XHQgICAgICBza2IsXG4tXHRcdFx0XHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XG4mIzQzO1x0XHRcdFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcdTAwMjZjb29raWUpO1xuIFx0ZWxzZVxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgJiM0MzszMDMsMTMgQEAgc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPSBtd2lmaWV4X25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcbiYjNDM7XHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7SW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTMyNiwxNSAmIzQzOzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuJiM0MztcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcbiBcbi1cdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLFxuJiM0MztcdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXG4gXHRcdFx0XHRcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xuIFxuIFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG4tXHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC00NTYwLDcgJiM0Mzs0NTU4LDcgQEAgbXdpZmlleF9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxuLVx0XHRcdCAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJiMzOTt0IHN1cHBvcnQpLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcbmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcbkBAIC0xMTAwLDI0ICYjNDM7MTEwMCwxOSBAQCBzdGF0aWMgdm9pZCB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLCB1NjQgY29va2llKVxuIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCYjMzQ7UmVxdWlyZWQgd2hpbGUgaW4gQVAgbW9kZVxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHRpZCA9ICYjNDM7JiM0Mztwcml2LVx1MDAzZWluY19yb2NfY29va2llO1xuLVx0aWYgKGlkID09IDApXG4tXHRcdGlkID0gJiM0MzsmIzQzO3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4mIzQzO1x0cmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGNvb2tpZSwgY2hhbi1cdTAwM2Vod192YWx1ZSxcbiBcdFx0XHRcdCAgICAgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuQEAgLTExMjUsMTIgJiM0MzsxMTIwLDExIEBAIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdHZpZi1cdTAwM2V3aWxjLVx1MDAzZW9wX2NoID0gY2hhbi1cdTAwM2Vod192YWx1ZTtcbiBcbiBcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuO1xuLVx0cHJpdi1cdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDtcbi1cdCpjb29raWUgPSBpZDtcbiYjNDM7XHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuIFx0bW9kX3RpbWVyKFx1MDAyNnZpZi1cdTAwM2VoaWZfZHJ2LVx1MDAzZXJlbWFpbl9vbl9jaF90aW1lcixcbiBcdFx0ICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gJiM0MzsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyAmIzQzOzExNDcsNyBAQCBzdGF0aWMgaW50IGNhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cdTAwM2VjaGFuO1xuIFx0dW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtXHUwMDNld2FpdDtcbkBAIC0xMTcwLDggJiM0MzsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRwcml2LVx1MDAzZXR4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5pbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xuQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiAvKiBjZmc4MDIxMSBvcGVyYXRpb24gaGFuZGxlciB0byB0cmFuc21pdCBhIG1hbmFnZW1lbnQgZnJhbWUuICovXG4gc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCAmIzQzOzIxMiwxMyBAQCBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdHR4X2luZm8tXHUwMDNlcGt0X2xlbiA9IHBrdF9sZW47XG4gXG4gXHRueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShza2IsIGJ1ZiwgbGVuKTtcbi1cdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi1cdTAwM2VhZGFwdGVyKTtcbiBcbiBcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG4gXHRcdHNrYiA9IG54cHdpZmlfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcbiBcdFx0XHRcdFx0XHQgICAgICBza2IsXG4tXHRcdFx0XHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XG4mIzQzO1x0XHRcdFx0TlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcdTAwMjZjb29raWUpO1xuIFx0ZWxzZVxuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgJiM0MzsyNTMsMTQgQEAgc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4mIzQzO1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5AQCAtMjc3LDE1ICYjNDM7Mjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuJiM0MztcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcbiBcbi1cdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLFxuJiM0MztcdFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXG4gXHRcdFx0XHRcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xuIFxuIFx0XHRueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwmIzM0OywgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICBcJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwmIzM0OywgY29va2llKTtcbiBcdH1cbiBcbiBcdHJldHVybiByZXQ7XG5AQCAtMzYxOCw3ICYjNDM7MzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG54cHdpZmlfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxuLVx0XHRcdCAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICYjNDM7NDQ2LDcgQEAgcXRuZl91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gc3RhdGljIGludFxuIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgcXRuZl92aWYgKnZpZiA9IHF0bmZfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdF9mcmFtZSA9ICh2b2lkICopcGFyYW1zLVx1MDAzZWJ1ZjtcbkBAIC00NTQsOCAmIzQzOzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCAxNWMwOGIyNDUwMmZkLi43YjM0NjIyNmZlNzQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDcsNyAmIzQzOzUxMDcsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiBAdGRsc19vcGVyOiBQZXJmb3JtIGEgaGlnaC1sZXZlbCBURExTIG9wZXJhdGlvbiAoZS5nLiBURExTIGxpbmsgc2V0dXApLlxuICAqXG4gICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksXG4tICpcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxuJiM0MzsgKlx0bXVzdCB1c2UgdGhlIEBjb29raWUgYXMgcHJvdmlkZWQgd2hpY2ggaXMgbGF0ZXIgcGFzc2VkIHRvXG4mIzQzOyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE4LDcgJiM0Mzs1MjE5LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4gICogICAgIHVzZXIgc3BhY2VcbiAgKlxuICAqIEB0eF9jb250cm9sX3BvcnQ6IFRYIGEgY29udHJvbCBwb3J0IGZyYW1lIChFQVBvTCkuICBUaGUgbm9lbmNyeXB0IHBhcmFtZXRlclxuLSAqXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLlxuJiM0MzsgKlx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llXG4mIzQzOyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU1LDE0ICYjNDM7NTQ1NywxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4gXHRpbnRcdCgqY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUwOSw3ICYjNDM7NTUxMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcbiBcbiBcdGludFx0KCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTU2MDcsNyAmIzQzOzU2MDksNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHRcdCAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbmluZGV4IGRmNjhhNWJkZWIyZjAuLjMxMGMxNDU2MDA2NWQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTQ4MjcsMTkgJiM0Mzs0ODI3LDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG4gfVxuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4te1xuLVx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuLVxuLVx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdC8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi9cbi1cdGlmIChXQVJOX09OKGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlciA9PSAwKSlcbi1cdFx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY0LDcgJiM0Mzs0ODUxLDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cdTAwM2VzdGF0dXNfZGF0YV9pZHIgPSAxO1xuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhID0gaWQ7XG4gXG4tXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbiBcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC00OTUwLDcgJiM0Mzs0OTM2LDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA1Nyw3ICYjNDM7NTA0Myw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChxb3MpXG4gXHRcdG51bGxmdW5jLVx1MDAzZXFvc19jdHJsID0gY3B1X3RvX2xlMTYoNyk7XG4gXG4tXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggMTFmNDQ5ZThmZjAwMy4uNGYxZjUyZjZlZGNiYiAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE3MDgsOCAmIzQzOzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk4OSw3ICYjNDM7MTk4Nyw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIFxuIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9xdWV1ZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7XG4gXG5AQCAtMjE1MSwxMiAmIzQzOzIxNDgsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG4gXG5AQCAtMjIzNSw3ICYjNDM7MjIzMiw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdCAgdTMyIGN0cmxfZmxhZ3MsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI0OSw3ICYjNDM7MjI0Niw3IEBAIHZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXG4tXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7XG4gdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcbmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5AQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4mIzQzO1x0ICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTFcbiBcdCAqL1xuLVx0aWYgKCF0eHNrYikge1xuLVx0XHRyb2MtXHUwMDNlY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbi1cdFx0KmNvb2tpZSA9IHJvYy1cdTAwM2Vjb29raWU7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGlmICghdHhza2IpXG4mIzQzO1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRlbHNlXG4gXHRcdHJvYy1cdTAwM2VtZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7XG4tXHR9XG4gXG4gXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlc2Nhbl9yZXEpO1xuIFxuQEAgLTcwNCw3ICYjNDM7NzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiBcbiBcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxuLVx0XHRcdFx0XHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgTlVMTCxcbiBcdFx0XHRcdFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XG4gfVxuIFxuQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC0xMDE2LDE4ICYjNDM7MTAxNCwxMSBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0LyogbWFrZSBhIGNvcHkgdG8gcHJlc2VydmUgdGhlIGZyYW1lIGNvbnRlbnRzXG4gXHRcdCAqIGluIGNhc2Ugb2YgZW5jcnlwdGlvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG9cbi1cdFx0ICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWVcbi1cdFx0ICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2hcbi1cdFx0ICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLlxuLVx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDB4ZmZmZmZmZmY7XG4gXHR9XG4gXG4gXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xuQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xuIFx0cmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLVx1MDAzZWNoYW4sXG4tXHRcdFx0XHQgICAgICAgcGFyYW1zLVx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICYjNDM7MTEyMSw3IEBAIGllZWU4MDIxMV90ZGxzX3ByZXBfbWdtdF9wYWNrZXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCBmbGFncyxcbi1cdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggZWIzNmYxYjk3NzFiNS4uNTU0OWNiOGQ1Y2RhMSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xuIFx0dTE2IGluZm9faWQgPSAwO1xuQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0aWYgKGlkIFx1MDAzZT0gMCkge1xuIFx0XHRcdGluZm9faWQgPSBpZDtcbiBcdFx0XHQqaW5mb19mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX1JFUV9UWF9TVEFUVVM7XG4tXHRcdFx0aWYgKGNvb2tpZSkge1xuLVx0XHRcdFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XG4tXHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xuLVx0XHRcdH1cbiYjNDM7XHRcdFx0aWYgKGNvb2tpZSlcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSBjb29raWU7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0a2ZyZWVfc2tiKGFja19za2IpO1xuIFx0XHR9XG5AQCAtMjY0MSw3ICYjNDM7MjYzOSw3IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00MzM3LDcgJiM0Mzs0MzM1LDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgIHUzMiBpbmZvX2ZsYWdzLFxuIFx0XHRcdFx0ICB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNDUzMiw3ICYjNDM7NDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4mIzQzO1x0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtNDU0Nyw4ICYjNDM7NDU0NSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKF9fZmZzKGxpbmtzKSxcbiBcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuIFxuLVx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NTkwLDcgJiM0Mzs0NTg3LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnF1ZXVlKSkpXG4gXHRcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcbiBcdFx0XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQyxcbi1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgIDApO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIE1MT19NQ0FTVF9NVUxUSV9MSU5LX1RYKSkgfHxcbkBAIC00NjAxLDcgJiM0Mzs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH1cbiBcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG5AQCAtNDcwMCw3ICYjNDM7NDY5Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0LyogZmFsbCBiYWNrIHRvIG5vbi1vZmZsb2FkIHNsb3cgcGF0aCAqL1xuIFx0XHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXG4tXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzM2LDcgJiM0Mzs0NzMzLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcbiBcdGlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItXHUwMDNlc2spKSkge1xuIFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcbi1cdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpbmZvLVx1MDAzZWZsYWdzLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aW5mby1cdTAwM2VmbGFncywgMCk7XG4gXHRcdGlmIChpbmZvLVx1MDAzZXN0YXR1c19kYXRhKVxuIFx0XHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcbiBcdH1cbkBAIC00ODc5LDcgJiM0Mzs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRpZiAoSVNfRVJSKHNrYikpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTY0OTQsNyAmIzQzOzY0OTEsNyBAQCB2b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuLVx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjI5LDcgJiM0Mzs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItXHUwMDNlZGV2LCAwLFxuIFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9TS0lQX01QQVRIX0xPT0tVUCxcbi1cdFx0XHRcdCAgICAgTlVMTCk7XG4mIzQzO1x0XHRcdFx0ICAgICAwKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IDM5OTAzNzUxNDk0M2QuLmIzZWFkOThhZWUwN2EgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICB1NjQgY29va2llKTtcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXBhX21hc2spO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuaW5kZXggMmEyYzE3MzA1OGJhYy4uMzRmOTAwM2Q1YzU0MSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmNcbkBAIC04NTEsNyAmIzQzOzg1MSw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCBhYzBjMGRhNDUyNDE5Li43MDhlOGJiOGRhZmRkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjMwLDggJiM0MzsxNDYzMCw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFx0fVxuIFxuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbixcbi1cdFx0XHRcdCAgICAgZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4NzEsNyAmIzQzOzE0ODcyLDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdH1cbiBcbiBcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xuLVx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFx1MDAyNnBhcmFtcywgXHUwMDI2Y29va2llKTtcbiYjNDM7XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuJiM0MztcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzU5LDcgJiM0MzsxNjM2MSw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4tXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBcdTAwMjZjb29raWUpO1xuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4mIzQzO1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1NzQsMTAgJiM0MzsxODU3NywxMSBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gXHRsaW5rX2lkID0gbmw4MDIxMV9saW5rX2lkX29yX2ludmFsaWQoaW5mby1cdTAwM2VhdHRycyk7XG4gXG4mIzQzO1x0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbiBcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4gXHRcdFx0XHQgICBkZXN0LCBjcHVfdG9fYmUxNihwcm90byksIG5vZW5jcnlwdCwgbGlua19pZCxcbi1cdFx0XHRcdCAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6IFx1MDAyNmNvb2tpZSk7XG4tXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxuJiM0MztcdFx0XHRcdCAgIGNvb2tpZSk7XG4mIzQzO1x0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IGNvb2tpZSlcbiBcdFx0bmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tXHUwMDNlZXh0YWNrLCBjb29raWUpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjIwMzAsNiAmIzQzOzIyMDM0LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuIFx0dm9pZCAqaGRyO1xuIFxuJiM0MztcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbiYjNDM7XHRpZiAoIXN0YXR1cy1cdTAwM2Vjb29raWUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICYjNDM7NzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50XG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9yZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgICAgcnhfYWRkcik7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLFxuIFx0XHRcdFx0XHQgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9tZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICYjNDM7Nzc1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90eF9jb250cm9sX3BvcnQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHRcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IGJvb2wgbm9lbmNyeXB0LCBpbnQgbGluayxcbi1cdFx0XHRcdCAgICAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0ZWxzZVxuIFx0XHR0cmFjZV9yZGV2X3JldHVybl9pbnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuJiM0MztcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYwppbmRleCBlY2RlOTExNTliNTQ2Li4zNDAyNWQ2NGQ2MTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCkBAIC0zMDM0LDIwICYjNDM7MzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCiAJCQkJICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwKLQkJCQkgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQomIzQzOwkJCQkgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpOwogCXN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLSZndDtuZGV2KTsKLQl1MzIgaWQ7CiAKIAkvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCwKIAkgKiByZXR1cm4gLUVCVVNZICovCi0JaWQgPSAmIzQzOyYjNDM7dmlmLSZndDtsYXN0X3JvY19pZDsKLQlpZiAoaWQgPT0gMCkgewotCQkvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqLwotCQlpZCA9ICYjNDM7JiM0Mzt2aWYtJmd0O2xhc3Rfcm9jX2lkOwotCX0KLQkqY29va2llID0gaWQ7CiYjNDM7CXZpZi0mZ3Q7bGFzdF9yb2NfaWQgPSBjb29raWU7CiAKIAlyZXR1cm4gYXRoNmtsX3dtaV9yZW1haW5fb25fY2hubF9jbWQoYXItJmd0O3dtaSwgdmlmLSZndDtmd192aWZfaWR4LAogCQkJCQkgICAgIGNoYW4tJmd0O2NlbnRlcl9mcmVxLCBkdXJhdGlvbik7CkBAIC0zMTA2LDYgJiM0MzszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsCiAKIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLAogCQkJCSAgICAgdTMyIGlkLAomIzQzOwkJCQkgICAgIHU2NCBjb29raWUsCiAJCQkJICAgICB1MzIgZnJlcSwKIAkJCQkgICAgIHUzMiB3YWl0LAogCQkJCSAgICAgY29uc3QgdTggKmJ1ZiwKQEAgLTMxMzgsNiAmIzQzOzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwKIAogCQkJSU5JVF9MSVNUX0hFQUQoJmFtcDttZ210X2J1Zi0mZ3Q7bGlzdCk7CiAJCQltZ210X2J1Zi0mZ3Q7aWQgPSBpZDsKJiM0MzsJCQltZ210X2J1Zi0mZ3Q7Y29va2llID0gY29va2llOwogCQkJbWdtdF9idWYtJmd0O2ZyZXEgPSBmcmVxOwogCQkJbWdtdF9idWYtJmd0O3dhaXQgPSB3YWl0OwogCQkJbWdtdF9idWYtJmd0O2xlbiA9IGxlbjsKQEAgLTMxOTAsNyAmIzQzOzMxODYsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKIH0KIAogc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7CiAJc3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtJmd0O25kZXYpOwpAQCAtMzIyMiw3ICYjNDM7MzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JCiAJCSAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy4KIAkJICovCi0JCSpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqLwogCQlyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTsKIAl9CiAKQEAgLTMyMzUsMTYgJiM0MzszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJaWQgPSB2aWYtJmd0O3NlbmRfYWN0aW9uX2lkJiM0MzsmIzQzOzsKIAl9CiAKLQkqY29va2llID0gaWQ7Ci0KIAkvKiBBUCBtb2RlIFBvd2VyIHNhdmluZyBwcm9jZXNzaW5nICovCiAJaWYgKHZpZi0mZ3Q7bndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7Ci0JCXF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbiwKLQkJCQkJCSAgJmFtcDttb3JlX2RhdGEsIG5vX2Njayk7CiYjNDM7CQlxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgY29va2llLCBmcmVxLCB3YWl0LAomIzQzOwkJCQkJCSAgYnVmLCBsZW4sICZhbXA7bW9yZV9kYXRhLCBub19jY2spOwogCQlpZiAocXVldWVkKQogCQkJcmV0dXJuIDA7CiAJfQogCiYjNDM7CWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBjb29raWU7CiAJcmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsIGlkLCBmcmVxLAogCQkJCQl3YWl0LCBidWYsIGxlbiwgbm9fY2NrKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKaW5kZXggNzdlMDUyMzM2ZWI1Yi4uYTBiMjM2ZWVlYWI1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmgKQEAgLTQwNCw2ICYjNDM7NDA0LDcgQEAgc3RydWN0IGF0aDZrbF9tZ210X2J1ZmYgewogCXUzMiBmcmVxOwogCXUzMiB3YWl0OwogCXUzMiBpZDsKJiM0MzsJdTY0IGNvb2tpZTsKIAlib29sIG5vX2NjazsKIAlzaXplX3QgbGVuOwogCXU4IGJ1ZltdOwpAQCAtNjMxLDggJiM0Mzs2MzIsOCBAQCBzdHJ1Y3QgYXRoNmtsX3ZpZiB7CiAJc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqc2Nhbl9yZXE7CiAJZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlOwogCWludCByZWNvbm5lY3RfZmxhZzsKLQl1MzIgbGFzdF9yb2NfaWQ7Ci0JdTMyIGxhc3RfY2FuY2VsX3JvY19pZDsKJiM0MzsJdTY0IGxhc3Rfcm9jX2lkOwomIzQzOwl1NjQgbGFzdF9jYW5jZWxfcm9jX2lkOwogCXUzMiBzZW5kX2FjdGlvbl9pZDsKIAlib29sIHByb2JlX3JlcV9yZXBvcnQ7CiAJdTE2IGFzc29jX2Jzc19iZWFjb25faW50OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwppbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYwpAQCAtODk4LDYgJiM0Mzs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKQogCQlzcGluX3VubG9ja19iaCgmYW1wO2Nvbm4tJmd0O3BzcV9sb2NrKTsKIAogCQljb25uLSZndDtzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDsKJiM0MzsJCWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi0mZ3Q7Y29va2llOwogCQlhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItJmd0O3dtaSwgdmlmLSZndDtmd192aWZfaWR4LAogCQkJCQkgbWdtdF9idWYtJmd0O2lkLCBtZ210X2J1Zi0mZ3Q7ZnJlcSwKIAkJCQkJIG1nbXRfYnVmLSZndDt3YWl0LCBtZ210X2J1Zi0mZ3Q7YnVmLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwppbmRleCA5N2ZkYWM3MjM3ZTI2Li5iNGQzYzVjZmY4ODExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYwpAQCAtMTQ2OSw2ICYjNDM7MTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpCiAJCQkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7Y29ubi0mZ3Q7cHNxX2xvY2spOwogCQkJCQlpZHggPSB2aWYtJmd0O2Z3X3ZpZl9pZHg7CiAKJiM0MzsJCQkJCWFyLSZndDt3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LSZndDtjb29raWU7CiAJCQkJCWF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLAogCQkJCQkJCQkgaWR4LAogCQkJCQkJCQkgbWdtdC0mZ3Q7aWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwppbmRleCBjMGM0NTVkNmUyZGNjLi44ODhiYmJiNWQxN2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMKQEAgLTU4NCw3ICYjNDM7NTg0LDcgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX3R4X3N0YXR1c19ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbiwKIAlhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCAmIzM0O3R4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxuJiMzNDssCiAJCSAgIGlkLCBldi0mZ3Q7YWNrX3N0YXR1cyk7CiAJaWYgKHdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lKSB7Ci0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKCZhbXA7dmlmLSZndDt3ZGV2LCBpZCwKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKCZhbXA7dmlmLSZndDt3ZGV2LCB3bWktJmd0O2xhc3RfbWdtdF90eF9jb29raWUsCiAJCQkJCXdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lLAogCQkJCQl3bWktJmd0O2xhc3RfbWdtdF90eF9mcmFtZV9sZW4sCiAJCQkJCSEhZXYtJmd0O2Fja19zdGF0dXMsIEdGUF9BVE9NSUMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmgKaW5kZXggOGZiZWNlM2ZkYWQ5Zi4uODljZTJhYmJiMWNkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oCkBAIC0xMjUsNiAmIzQzOzEyNSw3IEBAIHN0cnVjdCB3bWkgewogCiAJdTggKmxhc3RfbWdtdF90eF9mcmFtZTsKIAlzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjsKJiM0MzsJdTY0IGxhc3RfbWdtdF90eF9jb29raWU7CiAJdTggc2F2ZWRfcHdyX21vZGU7CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYwppbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMKQEAgLTE0MzIsNyAmIzQzOzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsCiAKIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJIHU2NCAqY29va2llKQomIzQzOwkJCSB1NjQgY29va2llKQogewogCWNvbnN0IHU4ICpidWYgPSBwYXJhbXMtJmd0O2J1ZjsKIAlzaXplX3QgbGVuID0gcGFyYW1zLSZndDtsZW47CkBAIC0xNDg4LDggJiM0MzsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJICovCiAJdHhfc3RhdHVzID0gKHJjID09IDApOwogCXJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjOwotCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSA/ICpjb29raWUgOiAwLCBidWYsIGxlbiwKLQkJCQl0eF9zdGF0dXMsIEdGUF9LRVJORUwpOwomIzQzOwljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpOwogCiAJcmV0dXJuIHJjOwogfQpAQCAtMTczNSw3ICYjNDM7MTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgdW5zaWduZWQgaW50IGR1cmF0aW9uLAotCQkJCSB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkJCSB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpOwogCWludCByYzsKQEAgLTIzODEsNyAmIzQzOzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpCiAKIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCSAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTsKIAlzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IG5kZXZfdG9fdmlmKGRldik7CkBAIC0yMzk5LDEzICYjNDM7MjM5OCwxMiBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcmVxLSZndDtjaWQgPSBjaWQ7Ci0JcmVxLSZndDtjb29raWUgPSBjaWQ7CiYjNDM7CXJlcS0mZ3Q7Y29va2llID0gY29va2llOwogCiAJbXV0ZXhfbG9jaygmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X211dGV4KTsKIAlsaXN0X2FkZF90YWlsKCZhbXA7cmVxLSZndDtsaXN0LCAmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X3BlbmRpbmcpOwogCW11dGV4X3VubG9jaygmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X211dGV4KTsKIAotCSpjb29raWUgPSByZXEtJmd0O2Nvb2tpZTsKIAlxdWV1ZV93b3JrKHdpbC0mZ3Q7d3Ffc2VydmljZSwgJmFtcDt2aWYtJmd0O3Byb2JlX2NsaWVudF93b3JrZXIpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jCmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMKQEAgLTk4NSw3ICYjNDM7OTg1LDcgQEAgc3RhdGljIHNzaXplX3Qgd2lsX3dyaXRlX2ZpbGVfdHhtZ210KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCXBhcmFtcy5idWYgPSBmcmFtZTsKIAlwYXJhbXMubGVuID0gbGVuOwogCi0JcmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgJmFtcDtwYXJhbXMsIE5VTEwpOwomIzQzOwlyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCAmYW1wO3BhcmFtcywgMCk7CiAKIAlrZnJlZShmcmFtZSk7CiAJd2lsX2luZm8od2lsLCAmIzM0Oy0mZ3Q7ICVkXG4mIzM0OywgcmMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwppbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYwpAQCAtMTI0LDcgJiM0MzsxMjQsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsCiAKIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkgICB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpOwogCXN0cnVjdCB3aWxfcDJwX2luZm8gKnAycCA9ICZhbXA7dmlmLSZndDtwMnA7CkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJfQogCiAJbWVtY3B5KCZhbXA7cDJwLSZndDtsaXN0ZW5fY2hhbiwgY2hhbiwgc2l6ZW9mKCpjaGFuKSk7Ci0JKmNvb2tpZSA9ICYjNDM7JiM0MztwMnAtJmd0O2Nvb2tpZTsKJiM0MzsJcDJwLSZndDtjb29raWUgPSBjb29raWU7CiAJcDJwLSZndDtsaXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjsKIAogCW11dGV4X2xvY2soJmFtcDt3aWwtJmd0O3ZpZl9tdXRleCk7CkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJaWYgKHZpZi0mZ3Q7bWlkID09IDApCiAJCXdpbC0mZ3Q7cmFkaW9fd2RldiA9IHdkZXY7CiAKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLAomIzQzOwljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sCiAJCQkJICBHRlBfS0VSTkVMKTsKIAogb3V0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oCmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmgKQEAgLTEzMDEsNyAmIzQzOzEzMDEsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsCiAJCSAgIHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnJlcXVlc3QpOwogaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCSAgIHU2NCBjb29raWUpOwogdTggd2lsX3AycF9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7CiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTsKIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCB3bWlfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpOwogCiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJIHU2NCBjb29raWUpOwogdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTsKIGludCB3aWxfY2ZnODAyMTFfaWZhY2VfY29tYmluYXRpb25zX2Zyb21fZncoCiAJc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwppbmRleCAyMGY3ZmNjZDYxMjE1Li44MDkzNzI0ZTZkMjI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtNTU1NCw3ICYjNDM7NTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAogaW50CiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLSZndDtjaGFuOwpAQCAtNTU3Myw4ICYjNDM7NTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCi0JKmNvb2tpZSA9IDA7Ci0KIAltZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjsKIAogCWlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpIHsKQEAgLTU2MDUsNyAmIzQzOzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJCSAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLAogCQkJCQkgICAgJmFtcDtidWZbaWVfb2Zmc2V0XSwKIAkJCQkJICAgIGllX2xlbik7Ci0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0tFUk5FTCk7CiAJfSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKSB7CiAJCWlmIChsZW4gJmd0OyBCUkNNRl9GSUxfQUNUSU9OX0ZSQU1FX1NJWkUgJiM0MzsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7CkBAIC01NjIxLDcgJiM0Mzs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQl9CiAJCWFjdGlvbl9mcmFtZSA9ICZhbXA7YWZfcGFyYW1zLSZndDthY3Rpb25fZnJhbWU7CiAJCS8qIEFkZCB0aGUgcGFja2V0IElkICovCi0JCWFjdGlvbl9mcmFtZS0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CQlhY3Rpb25fZnJhbWUtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7CiAJCS8qIEFkZCBCU1NJRCAqLwogCQltZW1jcHkoJmFtcDthY3Rpb25fZnJhbWUtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJCW1lbWNweSgmYW1wO2FmX3BhcmFtcy0mZ3Q7YnNzaWRbMF0sICZhbXA7bWdtdC0mZ3Q7YnNzaWRbMF0sIEVUSF9BTEVOKTsKQEAgLTU2NDksMTIgJiM0Mzs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS0mZ3Q7bGVuKSk7CiAKIAkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0FjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxuJiMzNDssCi0JCQkgICpjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS0mZ3Q7bGVuKSwKJiM0MzsJCQkgIGNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pLAogCQkJICBsZTMyX3RvX2NwdShhZl9wYXJhbXMtJmd0O2NoYW5uZWwpKTsKIAogCQlhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUodmlmLSZndDtpZnAsIGFmX3BhcmFtcyk7CiAKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywKIAkJCQkJR0ZQX0tFUk5FTCk7CiBmcmVlOgogCQlrZnJlZShhZl9wYXJhbXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAppbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaApAQCAtNDk3LDYgJiM0Mzs0OTcsNiBAQCB2b2lkIGJyY21mX2NmZzgwMjExX2ZyZWVfdmlmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTsKIAogaW50IGJyY21mX3NldF93c2VjKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBjb25zdCB1OCAqa2V5LCB1MTYga2V5X2xlbiwgdTE2IGZsYWdzKTsKIGludCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTsKIAogI2VuZGlmIC8qIEJSQ01GTUFDX0NGRzgwMjExX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKaW5kZXggY2UwOWQ0NGZhNzNjZi4uNDliMzNlZmUyMmI0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMKQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKQogCiBzdGF0aWMKIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CkBAIC0xMjMsNyAmIzQzOzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCWlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCXJldHVybiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7CiAKLQkqY29va2llID0gMDsKIAl2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7CiAKIAlyZWluaXRfY29tcGxldGlvbigmYW1wO3ZpZi0mZ3Q7bWdtdF90eCk7CkBAIC0xNTUsNyAmIzQzOzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtkYVswXSwgJmFtcDttZ210LSZndDtkYVswXSwgRVRIX0FMRU4pOwogCW1lbWNweSgmYW1wO21mX3BhcmFtcy0mZ3Q7YnNzaWRbMF0sICZhbXA7bWdtdC0mZ3Q7YnNzaWRbMF0sIEVUSF9BTEVOKTsKLQltZl9wYXJhbXMtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpOwomIzQzOwltZl9wYXJhbXMtJmd0O3BhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7CiAJbWVtY3B5KG1mX3BhcmFtcy0mZ3Q7ZGF0YSwgJmFtcDtidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSwKIAkgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLSZndDtsZW4pKTsKIApAQCAtMTg3LDggJiM0MzsxODYsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl9CiAKIHR4X3N0YXR1czoKLQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLAotCQkJCUdGUF9LRVJORUwpOwomIzQzOwljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpOwogZnJlZToKIAlrZnJlZShtZl9wYXJhbXMpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtOTc5LDEwICYjNDM7OTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbikKIAlwMnAtJmd0O2NmZy0mZ3Q7ZDExaW5mLmVuY2Noc3BlYygmYW1wO2NoKTsKIAllcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi0mZ3Q7aWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sCiAJCQkJCSAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7Ci0JaWYgKCFlcnIpIHsKJiM0MzsJaWYgKCFlcnIpCiAJCXNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sICZhbXA7cDJwLSZndDtzdGF0dXMpOwotCQlwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSYjNDM7JiM0Mzs7Ci0JfQogZXhpdDoKIAlyZXR1cm4gZXJyOwogfQpAQCAtMTAwMCw3ICYjNDM7OTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbikKICAqLwogaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbCwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7CkBAIC0xMDIwLDggJiM0MzsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlnb3RvIGV4aXQ7CiAKIAltZW1jcHkoJmFtcDtwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTsKLQkqY29va2llID0gcDJwLSZndDtyZW1haW5fb25fY2hhbm5lbF9jb29raWU7Ci0JY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CXAycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llOwomIzQzOwljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpOwogCiBleGl0OgogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgKaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaApAQCAtMTU3LDcgJiM0MzsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTsKIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsCi0JCQkJdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkJdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLAogCQkJCWNvbnN0IHU4ICpyeF9hZGRyKTsKIGludCBicmNtZl9wMnBfbm90aWZ5X2xpc3Rlbl9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCmluZGV4IDk5ZDk2MDg4ZTM2NGMuLmRlOTk1M2VjYmVmZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pCiAgKi8KIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTI1OSwxNCAmIzQzOzI1OSwxMyBAQCBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl0eF9pbmZvLSZndDtwa3RfbGVuID0gcGt0X2xlbjsKIAogCW13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pOwotCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTsKIAogCWlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlza2IgPSBtd2lmaWV4X2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsCiAJCQkJCQkgICAgICBza2IsCi0JCQkJTVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpOwomIzQzOwkJCQlNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsICZhbXA7Y29va2llKTsKIAllbHNlCi0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0FUT01JQyk7CiAKIAltd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpOwpAQCAtMzA0LDEzICYjNDM7MzAzLDEzIEBAIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJaW50IHJldDsKIAotCWlmICghY2hhbiB8fCAhY29va2llKSB7CiYjNDM7CWlmICghY2hhbikgewogCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBFUlJPUiwgJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTMyNiwxNSAmIzQzOzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSBkdXJhdGlvbik7CiAKIAlpZiAoIXJldCkgewotCQkqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7Ci0JCXByaXYtJmd0O3JvY19jZmcuY29va2llID0gKmNvb2tpZTsKJiM0MzsJCXByaXYtJmd0O3JvY19jZmcuY29va2llID0gY29va2llOwogCQlwcml2LSZndDtyb2NfY2ZnLmNoYW4gPSAqY2hhbjsKIAotCQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sCiYjNDM7CQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwKIAkJCQkJICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7CiAKIAkJbXdpZmlleF9kYmcocHJpdi0mZ3Q7YWRhcHRlciwgSU5GTywKLQkJCSAgICAmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XG4mIzM0OywgKmNvb2tpZSk7CiYjNDM7CQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCBjb29raWUpOwogCX0KIAogCXJldHVybiByZXQ7CkBAIC00NTYwLDcgJiM0Mzs0NTU4LDcgQEAgbXdpZmlleF9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSwKIHN0YXRpYyBpbnQKIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJICAgIHU2NCAqY29va2llKQomIzQzOwkJCSAgICB1NjQgY29va2llKQogewogCS8qIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsCiAJICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24mIzM5O3Qgc3VwcG9ydCkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jCkBAIC0xMTAwLDI0ICYjNDM7MTEwMCwxOSBAQCBzdGF0aWMgdm9pZCB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCB3aWxjX3ZpZiAqdmlmLCB1NjQgY29va2llKQogc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkgICAgIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCWludCByZXQgPSAwOwogCXN0cnVjdCB3aWxjX3ZpZiAqdmlmID0gbmV0ZGV2X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAlzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gJmFtcDt2aWYtJmd0O3ByaXY7Ci0JdTY0IGlkOwogCiAJaWYgKHdkZXYtJmd0O2lmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkgewogCQluZXRkZXZfZGJnKHZpZi0mZ3Q7bmRldiwgJiMzNDtSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXG4mIzM0Oyk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWQgPSAmIzQzOyYjNDM7cHJpdi0mZ3Q7aW5jX3JvY19jb29raWU7Ci0JaWYgKGlkID09IDApCi0JCWlkID0gJiM0MzsmIzQzO3ByaXYtJmd0O2luY19yb2NfY29va2llOwotCi0JcmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGlkLCBjaGFuLSZndDtod192YWx1ZSwKJiM0MzsJcmV0ID0gd2lsY19yZW1haW5fb25fY2hhbm5lbCh2aWYsIGNvb2tpZSwgY2hhbi0mZ3Q7aHdfdmFsdWUsCiAJCQkJICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTEyNSwxMiAmIzQzOzExMjAsMTEgQEAgc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCXZpZi0mZ3Q7d2lsYy0mZ3Q7b3BfY2ggPSBjaGFuLSZndDtod192YWx1ZTsKIAogCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjsKLQlwcml2LSZndDtyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDsKLQkqY29va2llID0gaWQ7CiYjNDM7CXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTsKIAlwcml2LSZndDtwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTsKIAlwcml2LSZndDtyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uOwogCi0JY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiAJbW9kX3RpbWVyKCZhbXA7dmlmLSZndDtoaWZfZHJ2LSZndDtyZW1haW5fb25fY2hfdGltZXIsCiAJCSAgamlmZmllcyAmIzQzOyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICYjNDM7IDEwMDApKTsKIApAQCAtMTE1Myw3ICYjNDM7MTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCSAgIHU2NCAqY29va2llKQomIzQzOwkJICAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CiAJdW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtJmd0O3dhaXQ7CkBAIC0xMTcwLDggJiM0MzsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJY29uc3QgdTggKnZlbmRvcl9pZTsKIAlpbnQgcmV0ID0gMDsKIAotCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpOwotCXByaXYtJmd0O3R4X2Nvb2tpZSA9ICpjb29raWU7CiYjNDM7CXByaXYtJmd0O3R4X2Nvb2tpZSA9IGNvb2tpZTsKIAltZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjsKIAogCWlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwppbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKIC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIHRyYW5zbWl0IGEgbWFuYWdlbWVudCBmcmFtZS4gKi8KIHN0YXRpYyBpbnQKIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTIxMiwxNCAmIzQzOzIxMiwxMyBAQCBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl0eF9pbmZvLSZndDtwa3RfbGVuID0gcGt0X2xlbjsKIAogCW54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pOwotCSpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi0mZ3Q7YWRhcHRlcik7CiAKIAlpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LSZndDtmcmFtZV9jb250cm9sKSkKIAkJc2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LAogCQkJCQkJICAgICAgc2tiLAotCQkJCU5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTsKJiM0MzsJCQkJTlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCAmYW1wO2Nvb2tpZSk7CiAJZWxzZQotCQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKJiM0MzsJCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiAJCQkJCUdGUF9BVE9NSUMpOwogCiAJbnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTsKQEAgLTI1NCwxNCAmIzQzOzI1MywxNCBAQCBzdGF0aWMgaW50CiBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCQkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLAogCQkJCSAgIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCXN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LSZndDtuZXRkZXYpOwogCXN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LSZndDthZGFwdGVyOwogCWludCByZXQ7CiAKLQlpZiAoIWNoYW4gfHwgIWNvb2tpZSkgewomIzQzOwlpZiAoIWNoYW4pIHsKIAkJbnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsICYjMzQ7SW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0yNzcsMTUgJiM0MzsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCQkgZHVyYXRpb24pOwogCiAJaWYgKCFyZXQpIHsKLQkJKmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTsKLQkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSAqY29va2llOwomIzQzOwkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSBjb29raWU7CiAJCXByaXYtJmd0O3JvY19jZmcuY2hhbiA9ICpjaGFuOwogCi0JCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwKJiM0MzsJCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLAogCQkJCQkgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTsKIAogCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBJTkZPLAotCQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCAqY29va2llKTsKJiM0MzsJCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssIGNvb2tpZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTM2MTgsNyAmIzQzOzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogc3RhdGljIGludAogbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlciwKLQkJCSAgICAgIHU2NCAqY29va2llKQomIzQzOwkJCSAgICAgIHU2NCBjb29raWUpCiB7CiAJLyoKIAkgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMKaW5kZXggOWU0NGM4NWQyMDUxYy4uNDVlMmI3YWU5NjMzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jCkBAIC00NDYsNyAmIzQzOzQ0Niw3IEBAIHF0bmZfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCiBzdGF0aWMgaW50CiBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgcXRuZl92aWYgKnZpZiA9IHF0bmZfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtJmd0O2J1ZjsKQEAgLTQ1NCw4ICYjNDM7NDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJdTE2IGZsYWdzID0gMDsKIAl1MTYgZnJlcTsKIAotCSpjb29raWUgPSBzaG9ydF9jb29raWU7Ci0KIAlpZiAocGFyYW1zLSZndDtvZmZjaGFuKQogCQlmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCmluZGV4IDE1YzA4YjI0NTAyZmQuLjdiMzQ2MjI2ZmU3NDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaApAQCAtNTEwNyw3ICYjNDM7NTEwNyw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3MgewogICogQHRkbHNfb3BlcjogUGVyZm9ybSBhIGhpZ2gtbGV2ZWwgVERMUyBvcGVyYXRpb24gKGUuZy4gVERMUyBsaW5rIHNldHVwKS4KICAqCiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSwKLSAqCW11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLgomIzQzOyAqCW11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0bwomIzQzOyAqCWNmZzgwMjExX3Byb2JlX3N0YXR1cygpLgogICoKICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuCiAgKgpAQCAtNTIxOCw3ICYjNDM7NTIxOSw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3MgewogICogICAgIHVzZXIgc3BhY2UKICAqCiAgKiBAdHhfY29udHJvbF9wb3J0OiBUWCBhIGNvbnRyb2wgcG9ydCBmcmFtZSAoRUFQb0wpLiAgVGhlIG5vZW5jcnlwdCBwYXJhbWV0ZXIKLSAqCXRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuCiYjNDM7ICoJdGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llCiYjNDM7ICoJdmFsdWUgb2YgMCBtZWFucyB0aGUgY2FsbGVyIGRvZXMgbm90IHdhbnQgVFggc3RhdHVzIHJlcG9ydGluZy4KICAqCiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLgogICoJU3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC4KQEAgLTU0NTUsMTQgJiM0Mzs1NDU3LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMgewogCQkJCSAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwKLQkJCQkgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7CiYjNDM7CQkJCSAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpOwogCWludAkoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkJICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJCSAgICB1NjQgY29va2llKTsKIAogCWludAkoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICB1NjQgY29va2llKTsKIAlpbnQJKCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgICAgICB1NjQgY29va2llKTsKQEAgLTU1MDksNyAmIzQzOzU1MTEsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCSAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTsKIAogCWludAkoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkgICAgICBjb25zdCB1OCAqcGVlciwgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTsKIAogCWludAkoKnNldF9ub2Fja19tYXApKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtNTYwNyw3ICYjNDM7NTYwOSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMgewogCQkJCSAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sCiAJCQkJICAgY29uc3QgdTggKmRlc3QsIGNvbnN0IF9fYmUxNiBwcm90bywKIAkJCQkgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsCi0JCQkJICAgdTY0ICpjb29raWUpOwomIzQzOwkJCQkgICB1NjQgY29va2llKTsKIAogCWludAkoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggZGY2OGE1YmRlYjJmMC4uMzEwYzE0NTYwMDY1ZCAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuYwpAQCAtNDgyNywxOSAmIzQzOzQ4MjcsNiBAQCBpbnQgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJcmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7CiB9CiAKLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpCi17Ci0JbG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtJmd0O2h3LndpcGh5KTsKLQotCWxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXImIzQzOyYjNDM7OwotCi0JLyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqLwotCWlmIChXQVJOX09OKGxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXIgPT0gMCkpCi0JCWxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXImIzQzOyYjNDM7OwotCi0JcmV0dXJuIGxvY2FsLSZndDtyb2NfY29va2llX2NvdW50ZXI7Ci19Ci0KIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApCiB7CkBAIC00ODY0LDcgJiM0Mzs0ODUxLDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlJRUVFODAyMTFfU0tCX0NCKHNrYiktJmd0O3N0YXR1c19kYXRhX2lkciA9IDE7CiAJSUVFRTgwMjExX1NLQl9DQihza2IpLSZndDtzdGF0dXNfZGF0YSA9IGlkOwogCi0JKmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7CiAJSUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS0mZ3Q7YWNrLmNvb2tpZSA9ICpjb29raWU7CiAKIAlyZXR1cm4gMDsKQEAgLTQ5NTAsNyAmIzQzOzQ5MzYsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogfQogCiBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkJY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKQomIzQzOwkJCQljb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC01MDU3LDcgJiM0Mzs1MDQzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChxb3MpCiAJCW51bGxmdW5jLSZndDtxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpOwogCi0JcmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7CiYjNDM7CXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCAmYW1wO2Nvb2tpZSwgR0ZQX0FUT01JQyk7CiAJaWYgKHJldCkgewogCQlrZnJlZV9za2Ioc2tiKTsKIAkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKaW5kZXggMTFmNDQ5ZThmZjAwMy4uNGYxZjUyZjZlZGNiYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgKQEAgLTE3MDgsOCAmIzQzOzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHJvY19saXN0OwogCXN0cnVjdCB3aXBoeV93b3JrIGh3X3JvY19zdGFydCwgaHdfcm9jX2RvbmU7CiAJdW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTsKLQl1NjQgcm9jX2Nvb2tpZV9jb3VudGVyOwotCiAJc3RydWN0IGlkciBhY2tfc3RhdHVzX2ZyYW1lczsKIAlzcGlubG9ja190IGFja19zdGF0dXNfbG9jazsKIApAQCAtMTk4OSw3ICYjNDM7MTk4Nyw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpOwogCiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7CiAKLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpOwogaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7CiAKQEAgLTIxNTEsMTIgJiM0MzsyMTQ4LDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJCSBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7CiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcik7CiBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTsKIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpOwomIzQzOwkJICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpOwogaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTsKIApAQCAtMjIzNSw3ICYjNDM7MjIzMiw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIHUzMiBpbmZvX2ZsYWdzLAogCQkJCSAgdTMyIGN0cmxfZmxhZ3MsCi0JCQkJICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJCSAgdTY0IGNvb2tpZSk7CiBzdHJ1Y3Qgc2tfYnVmZiAqCiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZvX2ZsYWdzKTsKQEAgLTIyNDksNyAmIzQzOzIyNDYsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpOwogaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sCiAJCQkgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLAotCQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7CiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7CiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jCmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYwpAQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCiAJLyoKIAkgKiBjb29raWUgaXMgZWl0aGVyIHRoZSByb2MgY29va2llIChmb3Igbm9ybWFsIHJvYykKLQkgKiBvciB0aGUgU0tCIChmb3IgbWdtdCBUWCkKJiM0MzsJICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTEKIAkgKi8KLQlpZiAoIXR4c2tiKSB7Ci0JCXJvYy0mZ3Q7Y29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTsKLQkJKmNvb2tpZSA9IHJvYy0mZ3Q7Y29va2llOwotCX0gZWxzZSB7CiYjNDM7CWlmICghdHhza2IpCiYjNDM7CQlyb2MtJmd0O2Nvb2tpZSA9ICpjb29raWU7CiYjNDM7CWVsc2UKIAkJcm9jLSZndDttZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7Ci0JfQogCiAJcmVxID0gd2lwaHlfZGVyZWZlcmVuY2UobG9jYWwtJmd0O2h3LndpcGh5LCBsb2NhbC0mZ3Q7c2Nhbl9yZXEpOwogCkBAIC03MDQsNyAmIzQzOzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTsKQEAgLTcxMyw3ICYjNDM7NzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLSZndDtody53aXBoeSk7CiAKIAlyZXR1cm4gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgY2hhbiwKLQkJCQkJZHVyYXRpb24sIGNvb2tpZSwgTlVMTCwKJiM0MzsJCQkJCWR1cmF0aW9uLCAmYW1wO2Nvb2tpZSwgTlVMTCwKIAkJCQkJSUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7CiB9CiAKQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIH0KIAogaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtMTAxNiwxOCAmIzQzOzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCS8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50cwogCQkgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uCiAJCSAqLwotCQlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTsKJiM0MzsJCXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCAmYW1wO2Nvb2tpZSwgR0ZQX0tFUk5FTCk7CiAJCWlmIChyZXQpIHsKIAkJCWtmcmVlX3NrYihza2IpOwogCQkJZ290byBvdXRfdW5sb2NrOwogCQl9Ci0JfSBlbHNlIHsKLQkJLyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCYjMzk7cyBub3Qgc2VudCB0bwotCQkgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZQotCQkgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaAotCQkgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuCi0JCSAqLwotCQkqY29va2llID0gMHhmZmZmZmZmZjsKIAl9CiAKIAlpZiAoIW5lZWRfb2ZmY2hhbikgewpAQCAtMTA0NCw3ICYjNDM7MTAzNSw3IEBAIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJLyogVGhpcyB3aWxsIGhhbmRsZSBhbGwga2luZHMgb2YgY29hbGVzY2luZyBhbmQgaW1tZWRpYXRlIFRYICovCiAJcmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLSZndDtjaGFuLAotCQkJCSAgICAgICBwYXJhbXMtJmd0O3dhaXQsIGNvb2tpZSwgc2tiLAomIzQzOwkJCQkgICAgICAgcGFyYW1zLSZndDt3YWl0LCAmYW1wO2Nvb2tpZSwgc2tiLAogCQkJCSAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7CiAJaWYgKHJldCkKIAkJaWVlZTgwMjExX2ZyZWVfdHhza2IoJmFtcDtsb2NhbC0mZ3Q7aHcsIHNrYik7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdGRscy5jIGIvbmV0L21hYzgwMjExL3RkbHMuYwppbmRleCBmZmQ1NzVhOGQxODhmLi5kYzJmNjYyZmU0YzQ2IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS90ZGxzLmMKQEAgLTExMjEsNyAmIzQzOzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJLyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi8KIAlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsCi0JCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpOwomIzQzOwkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguYwppbmRleCBlYjM2ZjFiOTc3MWI1Li41NTQ5Y2I4ZDVjZGExIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvdHguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguYwpAQCAtMjU4Myw3ICYjNDM7MjU4Myw3IEBAIGludCBpZWVlODAyMTFfbG9va3VwX3JhX3N0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICB1MzIgKmluZm9fZmxhZ3MsCi0JCQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IHNrX2J1ZmYgKmFja19za2I7CiAJdTE2IGluZm9faWQgPSAwOwpAQCAtMjYwNSwxMCAmIzQzOzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQlpZiAoaWQgJmd0Oz0gMCkgewogCQkJaW5mb19pZCA9IGlkOwogCQkJKmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTOwotCQkJaWYgKGNvb2tpZSkgewotCQkJCSpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpOwotCQkJCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSAqY29va2llOwotCQkJfQomIzQzOwkJCWlmIChjb29raWUpCiYjNDM7CQkJCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSBjb29raWU7CiAJCX0gZWxzZSB7CiAJCQlrZnJlZV9za2IoYWNrX3NrYik7CiAJCX0KQEAgLTI2NDEsNyAmIzQzOzI2MzksNyBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncywKIAkJCQkJICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLAotCQkJCQkgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJCSAgIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CiAJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvOwpAQCAtNDMzNyw3ICYjNDM7NDMzNSw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCQkgIHUzMiBpbmZvX2ZsYWdzLAogCQkJCSAgdTMyIGN0cmxfZmxhZ3MsCi0JCQkJICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLSZndDtsb2NhbDsKQEAgLTQ1MzIsNyAmIzQzOzQ1MzAsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCXJldHVybjsKIAogCWN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKGxpbmtfaWQsIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTsKLQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgTlVMTCk7CiYjNDM7CV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS0mZ3Q7ZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTsKIH0KIAogc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTQ1NDcsOCAmIzQzOzQ1NDUsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQljdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksCiAJCQkJCSAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTsKIAotCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywKLQkJCQkJICAgICBOVUxMKTsKJiM0MzsJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBzZGF0YS0mZ3Q7ZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDU5MCw3ICYjNDM7NDU4Nyw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJCXdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZSgmYW1wO3F1ZXVlKSkpCiAJCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLAogCQkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJCSAgICAgMCk7CiAJfSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3NkYXRhLSZndDt2aWYpICZhbXA7JmFtcDsKIAkJICAgKChzZGF0YS0mZ3Q7dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgJmFtcDsmYW1wOwogCQkgICAgICFpZWVlODAyMTFfaHdfY2hlY2soJmFtcDtzZGF0YS0mZ3Q7bG9jYWwtJmd0O2h3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8CkBAIC00NjAxLDcgJiM0Mzs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIG5vcm1hbDoKIAkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCwKIAkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCQkgICAgIDApOwogCX0KIAogCXJldHVybiBORVRERVZfVFhfT0s7CkBAIC00NzAwLDcgJiM0Mzs0Njk3LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCS8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi8KIAkJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsCiAJCQkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywKLQkJCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCQkJICAgICAwKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC00NzM2LDcgJiM0Mzs0NzMzLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAogCWlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItJmd0O3NrKSkpIHsKIAkJaW5mby0mZ3Q7c3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLAotCQkJCQkJCSAgICAmYW1wO2luZm8tJmd0O2ZsYWdzLCBOVUxMKTsKJiM0MzsJCQkJCQkJICAgICZhbXA7aW5mby0mZ3Q7ZmxhZ3MsIDApOwogCQlpZiAoaW5mby0mZ3Q7c3RhdHVzX2RhdGEpCiAJCQlpbmZvLSZndDtzdGF0dXNfZGF0YV9pZHIgPSAxOwogCX0KQEAgLTQ4NzksNyAmIzQzOzQ4NzYsNyBAQCBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAl9CiAKIAlza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSwKLQkJCQkgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7CiYjNDM7CQkJCSAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTsKIAlpZiAoSVNfRVJSKHNrYikpCiAJCWdvdG8gb3V0OwogCkBAIC02NDk0LDcgJiM0Mzs2NDkxLDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCwKLQkJCSAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC02NjI5LDcgJiM0Mzs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlsb2NhbF9iaF9kaXNhYmxlKCk7CiAJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi0mZ3Q7ZGV2LCAwLAogCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsCi0JCQkJICAgICBOVUxMKTsKJiM0MzsJCQkJICAgICAwKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmgKaW5kZXggMzk5MDM3NTE0OTQzZC4uYjNlYWQ5OGFlZTA3YSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oCkBAIC00MDIsNyAmIzQzOzQwMiw3IEBAIHZvaWQgY2ZnODAyMTFfbWxtZV9wdXJnZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYpOwogaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICB1NjQgY29va2llKTsKIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTsKIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSwKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jCmluZGV4IDJhMmMxNzMwNThiYWMuLjM0ZjkwMDNkNWM1NDEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL21sbWUuYwpAQCAtODUxLDcgJiM0Mzs4NTEsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7CiAJdTE2IHN0eXBlOwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKaW5kZXggYWMwYzBkYTQ1MjQxOS4uNzA4ZThiYjhkYWZkZCAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCkBAIC0xNDYzMCw4ICYjNDM7MTQ2MzAsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZ290byBmcmVlX21zZzsKIAl9CiAKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKIAllcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbiwKLQkJCQkgICAgIGR1cmF0aW9uLCAmYW1wO2Nvb2tpZSwgcnhfYWRkcik7CiYjNDM7CQkJCSAgICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7CiAKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwpAQCAtMTQ4NzEsNyAmIzQzOzE0ODcyLDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAl9CiAKIAlwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjsKLQllcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgJmFtcDtwYXJhbXMsICZhbXA7Y29va2llKTsKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKJiM0MzsJZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsICZhbXA7cGFyYW1zLCBjb29raWUpOwogCWlmIChlcnIpCiAJCWdvdG8gZnJlZV9tc2c7CiAKQEAgLTE2MzU5LDcgJiM0MzsxNjM2MSw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCWdvdG8gZnJlZV9tc2c7CiAJfQogCi0JZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgJmFtcDtjb29raWUpOwomIzQzOwljb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpOwomIzQzOwllcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBjb29raWUpOwogCWlmIChlcnIpCiAJCWdvdG8gZnJlZV9tc2c7CiAKQEAgLTE4NTc0LDEwICYjNDM7MTg1NzcsMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCiAJbGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tJmd0O2F0dHJzKTsKIAomIzQzOwljb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpOwogCWVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sCiAJCQkJICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsCi0JCQkJICAgZG9udF93YWl0X2Zvcl9hY2sgPyBOVUxMIDogJmFtcDtjb29raWUpOwotCWlmICghZXJyICZhbXA7JmFtcDsgIWRvbnRfd2FpdF9mb3JfYWNrKQomIzQzOwkJCQkgICBjb29raWUpOwomIzQzOwlpZiAoIWVyciAmYW1wOyZhbXA7IGNvb2tpZSkKIAkJbmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tJmd0O2V4dGFjaywgY29va2llKTsKIAlyZXR1cm4gZXJyOwogfQpAQCAtMjIwMzAsNiAmIzQzOzIyMDM0LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJc3RydWN0IHNrX2J1ZmYgKm1zZzsKIAl2b2lkICpoZHI7CiAKJiM0MzsJLyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqLwomIzQzOwlpZiAoIXN0YXR1cy0mZ3Q7Y29va2llKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChjb21tYW5kID09IE5MODAyMTFfQ01EX0ZSQU1FX1RYX1NUQVRVUykKIAkJdHJhY2VfY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2Rldiwgc3RhdHVzLSZndDtjb29raWUsCiAJCQkJCSAgICAgIHN0YXR1cy0mZ3Q7YWNrKTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKaW5kZXggNmMzYmFkOGIyZDZmNi4uNDY4NDlmZThkMGIzOSAxMDA2NDQKLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmgKQEAgLTczNiwxNCAmIzQzOzczNiwxNCBAQCBzdGF0aWMgaW5saW5lIGludAogcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCSAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sCiAJCQkJICAgICByeF9hZGRyKTsKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O3JlbWFpbl9vbl9jaGFubmVsKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHdkZXYsIGNoYW4sCiAJCQkJCSAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpOwotCXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCAqY29va2llKTsKJiM0MzsJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNzYxLDEyICYjNDM7NzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgICAgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgICAgICAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfbWdtdF90eCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBwYXJhbXMpOwogCXJldCA9IHJkZXYtJmd0O29wcy0mZ3Q7bWdtdF90eCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7Ci0JdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC03NzUsNyAmIzQzOzc3NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCQkgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLAogCQkJCSAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLAogCQkJCSAgICAgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmssCi0JCQkJICAgICAgIHU2NCAqY29va2llKQomIzQzOwkJCQkgICAgICAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgYnVmLCBsZW4sCkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O3R4X2NvbnRyb2xfcG9ydCgmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIGJ1ZiwgbGVuLAogCQkJCQkgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTsKIAlpZiAoY29va2llKQotCQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAllbHNlCiAJCXRyYWNlX3JkZXZfcmV0dXJuX2ludCgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQpOwogCXJldHVybiByZXQ7CkBAIC05NTAsMTIgJiM0Mzs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsCi0JCQkJICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICB1NjQgY29va2llKQogewogCWludCByZXQ7CiAJdHJhY2VfcmRldl9wcm9iZV9wZWVyKCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgcGVlcik7CiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDtwcm9iZV9wZWVyKCZhbXA7cmRldi0mZ3Q7d2lwaHksIGRldiwgcGVlciwgY29va2llKTsKLQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCBjb29raWUpOwogCXJldHVybiByZXQ7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxNzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuOiBSZXZpc2VkIGBjZmc4MDIxMV9vcHNgIENvb2tpZSBQYXNzaW5nKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgY2hhbmdpbmcgaG93IHRoZSBgdTY0IGNvb2tpZWAgaXMgcGFzc2VkIHRvIHRoZXNlIGNydWNpYWwgYGNmZzgwMjExX29wc2AgY2FsbGJhY2tzOiBgcmVtYWluX29uX2NoYW5uZWxgLCBgbWdtdF90eGAsIGBwcm9iZV9wZWVyYCwgYW5kIGB0eF9jb250cm9sX3BvcnRgLiBJdCYjMzk7cyBnb2luZyBmcm9tIGEgcG9pbnRlciAoYHU2NCAqY29va2llYCkgdG8gYSB2YWx1ZSAoYHU2NCBjb29raWVgKS4gVGhhdCYjMzk7cyBhIGJpZyBkZWFsIGJlY2F1c2UgdGhlIGNvb2tpZSBhc3NpZ25tZW50IGlzIG5vdyBoYXBwZW5pbmcgY2VudHJhbGx5IHdpdGhpbiBgY2ZnODAyMTFgIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGluc3RlYWQgb2YgYmVpbmcgZHJpdmVyLWdlbmVyYXRlZC4KClRoaXMgaW1wYWN0cyB0aGUgY29yZSA4MDIuMTEgc3RhY2sg4oCTIGJvdGggYG1hYzgwMjExYCBhbmQgYGNmZzgwMjExYCDigJMgYW5kLCBvZiBjb3Vyc2UsIGEgYnVuY2ggb2YgZHJpdmVycy4gR2l2ZW4gdGhhdCBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIGFyZSBpbnZvbHZlZCwgd2hpY2ggYXJlIGFsc28gcmVhY2hhYmxlIHRocm91Z2ggYG1hYzgwMjExX2h3c2ltYCwgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRob3JvdWdobHkgdGVzdGVkLgoKTGV0JiMzOTtzIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFmZmVjdGVkOiBJbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHdlJiMzOTtyZSBsb29raW5nIGF0IGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYG5sODAyMTFfdHhfbWdtdGAsIGBubDgwMjExX3Byb2JlX3BlZXJgLCBhbmQgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSW4gYG5ldC9tYWM4MDIxMS9gLCBpdCYjMzk7cyBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYGllZWU4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4KClJpZ2h0LCBub3csIHdoYXQgYWJvdXQgdGhlIGNvbmZpZyBvcHRpb25zPyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgZW5hYmxlZC4gR29vZCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgaW52YWx1YWJsZSBmb3IgdGVzdGluZy4KCkZvY3VzaW5nIHRoZSBmdXp6aW5nIGVmZm9ydHMg4oCTIEkmIzM5O2xsIHRhcmdldCBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlc2UgYXJlIHJlYWNoYWJsZS4gVXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBJIGNhbiBjb25maXJtIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGV4aXN0IGFuZCBhcmUgbm90IHN0YXRpYy9pbmxpbmVkIGluIGEgd2F5IHRoYXQgcHJldmVudHMgZnV6emluZy4gQWx0aG91Z2ggYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgIGlzIHN0YXRpYywgaXQmIzM5O3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgc28gU3l6a2FsbGVyIGNhbiByZWFjaCBpdCB2aWEgYG5sODAyMTFgIG5ldGxpbmsgZGVzY3JpcHRpb25zLiBUaGUgYG1hYzgwMjExYCBmdW5jdGlvbnMgYXJlIGFsc28gZmluZSBiZWNhdXNlIHRoZXkgYXJlIGV4cG9ydGVkIG9yIHVzZWQgYXMgb3BzLiBTcGVjaWZpY2FsbHkgSSYjMzk7bSB0aGlua2luZyBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gTGV0IG1lIHF1aWNrbHkgYGdyZXBgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP2ludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ1Mzc9c3RhdGljIGludCBubDgwMjExX3RkbHNfb3BlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ1NTctXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0NTU4OnN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU1OS1cdFx0XHRcdCAgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgwNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpcmVsZXNzIENvbW11bmljYXRpb24gRnVuY3Rpb25zKioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGVzZSBmdW5jdGlvbnMuIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzZXQgb2Ygd2lyZWxlc3MgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLCBsaWtlbHkgcmVsYXRlZCB0byB0aGUgODAyLjExIHN0YW5kYXJkLCBqdWRnaW5nIGJ5IHRoZSBwcmVmaXhlcy4gVGhlIGxpc3Qgc2hvd3MgZnVuY3Rpb25zIHdpdGggYm90aCB0aGUgYG5sODAyMTFgIGFuZCBgaWVlZTgwMjExYCBwcmVmaXhlcywgc28gd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaXNzdWUgaGVyZS4KCkkmIzM5O2xsIHN0YXJ0IGJ5IGZvY3VzaW5nIG9uIGBubDgwMjExX3R4X21nbXRgLCBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMgdGhhdCBzZWVtIHJlbGF0ZWQsIHNwZWNpZmljYWxseSB0aG9zZSB3aXRoIGEgc2ltaWxhciBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzIGBpZWVlODAyMTFfbWdtdF90eGAuIEl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIGFsc28gZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCBjaGFubmVsIG1hbmFnZW1lbnQgYW5kIGNvbnRyb2wgcG9ydHMsIG5hbWVseSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAsIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBhbmQgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLCB3aGljaCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbi4gQW5kLCB0aGVyZSBpcyBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgd2hpY2ggc3VnZ2VzdHMgcGVlciBkaXNjb3Zlcnkgb3IgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGRpZmZlcmVuY2VzIGluIGFic3RyYWN0aW9uLCBhbmQgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb25zIGxpZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApP2ludCBubDgwMjExX3R4X21nbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDY5ND1zdGF0aWMgaW50IG5sODAyMTFfcmVnaXN0ZXJfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTEtXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0NzUyOnN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzUzLXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODk3LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDg5ODpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0OTEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGggaGVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgc3lzdGVtLiBMb29raW5nIGF0IHRoZSBvcHRpb25zLCBJIGhhdmUgYE1BQzgwMjExYCwgYENGRzgwMjExYCwgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byB6ZXJvIGluIG9uIHdoZXRoZXIgYE1BQzgwMjExX0hXU0lNYCBpcyB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbi4gTXkgZXhwZXJpZW5jZSBzdWdnZXN0cyBpdCYjMzk7cyBhIGtleSBjYW5kaWRhdGUsIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSB2YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHRoZSByaWdodCBwYXRoIGZvcndhcmQsIG9yIGlmIEkgbmVlZCB0byBjb25zaWRlciB0aGUgb3RoZXIgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3NzYKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBSZWxldmFudCBDb25maWd1cmF0aW9ucyoqCgpSaWdodCwgc28gYE1BQzgwMjExX0hXU0lNYCDigJMgdGhhdOKAmXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhhdCYjMzk7cyB0aGUga2V5IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBtYWM4MDIxMSBoYXJkd2FyZSBzaW11bGF0aW9uLCBubyBzdXJwcmlzZXMgdGhlcmUuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgV0xBTiBmcmFtZXdvcmsuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgd2l0aCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBjb25maWd1cmF0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgaW50ZXJhY3Rpb25zIHdpdGggYE1BQzgwMjExX0hXU0lNYCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5IGZvciB0ZXN0aW5nIG9yIHdoYXRldmVyIEkgaGF2ZSBpbiBtaW5kLiBJIG5lZWQgdG8ga25vdyB0aGUgc3RhdGUgb2YgdGhlc2UgY29tcG9uZW50cywgd2hhdCBpcyBlbmFibGVkLCB3aGF0IGlzIGRpc2FibGVkLCBhbmQgaG93IG15IGN1cnJlbnQgY29uZmlndXJhdGlvbiBmaXRzIHdpdGhpbiB0aGF0IHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENGRzgwMjExJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNi1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01MS1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1Ncbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVx0Ym9vbCBcJiMzNDtlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo4OTpjb25maWcgQ0ZHODAyMTFfUkVRVUlSRV9TSUdORURfUkVHREJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDtyZXF1aXJlIHJlZ2RiIHNpZ25hdHVyZVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cdGJvb2wgXCYjMzQ7YWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTEyLVx0c3RyaW5nIFwmIzM0O2FkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVwmIzM0OyBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMjI6Y29uZmlnIENGRzgwMjExX1JFR19DRUxMVUxBUl9ISU5UU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSByZWd1bGF0b3J5IHN1cHBvcnQgZm9yIGNlbGx1bGFyIGJhc2Ugc3RhdGlvbiBoaW50c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTEzNC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXHRib29sIFwmIzM0O2NmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2MC1cdGJvb2wgXCYjMzQ7ZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTY5OmNvbmZpZyBDRkc4MDIxMV9ERUJVR0ZTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXHRib29sIFwmIzM0O2NmZzgwMjExIERlYnVnRlMgZW50cmllc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3Ni1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O3N1cHBvcnQgQ1JEQVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTk0OmNvbmZpZyBDRkc4MDIxMV9LVU5JVF9URVNUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgY2ZnODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAyMDowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk2MwoJCQkJCQkJb3V0cHV0OiAyNjcKCQkJCQkJCXRob3VnaHRzOiA0MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb29raWUgQXNzaWdubWVudCBDaGFuZ2UgaW4gY2ZnODAyMTEgYW5kIG1hYzgwMjExKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCYjMzk7cyB0aGUgc2V0dXAsIGdvdCBpdC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBob3cgY29va2llcyBhcmUgYXNzaWduZWQgaW4gdGhlIDgwMi4xMSBzdGFjay4gU3BlY2lmaWNhbGx5LCB0aGlzIHBhdGNoIHNoaWZ0cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYXNzaWduaW5nIGNvb2tpZXMgZm9yIG1hbmFnZW1lbnQgVFgsIHJlbWFpbi1vbi1jaGFubmVsLCBwcm9iZSBwZWVyLCBhbmQgdHggY29udHJvbCBwb3J0IG9wZXJhdGlvbnMgZnJvbSB0aGUgZHJpdmVyIGxldmVsIHVwIGludG8gdGhlIGBjZmc4MDIxMWAgY29yZS4KClRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZGlyZWN0bHkgbWFuaXB1bGF0ZWQgYW5kIHRlc3RlZCB1c2luZyBuZXRsaW5rIGNvbW1hbmRzLiBXZSBjYW4gdmVyaWZ5IHRoZSBjaGFuZ2VzIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGdyZWF0IGZvciB0aGlzIGtpbmQgb2YgY29yZSBzdGFjayBtb2RpZmljYXRpb24uCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBuZXRsaW5rIGNvbW1hbmRzIGludm9sdmVkOiBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIFRoZXNlIGFyZSB0aGUga2V5IHRvdWNocG9pbnRzIHRvIGZvY3VzIG9uLiBXZSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoZXNlIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgaXNzdWVzLiBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMjA6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfbWdtdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgYXNzaWduZWQgZm9yIHZhcmlvdXMgY2ZnODAyMTEgb3BlcmF0aW9ucyAocmVtYWluLW9uLWNoYW5uZWwsIG1nbXRfdHgsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCksIG1vdmluZyB0aGUgYXNzaWdubWVudCBmcm9tIGluZGl2aWR1YWwgZHJpdmVycyB0byB0aGUgY2ZnODAyMTEgY29yZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgYW5kIHRlc3RlZCB1c2luZyB0aGUgbWFjODAyMTFfaHdzaW0gc29mdHdhcmUtZW11bGF0ZWQgcmFkaW8gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMjA6MDQ6NDQuMzA2MjcxODczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwNDg3ODk4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIixcbiAgICBcIm5sODAyMTFfdHhfbWdtdFwiLFxuICAgIFwibmw4MDIxMV9wcm9iZV9wZWVyXCIsXG4gICAgXCJubDgwMjExX3R4X2NvbnRyb2xfcG9ydFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGZvciB2YXJpb3VzIGNmZzgwMjExIG9wZXJhdGlvbnMgKHJlbWFpbi1vbi1jaGFubmVsLCBtZ210X3R4LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLCBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgZnJvbSBpbmRpdmlkdWFsIGRyaXZlcnMgdG8gdGhlIGNmZzgwMjExIGNvcmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIGFuZCB0ZXN0ZWQgdXNpbmcgdGhlIG1hYzgwMjExX2h3c2ltIHNvZnR3YXJlLWVtdWxhdGVkIHJhZGlvIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMjA6MDQ6NDQuMzA2Mjc3OTEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDkxOTg3MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YWM2MDZlODhhZTNlNzAwZGVkMzNjMDZjZTM3MmQ5NzQ5Y2NhZTc3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDIwOjA0OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xcbmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuQEAgLTMwMzQsMjAgKzMwMzQsMTQgQEAgc3RhdGljIGludCBhdGg2a2xfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXFxuLVxcdFxcdFxcdFxcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdFxcdFxcdCAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XFxuIFxcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVxcdTAwM2VuZGV2KTtcXG4tXFx0dTMyIGlkO1xcbiBcXG4gXFx0LyogVE9ETzogaWYgYWxyZWFkeSBwZW5kaW5nIG9yIG9uZ29pbmcgcmVtYWluLW9uLWNoYW5uZWwsXFxuIFxcdCAqIHJldHVybiAtRUJVU1kgKi9cXG4tXFx0aWQgPSArK3ZpZi1cXHUwMDNlbGFzdF9yb2NfaWQ7XFxuLVxcdGlmIChpZCA9PSAwKSB7XFxuLVxcdFxcdC8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovXFxuLVxcdFxcdGlkID0gKyt2aWYtXFx1MDAzZWxhc3Rfcm9jX2lkO1xcbi1cXHR9XFxuLVxcdCpjb29raWUgPSBpZDtcXG4rXFx0dmlmLVxcdTAwM2VsYXN0X3JvY19pZCA9IGNvb2tpZTtcXG4gXFxuIFxcdHJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgY2hhbi1cXHUwMDNlY2VudGVyX2ZyZXEsIGR1cmF0aW9uKTtcXG5AQCAtMzEwNiw2ICszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXFxuIFxcbiBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgaWQsXFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgZnJlcSxcXG4gXFx0XFx0XFx0XFx0ICAgICB1MzIgd2FpdCxcXG4gXFx0XFx0XFx0XFx0ICAgICBjb25zdCB1OCAqYnVmLFxcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFxuIFxcdFxcdFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtZ210X2J1Zi1cXHUwMDNlbGlzdCk7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2VpZCA9IGlkO1xcbitcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlZnJlcSA9IGZyZXE7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2V3YWl0ID0gd2FpdDtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZWxlbiA9IGxlbjtcXG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xcbiBcXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cXHUwMDNlbmRldik7XFxuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXFxuIFxcdFxcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xcbiBcXHRcXHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcXG4gXFx0fVxcbiBcXG5AQCAtMzIzNSwxNiArMzIzMCwxNSBAQCBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGlkID0gdmlmLVxcdTAwM2VzZW5kX2FjdGlvbl9pZCsrO1xcbiBcXHR9XFxuIFxcbi1cXHQqY29va2llID0gaWQ7XFxuLVxcbiBcXHQvKiBBUCBtb2RlIFBvd2VyIHNhdmluZyBwcm9jZXNzaW5nICovXFxuIFxcdGlmICh2aWYtXFx1MDAzZW53X3R5cGUgPT0gQVBfTkVUV09SSykge1xcbi1cXHRcXHRxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgZnJlcSwgd2FpdCwgYnVmLCBsZW4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcXG4rXFx0XFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICBidWYsIGxlbiwgXFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcXG4gXFx0XFx0aWYgKHF1ZXVlZClcXG4gXFx0XFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuK1xcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBjb29raWU7XFxuIFxcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LCBpZCwgZnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0d2FpdCwgYnVmLCBsZW4sIG5vX2Njayk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbmluZGV4IDc3ZTA1MjMzNmViNWIuLmEwYjIzNmVlZWFiNTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbkBAIC00MDQsNiArNDA0LDcgQEAgc3RydWN0IGF0aDZrbF9tZ210X2J1ZmYge1xcbiBcXHR1MzIgZnJlcTtcXG4gXFx0dTMyIHdhaXQ7XFxuIFxcdHUzMiBpZDtcXG4rXFx0dTY0IGNvb2tpZTtcXG4gXFx0Ym9vbCBub19jY2s7XFxuIFxcdHNpemVfdCBsZW47XFxuIFxcdHU4IGJ1ZltdO1xcbkBAIC02MzEsOCArNjMyLDggQEAgc3RydWN0IGF0aDZrbF92aWYge1xcbiBcXHRzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTtcXG4gXFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xcbiBcXHRpbnQgcmVjb25uZWN0X2ZsYWc7XFxuLVxcdHUzMiBsYXN0X3JvY19pZDtcXG4tXFx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcXG4rXFx0dTY0IGxhc3Rfcm9jX2lkO1xcbitcXHR1NjQgbGFzdF9jYW5jZWxfcm9jX2lkO1xcbiBcXHR1MzIgc2VuZF9hY3Rpb25faWQ7XFxuIFxcdGJvb2wgcHJvYmVfcmVxX3JlcG9ydDtcXG4gXFx0dTE2IGFzc29jX2Jzc19iZWFjb25faW50O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2Y29ubi1cXHUwMDNlcHNxX2xvY2spO1xcbiBcXG4gXFx0XFx0Y29ubi1cXHUwMDNlc3RhX2ZsYWdzIHw9IFNUQV9QU19QT0xMRUQ7XFxuK1xcdFxcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cXHUwMDNlY29va2llO1xcbiBcXHRcXHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXFx1MDAzZXdtaSwgdmlmLVxcdTAwM2Vmd192aWZfaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHQgbWdtdF9idWYtXFx1MDAzZWlkLCBtZ210X2J1Zi1cXHUwMDNlZnJlcSxcXG4gXFx0XFx0XFx0XFx0XFx0IG1nbXRfYnVmLVxcdTAwM2V3YWl0LCBtZ210X2J1Zi1cXHUwMDNlYnVmLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuaW5kZXggOTdmZGFjNzIzN2UyNi4uYjRkM2M1Y2ZmODgxMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXFxuIFxcdFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2Vwc3FfbG9jayk7XFxuIFxcdFxcdFxcdFxcdFxcdGlkeCA9IHZpZi1cXHUwMDNlZndfdmlmX2lkeDtcXG4gXFxuK1xcdFxcdFxcdFxcdFxcdGFyLVxcdTAwM2V3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVxcdTAwM2Vjb29raWU7XFxuIFxcdFxcdFxcdFxcdFxcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgaWR4LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbWdtdC1cXHUwMDNlaWQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuaW5kZXggYzBjNDU1ZDZlMmRjYy4uODg4YmJiYjVkMTdhMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xcbkBAIC01ODQsNyArNTg0LDcgQEAgc3RhdGljIGludCBhdGg2a2xfd21pX3R4X3N0YXR1c19ldmVudF9yeChzdHJ1Y3Qgd21pICp3bWksIHU4ICpkYXRhcCwgaW50IGxlbixcXG4gXFx0YXRoNmtsX2RiZyhBVEg2S0xfREJHX1dNSSwgXFxcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgaWQsIGV2LVxcdTAwM2VhY2tfc3RhdHVzKTtcXG4gXFx0aWYgKHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lKSB7XFxuLVxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFxcdTAwMjZ2aWYtXFx1MDAzZXdkZXYsIGlkLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcXHUwMDI2dmlmLVxcdTAwM2V3ZGV2LCB3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUsXFxuIFxcdFxcdFxcdFxcdFxcdHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lLFxcbiBcXHRcXHRcXHRcXHRcXHR3bWktXFx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXFxuIFxcdFxcdFxcdFxcdFxcdCEhZXYtXFx1MDAzZWFja19zdGF0dXMsIEdGUF9BVE9NSUMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xcbiBcXG4gXFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcXG4gXFx0c2l6ZV90IGxhc3RfbWdtdF90eF9mcmFtZV9sZW47XFxuK1xcdHU2NCBsYXN0X21nbXRfdHhfY29va2llO1xcbiBcXHR1OCBzYXZlZF9wd3JfbW9kZTtcXG4gfTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuaW5kZXggNWYyYmQ5YTMxZmFmNi4uOWFjMzNkODI3ZjgwMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xcbkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9zZXRfd2lwaHlfcGFyYW1zKHN0cnVjdCB3aXBoeSAqd2lwaHksIGludCByYWRpb19pZHgsXFxuIFxcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXFx1MDAzZWJ1ZjtcXG4gXFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cXHUwMDNlbGVuO1xcbkBAIC0xNDg4LDggKzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0ICovXFxuIFxcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcXG4gXFx0cmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7XFxuLVxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSA/ICpjb29raWUgOiAwLCBidWYsIGxlbixcXG4tXFx0XFx0XFx0XFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcXG4rXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdHJldHVybiByYztcXG4gfVxcbkBAIC0xNzM1LDcgKzE3MzQsNyBAQCBzdGF0aWMgaW50IHdpbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4gXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBkdXJhdGlvbixcXG4tXFx0XFx0XFx0XFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4rXFx0XFx0XFx0XFx0IHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XFxuIFxcdGludCByYztcXG5AQCAtMjM4MSw3ICsyMzgwLDcgQEAgdm9pZCB3aWxfcHJvYmVfY2xpZW50X2ZsdXNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKVxcbiBcXG4gc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi1cXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqcGVlciwgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcXG5AQCAtMjM5OSwxMyArMjM5OCwxMiBAQCBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0cmVxLVxcdTAwM2VjaWQgPSBjaWQ7XFxuLVxcdHJlcS1cXHUwMDNlY29va2llID0gY2lkO1xcbitcXHRyZXEtXFx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnZpZi1cXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcXG4gXFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2cmVxLVxcdTAwM2VsaXN0LCBcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfcGVuZGluZyk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xcbiBcXG4tXFx0KmNvb2tpZSA9IHJlcS1cXHUwMDNlY29va2llO1xcbiBcXHRxdWV1ZV93b3JrKHdpbC1cXHUwMDNld3Ffc2VydmljZSwgXFx1MDAyNnZpZi1cXHUwMDNlcHJvYmVfY2xpZW50X3dvcmtlcik7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xcbmluZGV4IGI4Y2I3MzZhNzE4NTIuLmUwNmU0NTMyMzI3MmMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuQEAgLTk4NSw3ICs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXFxuIFxcdHBhcmFtcy5idWYgPSBmcmFtZTtcXG4gXFx0cGFyYW1zLmxlbiA9IGxlbjtcXG4gXFxuLVxcdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFxcdTAwMjZwYXJhbXMsIE5VTEwpO1xcbitcXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcXHUwMDI2cGFyYW1zLCAwKTtcXG4gXFxuIFxcdGtmcmVlKGZyYW1lKTtcXG4gXFx0d2lsX2luZm8od2lsLCBcXFwiLVxcdTAwM2UgJWRcXFxcblxcXCIsIHJjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbkBAIC0xMjQsNyArMTI0LDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxcbiBcXG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gd2Rldl90b192aWYod2lsLCB3ZGV2KTtcXG4gXFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXFx1MDAyNnZpZi1cXHUwMDNlcDJwO1xcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0fVxcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZwMnAtXFx1MDAzZWxpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTtcXG4tXFx0KmNvb2tpZSA9ICsrcDJwLVxcdTAwM2Vjb29raWU7XFxuK1xcdHAycC1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXHRwMnAtXFx1MDAzZWxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2d2lsLVxcdTAwM2V2aWZfbXV0ZXgpO1xcbkBAIC0xNjYsNyArMTY2LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0aWYgKHZpZi1cXHUwMDNlbWlkID09IDApXFxuIFxcdFxcdHdpbC1cXHUwMDNlcmFkaW9fd2RldiA9IHdkZXY7XFxuIFxcbi1cXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLFxcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXFxuIFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIFxcbiBvdXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxcbmluZGV4IDMxZTEwN2M4MWUyZDQuLmY4ZTYwYmU2MzFjYTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuQEAgLTEzMDEsNyArMTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcXG4gXFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7XFxuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgIHU2NCBjb29raWUpO1xcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcXG4gaW50IHdpbF9wMnBfY2FuY2VsX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwgdTY0IGNvb2tpZSk7XFxuIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcXG4gXFxuIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCB1NjQgY29va2llKTtcXG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcXG4gaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdyhcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuaW5kZXggMjBmN2ZjY2Q2MTIxNS4uODA5MzcyNGU2ZDIyNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuQEAgLTU1NTQsNyArNTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFxuIGludFxcbiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVxcdTAwM2VjaGFuO1xcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuIFxcbi1cXHQqY29va2llID0gMDtcXG4tXFxuIFxcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xcbiBcXG4gXFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbkBAIC01NjA1LDcgKzU2MDMsNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9WTkRSX0lFX1BSQlJTUF9GTEFHLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgaWVfbGVuKTtcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcXG4gXFx0XFx0aWYgKGxlbiBcXHUwMDNlIEJSQ01GX0ZJTF9BQ1RJT05fRlJBTUVfU0laRSArIERPVDExX01HTVRfSERSX0xFTikge1xcbkBAIC01NjIxLDcgKzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdH1cXG4gXFx0XFx0YWN0aW9uX2ZyYW1lID0gXFx1MDAyNmFmX3BhcmFtcy1cXHUwMDNlYWN0aW9uX2ZyYW1lO1xcbiBcXHRcXHQvKiBBZGQgdGhlIHBhY2tldCBJZCAqL1xcbi1cXHRcXHRhY3Rpb25fZnJhbWUtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRcXHRhY3Rpb25fZnJhbWUtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XFxuIFxcdFxcdC8qIEFkZCBCU1NJRCAqL1xcbiBcXHRcXHRtZW1jcHkoXFx1MDAyNmFjdGlvbl9mcmFtZS1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRcXHRtZW1jcHkoXFx1MDAyNmFmX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cXHUwMDNlbGVuKSk7XFxuIFxcbiBcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJBY3Rpb24gZnJhbWUsIGNvb2tpZT0lbGxkLCBsZW49JWQsIGNoYW5uZWw9JWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pLFxcbitcXHRcXHRcXHQgIGNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pLFxcbiBcXHRcXHRcXHQgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cXHUwMDNlY2hhbm5lbCkpO1xcbiBcXG4gXFx0XFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cXHUwMDNlaWZwLCBhZl9wYXJhbXMpO1xcbiBcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLFxcbiBcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4gZnJlZTpcXG4gXFx0XFx0a2ZyZWUoYWZfcGFyYW1zKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbkBAIC00OTcsNiArNDk3LDYgQEAgdm9pZCBicmNtZl9jZmc4MDIxMV9mcmVlX3ZpZihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuIFxcbiBpbnQgYnJjbWZfc2V0X3dzZWMoc3RydWN0IGJyY21mX2lmICppZnAsIGNvbnN0IHU4ICprZXksIHUxNiBrZXlfbGVuLCB1MTYgZmxhZ3MpO1xcbiBpbnQgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XFxuIFxcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuaW5kZXggY2UwOWQ0NGZhNzNjZi4uNDliMzNlZmUyMmI0MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApXFxuIFxcbiBzdGF0aWNcXG4gaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRpZiAoIWllZWU4MDIxMV9pc19hdXRoKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xcbiBcXG4tXFx0KmNvb2tpZSA9IDA7XFxuIFxcdHZpZiA9IGNvbnRhaW5lcl9vZih3ZGV2LCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmLCB3ZGV2KTtcXG4gXFxuIFxcdHJlaW5pdF9jb21wbGV0aW9uKFxcdTAwMjZ2aWYtXFx1MDAzZW1nbXRfdHgpO1xcbkBAIC0xNTUsNyArMTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbi1cXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XFxuIFxcdG1lbWNweShtZl9wYXJhbXMtXFx1MDAzZWRhdGEsIFxcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcXG4gXFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cXHUwMDNlbGVuKSk7XFxuIFxcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdH1cXG4gXFxuIHR4X3N0YXR1czpcXG4tXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcXG4tXFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuK1xcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XFxuIGZyZWU6XFxuIFxcdGtmcmVlKG1mX3BhcmFtcyk7XFxuIFxcdHJldHVybiBlcnI7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbmluZGV4IGM3ZDdiMzVhYjEyNTMuLjMyYTAxNWQ2Yjc2OTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuQEAgLTk3OSwxMCArOTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcXG4gXFx0cDJwLVxcdTAwM2VjZmctXFx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXFx1MDAyNmNoKTtcXG4gXFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXFx1MDAzZWlmcCwgV0xfUDJQX0RJU0NfU1RfTElTVEVOLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBjaC5jaHNwZWMsICh1MTYpZHVyYXRpb24pO1xcbi1cXHRpZiAoIWVycikge1xcbitcXHRpZiAoIWVycilcXG4gXFx0XFx0c2V0X2JpdChCUkNNRl9QMlBfU1RBVFVTX0RJU0NPVkVSX0xJU1RFTiwgXFx1MDAyNnAycC1cXHUwMDNlc3RhdHVzKTtcXG4tXFx0XFx0cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWUrKztcXG4tXFx0fVxcbiBleGl0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcXG4gICovXFxuIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xcbkBAIC0xMDIwLDggKzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFxuIFxcdG1lbWNweShcXHUwMDI2cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbCwgY2hhbm5lbCwgc2l6ZW9mKCpjaGFubmVsKSk7XFxuLVxcdCpjb29raWUgPSBwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZTtcXG4tXFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuK1xcdHAycC1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbm5lbCwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbiBcXG4gZXhpdDpcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXFxuaW5kZXggOWYzZjAxYWRlMmI3Ny4uNzA3ODAwOTQ5MTcwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG5AQCAtMTU3LDcgKzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XFxuIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxcbi1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdGNvbnN0IHU4ICpyeF9hZGRyKTtcXG4gaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbiBcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5pbmRleCA5OWQ5NjA4OGUzNjRjLi5kZTk5NTNlY2JlZmQ2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXFxuICAqL1xcbiBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR0eF9pbmZvLVxcdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcXG4gXFxuIFxcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xcbi1cXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XFxuIFxcbiBcXHRpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG4gXFx0XFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBza2IsXFxuLVxcdFxcdFxcdFxcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcXG4rXFx0XFx0XFx0XFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcXHUwMDI2Y29va2llKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRtd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYgPSBtd2lmaWV4X25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcXG4rXFx0aWYgKCFjaGFuKSB7XFxuIFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcXFwiSW52YWxpZCBwYXJhbWV0ZXIgZm9yIFJPQ1xcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuQEAgLTMyNiwxNSArMzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0IGR1cmF0aW9uKTtcXG4gXFxuIFxcdGlmICghcmV0KSB7XFxuLVxcdFxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xcbitcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jaGFuID0gKmNoYW47XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXFxuK1xcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgXFxcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxcXG5cXFwiLCBjb29raWUpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC00NTYwLDcgKzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50XFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXFxuLVxcdFxcdFxcdCAgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcXG4gXFx0ICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24ndCBzdXBwb3J0KS5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbmluZGV4IDY2NTRmY2U0ZGVkODQuLmJiMjc0OGExOTMyOTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbkBAIC0xMTAwLDI0ICsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpXFxuIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0ICAgICBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXFx1MDAyNnZpZi1cXHUwMDNlcHJpdjtcXG4tXFx0dTY0IGlkO1xcbiBcXG4gXFx0aWYgKHdkZXYtXFx1MDAzZWlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkge1xcbiBcXHRcXHRuZXRkZXZfZGJnKHZpZi1cXHUwMDNlbmRldiwgXFxcIlJlcXVpcmVkIHdoaWxlIGluIEFQIG1vZGVcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbi1cXHRpZCA9ICsrcHJpdi1cXHUwMDNlaW5jX3JvY19jb29raWU7XFxuLVxcdGlmIChpZCA9PSAwKVxcbi1cXHRcXHRpZCA9ICsrcHJpdi1cXHUwMDNlaW5jX3JvY19jb29raWU7XFxuLVxcbi1cXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXFx1MDAzZWh3X3ZhbHVlLFxcbitcXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVxcdTAwM2Vod192YWx1ZSxcXG4gXFx0XFx0XFx0XFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdHZpZi1cXHUwMDNld2lsYy1cXHUwMDNlb3BfY2ggPSBjaGFuLVxcdTAwM2Vod192YWx1ZTtcXG4gXFxuIFxcdHByaXYtXFx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcXG4tXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XFxuLVxcdCpjb29raWUgPSBpZDtcXG4rXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llO1xcbiBcXHRwcml2LVxcdTAwM2VwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTtcXG4gXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcXG4gXFxuLVxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbitcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xcbiBcXHRtb2RfdGltZXIoXFx1MDAyNnZpZi1cXHUwMDNlaGlmX2Rydi1cXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxcbiBcXHRcXHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xcbiBcXG5AQCAtMTE1Myw3ICsxMTQ3LDcgQEAgc3RhdGljIGludCBjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHQgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXFx1MDAzZWNoYW47XFxuIFxcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVxcdTAwM2V3YWl0O1xcbkBAIC0xMTcwLDggKzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0Y29uc3QgdTggKnZlbmRvcl9pZTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbi1cXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcXG4tXFx0cHJpdi1cXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcXG4rXFx0cHJpdi1cXHUwMDNldHhfY29va2llID0gY29va2llO1xcbiBcXHRtZ210ID0gKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqKWJ1ZjtcXG4gXFxuIFxcdGlmICghaWVlZTgwMjExX2lzX21nbXQobWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuaW5kZXggNGY5ZTIwZjcyODExNC4uYzgyMGYwOGQyODM1NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuY1xcbkBAIC0xNTAsNyArMTUwLDcgQEAgbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xcbiBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR0eF9pbmZvLVxcdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcXG4gXFxuIFxcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xcbi1cXHQqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKHByaXYtXFx1MDAzZWFkYXB0ZXIpO1xcbiBcXG4gXFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdHNrYiA9IG54cHdpZmlfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgc2tiLFxcbi1cXHRcXHRcXHRcXHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7XFxuK1xcdFxcdFxcdFxcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXFx1MDAyNmNvb2tpZSk7XFxuIFxcdGVsc2VcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcXG5AQCAtMjU0LDE0ICsyNTMsMTQgQEAgc3RhdGljIGludFxcbiBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXFx1MDAzZWFkYXB0ZXI7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xcbitcXHRpZiAoIWNoYW4pIHtcXG4gXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtMjc3LDE1ICsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgZHVyYXRpb24pO1xcbiBcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTtcXG4tXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xcbitcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlcm9jX2NmZy5jaGFuID0gKmNoYW47XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXFxuK1xcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdFxcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgXFxcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxcXG5cXFwiLCBjb29raWUpO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0ICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0LypcXG4gXFx0ICogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXFxuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFxuIHN0YXRpYyBpbnRcXG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cXHUwMDNlbmV0ZGV2KTtcXG4gXFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtXFx1MDAzZWJ1ZjtcXG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR1MTYgZmxhZ3MgPSAwO1xcbiBcXHR1MTYgZnJlcTtcXG4gXFxuLVxcdCpjb29raWUgPSBzaG9ydF9jb29raWU7XFxuLVxcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VvZmZjaGFuKVxcbiBcXHRcXHRmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDE1YzA4YjI0NTAyZmQuLjdiMzQ2MjI2ZmU3NDggMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtNTEwNyw3ICs1MTA3LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XFxuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXFxuICAqXFxuICAqIEBwcm9iZV9wZWVyOiBwcm9iZSBhIGNvbm5lY3RlZCBwZWVyIChBUDogU1RBIE1BQyByZXF1aXJlZDsgU1RBOiBubyBNQUMpLFxcbi0gKlxcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbisgKlxcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xcbisgKlxcdGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbiAgKlxcbiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLlxcbiAgKlxcbkBAIC01MjE4LDcgKzUyMTksOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4gICogICAgIHVzZXIgc3BhY2VcXG4gICpcXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXFxuLSAqXFx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC5cXG4rICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4rICpcXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxcbiAgKlxcbiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLlxcbiAgKlxcdFN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuXFxuQEAgLTU0NTUsMTQgKzU0NTcsMTQgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xcbiBcXHRpbnRcXHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICB1NjQgY29va2llKTtcXG4gXFxuIFxcdGludFxcdCgqbWdtdF90eCkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcdGludFxcdCgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKTtcXG5AQCAtNTUwOSw3ICs1NTExLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcXG4gXFxuIFxcdGludFxcdCgqcHJvYmVfcGVlcikoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpO1xcbiBcXG4gXFx0aW50XFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTU2MDcsNyArNTYwOSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcbiBcXHRpbnRcXHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5pbmRleCBkZjY4YTViZGViMmYwLi4zMTBjMTQ1NjAwNjVkIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC00ODI3LDE5ICs0ODI3LDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2god2lwaHksIGRldiwgcGFyYW1zKTtcXG4gfVxcbiBcXG4tdTY0IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4te1xcbi1cXHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cXHUwMDNlaHcud2lwaHkpO1xcbi1cXG4tXFx0bG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xcbi1cXG4tXFx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xcbi1cXHRpZiAoV0FSTl9PTihsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxcbi1cXHRcXHRsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyKys7XFxuLVxcbi1cXHRyZXR1cm4gbG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcjtcXG4tfVxcbi1cXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuQEAgLTQ4NjQsNyArNDg1MSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcXG4gXFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVxcdTAwM2VzdGF0dXNfZGF0YSA9IGlkO1xcbiBcXG4tXFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuIFxcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXFx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQ5NTAsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0XFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbkBAIC01MDU3LDcgKzUwNDMsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChxb3MpXFxuIFxcdFxcdG51bGxmdW5jLVxcdTAwM2Vxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpO1xcbiBcXG4tXFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7XFxuK1xcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBcXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IDExZjQ0OWU4ZmYwMDMuLjRmMWY1MmY2ZWRjYmIgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbkBAIC0xNzA4LDggKzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDtcXG4gXFx0c3RydWN0IHdpcGh5X3dvcmsgaHdfcm9jX3N0YXJ0LCBod19yb2NfZG9uZTtcXG4gXFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcXG4tXFx0dTY0IHJvY19jb29raWVfY291bnRlcjtcXG4tXFxuIFxcdHN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7XFxuIFxcdHNwaW5sb2NrX3QgYWNrX3N0YXR1c19sb2NrO1xcbiBcXG5AQCAtMTk4OSw3ICsxOTg3LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIFxcbiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XFxuIFxcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcXG4gXFxuQEAgLTIxNTEsMTIgKzIxNDgsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcik7XFxuIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuIFxcbkBAIC0yMjM1LDcgKzIyMzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBpbmZvX2ZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzLFxcbi1cXHRcXHRcXHRcXHQgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKTtcXG4gc3RydWN0IHNrX2J1ZmYgKlxcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MpO1xcbkBAIC0yMjQ5LDcgKzIyNDYsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7XFxuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xcbiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXFxuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXG4gXFx0LypcXG4gXFx0ICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpXFxuLVxcdCAqIG9yIHRoZSBTS0IgKGZvciBtZ210IFRYKVxcbitcXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxcbiBcXHQgKi9cXG4tXFx0aWYgKCF0eHNrYikge1xcbi1cXHRcXHRyb2MtXFx1MDAzZWNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuLVxcdFxcdCpjb29raWUgPSByb2MtXFx1MDAzZWNvb2tpZTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aWYgKCF0eHNrYilcXG4rXFx0XFx0cm9jLVxcdTAwM2Vjb29raWUgPSAqY29va2llO1xcbitcXHRlbHNlXFxuIFxcdFxcdHJvYy1cXHUwMDNlbWdtdF90eF9jb29raWUgPSAqY29va2llO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cXHUwMDNlaHcud2lwaHksIGxvY2FsLVxcdTAwM2VzY2FuX3JlcSk7XFxuIFxcbkBAIC03MDQsNyArNzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG5AQCAtNzEzLDcgKzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuIFxcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxcbi1cXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxcbitcXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgXFx1MDAyNmNvb2tpZSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XFxuIH1cXG4gXFxuQEAgLTgxMCw3ICs4MDgsNyBAQCBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiB9XFxuIFxcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xcbiBcXHRcXHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFxcdTAwMjZjb29raWUsIEdGUF9LRVJORUwpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0LyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCdzIG5vdCBzZW50IHRvXFxuLVxcdFxcdCAqIHVzZXJzcGFjZSBpbiB0aGlzIGNhc2UgYnV0IHdlIHJlbHkgb24gaXRzIHZhbHVlXFxuLVxcdFxcdCAqIGludGVybmFsbHkgaW4gdGhlIG5lZWRfb2ZmY2hhbiBjYXNlIHRvIGRpc3Rpbmd1aXNoXFxuLVxcdFxcdCAqIG1nbXQtdHggZnJvbSByZW1haW4tb24tY2hhbm5lbC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAweGZmZmZmZmZmO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xcbkBAIC0xMDQ0LDcgKzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xcbiBcXHRyZXQgPSBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBwYXJhbXMtXFx1MDAzZWNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgICBwYXJhbXMtXFx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgcGFyYW1zLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y29va2llLCBza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90ZGxzLmMgYi9uZXQvbWFjODAyMTEvdGRscy5jXFxuaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXFxuKysrIGIvbmV0L21hYzgwMjExL3RkbHMuY1xcbkBAIC0xMTIxLDcgKzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXFxuIFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCBlYjM2ZjFiOTc3MWI1Li41NTQ5Y2I4ZDVjZGExIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMjU4Myw3ICsyNTgzLDcgQEAgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgICB1MzIgKmluZm9fZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xcbiBcXHR1MTYgaW5mb19pZCA9IDA7XFxuQEAgLTI2MDUsMTAgKzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRpZiAoaWQgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHRcXHRpbmZvX2lkID0gaWQ7XFxuIFxcdFxcdFxcdCppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUztcXG4tXFx0XFx0XFx0aWYgKGNvb2tpZSkge1xcbi1cXHRcXHRcXHRcXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcXG4tXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKGNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2tiKGFja19za2IpO1xcbiBcXHRcXHR9XFxuQEAgLTI2NDEsNyArMjYzOSw3IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5AQCAtNDMzNyw3ICs0MzM1LDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTQ1MzIsNyArNDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xcbi1cXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XFxuK1xcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS1cXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtNDU0Nyw4ICs0NTQ1LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuIFxcbi1cXHRcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4rXFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVxcdTAwM2VkZXYsIDAsIGN0cmxfZmxhZ3MsIDApO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTQ1OTAsNyArNDU4Nyw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cXVldWUpKSlcXG4gXFx0XFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fFxcbkBAIC00NjAxLDcgKzQ1OTgsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBub3JtYWw6XFxuIFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbkBAIC00NzAwLDcgKzQ2OTcsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovXFxuIFxcdFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ3MzYsNyArNDczMyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLVxcdTAwM2VzaykpKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZpbmZvLVxcdTAwM2VmbGFncywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aW5mby1cXHUwMDNlZmxhZ3MsIDApO1xcbiBcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzX2RhdGEpXFxuIFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XFxuIFxcdH1cXG5AQCAtNDg3OSw3ICs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdH1cXG4gXFxuIFxcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgaW5mb19mbGFncywgc3RhLFxcbi1cXHRcXHRcXHRcXHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcXG4gXFx0aWYgKElTX0VSUihza2IpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuQEAgLTY0OTQsNyArNjQ5MSw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXFxuLVxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5AQCAtNjYyOSw3ICs2NjI2LDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbiBcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2tiLVxcdTAwM2VkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsXFxuLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXFxuaW5kZXggMzk5MDM3NTE0OTQzZC4uYjNlYWQ5OGFlZTA3YSAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBjZmc4MDIxMV9tbG1lX3B1cmdlX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgIHU2NCBjb29raWUpO1xcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXFxuIFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTtcXG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xcbmluZGV4IDJhMmMxNzMwNThiYWMuLjM0ZjkwMDNkNWM1NDEgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9tbG1lLmNcXG5AQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4gXFx0dTE2IHN0eXBlO1xcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbmluZGV4IGFjMGMwZGE0NTI0MTkuLjcwOGU4YmI4ZGFmZGQgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5AQCAtMTQ2MzAsOCArMTQ2MzAsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4rXFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG4gXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgZHVyYXRpb24sIFxcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xcbitcXHRcXHRcXHRcXHQgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbiBcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG5AQCAtMTQ4NzEsNyArMTQ4NzIsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHR9XFxuIFxcbiBcXHRwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjtcXG4tXFx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFxcdTAwMjZwYXJhbXMsIFxcdTAwMjZjb29raWUpO1xcbitcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbitcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFxuQEAgLTE2MzU5LDcgKzE2MzYxLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgXFx1MDAyNmNvb2tpZSk7XFxuK1xcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuK1xcdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIGNvb2tpZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZnJlZV9tc2c7XFxuIFxcbkBAIC0xODU3NCwxMCArMTg1NzcsMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXG4gXFx0bGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tXFx1MDAzZWF0dHJzKTtcXG4gXFxuK1xcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuIFxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi1cXHRcXHRcXHRcXHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcXHUwMDI2Y29va2llKTtcXG4tXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxcbitcXHRcXHRcXHRcXHQgICBjb29raWUpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBjb29raWUpXFxuIFxcdFxcdG5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLVxcdTAwM2VleHRhY2ssIGNvb2tpZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjIwMzAsNiArMjIwMzQsMTAgQEAgc3RhdGljIHZvaWQgbmw4MDIxMV9mcmFtZV90eF9zdGF0dXMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4gXFx0dm9pZCAqaGRyO1xcbiBcXG4rXFx0LyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqL1xcbitcXHRpZiAoIXN0YXR1cy1cXHUwMDNlY29va2llKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpXFxuIFxcdFxcdHRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy1cXHUwMDNlY29va2llLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0dXMtXFx1MDAzZWFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcXG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICAgICByeF9hZGRyKTtcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbi1cXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcXG4rXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtNzYxLDEyICs3NjEsMTIgQEAgcmRldl9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4gXFx0aWYgKGNvb2tpZSlcXG4tXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdFxcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTUwLDEyICs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlcik7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlciwgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjQ1LjExNjA0MTYwN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1MjM5MDA5Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBhc3NpZ25lZCBmb3IgdmFyaW91cyBjZmc4MDIxMSBvcGVyYXRpb25zIChyZW1haW4tb24tY2hhbm5lbCwgbWdtdF90eCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KSwgbW92aW5nIHRoZSBhc3NpZ25tZW50IGZyb20gaW5kaXZpZHVhbCBkcml2ZXJzIHRvIHRoZSBjZmc4MDIxMSBjb3JlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyBhbmQgdGVzdGVkIHVzaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBzb2Z0d2FyZS1lbXVsYXRlZCByYWRpbyBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhYzYwNmU4OGFlM2U3MDBkZWQzM2MwNmNlMzcyZDk3NDljY2FlNzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAyMDowNDo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4rXHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gKyt2aWYtXHUwMDNlbGFzdF9yb2NfaWQ7XG4tXHRpZiAoaWQgPT0gMCkge1xuLVx0XHQvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqL1xuLVx0XHRpZCA9ICsrdmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuK1x0dmlmLVx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xuIFxuIFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsXG4gXHRcdFx0XHRcdCAgICAgY2hhbi1cdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xuQEAgLTMxMDYsNiArMzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbiBcbiBcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtZ210X2J1Zi1cdTAwM2VsaXN0KTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VpZCA9IGlkO1xuK1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcbiBcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVx1MDAzZW5kZXYpO1xuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQrKztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbitcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbitcdFx0XHRcdFx0XHQgIGJ1ZiwgbGVuLCBcdTAwMjZtb3JlX2RhdGEsIG5vX2Njayk7XG4gXHRcdGlmIChxdWV1ZWQpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4rXHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgKzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4rXHR1NjQgY29va2llO1xuIFx0Ym9vbCBub19jY2s7XG4gXHRzaXplX3QgbGVuO1xuIFx0dTggYnVmW107XG5AQCAtNjMxLDggKzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbitcdHU2NCBsYXN0X3JvY19pZDtcbitcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XG4gXHR1MzIgc2VuZF9hY3Rpb25faWQ7XG4gXHRib29sIHByb2JlX3JlcV9yZXBvcnQ7XG4gXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbitcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggOTdmZGFjNzIzN2UyNi4uYjRkM2M1Y2ZmODgxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXG4gXHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFx0XHRcdFx0XHRpZHggPSB2aWYtXHUwMDNlZndfdmlmX2lkeDtcbiBcbitcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IGMwYzQ1NWQ2ZTJkY2MuLjg4OGJiYmI1ZDE3YTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTg0LDcgKzU4NCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcblwiLFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xuIFxuIFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcbiBcdHNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuO1xuK1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuK1x0XHRcdCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMTQ4OCw4ICsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyArMjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbitcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcbiBcdHBhcmFtcy5idWYgPSBmcmFtZTtcbiBcdHBhcmFtcy5sZW4gPSBsZW47XG4gXG4tXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIE5VTEwpO1xuK1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCItXHUwMDNlICVkXFxuXCIsIHJjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5pbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5AQCAtMTI0LDcgKzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xuLVx0KmNvb2tpZSA9ICsrcDJwLVx1MDAzZWNvb2tpZTtcbitcdHAycC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRwMnAtXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNndpbC1cdTAwM2V2aWZfbXV0ZXgpO1xuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbitcdFx0XHQgdTY0IGNvb2tpZSk7XG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDIwZjdmY2NkNjEyMTUuLjgwOTM3MjRlNmQyMjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC01NTU0LDcgKzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiRW50ZXJcXG5cIik7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICs1NjAzLDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfVk5EUl9JRV9QUkJSU1BfRkxBRyxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxuIFx0XHRcdFx0XHQgICAgaWVfbGVuKTtcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHR9XG4gXHRcdGFjdGlvbl9mcmFtZSA9IFx1MDAyNmFmX3BhcmFtcy1cdTAwM2VhY3Rpb25fZnJhbWU7XG4gXHRcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXG4tXHRcdGFjdGlvbl9mcmFtZS1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbitcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcblwiLFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4rXHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdFx0a2ZyZWUoYWZfcGFyYW1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtNDk3LDYgKzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IGNlMDlkNDRmYTczY2YuLjQ5YjMzZWZlMjJiNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFxuIHN0YXRpY1xuIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4rXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgKzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuK1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0a2ZyZWUobWZfcGFyYW1zKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC05NzksMTAgKzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuK1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llKys7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0Y29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG5AQCAtMTAyMCw4ICsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4rXHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuK1x0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiBcbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbmluZGV4IDlmM2YwMWFkZTJiNzcuLjcwNzgwMDk0OTE3MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOTlkOTYwODhlMzY0Yy4uZGU5OTUzZWNiZWZkNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuICAqL1xuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4rXHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjYsMTUgKzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsICpjb29raWUpO1xuK1x0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJ3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcbiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCJSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4rXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHR2aWYtXHUwMDNld2lsYy1cdTAwM2VvcF9jaCA9IGNoYW4tXHUwMDNlaHdfdmFsdWU7XG4gXG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcbi1cdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XG4tXHQqY29va2llID0gaWQ7XG4rXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyArMTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0ICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbiBcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVx1MDAzZXdhaXQ7XG5AQCAtMTE3MCw4ICsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbitcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgKzE1MCw3IEBAIG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuK1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTI3NywxNSArMjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCAqY29va2llKTtcbitcdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgICB1NjQgKmNvb2tpZSlcbitcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cdTAwM2VidWY7XG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCAxNWMwOGIyNDUwMmZkLi43YjM0NjIyNmZlNzQ4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDcsNyArNTEwNyw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3Mge1xuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXG4gICpcbiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSxcbi0gKlx0bXVzdCByZXR1cm4gYSBjb29raWUgdGhhdCBpcyBsYXRlciBwYXNzZWQgdG8gY2ZnODAyMTFfcHJvYmVfc3RhdHVzKCkuXG4rICpcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xuKyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE4LDcgKzUyMTksOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiAgICAgdXNlciBzcGFjZVxuICAqXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG4tICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuXG4rICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuKyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU1LDE0ICs1NDU3LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTtcbitcdFx0XHRcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xuIFx0aW50XHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCAgIHU2NCAqY29va2llKTtcbitcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUwOSw3ICs1NTExLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XG4gXHRcdFx0ICAgICBjb25zdCB1OCAqcGVlciwgZW51bSBubDgwMjExX3RkbHNfb3BlcmF0aW9uIG9wZXIpO1xuIFxuIFx0aW50XHQoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcbitcdFx0XHQgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqc2V0X25vYWNrX21hcCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC01NjA3LDcgKzU2MDksNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHRcdFx0ICAgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHMpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggZGY2OGE1YmRlYjJmMC4uMzEwYzE0NTYwMDY1ZCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xuKysrIGIvbmV0L21hYzgwMjExL2NmZy5jXG5AQCAtNDgyNywxOSArNDgyNyw2IEBAIGludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpO1xuIH1cbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLXtcbi1cdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbi1cbi1cdGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xuLVxuLVx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xuLVx0aWYgKFdBUk5fT04obG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxuLVx0XHRsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXIrKztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY0LDcgKzQ4NTEsNiBAQCBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHRJRUVFODAyMTFfU0tCX0NCKHNrYiktXHUwMDNlc3RhdHVzX2RhdGEgPSBpZDtcbiBcbi1cdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuIFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ5NTAsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gfVxuIFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA1Nyw3ICs1MDQzLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKHFvcylcbiBcdFx0bnVsbGZ1bmMtXHUwMDNlcW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTtcbiBcbi1cdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpO1xuK1x0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbmluZGV4IDExZjQ0OWU4ZmYwMDMuLjRmMWY1MmY2ZWRjYmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0xNzA4LDggKzE3MDgsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk4OSw3ICsxOTg3LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gXG4gdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcbiBcbkBAIC0yMTUxLDEyICsyMTQ4LDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBcbkBAIC0yMjM1LDcgKzIyMzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSk7XG4rXHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI0OSw3ICsyMjQ2LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xuIHZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuKysrIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4rXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxuIFx0ICovXG4tXHRpZiAoIXR4c2tiKSB7XG4tXHRcdHJvYy1cdTAwM2Vjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHQqY29va2llID0gcm9jLVx1MDAzZWNvb2tpZTtcbi1cdH0gZWxzZSB7XG4rXHRpZiAoIXR4c2tiKVxuK1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbitcdGVsc2VcbiBcdFx0cm9jLVx1MDAzZW1nbXRfdHhfY29va2llID0gKmNvb2tpZTtcbi1cdH1cbiBcbiBcdHJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LCBsb2NhbC1cdTAwM2VzY2FuX3JlcSk7XG4gXG5AQCAtNzA0LDcgKzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyArNzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuIFx0cmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sXG4tXHRcdFx0XHRcdGR1cmF0aW9uLCBjb29raWUsIE5VTEwsXG4rXHRcdFx0XHRcdGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIE5VTEwsXG4gXHRcdFx0XHRcdElFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpO1xuIH1cbiBcbkBAIC04MTAsNyArODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xuIFx0XHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXG4gXHRcdCAqL1xuLVx0XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcbitcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQncyBub3Qgc2VudCB0b1xuLVx0XHQgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZVxuLVx0XHQgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaFxuLVx0XHQgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuXG4tXHRcdCAqL1xuLVx0XHQqY29va2llID0gMHhmZmZmZmZmZjtcbiBcdH1cbiBcbiBcdGlmICghbmVlZF9vZmZjaGFuKSB7XG5AQCAtMTA0NCw3ICsxMDM1LDcgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHQvKiBUaGlzIHdpbGwgaGFuZGxlIGFsbCBraW5kcyBvZiBjb2FsZXNjaW5nIGFuZCBpbW1lZGlhdGUgVFggKi9cbiBcdHJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy1cdTAwM2VjaGFuLFxuLVx0XHRcdFx0ICAgICAgIHBhcmFtcy1cdTAwM2V3YWl0LCBjb29raWUsIHNrYixcbitcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4rKysgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi9cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLFxuLVx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpO1xuK1x0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcbmluZGV4IGViMzZmMWI5NzcxYjUuLjU1NDljYjhkNWNkYTEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKmFja19za2I7XG4gXHR1MTYgaW5mb19pZCA9IDA7XG5AQCAtMjYwNSwxMCArMjYwNSw4IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdGlmIChpZCBcdTAwM2U9IDApIHtcbiBcdFx0XHRpbmZvX2lkID0gaWQ7XG4gXHRcdFx0KmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTO1xuLVx0XHRcdGlmIChjb29raWUpIHtcbi1cdFx0XHRcdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHRcdFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbi1cdFx0XHR9XG4rXHRcdFx0aWYgKGNvb2tpZSlcbitcdFx0XHRcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9za2IoYWNrX3NrYik7XG4gXHRcdH1cbkBAIC0yNjQxLDcgKzI2MzksNyBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00MzM3LDcgKzQzMzUsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTQ1MzIsNyArNDUzMCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4rXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC00NTQ3LDggKzQ1NDUsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksXG4gXHRcdFx0XHRcdCAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbiBcbi1cdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NTkwLDcgKzQ1ODcsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2cXVldWUpKSlcbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8XG5AQCAtNDYwMSw3ICs0NTk4LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgIDApO1xuIFx0fVxuIFxuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbkBAIC00NzAwLDcgKzQ2OTcsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdC8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi9cbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzM2LDcgKzQ3MzMsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0aWYgKHVubGlrZWx5KHNrX3JlcXVlc3RzX3dpZmlfc3RhdHVzKHNrYi1cdTAwM2VzaykpKSB7XG4gXHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLFxuLVx0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIE5VTEwpO1xuK1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIDApO1xuIFx0XHRpZiAoaW5mby1cdTAwM2VzdGF0dXNfZGF0YSlcbiBcdFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHR9XG5AQCAtNDg3OSw3ICs0ODc2LDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbitcdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcbiBcdGlmIChJU19FUlIoc2tiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjQ5NCw3ICs2NDkxLDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjI5LDcgKzY2MjYsNyBAQCBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi1cdTAwM2VkZXYsIDAsXG4gXHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLFxuLVx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0XHRcdCAgICAgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCAzOTkwMzc1MTQ5NDNkLi5iM2VhZDk4YWVlMDdhIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxuQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbitcdFx0XHQgIHU2NCBjb29raWUpO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7XG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jXG5pbmRleCAyYTJjMTczMDU4YmFjLi4zNGY5MDAzZDVjNTQxIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuQEAgLTg1MSw3ICs4NTEsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCBhYzBjMGRhNDUyNDE5Li43MDhlOGJiOGRhZmRkIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjMwLDggKzE0NjMwLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuIFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXG4tXHRcdFx0XHQgICAgIGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xuK1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4NzEsNyArMTQ4NzIsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0fVxuIFxuIFx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG4tXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBcdTAwMjZjb29raWUpO1xuK1x0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbitcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzU5LDcgKzE2MzYxLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0Z290byBmcmVlX21zZztcbiBcdH1cbiBcbi1cdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIFx1MDAyNmNvb2tpZSk7XG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuK1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1NzQsMTAgKzE4NTc3LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBcdGxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLVx1MDAzZWF0dHJzKTtcbiBcbitcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0ICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsXG4tXHRcdFx0XHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcdTAwMjZjb29raWUpO1xuLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICFkb250X3dhaXRfZm9yX2FjaylcbitcdFx0XHRcdCAgIGNvb2tpZSk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgY29va2llKVxuIFx0XHRubF9zZXRfZXh0YWNrX2Nvb2tpZV91NjQoaW5mby1cdTAwM2VleHRhY2ssIGNvb2tpZSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0yMjAzMCw2ICsyMjAzNCwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbiBcdHZvaWQgKmhkcjtcbiBcbitcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbitcdGlmICghc3RhdHVzLVx1MDAzZWNvb2tpZSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbisrKyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcbiByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0ICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgICAgIHJ4X2FkZHIpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbixcbiBcdFx0XHRcdFx0ICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiArNzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgICAgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0XHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxuLVx0XHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbitcdFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRlbHNlXG4gXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTAsMTIgKzk1MCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3RkbHNfb3BlcihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuK1x0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjQ1LjExNjA0Mjk4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDUyNzg3NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUGxhbjogUmV2aXNlZCBgY2ZnODAyMTFfb3BzYCBDb29raWUgUGFzc2luZyoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0J3MgZnVuZGFtZW50YWxseSBjaGFuZ2luZyBob3cgdGhlIGB1NjQgY29va2llYCBpcyBwYXNzZWQgdG8gdGhlc2UgY3J1Y2lhbCBgY2ZnODAyMTFfb3BzYCBjYWxsYmFja3M6IGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuIEl0J3MgZ29pbmcgZnJvbSBhIHBvaW50ZXIgKGB1NjQgKmNvb2tpZWApIHRvIGEgdmFsdWUgKGB1NjQgY29va2llYCkuIFRoYXQncyBhIGJpZyBkZWFsIGJlY2F1c2UgdGhlIGNvb2tpZSBhc3NpZ25tZW50IGlzIG5vdyBoYXBwZW5pbmcgY2VudHJhbGx5IHdpdGhpbiBgY2ZnODAyMTFgIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBpbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGluc3RlYWQgb2YgYmVpbmcgZHJpdmVyLWdlbmVyYXRlZC5cblxuVGhpcyBpbXBhY3RzIHRoZSBjb3JlIDgwMi4xMSBzdGFjayDigJMgYm90aCBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIOKAkyBhbmQsIG9mIGNvdXJzZSwgYSBidW5jaCBvZiBkcml2ZXJzLiBHaXZlbiB0aGF0IGBtYWM4MDIxMWAgYW5kIGBjZmc4MDIxMWAgYXJlIGludm9sdmVkLCB3aGljaCBhcmUgYWxzbyByZWFjaGFibGUgdGhyb3VnaCBgbWFjODAyMTFfaHdzaW1gLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGhvcm91Z2hseSB0ZXN0ZWQuXG5cbkxldCdzIG5haWwgZG93biB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIGFmZmVjdGVkOiBJbiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIHdlJ3JlIGxvb2tpbmcgYXQgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJbiBgbmV0L21hYzgwMjExL2AsIGl0J3MgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuXG5cblJpZ2h0LCBub3csIHdoYXQgYWJvdXQgdGhlIGNvbmZpZyBvcHRpb25zPyBJIG5lZWQgdG8gbWFrZSBzdXJlIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgZW5hYmxlZC4gR29vZCwgYW5kIGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgaW52YWx1YWJsZSBmb3IgdGVzdGluZy5cblxuRm9jdXNpbmcgdGhlIGZ1enppbmcgZWZmb3J0cyDigJMgSSdsbCB0YXJnZXQgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXNlIGFyZSByZWFjaGFibGUuIFVzaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCwgSSBjYW4gY29uZmlybSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBleGlzdCBhbmQgYXJlIG5vdCBzdGF0aWMvaW5saW5lZCBpbiBhIHdheSB0aGF0IHByZXZlbnRzIGZ1enppbmcuIEFsdGhvdWdoIGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCBpcyBzdGF0aWMsIGl0J3MgYSBuZXRsaW5rIGNvbW1hbmQgaGFuZGxlciwgc28gU3l6a2FsbGVyIGNhbiByZWFjaCBpdCB2aWEgYG5sODAyMTFgIG5ldGxpbmsgZGVzY3JpcHRpb25zLiBUaGUgYG1hYzgwMjExYCBmdW5jdGlvbnMgYXJlIGFsc28gZmluZSBiZWNhdXNlIHRoZXkgYXJlIGV4cG9ydGVkIG9yIHVzZWQgYXMgb3BzLiBTcGVjaWZpY2FsbHkgSSdtIHRoaW5raW5nIG9mIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgaWVlZTgwMjExX21nbXRfdHhgLCBhbmQgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLiBMZXQgbWUgcXVpY2tseSBgZ3JlcGAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE3MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjU2LjE2ODgzMzcyOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzE4MDYzMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/aW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDUzNz1zdGF0aWMgaW50IG5sODAyMTFfdGRsc19vcGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTU3LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ1NTg6c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU1OS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA0OjU5Ljg4NjkwNDkyOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzY4ODQxMzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBXaXJlbGVzcyBDb21tdW5pY2F0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgc2V0IG9mIHdpcmVsZXNzIGNvbW11bmljYXRpb24gcHJpbWl0aXZlcywgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIDgwMi4xMSBzdGFuZGFyZCwganVkZ2luZyBieSB0aGUgcHJlZml4ZXMuIFRoZSBsaXN0IHNob3dzIGZ1bmN0aW9ucyB3aXRoIGJvdGggdGhlIGBubDgwMjExYCBhbmQgYGllZWU4MDIxMWAgcHJlZml4ZXMsIHNvIHdlJ3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaXNzdWUgaGVyZS5cblxuSSdsbCBzdGFydCBieSBmb2N1c2luZyBvbiBgbmw4MDIxMV90eF9tZ210YCwgYW5kIGNvbXBhcmUgaXQgd2l0aCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgc2VlbSByZWxhdGVkLCBzcGVjaWZpY2FsbHkgdGhvc2Ugd2l0aCBhIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBgaWVlZTgwMjExX21nbXRfdHhgLiBJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBhbHNvIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggY2hhbm5lbCBtYW5hZ2VtZW50IGFuZCBjb250cm9sIHBvcnRzLCBuYW1lbHkgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YCwgd2hpY2ggSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24uIEFuZCwgdGhlcmUgaXMgYG5sODAyMTFfcHJvYmVfcGVlcmAsIHdoaWNoIHN1Z2dlc3RzIHBlZXIgZGlzY292ZXJ5IG9yIG1hbmFnZW1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlcyBpbiBhYnN0cmFjdGlvbiwgYW5kIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9ucyBsaWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODA1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjA1LjU2Mzc5Mjg3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjk1NjQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT9pbnQgbmw4MDIxMV90eF9tZ210XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ2OTQ9c3RhdGljIGludCBubDgwMjExX3JlZ2lzdGVyX21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTEtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDc1MjpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3NTMte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0ODk4OnN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210X2NhbmNlbF93YWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg5OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjA4Ljc5MzM2NTMzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMjk2NDEzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzeXN0ZW0uIExvb2tpbmcgYXQgdGhlIG9wdGlvbnMsIEkgaGF2ZSBgTUFDODAyMTFgLCBgQ0ZHODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gSSBpbW1lZGlhdGVseSBuZWVkIHRvIHplcm8gaW4gb24gd2hldGhlciBgTUFDODAyMTFfSFdTSU1gIGlzIHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uLiBNeSBleHBlcmllbmNlIHN1Z2dlc3RzIGl0J3MgYSBrZXkgY2FuZGlkYXRlLCBidXQgSSBuZWVkIHRvIHF1aWNrbHkgdmFsaWRhdGUgdGhhdCBhc3N1bXB0aW9uLiBMZXQncyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB0aGF0J3MgdGhlIHJpZ2h0IHBhdGggZm9yd2FyZCwgb3IgaWYgSSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBvdGhlciBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ5MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjEzLjEyMzAwOTc3N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkxODE4ODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjE1LjAxNDgzNDE3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDQzMDYxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFJlbGV2YW50IENvbmZpZ3VyYXRpb25zKipcblxuUmlnaHQsIHNvIGBNQUM4MDIxMV9IV1NJTWAg4oCTIHRoYXTigJlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoYXQncyB0aGUga2V5IGNvbmZpZyBvcHRpb24gZm9yIGVuYWJsaW5nIHRoZSBtYWM4MDIxMSBoYXJkd2FyZSBzaW11bGF0aW9uLCBubyBzdXJwcmlzZXMgdGhlcmUuIE5vdywgdGhlIHJlYWwgbWVhdCBvZiB0aGUgbWF0dGVyIGlzIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgV0xBTiBmcmFtZXdvcmsuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkgd2l0aCBgQ0ZHODAyMTFgIGFuZCBgTUFDODAyMTFgLCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZWlyIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBgTUFDODAyMTFfSFdTSU1gIHRvIGVuc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRlc3Rpbmcgb3Igd2hhdGV2ZXIgSSBoYXZlIGluIG1pbmQuIEkgbmVlZCB0byBrbm93IHRoZSBzdGF0ZSBvZiB0aGVzZSBjb21wb25lbnRzLCB3aGF0IGlzIGVuYWJsZWQsIHdoYXQgaXMgZGlzYWJsZWQsIGFuZCBob3cgbXkgY3VycmVudCBjb25maWd1cmF0aW9uIGZpdHMgd2l0aGluIHRoYXQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc3NiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjE5LjQ1OTE0NDA1N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjAwMjQzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0ZHODAyMTFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL0tjb25maWc9MTQ9Y29uZmlnIFdFWFRfUFJJVlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc6Y29uZmlnIENGRzgwMjExXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcImNmZzgwMjExIC0gd2lyZWxlc3MgY29uZmlndXJhdGlvbiBBUElcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZz0zOD1jb25maWcgTkw4MDIxMV9URVNUTU9ERVxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6NTI6Y29uZmlnIENGRzgwMjExX0RFVkVMT1BFUl9XQVJOSU5HU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUzLVxcdGJvb2wgXFxcImVuYWJsZSBkZXZlbG9wZXIgd2FybmluZ3NcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy02Ny1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo2ODpjb25maWcgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjktXFx0Ym9vbCBcXFwiY2ZnODAyMTEgY2VydGlmaWNhdGlvbiBvbnVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctODgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTAtXFx0Ym9vbCBcXFwicmVxdWlyZSByZWdkYiBzaWduYXR1cmVcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6OTk6Y29uZmlnIENGRzgwMjExX1VTRV9LRVJORUxfUkVHREJfS0VZU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEwMC1cXHRib29sIFxcXCJhbGxvdyByZWdkYiBrZXlzIHNoaXBwZWQgd2l0aCB0aGUga2VybmVsXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMTE6Y29uZmlnIENGRzgwMjExX0VYVFJBX1JFR0RCX0tFWURJUlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cXHRzdHJpbmcgXFxcImFkZGl0aW9uYWwgcmVnZGIga2V5IGRpcmVjdG9yeVxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjEtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTM1OmNvbmZpZyBDRkc4MDIxMV9SRUdfUkVMQVhfTk9fSVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzYtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgc3VwcG9ydCBmb3IgTk9fSVIgcmVsYXhhdGlvblxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE1OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNTk6Y29uZmlnIENGRzgwMjExX0RFRkFVTFRfUFNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXFx0Ym9vbCBcXFwiZW5hYmxlIHBvd2Vyc2F2ZSBieSBkZWZhdWx0XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTY4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE3MC1cXHRib29sIFxcXCJjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTc3OmNvbmZpZyBDRkc4MDIxMV9DUkRBX1NVUFBPUlRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzgtXFx0Ym9vbCBcXFwic3VwcG9ydCBDUkRBXFxcIiBpZiBFWFBFUlRcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4Ni1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxODc6Y29uZmlnIENGRzgwMjExX1dFWFRcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgd2lyZWxlc3MgZXh0ZW5zaW9ucyBjb21wYXRpYmlsaXR5XFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTkzLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5NS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjIxLjI4NTE3OTI2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTg3NzAwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ29va2llIEFzc2lnbm1lbnQgQ2hhbmdlIGluIGNmZzgwMjExIGFuZCBtYWM4MDIxMSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUgYXJlIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0J3MgdGhlIHNldHVwLCBnb3QgaXQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaG93IGNvb2tpZXMgYXJlIGFzc2lnbmVkIGluIHRoZSA4MDIuMTEgc3RhY2suIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBzaGlmdHMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGFzc2lnbmluZyBjb29raWVzIGZvciBtYW5hZ2VtZW50IFRYLCByZW1haW4tb24tY2hhbm5lbCwgcHJvYmUgcGVlciwgYW5kIHR4IGNvbnRyb2wgcG9ydCBvcGVyYXRpb25zIGZyb20gdGhlIGRyaXZlciBsZXZlbCB1cCBpbnRvIHRoZSBgY2ZnODAyMTFgIGNvcmUuXG5cblRoaXMgaXMgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCdzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBkaXJlY3RseSBtYW5pcHVsYXRlZCBhbmQgdGVzdGVkIHVzaW5nIG5ldGxpbmsgY29tbWFuZHMuIFdlIGNhbiB2ZXJpZnkgdGhlIGNoYW5nZXMgdXNpbmcgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggaXMgZ3JlYXQgZm9yIHRoaXMga2luZCBvZiBjb3JlIHN0YWNrIG1vZGlmaWNhdGlvbi5cblxuSSd2ZSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIGFuZCBuZXRsaW5rIGNvbW1hbmRzIGludm9sdmVkOiBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBubDgwMjExX3R4X21nbXRgLCBgbmw4MDIxMV9wcm9iZV9wZWVyYCwgYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIFRoZXNlIGFyZSB0aGUga2V5IHRvdWNocG9pbnRzIHRvIGZvY3VzIG9uLiBXZSBjYW4gYWJzb2x1dGVseSBmdXp6IHRoZXNlIHdpdGggYSBoaWdoIHByb2JhYmlsaXR5IG9mIGZpbmRpbmcgaXNzdWVzLiBUaGlzIGlzIGFic29sdXRlbHkgd29ydGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5NjMsIk91dHB1dFRva2VucyI6MjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDIwOjA1OjMwLjI3Mjg4MzQ0M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTYzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwibmw4MDIxMV90eF9tZ210XCIsXG4gICAgXCJubDgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIixcbiAgICBcImllZWU4MDIxMV9tZ210X3R4XCIsXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgYXNzaWduZWQgZm9yIHZhcmlvdXMgY2ZnODAyMTEgb3BlcmF0aW9ucyAocmVtYWluLW9uLWNoYW5uZWwsIG1nbXRfdHgsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCksIG1vdmluZyB0aGUgYXNzaWdubWVudCBmcm9tIGluZGl2aWR1YWwgZHJpdmVycyB0byB0aGUgY2ZnODAyMTEgY29yZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgYW5kIHRlc3RlZCB1c2luZyB0aGUgbWFjODAyMTFfaHdzaW0gc29mdHdhcmUtZW11bGF0ZWQgcmFkaW8gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBhc3NpZ25lZCBmb3IgdmFyaW91cyBjZmc4MDIxMSBvcGVyYXRpb25zIChyZW1haW4tb24tY2hhbm5lbCwgbWdtdF90eCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KSwgbW92aW5nIHRoZSBhc3NpZ25tZW50IGZyb20gaW5kaXZpZHVhbCBkcml2ZXJzIHRvIHRoZSBjZmc4MDIxMSBjb3JlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyBhbmQgdGVzdGVkIHVzaW5nIHRoZSBtYWM4MDIxMV9od3NpbSBzb2Z0d2FyZS1lbXVsYXRlZCByYWRpbyBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowbjvf9[1] Phase: Succeeded StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 20:05:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 20:05:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2] Phase: Succeeded StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 20:05:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 20:05:42 +0000 UTC FinishedAt: 2026-07-29 20:05:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowbjvf9/series-workflowbjvf9-convert-artifact-1791693349/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 20:05:52 +0000 UTC FinishedAt: 2026-07-29 20:26:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 20:05:52 +0000 UTC FinishedAt: 2026-07-29 20:26:22 +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:*700d5889-84b8-46ba-af6b-b2255b03a4ab,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-workflowbjvf9/series-workflowbjvf9-convert-artifact-1791693349/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": "8f4acaee-9ca1-4217-9d1c-53cab3681236", "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-workflowbjvf9/series-workflowbjvf9-build-action-1524559435/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 20:05:52 +0000 UTC FinishedAt: 2026-07-29 20:26:11 +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:*700d5889-84b8-46ba-af6b-b2255b03a4ab,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-workflowbjvf9/series-workflowbjvf9-convert-artifact-1791693349/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": "8f4acaee-9ca1-4217-9d1c-53cab3681236", "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-workflowbjvf9/series-workflowbjvf9-build-action-1524559435/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 20:26:22 +0000 UTC FinishedAt: 2026-07-29 20:26:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 20:26:22 +0000 UTC FinishedAt: 2026-07-29 20:26:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 20:26:22 +0000 UTC FinishedAt: 2026-07-29 20:26:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 20:26:22 +0000 UTC FinishedAt: 2026-07-29 20:26:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowbjvf9/series-workflowbjvf9-convert-artifact-2636400384/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 20:26:32 +0000 UTC FinishedAt: 2026-07-29 20:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 20:26:32 +0000 UTC FinishedAt: 2026-07-29 20:28:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f4acaee-9ca1-4217-9d1c-53cab3681236,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-workflowbjvf9/series-workflowbjvf9-build-action-1524559435/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-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 20:28:31 +0000 UTC FinishedAt: 2026-07-29 20:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 20:28:31 +0000 UTC FinishedAt: 2026-07-29 20:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 20:28:31 +0000 UTC FinishedAt: 2026-07-29 20:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 20:28:31 +0000 UTC FinishedAt: 2026-07-29 20:51: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:*700d5889-84b8-46ba-af6b-b2255b03a4ab,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-workflowbjvf9/series-workflowbjvf9-convert-artifact-2636400384/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": "af4f6e91-f555-442a-a16e-2f0cb888cb5a", "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-workflowbjvf9/series-workflowbjvf9-build-action-387069116/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 20:28:31 +0000 UTC FinishedAt: 2026-07-29 20:51:24 +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:*700d5889-84b8-46ba-af6b-b2255b03a4ab,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-workflowbjvf9/series-workflowbjvf9-convert-artifact-2636400384/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": "af4f6e91-f555-442a-a16e-2f0cb888cb5a", "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-workflowbjvf9/series-workflowbjvf9-build-action-387069116/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 20:51:34 +0000 UTC FinishedAt: 2026-07-29 20:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 20:51:34 +0000 UTC FinishedAt: 2026-07-29 20:51:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 20:51:34 +0000 UTC FinishedAt: 2026-07-29 20:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 20:51:34 +0000 UTC FinishedAt: 2026-07-29 20:53: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:*af4f6e91-f555-442a-a16e-2f0cb888cb5a,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-workflowbjvf9/series-workflowbjvf9-build-action-387069116/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-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +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":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"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:*8f4acaee-9ca1-4217-9d1c-53cab3681236,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*af4f6e91-f555-442a-a16e-2f0cb888cb5a,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-workflowbjvf9/series-workflowbjvf9-build-action-1524559435/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-workflowbjvf9/series-workflowbjvf9-build-action-387069116/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 20:54:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 20:54:08 +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":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"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-workflowbjvf9/series-workflowbjvf9-convert-artifact-1792269913/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 20:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 20:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 20:53:53 +0000 UTC FinishedAt: 2026-07-29 20:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 20:54:16 +0000 UTC FinishedAt: 2026-07-29 23:57:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbjvf9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_tx_control_port"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"5c08293d-e332-4e19-a85a-122763c00c92","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 20:54:16 +0000 UTC FinishedAt: 2026-07-29 23:56:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8f4acaee-9ca1-4217-9d1c-53cab3681236,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*af4f6e91-f555-442a-a16e-2f0cb888cb5a,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-workflowbjvf9/series-workflowbjvf9-build-action-1524559435/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-workflowbjvf9/series-workflowbjvf9-build-action-387069116/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-workflowbjvf9/series-workflowbjvf9-convert-artifact-1792269913/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,}