RnJvbTogSm9oYW5uZXMgQmVyZyA8am9oYW5uZXMuYmVyZ0BpbnRlbC5jb20+CgpUaGlzIGFkZHMg
dGhlIGFiaWxpdHkgZm9yIGRyaXZlcnMgdG8gdXNlIENRTSBldmVudHMKdG8gbm90aWZ5IGFib3V0
IHBhY2tldCBsb3NzIGZvciBzcGVjaWZpYyBzdGF0aW9ucwood2hpY2ggY291bGQgYmUgdGhlIEFQ
IGZvciB0aGUgbWFuYWdlZCBtb2RlIGNhc2UpLgpTaW5jZSB0aGUgdGhyZXNob2xkIG1pZ2h0IGJl
IGRldGVybWluZWQgYnkgdGhlCmRyaXZlciAoaXQgaXNuJ3QgcGFzc2VkIGluIHJpZ2h0IG5vdykg
aXQgd2lsbCBiZQpwYXNzZWQgb3V0IG9mIHRoZSBkcml2ZXIgdG8gdXNlcnNwYWNlIGluIHRoZSBl
dmVudC4KClNpZ25lZC1vZmYtYnk6IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzLmJlcmdAaW50ZWwu
Y29tPgotLS0KIGluY2x1ZGUvbGludXgvbmw4MDIxMS5oIHwgICAgMyArKysKIGluY2x1ZGUvbmV0
L2NmZzgwMjExLmggIHwgICAxMiArKysrKysrKysrKysKIG5ldC93aXJlbGVzcy9tbG1lLmMgICAg
IHwgICAxMiArKysrKysrKysrKysKIG5ldC93aXJlbGVzcy9ubDgwMjExLmMgIHwgICA0NSArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG5ldC93aXJlbGVzcy9u
bDgwMjExLmggIHwgICAgNCArKysrCiA1IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKykK
Ci0tLSB3aXJlbGVzcy10ZXN0aW5nLm9yaWcvaW5jbHVkZS9saW51eC9ubDgwMjExLmgJMjAxMC0x
MS0xMiAxMzozNDozMy4wMDAwMDAwMDAgLTA4MDAKKysrIHdpcmVsZXNzLXRlc3RpbmcvaW5jbHVk
ZS9saW51eC9ubDgwMjExLmgJMjAxMC0xMS0xMiAxMzozNDo0MS4wMDAwMDAwMDAgLTA4MDAKQEAg
LTE3OTAsNiArMTc5MCw4IEBAIGVudW0gbmw4MDIxMV9wc19zdGF0ZSB7CiAgKgl0aGUgbWluaW11
bSBhbW91bnQgdGhlIFJTU0kgbGV2ZWwgbXVzdCBjaGFuZ2UgYWZ0ZXIgYW4gZXZlbnQgYmVmb3Jl
IGEKICAqCW5ldyBldmVudCBtYXkgYmUgaXNzdWVkICh0byByZWR1Y2UgZWZmZWN0cyBvZiBSU1NJ
IG9zY2lsbGF0aW9uKS4KICAqIEBOTDgwMjExX0FUVFJfQ1FNX1JTU0lfVEhSRVNIT0xEX0VWRU5U
OiBSU1NJIHRocmVzaG9sZCBldmVudAorICogQE5MODAyMTFfQVRUUl9DUU1fUEtUX0xPU1NfRVZF
TlQ6IGEgdTMyIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGlzIG1hbnkKKyAqCWNvbnNlY3V0aXZl
IHBhY2tldHMgd2VyZSBub3QgYWNrbm93bGVkZ2VkIGJ5IHRoZSBwZWVyCiAgKiBAX19OTDgwMjEx
X0FUVFJfQ1FNX0FGVEVSX0xBU1Q6IGludGVybmFsCiAgKiBATkw4MDIxMV9BVFRSX0NRTV9NQVg6
IGhpZ2hlc3Qga2V5IGF0dHJpYnV0ZQogICovCkBAIC0xNzk4LDYgKzE4MDAsNyBAQCBlbnVtIG5s
ODAyMTFfYXR0cl9jcW0gewogCU5MODAyMTFfQVRUUl9DUU1fUlNTSV9USE9MRCwKIAlOTDgwMjEx
X0FUVFJfQ1FNX1JTU0lfSFlTVCwKIAlOTDgwMjExX0FUVFJfQ1FNX1JTU0lfVEhSRVNIT0xEX0VW
RU5ULAorCU5MODAyMTFfQVRUUl9DUU1fUEtUX0xPU1NfRVZFTlQsCiAKIAkvKiBrZWVwIGxhc3Qg
Ki8KIAlfX05MODAyMTFfQVRUUl9DUU1fQUZURVJfTEFTVCwKLS0tIHdpcmVsZXNzLXRlc3Rpbmcu
b3JpZy9uZXQvd2lyZWxlc3MvbWxtZS5jCTIwMTAtMTEtMTIgMTM6MzQ6MzMuMDAwMDAwMDAwIC0w
ODAwCisrKyB3aXJlbGVzcy10ZXN0aW5nL25ldC93aXJlbGVzcy9tbG1lLmMJMjAxMC0xMS0xMiAx
MzozNDo0MS4wMDAwMDAwMDAgLTA4MDAKQEAgLTEwMjgsMyArMTAyOCwxNSBAQCB2b2lkIGNmZzgw
MjExX2NxbV9yc3NpX25vdGlmeShzdHJ1Y3QgbmV0CiAJbmw4MDIxMV9zZW5kX2NxbV9yc3NpX25v
dGlmeShyZGV2LCBkZXYsIHJzc2lfZXZlbnQsIGdmcCk7CiB9CiBFWFBPUlRfU1lNQk9MKGNmZzgw
MjExX2NxbV9yc3NpX25vdGlmeSk7CisKK3ZvaWQgY2ZnODAyMTFfY3FtX3BrdGxvc3Nfbm90aWZ5
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJIGNvbnN0IHU4ICpwZWVyLCB1MzIgbnVtX3Bh
Y2tldHMsIGdmcF90IGdmcCkKK3sKKwlzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2ID0gZGV2LT5p
ZWVlODAyMTFfcHRyOworCXN0cnVjdCB3aXBoeSAqd2lwaHkgPSB3ZGV2LT53aXBoeTsKKwlzdHJ1
Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYgPSB3aXBoeV90b19kZXYod2lwaHkp
OworCisJLyogSW5kaWNhdGUgcm9hbWluZyB0cmlnZ2VyIGV2ZW50IHRvIHVzZXIgc3BhY2UgKi8K
KwlubDgwMjExX3NlbmRfY3FtX3BrdGxvc3Nfbm90aWZ5KHJkZXYsIGRldiwgcGVlciwgbnVtX3Bh
Y2tldHMsIGdmcCk7Cit9CitFWFBPUlRfU1lNQk9MKGNmZzgwMjExX2NxbV9wa3Rsb3NzX25vdGlm
eSk7Ci0tLSB3aXJlbGVzcy10ZXN0aW5nLm9yaWcvbmV0L3dpcmVsZXNzL25sODAyMTEuYwkyMDEw
LTExLTEyIDEzOjM0OjMzLjAwMDAwMDAwMCAtMDgwMAorKysgd2lyZWxlc3MtdGVzdGluZy9uZXQv
d2lyZWxlc3Mvbmw4MDIxMS5jCTIwMTAtMTEtMTIgMTM6MzQ6NDEuMDAwMDAwMDAwIC0wODAwCkBA
IC01NjUxLDYgKzU2NTEsNTEgQEAgbmw4MDIxMV9zZW5kX2NxbV9yc3NpX25vdGlmeShzdHJ1Y3Qg
Y2ZnOAogCW5sbXNnX2ZyZWUobXNnKTsKIH0KIAordm9pZAorbmw4MDIxMV9zZW5kX2NxbV9wa3Rs
b3NzX25vdGlmeShzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCisJCQkJ
c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgY29uc3QgdTggKnBlZXIsCisJCQkJdTMyIG51bV9w
YWNrZXRzLCBnZnBfdCBnZnApCit7CisJc3RydWN0IHNrX2J1ZmYgKm1zZzsKKwlzdHJ1Y3Qgbmxh
dHRyICpwaW5mb2F0dHI7CisJdm9pZCAqaGRyOworCisJbXNnID0gbmxtc2dfbmV3KE5MTVNHX0dP
T0RTSVpFLCBnZnApOworCWlmICghbXNnKQorCQlyZXR1cm47CisKKwloZHIgPSBubDgwMjExaGRy
X3B1dChtc2csIDAsIDAsIDAsIE5MODAyMTFfQ01EX05PVElGWV9DUU0pOworCWlmICghaGRyKSB7
CisJCW5sbXNnX2ZyZWUobXNnKTsKKwkJcmV0dXJuOworCX0KKworCU5MQV9QVVRfVTMyKG1zZywg
Tkw4MDIxMV9BVFRSX1dJUEhZLCByZGV2LT53aXBoeV9pZHgpOworCU5MQV9QVVRfVTMyKG1zZywg
Tkw4MDIxMV9BVFRSX0lGSU5ERVgsIG5ldGRldi0+aWZpbmRleCk7CisJTkxBX1BVVChtc2csIE5M
ODAyMTFfQVRUUl9NQUMsIEVUSF9BTEVOLCBwZWVyKTsKKworCXBpbmZvYXR0ciA9IG5sYV9uZXN0
X3N0YXJ0KG1zZywgTkw4MDIxMV9BVFRSX0NRTSk7CisJaWYgKCFwaW5mb2F0dHIpCisJCWdvdG8g
bmxhX3B1dF9mYWlsdXJlOworCisJTkxBX1BVVF9VMzIobXNnLCBOTDgwMjExX0FUVFJfQ1FNX1BL
VF9MT1NTX0VWRU5ULCBudW1fcGFja2V0cyk7CisKKwlubGFfbmVzdF9lbmQobXNnLCBwaW5mb2F0
dHIpOworCisJaWYgKGdlbmxtc2dfZW5kKG1zZywgaGRyKSA8IDApIHsKKwkJbmxtc2dfZnJlZSht
c2cpOworCQlyZXR1cm47CisJfQorCisJZ2VubG1zZ19tdWx0aWNhc3RfbmV0bnMod2lwaHlfbmV0
KCZyZGV2LT53aXBoeSksIG1zZywgMCwKKwkJCQlubDgwMjExX21sbWVfbWNncnAuaWQsIGdmcCk7
CisJcmV0dXJuOworCisgbmxhX3B1dF9mYWlsdXJlOgorCWdlbmxtc2dfY2FuY2VsKG1zZywgaGRy
KTsKKwlubG1zZ19mcmVlKG1zZyk7Cit9CisKIHN0YXRpYyBpbnQgbmw4MDIxMV9uZXRsaW5rX25v
dGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKiBuYiwKIAkJCQkgIHVuc2lnbmVkIGxvbmcgc3Rh
dGUsCiAJCQkJICB2b2lkICpfbm90aWZ5KQotLS0gd2lyZWxlc3MtdGVzdGluZy5vcmlnL25ldC93
aXJlbGVzcy9ubDgwMjExLmgJMjAxMC0xMS0xMiAxMzozNDozMy4wMDAwMDAwMDAgLTA4MDAKKysr
IHdpcmVsZXNzLXRlc3RpbmcvbmV0L3dpcmVsZXNzL25sODAyMTEuaAkyMDEwLTExLTEyIDEzOjM0
OjQxLjAwMDAwMDAwMCAtMDgwMApAQCAtODcsNSArODcsOSBAQCBubDgwMjExX3NlbmRfY3FtX3Jz
c2lfbm90aWZ5KHN0cnVjdCBjZmc4CiAJCQkgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYs
CiAJCQkgICAgIGVudW0gbmw4MDIxMV9jcW1fcnNzaV90aHJlc2hvbGRfZXZlbnQgcnNzaV9ldmVu
dCwKIAkJCSAgICAgZ2ZwX3QgZ2ZwKTsKK3ZvaWQKK25sODAyMTFfc2VuZF9jcW1fcGt0bG9zc19u
b3RpZnkoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAorCQkJCXN0cnVj
dCBuZXRfZGV2aWNlICpuZXRkZXYsIGNvbnN0IHU4ICpwZWVyLAorCQkJCXUzMiBudW1fcGFja2V0
cywgZ2ZwX3QgZ2ZwKTsKIAogI2VuZGlmIC8qIF9fTkVUX1dJUkVMRVNTX05MODAyMTFfSCAqLwot
LS0gd2lyZWxlc3MtdGVzdGluZy5vcmlnL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgJMjAxMC0xMS0x
MiAxMzozNDozMy4wMDAwMDAwMDAgLTA4MDAKKysrIHdpcmVsZXNzLXRlc3RpbmcvaW5jbHVkZS9u
ZXQvY2ZnODAyMTEuaAkyMDEwLTExLTEyIDEzOjM0OjQxLjAwMDAwMDAwMCAtMDgwMApAQCAtMjU5
Niw2ICsyNTk2LDE4IEBAIHZvaWQgY2ZnODAyMTFfY3FtX3Jzc2lfbm90aWZ5KHN0cnVjdCBuZXQK
IAkJCSAgICAgIGVudW0gbmw4MDIxMV9jcW1fcnNzaV90aHJlc2hvbGRfZXZlbnQgcnNzaV9ldmVu
dCwKIAkJCSAgICAgIGdmcF90IGdmcCk7CiAKKy8qKgorICogY2ZnODAyMTFfY3FtX3BrdGxvc3Nf
bm90aWZ5IC0gbm90aWZ5IHVzZXJzcGFjZSBhYm91dCBwYWNrZXRsb3NzIHRvIHBlZXIKKyAqIEBk
ZXY6IG5ldHdvcmsgZGV2aWNlCisgKiBAcGVlcjogcGVlcidzIE1BQyBhZGRyZXNzCisgKiBAbnVt
X3BhY2tldHM6IGhvdyBtYW55IHBhY2tldHMgd2VyZSBsb3N0IC0tIHNob3VsZCBiZSBhIGZpeGVk
IHRocmVzaG9sZAorICoJYnV0IHByb2JhYmx5IG5vIGxlc3MgdGhhbiBtYXliZSA1MCwgb3IgbWF5
YmUgYSB0aHJvdWdocHV0IGRlcGVuZGVudAorICoJdGhyZXNob2xkICh0byBhY2NvdW50IGZvciB0
ZW1wb3JhcnkgaW50ZXJmZXJlbmNlKQorICogQGdmcDogY29udGV4dCBmbGFncworICovCit2b2lk
IGNmZzgwMjExX2NxbV9wa3Rsb3NzX25vdGlmeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAorCQkJ
CSBjb25zdCB1OCAqcGVlciwgdTMyIG51bV9wYWNrZXRzLCBnZnBfdCBnZnApOworCiAvKiBMb2dn
aW5nLCBkZWJ1Z2dpbmcgYW5kIHRyb3VibGVzaG9vdGluZy9kaWFnbm9zdGljIGhlbHBlcnMuICov
CiAKIC8qIHdpcGh5X3ByaW50ayBoZWxwZXJzLCBzaW1pbGFyIHRvIGRldl9wcmludGsgKi8KCgot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbnRlbCBHbWJICkRvcm5hY2hlciBTdHJhc3Nl
IDEKODU2MjIgRmVsZGtpcmNoZW4vTXVlbmNoZW4sIERldXRzY2hsYW5kIApTaXR6IGRlciBHZXNl
bGxzY2hhZnQ6IEZlbGRraXJjaGVuIGJlaSBNdWVuY2hlbgpHZXNjaGFlZnRzZnVlaHJlcjogRG91
Z2xhcyBMdXNrLCBQZXRlciBHbGVpc3NuZXIsIEhhbm5lcyBTY2h3YWRlcmVyClJlZ2lzdGVyZ2Vy
aWNodDogTXVlbmNoZW4gSFJCIDQ3NDU2IApVc3QuLUlkTnIuL1ZBVCBSZWdpc3RyYXRpb24gTm8u
OiBERTEyOTM4NTg5NQpDaXRpYmFuayBGcmFua2Z1cnQgYS5NLiAoQkxaIDUwMiAxMDkgMDApIDYw
MDExOTA1Mgo=