usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset
driver
Valery V.Chikalov
valera at chikalov.dp.ua
Fri Apr 27 23:30:10 UTC 2007
The following reply was made to PR usb/107642; it has been noted by GNATS.
From: "Valery V.Chikalov" <valera at chikalov.dp.ua>
To: bug-followup at FreeBSD.org, valera at chikalov.dp.ua
Cc:
Subject: Re: usb/107642: [patch]Ralink Technology RT2501USB/RT2601USB chipset
driver
Date: Sun, 22 Apr 2007 11:32:18 +0300
This is a multi-part message in MIME format.
--------------030900090303000507070905
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
if_rum(4) for 7.0-CURRENT
replaced amrr_* functions by "standard" ones already existed in
net80211/ieee80211_amrr.c
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGKx14760S3kDvEC4RAn8PAKCn990QJE0wZRKcwdxAZ61MY0JRgACeI2W5
ZosSlh6pIqi7JdZ5Wi1BUYc=
=LvWZ
-----END PGP SIGNATURE-----
--------------030900090303000507070905
Content-Type: text/plain;
name="rum.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="rum.patch"
SW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
c3lzL2Rldi91c2IvaWZfcnVtLmMNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZfcnVtLmMNCi0t
LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9kZXYvdXNi
L2lmX3J1bS5jCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpAQCAtMCwwICsxLDIyMjUg
QEANCisvKiAgICAkT3BlbkJTRDogaWZfcnVtLmMsdiAxLjQwIDIwMDYvMDkvMTggMTY6MjA6
MjAgZGFtaWVuIEV4cCAkICAgICovDQorLyogICAgJE5ldEJTRDogaWZfcnVtLmMsdiAxLjIg
MjAwNi8xMS8wMSAwODozOToyNSB4dHJhZW1lIEV4cCAkICAgICovDQorDQorLyotDQorICog
Q29weXJpZ2h0IChjKSAyMDA1LCAyMDA2IERhbWllbiBCZXJnYW1pbmkgPGRhbWllbi5iZXJn
YW1pbmlAZnJlZS5mcj4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgTmlhbGwgTydIaWdnaW5z
IDxuaWFsbG9Ab3BlbmJzZC5vcmc+DQorICogQ29weXJpZ2h0IChjKSAyMDA2LCAyMDA3IFZh
bGVyeSBWLkNoaWthbG92IDx2YWxlcmFAY2hpa2Fsb3YuZHAudWE+DQorICoNCisgKiBQZXJt
aXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3
YXJlIGZvciBhbnkNCisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5
IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlDQorICogY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4NCisg
Kg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9S
IERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUw0KKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09G
VFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YNCisgKiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUg
TElBQkxFIEZPUg0KKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMNCisgKiBXSEFUU09FVkVSIFJFU1VM
VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4N
CisgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMg
QUNUSU9OLCBBUklTSU5HIE9VVCBPRg0KKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg
VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQorICovDQorDQorLyotDQor
ICogUmFsaW5rIFRlY2hub2xvZ3kgUlQyNTAxVVNCL1JUMjYwMVVTQiBjaGlwc2V0IGRyaXZl
cg0KKyAqIGh0dHA6Ly93d3cucmFsaW5rdGVjaC5jb20vDQorICovDQorDQorI2lmIGRlZmlu
ZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAib3B0X25zLmgiDQorI2VuZGlmDQorI2lmIGRl
ZmluZWQoX19OZXRCU0RfXykNCisjaW5jbHVkZSAiYnBmaWx0ZXIuaCINCisjZW5kaWYNCisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykNCisjZGVmaW5lIE5CUEZJTFRFUiAgIDENCisjZW5k
aWYNCisjaWYgZGVmaW5lZChfX05ldEJTRF9fKQ0KKyNpbmNsdWRlICJybmQuaCINCisjZW5k
aWYNCisNCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+DQorI2luY2x1ZGUgPHN5cy9zeXNjdGwu
aD4NCisjaW5jbHVkZSA8c3lzL3NvY2tpby5oPg0KKyNpbmNsdWRlIDxzeXMvbWJ1Zi5oPg0K
KyNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCisj
aW5jbHVkZSA8c3lzL3N5c3RtLmg+DQorI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4NCisjaW5j
bHVkZSA8c3lzL21vZHVsZS5oPg0KKyNpbmNsdWRlIDxzeXMvYnVzLmg+DQorI2luY2x1ZGUg
PHN5cy9lbmRpYW4uaD4NCisjaW5jbHVkZSA8c3lzL2xpbmtlci5oPg0KKyNpbmNsdWRlIDxz
eXMvZmlybXdhcmUuaD4NCisNCisjaW5jbHVkZSA8bWFjaGluZS9idXMuaD4NCisjaW5jbHVk
ZSA8bWFjaGluZS9yZXNvdXJjZS5oPg0KKyNpbmNsdWRlIDxtYWNoaW5lL2Nsb2NrLmg+DQor
I2luY2x1ZGUgPHN5cy9ybWFuLmg+DQorDQorI2luY2x1ZGUgPG5ldC9icGYuaD4NCisjaW5j
bHVkZSA8bmV0L2lmLmg+DQorI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4NCisjaW5jbHVkZSA8
bmV0L2V0aGVybmV0Lmg+DQorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPg0KKyNpbmNsdWRlIDxu
ZXQvaWZfbWVkaWEuaD4NCisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+DQorDQorI2luY2x1
ZGUgPG5ldDgwMjExL2llZWU4MDIxMV92YXIuaD4NCisjaW5jbHVkZSA8bmV0ODAyMTEvaWVl
ZTgwMjExX3JhZGlvdGFwLmg+DQorI2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9hbXJy
Lmg+DQorDQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCisjaW5jbHVkZSA8bmV0aW5ldC9p
bl9zeXN0bS5oPg0KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3Zhci5oPg0KKyNpbmNsdWRlIDxu
ZXRpbmV0L2lwLmg+DQorI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4NCisNCisjaW5j
bHVkZSA8ZGV2L3VzYi91c2IuaD4NCisjaW5jbHVkZSA8ZGV2L3VzYi91c2JkaS5oPg0KKyNp
bmNsdWRlIDxkZXYvdXNiL3VzYmRpX3V0aWwuaD4NCisjaW5jbHVkZSAidXNiZGV2cy5oIg0K
Kw0KKyNpbmNsdWRlIDxkZXYvdXNiL2lmX3J1bXJlZy5oPg0KKyNpbmNsdWRlIDxkZXYvdXNi
L2lmX3J1bXZhci5oPg0KKw0KKyNpZmRlZiBVU0JfREVCVUcNCisjZGVmaW5lIFJVTV9ERUJV
Rw0KKyNlbmRpZg0KKw0KKyNpZmRlZiBSVU1fREVCVUcNCitpbnQgcnVtX2RlYnVnID0gMDsN
CisjZGVmaW5lIERQUklOVEYoeCkgICAgZG8geyBpZiAocnVtX2RlYnVnKSBsb2dwcmludGYg
eDsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIERQUklOVEZOKG4sIHgpICAgIGRvIHsgaWYgKHJ1
bV9kZWJ1ZyA+PSAobikpIGxvZ3ByaW50ZiB4OyB9IHdoaWxlICgwKQ0KKyNlbHNlDQorI2Rl
ZmluZSBEUFJJTlRGKHgpDQorI2RlZmluZSBEUFJJTlRGTihuLCB4KQ0KKyNlbmRpZg0KKw0K
Ky8qIHZhcmlvdXMgc3VwcG9ydGVkIGRldmljZSB2ZW5kb3JzL3Byb2R1Y3RzICovDQorc3Rh
dGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2bm8gcnVtX2RldnNbXSA9IHsNCisgICAgeyBVU0Jf
VkVORE9SX0FCT0NPTSwgICAgICAgIFVTQl9QUk9EVUNUX0FCT0NPTV9SVDI1NzMgfSwNCisg
ICAgeyBVU0JfVkVORE9SX0FTVVMsICAgICAgICAgIFVTQl9QUk9EVUNUX0FTVVNfUlQyNTcz
IH0sDQorICAgIHsgVVNCX1ZFTkRPUl9CRUxLSU4sICAgICAgICBVU0JfUFJPRFVDVF9CRUxL
SU5fRjVENzA1MEEgfSwNCisgICAgeyBVU0JfVkVORE9SX0JFTEtJTiwgICAgICAgIFVTQl9Q
Uk9EVUNUX0JFTEtJTl9GNUQ5MDUwVjMgfSwNCisgICAgeyBVU0JfVkVORE9SX0xJTktTWVM0
LCAgICAgIFVTQl9QUk9EVUNUX0xJTktTWVM0X1dVU0I1NEdDIH0sDQorICAgIHsgVVNCX1ZF
TkRPUl9DT05DRVBUUk9OSUMyLCBVU0JfUFJPRFVDVF9DT05DRVBUUk9OSUMyX0M1NFJVMiB9
LA0KKyAgICB7IFVTQl9WRU5ET1JfRElDS1NNSVRILCAgICAgVVNCX1BST0RVQ1RfRElDS1NN
SVRIX0NXRDg1NEYgfSwNCisgICAgeyBVU0JfVkVORE9SX0RJQ0tTTUlUSCwgICAgIFVTQl9Q
Uk9EVUNUX0RJQ0tTTUlUSF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0RMSU5LMiwg
ICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9EV0xHMTIyQzEgfSwNCisgICAgeyBVU0JfVkVO
RE9SX0RMSU5LMiwgICAgICAgIFVTQl9QUk9EVUNUX0RMSU5LMl9XVUExMzQwIH0sDQorICAg
IHsgVVNCX1ZFTkRPUl9HSUdBQllURSwgICAgICBVU0JfUFJPRFVDVF9HSUdBQllURV9HTldC
MDFHUyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfR0lHQVNFVCwgICAgICAgVVNCX1BST0RVQ1Rf
R0lHQVNFVF9SVDI1NzMgfSwNCisgICAgeyBVU0JfVkVORE9SX0dPT0RXQVksICAgICAgIFVT
Ql9QUk9EVUNUX0dPT0RXQVlfUlQyNTczIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9IVUFXRUkz
Q09NLCAgICBVU0JfUFJPRFVDVF9IVUFXRUkzQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9W
RU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3MyB9LA0KKyAgICB7
IFVTQl9WRU5ET1JfTVNJLCAgICAgICAgICAgVVNCX1BST0RVQ1RfTVNJX1JUMjU3M18yIH0s
DQorICAgIHsgVVNCX1ZFTkRPUl9NU0ksICAgICAgICAgICBVU0JfUFJPRFVDVF9NU0lfUlQy
NTczXzMgfSwNCisgICAgeyBVU0JfVkVORE9SX1BMQU5FWDIsICAgICAgIFVTQl9QUk9EVUNU
X1BMQU5FWDJfR1dVU01NIH0sDQorICAgIHsgVVNCX1ZFTkRPUl9RQ09NLCAgICAgICAgICBV
U0JfUFJPRFVDVF9RQ09NX1JUMjU3MyB9LA0KKyAgICB7IFVTQl9WRU5ET1JfUUNPTSwgICAg
ICAgICAgVVNCX1BST0RVQ1RfUUNPTV9SVDI1NzNfMiB9LA0KKyAgICB7IFVTQl9WRU5ET1Jf
UkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjU3MyB9LA0KKyAgICB7IFVT
Ql9WRU5ET1JfUkFMSU5LLCAgICAgICAgVVNCX1BST0RVQ1RfUkFMSU5LX1JUMjY3MSB9LA0K
KyAgICB7IFVTQl9WRU5ET1JfU0lURUNPTUVVLCAgICAgVVNCX1BST0RVQ1RfU0lURUNPTUVV
X1dMMTEzUjIgfSwNCisgICAgeyBVU0JfVkVORE9SX1NJVEVDT01FVSwgICAgIFVTQl9QUk9E
VUNUX1NJVEVDT01FVV9XTDE3MiB9LA0KKyAgICB7IFVTQl9WRU5ET1JfU1VSRUNPTSwgICAg
ICAgVVNCX1BST0RVQ1RfU1VSRUNPTV9SVDI1NzMgfQ0KK307DQorDQorTU9EVUxFX0RFUEVO
RChydW0sIHdsYW4sICAgICAxLCAxLCAxKTsNCitNT0RVTEVfREVQRU5EKHJ1bSwgZmlybXdh
cmUsIDEsIDEsIDEpOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbG9hZF9mdyhzdHJ1
Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc3RvcChzdHJ1Y3Qg
aWZuZXQgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9pbml0KHZvaWQgKik7DQor
c3RhdGljIGludCAgICAgICAgIHJ1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKiwgdV9sb25nLCBj
YWRkcl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3N0YXJ0KHN0cnVjdCBpZm5ldCAq
KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqKTsN
CitzdGF0aWMgaW50ICAgICAgICAgcnVtX21lZGlhX2NoYW5nZShzdHJ1Y3QgaWZuZXQgKik7
DQorDQorc3RhdGljIGludCAgICAgICAgIHJ1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1f
c29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc3RydWN0
IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgaW50ICAgICAgICAgcnVtX2FsbG9jX3J4X2xpc3Qo
c3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2ZyZWVfcnhf
bGlzdChzdHJ1Y3QgcnVtX3NvZnRjICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1f
dHhlb2YodXNiZF94ZmVyX2hhbmRsZSwgdXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0
dXMpOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSwg
dXNiZF9wcml2YXRlX2hhbmRsZSwgdXNiZF9zdGF0dXMpOw0KKw0KK3N0YXRpYyB2b2lkICAg
ICAgICBydW1fdGFzayh2b2lkICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fbmV4dF9z
Y2FuKHZvaWQgKik7DQorc3RhdGljIGludCAgICAgICAgIHJ1bV9uZXdzdGF0ZShzdHJ1Y3Qg
aWVlZTgwMjExY29tICosIGVudW0gaWVlZTgwMjExX3N0YXRlLCBpbnQpOw0KK3N0YXRpYyB1
aW50OF90ICAgICBydW1fcnhyYXRlKHN0cnVjdCBydW1fcnhfZGVzYyAqKTsNCitzdGF0aWMg
aW50ICAgICAgICAgcnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKiwgaW50KTsN
CitzdGF0aWMgdWludDE2X3QgICAgcnVtX3R4dGltZShpbnQsIGludCwgdWludDMyX3QpOw0K
K3N0YXRpYyB1aW50OF90ICAgICBydW1fcGxjcF9zaWduYWwoaW50KTsNCisNCitzdGF0aWMg
dm9pZCAgICAgICAgcnVtX3NldHVwX3R4X2Rlc2Moc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1
Y3QgcnVtX3R4X2Rlc2MgKiwgdWludDMyX3QsIHVpbnQxNl90LCBpbnQsIGludCk7DQorc3Rh
dGljIGludCAgICAgICAgIHJ1bV90eF9tZ3Qoc3RydWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3Qg
bWJ1ZiAqLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKik7DQorc3RhdGljIGludCAgICAgICAg
IHJ1bV90eF9kYXRhKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IG1idWYgKiwgc3RydWN0
IGllZWU4MDIxMV9ub2RlICopOw0KKw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fcmVhZF9l
ZXByb20oc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX2Vl
cHJvbV9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsN
CitzdGF0aWMgdWludDMyX3QgICAgcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50
MTZfdCk7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9yZWFkX211bHRpKHN0cnVjdCBydW1f
c29mdGMgKiwgdWludDE2X3QsIHZvaWQgKiwgaW50KTsNCitzdGF0aWMgdm9pZCAgICAgICAg
cnVtX3dyaXRlKHN0cnVjdCBydW1fc29mdGMgKiwgdWludDE2X3QsIHVpbnQzMl90KTsNCitz
dGF0aWMgdm9pZCAgICAgICAgcnVtX3dyaXRlX211bHRpKHN0cnVjdCBydW1fc29mdGMgKiwg
dWludDE2X3QsIHZvaWQgKiwgc2l6ZV90KTsNCisNCitzdGF0aWMgaW50ICAgICAgICAgcnVt
X2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1
bV9iYnBfd3JpdGUoc3RydWN0IHJ1bV9zb2Z0YyAqLCB1aW50OF90LCB1aW50OF90KTsNCitz
dGF0aWMgdWludDhfdCAgICAgcnVtX2JicF9yZWFkKHN0cnVjdCBydW1fc29mdGMgKiwgdWlu
dDhfdCk7DQorDQorc3RhdGljIGNvbnN0IGNoYXIgICpydW1fZ2V0X3JmKGludCk7DQorc3Rh
dGljIHZvaWQgICAgICAgIHJ1bV9yZl93cml0ZShzdHJ1Y3QgcnVtX3NvZnRjICosIHVpbnQ4
X3QsIHVpbnQzMl90KTsNCitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3NlbGVjdF9hbnRlbm5h
KHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9lbmFibGVf
bXJyKHN0cnVjdCBydW1fc29mdGMgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRf
dHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRjICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBy
dW1fc2V0X2Jhc2ljcmF0ZXMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCitzdGF0aWMgdm9pZCAg
ICAgICAgcnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKiwgc3RydWN0IGllZWU4
MDIxMV9jaGFubmVsICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X2NoYW4oc3Ry
dWN0IHJ1bV9zb2Z0YyAqLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKik7DQorc3RhdGlj
IHZvaWQgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAqKTsN
CitzdGF0aWMgdm9pZCAgICAgICAgcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMg
Kik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9zZXRfYnNzaWQoc3RydWN0IHJ1bV9zb2Z0
YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2b2lkICAgICAgICBydW1fc2V0X21h
Y2FkZHIoc3RydWN0IHJ1bV9zb2Z0YyAqLCBjb25zdCB1aW50OF90ICopOw0KK3N0YXRpYyB2
b2lkICAgICAgICBydW1fdXBkYXRlX3Byb21pc2Moc3RydWN0IHJ1bV9zb2Z0YyAqKTsNCisN
CitzdGF0aWMgaW50ICAgICAgICAgcnVtX3ByZXBhcmVfYmVhY29uKHN0cnVjdCBydW1fc29m
dGMgKik7DQorDQorc3RhdGljIHZvaWQgICAgICAgIHJ1bV9hbXJyX3N0YXJ0KHN0cnVjdCBy
dW1fc29mdGMgKiwgc3RydWN0IGllZWU4MDIxMV9ub2RlICopOw0KK3N0YXRpYyB2b2lkICAg
ICAgICBydW1fYW1ycl90aW1lb3V0KHZvaWQgKik7DQorc3RhdGljIHZvaWQgICAgICAgIHJ1
bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlLCB1c2JkX3ByaXZhdGVfaGFuZGxlLCB1
c2JkX3N0YXR1cyBzdGF0dXMpOw0KKw0KKy8qDQorICogU3VwcG9ydGVkIHJhdGVzIGZvciA4
MDIuMTFhL2IvZyBtb2RlcyAoaW4gNTAwS2JwcyB1bml0KS4NCisgKi8NCitzdGF0aWMgY29u
c3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYSA9DQorICAgIHsg
OCwgeyAxMiwgMTgsIDI0LCAzNiwgNDgsIDcyLCA5NiwgMTA4IH0gfTsNCisNCitzdGF0aWMg
Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0IHJ1bV9yYXRlc2V0XzExYiA9DQorICAg
IHsgNCwgeyAyLCA0LCAxMSwgMjIgfSB9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWVl
ZTgwMjExX3JhdGVzZXQgcnVtX3JhdGVzZXRfMTFnID0NCisgICAgeyAxMiwgeyAyLCA0LCAx
MSwgMjIsIDEyLCAxOCwgMjQsIDM2LCA0OCwgNzIsIDk2LCAxMDggfSB9Ow0KKw0KK3N0YXRp
YyBjb25zdCBzdHJ1Y3Qgew0KKyAgICB1aW50MzJfdCAgICByZWc7DQorICAgIHVpbnQzMl90
ICAgIHZhbDsNCit9IHJ1bV9kZWZfbWFjW10gPSB7DQorICAgIFJUMjU3M19ERUZfTUFDDQor
fTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHsNCisgICAgdWludDhfdCAgICByZWc7DQor
ICAgIHVpbnQ4X3QgICAgdmFsOw0KK30gcnVtX2RlZl9iYnBbXSA9IHsNCisgICAgUlQyNTcz
X0RFRl9CQlANCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmZwcm9nIHsNCisgICAg
dWludDhfdCAgICAgICAgY2hhbjsNCisgICAgdWludDMyX3QgICAgcjEsIHIyLCByMywgcjQ7
DQorfSAgcnVtX3JmNTIyNltdID0gew0KKyAgICBSVDI1NzNfUkY1MjI2DQorfSwgcnVtX3Jm
NTIyNVtdID0gew0KKyAgICBSVDI1NzNfUkY1MjI1DQorfTsNCisNCitVU0JfREVDTEFSRV9E
UklWRVIocnVtKTsNCisNCitVU0JfTUFUQ0gocnVtKQ0KK3sNCisgICAgVVNCX01BVENIX1NU
QVJUKHJ1bSwgdWFhKTsNCisNCisgICAgaWYgKHVhYS0+aWZhY2UgIT0gTlVMTCkNCisgICAg
ICAgIHJldHVybiBVTUFUQ0hfTk9ORTsNCisNCisgICAgcmV0dXJuICh1c2JfbG9va3VwKHJ1
bV9kZXZzLCB1YWEtPnZlbmRvciwgdWFhLT5wcm9kdWN0KSAhPSBOVUxMKSA/DQorICAgICAg
ICBVTUFUQ0hfVkVORE9SX1BST0RVQ1QgOiBVTUFUQ0hfTk9ORTsNCit9DQorDQorc3RhdGlj
IHZvaWQNCitydW1fbG9hZF9mdyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIGNv
bnN0IGNoYXIgKmZ3X25hbWUgPSAicnQyNTczIjsNCisgICAgY29uc3Qgc3RydWN0IGZpcm13
YXJlICpmcDsNCisJdV9pbnQgaTsNCisJc2l6ZV90IHNpemU7DQorICAgIHVzYl9kZXZpY2Vf
cmVxdWVzdF90IHJlcTsNCisgICAgdWludDE2X3QgcmVnID0gUlQyNTczX01DVV9DT0RFX0JB
U0U7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKw0KKyAgICBmcCA9IGZpcm13YXJlX2dl
dChmd19uYW1lKTsNCisNCisgICAgaWYgKGZwID09IE5VTEwgfHwgZnAtPmRhdGFzaXplID09
IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGZhaWxlZCBsb2FkZmlybXdhcmUgb2YgZmls
ZSAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp
LCBmd19uYW1lKTsNCisgICAgICAgIHJldHVybjsNCisgICAgfSBlbHNlIHsNCisgICAgICAg
IHByaW50ZigiJXM6IGZpcm13YXJlIGxvYWRlZDogbmFtZTogJXMsIHNpemU6JWRcbiIsIGRl
dmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIGZwLT5uYW1lLCAoaW50KWZwLT5kYXRh
c2l6ZSk7DQorICAgIH0NCisNCisgICAgLyogY29weSBmaXJtd2FyZSBpbWFnZSBpbnRvIE5J
QyAqLw0KKyAgICBmb3IgKGkgPSAwLCBzaXplID0gZnAtPmRhdGFzaXplOyBzaXplID49IDQ7
IA0KKwkJCXJlZyArPSA0LCBpICs9IDQsIHNpemUgLT0gNCkNCisgICAgICAgIHJ1bV93cml0
ZShzYywgcmVnLCBVR0VURFcoKGNvbnN0IHVfY2hhciopZnAtPmRhdGEgKyBpKSk7DQorDQor
ICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfV1JJVEVfVkVORE9SX0RFVklDRTsNCisgICAg
cmVxLmJSZXF1ZXN0ID0gUlQyNTczX01DVV9DTlRMOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVl
LCBSVDI1NzNfTUNVX1JVTik7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIDApOw0KKyAgICBV
U0VUVyhyZXEud0xlbmd0aCwgMCk7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0
KHNjLT5zY191ZGV2LCAmcmVxLCBOVUxMKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisg
ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBydW4gZmlybXdhcmU6ICVzXG4iLA0KKyAg
ICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3Ry
KGVycm9yKSk7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgbG9hZCA4MDUxIG1p
Y3JvY29kZVxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k
ZXYpKTsNCisgICAgfQ0KKw0KK30NCisNCitVU0JfQVRUQUNIKHJ1bSkNCit7DQorICAgIFVT
Ql9BVFRBQ0hfU1RBUlQocnVtLCBzYywgdWFhKTsNCisgICAgc3RydWN0IGllZWU4MDIxMWNv
bSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IE5VTEw7DQor
ICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvcl90ICppZDsNCisgICAgdXNiX2VuZHBvaW50
X2Rlc2NyaXB0b3JfdCAqZWQ7DQorICAgIHVzYmRfc3RhdHVzIGVycm9yOw0KKyAgICBjaGFy
IGRldmluZm9bMTAyNF07DQorICAgIGludCBpLCBudHJpZXM7DQorICAgIHVpbnQzMl90IHRt
cDsNCisNCisJYnplcm8oc2MsIHNpemVvZihzdHJ1Y3QgcnVtX3NvZnRjKSk7DQorDQorICAg
IHVzYmRfZGV2aW5mbyh1YWEtPmRldmljZSwgMCwgZGV2aW5mbyk7DQorDQorICAgIHNjLT5z
Y191ZGV2ID0gdWFhLT5kZXZpY2U7DQorICAgIHNjLT5zY19mbGFncyA9IDA7DQorDQorICAg
IFVTQl9BVFRBQ0hfU0VUVVA7DQorICAgIHByaW50ZigiJXM6ICVzXG4iLCBkZXZpY2VfZ2V0
X25hbWV1bml0KHNjLT5zY19kZXYpLCBkZXZpbmZvKTsNCisNCisgICAgaWYgKHVzYmRfc2V0
X2NvbmZpZ19ubyhzYy0+c2NfdWRldiwgUlQyNTczX0NPTkZJR19OTywgMCkgIT0gMCkgew0K
KyAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IHNldCBjb25maWd1cmF0aW9uIG5vXG4i
LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg
ICAgICAgVVNCX0FUVEFDSF9FUlJPUl9SRVRVUk47DQorICAgIH0NCisNCisgICAgLyogZ2V0
IHRoZSBmaXJzdCBpbnRlcmZhY2UgaGFuZGxlICovDQorICAgIGVycm9yID0gdXNiZF9kZXZp
Y2UyaW50ZXJmYWNlX2hhbmRsZShzYy0+c2NfdWRldiwgUlQyNTczX0lGQUNFX0lOREVYLA0K
KyAgICAgICAgJnNjLT5zY19pZmFjZSk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAg
ICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBoYW5kbGVcbiIsDQor
ICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAg
ICBVU0JfQVRUQUNIX0VSUk9SX1JFVFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKg0KKyAgICAg
KiBGaW5kIGVuZHBvaW50cy4NCisgICAgICovDQorICAgIGlkID0gdXNiZF9nZXRfaW50ZXJm
YWNlX2Rlc2NyaXB0b3Ioc2MtPnNjX2lmYWNlKTsNCisNCisgICAgc2MtPnNjX3J4X25vID0g
c2MtPnNjX3R4X25vID0gLTE7DQorICAgIGZvciAoaSA9IDA7IGkgPCBpZC0+Yk51bUVuZHBv
aW50czsgaSsrKSB7DQorICAgICAgICBlZCA9IHVzYmRfaW50ZXJmYWNlMmVuZHBvaW50X2Rl
c2NyaXB0b3Ioc2MtPnNjX2lmYWNlLCBpKTsNCisgICAgICAgIGlmIChlZCA9PSBOVUxMKSB7
DQorICAgICAgICAgICAgcHJpbnRmKCIlczogbm8gZW5kcG9pbnQgZGVzY3JpcHRvciBmb3Ig
aWZhY2UgJWRcbiIsDQorICAgICAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt
PnNjX2RldiksIGkpOw0KKyAgICAgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJOOw0K
KyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKFVFX0dFVF9ESVIoZWQtPmJFbmRwb2ludEFk
ZHJlc3MpID09IFVFX0RJUl9JTiAmJg0KKyAgICAgICAgICAgIFVFX0dFVF9YRkVSVFlQRShl
ZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAgICAgICAgIHNjLT5zY19yeF9u
byA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICAgICAgZWxzZSBpZiAoVUVfR0VUX0RJ
UihlZC0+YkVuZHBvaW50QWRkcmVzcykgPT0gVUVfRElSX09VVCAmJg0KKyAgICAgICAgICAg
IFVFX0dFVF9YRkVSVFlQRShlZC0+Ym1BdHRyaWJ1dGVzKSA9PSBVRV9CVUxLKQ0KKyAgICAg
ICAgICAgIHNjLT5zY190eF9ubyA9IGVkLT5iRW5kcG9pbnRBZGRyZXNzOw0KKyAgICB9DQor
ICAgIGlmIChzYy0+c2Nfcnhfbm8gPT0gLTEgfHwgc2MtPnNjX3R4X25vID09IC0xKSB7DQor
ICAgICAgICBwcmludGYoIiVzOiBtaXNzaW5nIGVuZHBvaW50XG4iLCBkZXZpY2VfZ2V0X25h
bWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRBQ0hfRVJST1JfUkVUVVJO
Ow0KKyAgICB9DQorCQ0KKyAgICBtdHhfaW5pdCgmc2MtPnNjX210eCwgZGV2aWNlX2dldF9u
YW1ldW5pdChzYy0+c2NfZGV2KSwgTVRYX05FVFdPUktfTE9DSywgDQorCQlNVFhfREVGIHwg
TVRYX1JFQ1VSU0UpOw0KKw0KKyAgICB1c2JfaW5pdF90YXNrKCZzYy0+c2NfdGFzaywgcnVt
X3Rhc2ssIHNjKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+c2Nhbl9jaCwgZGVidWdfbXBz
YWZlbmV0ID8gQ0FMTE9VVF9NUFNBRkUgOiAwKTsNCisgICAgY2FsbG91dF9pbml0KCZzYy0+
YW1ycl9jaCwgMCk7DQorDQorICAgIC8qIHJldHJpZXZlIFJUMjU3MyByZXYuIG5vICovDQor
ICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVzKyspIHsNCisgICAg
ICAgIGlmICgodG1wID0gcnVtX3JlYWQoc2MsIFJUMjU3M19NQUNfQ1NSMCkpICE9IDApDQor
ICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBERUxBWSgxMDAwKTsNCisgICAgfQ0KKyAg
ICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQg
d2FpdGluZyBmb3IgY2hpcCB0byBzZXR0bGVcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl
dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBVU0JfQVRUQUNIX0VSUk9SX1JF
VFVSTjsNCisgICAgfQ0KKw0KKyAgICAvKiByZXRyaWV2ZSBNQUMgYWRkcmVzcyBhbmQgdmFy
aW91cyBvdGhlciB0aGluZ3MgZnJvbSBFRVBST00gKi8NCisgICAgcnVtX3JlYWRfZWVwcm9t
KHNjKTsNCisNCisgICAgcHJpbnRmKCIlczogTUFDL0JCUCBSVCUwNHggKHJldiAweCUwNXgp
LCBSRiAlcywgYWRkcmVzcyAlc1xuIiwNCisgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQo
c2MtPnNjX2RldiksIHNjLT5tYWNiYnBfcmV2LCB0bXAsDQorICAgICAgICBydW1fZ2V0X3Jm
KHNjLT5yZl9yZXYpLCBldGhlcl9zcHJpbnRmKGljLT5pY19teWFkZHIpKTsNCisNCisgICAg
aWZwID0gc2MtPnNjX2lmcCA9IGlmX2FsbG9jKElGVF9FVEhFUik7DQorICAgIGlmIChpZnAg
PT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRmKCIlczogY2FuIG5vdCBpZl9hbGxvYygpXG4i
LCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIFVTQl9BVFRB
Q0hfRVJST1JfUkVUVVJOOw0KKyAgICB9DQorDQorI2lmIDENCisgICAgcnVtX2xvYWRfZnco
c2MpOw0KKyNlbmRpZg0KKw0KKyAgICBpYy0+aWNfaWZwID0gaWZwOw0KKyAgICBpYy0+aWNf
cGh5dHlwZSA9IElFRUU4MDIxMV9UX09GRE07ICAgIC8qIG5vdCBvbmx5LCBidXQgbm90IHVz
ZWQgKi8NCisgICAgaWMtPmljX29wbW9kZSAgPSBJRUVFODAyMTFfTV9TVEE7ICAgIC8qIGRl
ZmF1bHQgdG8gQlNTIG1vZGUgKi8NCisgICAgaWMtPmljX3N0YXRlICAgPSBJRUVFODAyMTFf
U19JTklUOw0KKw0KKyAgICAvKiBzZXQgZGV2aWNlIGNhcGFiaWxpdGllcyAqLw0KKyAgICBp
Yy0+aWNfY2FwcyA9DQorICAgICAgICBJRUVFODAyMTFfQ19JQlNTIHwgICAgICAgIC8qIElC
U1MgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX01PTklUT1IgfCAg
ICAvKiBtb25pdG9yIG1vZGUgc3VwcG9ydGVkICovDQorICAgICAgICBJRUVFODAyMTFfQ19I
T1NUQVAgfCAgICAvKiBIb3N0QXAgbW9kZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4
MDIxMV9DX1RYUE1HVCB8ICAgIC8qIHR4IHBvd2VyIG1hbmFnZW1lbnQgKi8NCisgICAgICAg
IElFRUU4MDIxMV9DX1NIUFJFQU1CTEUgfCAgICAvKiBzaG9ydCBwcmVhbWJsZSBzdXBwb3J0
ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1NIU0xPVCB8ICAgIC8qIHNob3J0IHNsb3Qg
dGltZSBzdXBwb3J0ZWQgKi8NCisgICAgICAgIElFRUU4MDIxMV9DX1dQQTsgICAgICAgIC8q
IDgwMi4xMWkgKi8NCisNCisgICAgaWYgKHNjLT5yZl9yZXYgPT0gUlQyNTczX1JGXzUyMjUg
fHwgc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNikgew0KKyAgICAgICAgLyogc2V0IHN1
cHBvcnRlZCAuMTFhIHJhdGVzICovDQorICAgICAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4
MDIxMV9NT0RFXzExQV0gPSBydW1fcmF0ZXNldF8xMWE7DQorDQorICAgICAgICAvKiBzZXQg
c3VwcG9ydGVkIC4xMWEgY2hhbm5lbHMgKi8NCisgICAgICAgIGZvciAoaSA9IDM0OyBpIDw9
IDQ2OyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZnJl
cSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihpLCBJRUVFODAyMTFf
Q0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3Mg
PSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZm9yIChpID0gMzY7
IGkgPD0gNjQ7IGkgKz0gNCkgew0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5p
Y19mcmVxID0NCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2llZWUybWh6KGksIElFRUU4
MDIxMV9DSEFOXzVHSFopOw0KKyAgICAgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19m
bGFncyA9IElFRUU4MDIxMV9DSEFOX0E7DQorICAgICAgICB9DQorICAgICAgICBmb3IgKGkg
PSAxMDA7IGkgPD0gMTQwOyBpICs9IDQpIHsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5l
bHNbaV0uaWNfZnJlcSA9DQorICAgICAgICAgICAgICAgIGllZWU4MDIxMV9pZWVlMm1oeihp
LCBJRUVFODAyMTFfQ0hBTl81R0haKTsNCisgICAgICAgICAgICBpYy0+aWNfY2hhbm5lbHNb
aV0uaWNfZmxhZ3MgPSBJRUVFODAyMTFfQ0hBTl9BOw0KKyAgICAgICAgfQ0KKyAgICAgICAg
Zm9yIChpID0gMTQ5OyBpIDw9IDE2NTsgaSArPSA0KSB7DQorICAgICAgICAgICAgaWMtPmlj
X2NoYW5uZWxzW2ldLmljX2ZyZXEgPQ0KKyAgICAgICAgICAgICAgICBpZWVlODAyMTFfaWVl
ZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fNUdIWik7DQorICAgICAgICAgICAgaWMtPmljX2No
YW5uZWxzW2ldLmljX2ZsYWdzID0gSUVFRTgwMjExX0NIQU5fQTsNCisgICAgICAgIH0NCisg
ICAgfQ0KKw0KKyAgICAvKiBzZXQgc3VwcG9ydGVkIC4xMWIgYW5kIC4xMWcgcmF0ZXMgKi8N
CisgICAgaWMtPmljX3N1cF9yYXRlc1tJRUVFODAyMTFfTU9ERV8xMUJdID0gcnVtX3JhdGVz
ZXRfMTFiOw0KKyAgICBpYy0+aWNfc3VwX3JhdGVzW0lFRUU4MDIxMV9NT0RFXzExR10gPSBy
dW1fcmF0ZXNldF8xMWc7DQorDQorICAgIC8qIHNldCBzdXBwb3J0ZWQgLjExYiBhbmQgLjEx
ZyBjaGFubmVscyAoMSB0aHJvdWdoIDE0KSAqLw0KKyAgICBmb3IgKGkgPSAxOyBpIDw9IDE0
OyBpKyspIHsNCisgICAgICAgIGljLT5pY19jaGFubmVsc1tpXS5pY19mcmVxID0NCisgICAg
ICAgICAgICBpZWVlODAyMTFfaWVlZTJtaHooaSwgSUVFRTgwMjExX0NIQU5fMkdIWik7DQor
ICAgICAgICBpYy0+aWNfY2hhbm5lbHNbaV0uaWNfZmxhZ3MgPQ0KKyAgICAgICAgICAgIElF
RUU4MDIxMV9DSEFOX0NDSyB8IElFRUU4MDIxMV9DSEFOX09GRE0gfA0KKyAgICAgICAgICAg
IElFRUU4MDIxMV9DSEFOX0RZTiB8IElFRUU4MDIxMV9DSEFOXzJHSFo7DQorICAgIH0NCisN
CisgICAgaWZwLT5pZl9zb2Z0YyA9IHNjOw0KKyAgICBpZl9pbml0bmFtZShpZnAsICJydW0i
LCBkZXZpY2VfZ2V0X3VuaXQoc2MtPnNjX2RldikpOw0KKyAgICBpZnAtPmlmX2ZsYWdzID0g
SUZGX0JST0FEQ0FTVCB8IElGRl9TSU1QTEVYIHwgSUZGX01VTFRJQ0FTVCB8IElGRl9ORUVE
U0dJQU5UOw0KKyAgICBpZnAtPmlmX2luaXQgICAgID0gcnVtX2luaXQ7DQorICAgIGlmcC0+
aWZfaW9jdGwgICAgPSBydW1faW9jdGw7DQorICAgIGlmcC0+aWZfc3RhcnQgICAgPSBydW1f
c3RhcnQ7DQorICAgIGlmcC0+aWZfd2F0Y2hkb2cgPSBydW1fd2F0Y2hkb2c7DQorDQorICAg
IElGUV9TRVRfTUFYTEVOKCZpZnAtPmlmX3NuZCwgSUZRX01BWExFTik7DQorICAgIElGUV9T
RVRfUkVBRFkoJmlmcC0+aWZfc25kKTsNCisNCisgICAgaWVlZTgwMjExX2lmYXR0YWNoKGlj
KTsNCisNCisgICAgLyogb3ZlcnJpZGUgc3RhdGUgdHJhbnNpdGlvbiBtYWNoaW5lICovDQor
ICAgIHNjLT5zY19uZXdzdGF0ZSA9IGljLT5pY19uZXdzdGF0ZTsNCisgICAgaWMtPmljX25l
d3N0YXRlID0gcnVtX25ld3N0YXRlOw0KKyAgICBpZWVlODAyMTFfbWVkaWFfaW5pdChpYywg
cnVtX21lZGlhX2NoYW5nZSwgaWVlZTgwMjExX21lZGlhX3N0YXR1cyk7DQorDQorICAgIGJw
ZmF0dGFjaDIoaWZwLCBETFRfSUVFRTgwMl8xMV9SQURJTywNCisgICAgICAgIHNpemVvZiAo
c3RydWN0IGllZWU4MDIxMV9mcmFtZSkgKyBJRUVFODAyMTFfUkFESU9UQVBfSERSTEVOLCAm
c2MtPnNjX2RydmJwZik7DQorDQorICAgIHNjLT5zY19yeHRhcF9sZW4gPSBzaXplb2Ygc2Mt
PnNjX3J4dGFwdTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfbGVuID0gaHRvbGUx
NihzYy0+c2Nfcnh0YXBfbGVuKTsNCisgICAgc2MtPnNjX3J4dGFwLndyX2loZHIuaXRfcHJl
c2VudCA9IGh0b2xlMzIoUlQyNTczX1JYX1JBRElPVEFQX1BSRVNFTlQpOw0KKw0KKyAgICBz
Yy0+c2NfdHh0YXBfbGVuID0gc2l6ZW9mIHNjLT5zY190eHRhcHU7DQorICAgIHNjLT5zY190
eHRhcC53dF9paGRyLml0X2xlbiA9IGh0b2xlMTYoc2MtPnNjX3R4dGFwX2xlbik7DQorICAg
IHNjLT5zY190eHRhcC53dF9paGRyLml0X3ByZXNlbnQgPSBodG9sZTMyKFJUMjU3M19UWF9S
QURJT1RBUF9QUkVTRU5UKTsNCisNCisJaWYgKGJvb3R2ZXJib3NlKQ0KKyAgICAJaWVlZTgw
MjExX2Fubm91bmNlKGljKTsNCisNCisgICAgVVNCX0FUVEFDSF9TVUNDRVNTX1JFVFVSTjsN
Cit9DQorDQorVVNCX0RFVEFDSChydW0pDQorew0KKyAgICBVU0JfREVUQUNIX1NUQVJUKHJ1
bSwgc2MpOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor
ICAgIHN0cnVjdCBpZm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgcnVtX3N0b3Ao
aWZwKTsNCisgICAgdXNiX3JlbV90YXNrKHNjLT5zY191ZGV2LCAmc2MtPnNjX3Rhc2spOw0K
KyAgICBjYWxsb3V0X3N0b3AoJnNjLT5zY2FuX2NoKTsNCisgICAgY2FsbG91dF9zdG9wKCZz
Yy0+YW1ycl9jaCk7DQorDQorICAgIGlmIChzYy0+YW1ycl94ZmVyICE9IE5VTEwpIHsNCisg
ICAgICAgIHVzYmRfZnJlZV94ZmVyKHNjLT5hbXJyX3hmZXIpOw0KKyAgICAgICAgc2MtPmFt
cnJfeGZlciA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY19yeF9waXBlaCAh
PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsN
CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfcnhfcGlwZWgpOw0KKyAgICB9DQor
DQorICAgIGlmIChzYy0+c2NfdHhfcGlwZWggIT0gTlVMTCkgew0KKyAgICAgICAgdXNiZF9h
Ym9ydF9waXBlKHNjLT5zY190eF9waXBlaCk7DQorICAgICAgICB1c2JkX2Nsb3NlX3BpcGUo
c2MtPnNjX3R4X3BpcGVoKTsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9saXN0KHNj
KTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorDQorICAgIGJwZmRldGFjaChpZnAp
Ow0KKyAgICBpZWVlODAyMTFfaWZkZXRhY2goaWMpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAq
Lw0KKyAvLyAgIGlmX2RldGFjaChpZnApOw0KKyAgICBpZl9mcmVlKGlmcCk7DQorDQorLyoN
CisgICAgdXNiZF9hZGRfZHJ2X2V2ZW50KFVTQl9FVkVOVF9EUklWRVJfREVUQUNILCBzYy0+
c2NfdWRldiwNCisgICAgICAgIFVTQkRFVihzYy0+c2NfZGV2KSk7DQorKi8NCisgICAgbXR4
X2Rlc3Ryb3koJnNjLT5zY19tdHgpOw0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh
dGljIGludA0KK3J1bV9hbGxvY190eF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sN
CisgICAgc3RydWN0IHJ1bV90eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQor
DQorICAgIHNjLT50eF9xdWV1ZWQgPSAwOw0KKw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUlQy
NTczX1RYX0xJU1RfQ09VTlQ7IGkrKykgew0KKyAgICAgICAgZGF0YSA9ICZzYy0+dHhfZGF0
YVtpXTsNCisNCisgICAgICAgIGRhdGEtPnNjID0gc2M7DQorDQorICAgICAgICBkYXRhLT54
ZmVyID0gdXNiZF9hbGxvY194ZmVyKHNjLT5zY191ZGV2KTsNCisgICAgICAgIGlmIChkYXRh
LT54ZmVyID09IE5VTEwpIHsNCisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3Qg
YWxsb2NhdGUgdHggeGZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1l
dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAg
ICAgICAgICAgZ290byBmYWlsOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVm
ID0gdXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwNCisgICAgICAgICAgICBSVDI1NzNf
VFhfREVTQ19TSVpFICsgTUNMQllURVMpOw0KKyAgICAgICAgaWYgKGRhdGEtPmJ1ZiA9PSBO
VUxMKSB7DQorICAgICAgICAgICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHR4
IGJ1ZmZlclxuIiwNCisgICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+
c2NfZGV2KSk7DQorICAgICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAg
Z290byBmYWlsOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0K
K2ZhaWw6ICAgIHJ1bV9mcmVlX3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQor
fQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX2ZyZWVfdHhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRj
ICpzYykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7
DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBSVDI1NzNfVFhfTElTVF9DT1VOVDsgaSsrKSB7
DQorICAgICAgICBkYXRhID0gJnNjLT50eF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRh
dGEtPnhmZXIgIT0gTlVMTCkgew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEt
PnhmZXIpOw0KKyAgICAgICAgICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0K
Kw0KKyAgICAgICAgaWYgKGRhdGEtPm5pICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZWVl
ODAyMTFfZnJlZV9ub2RlKGRhdGEtPm5pKTsNCisgICAgICAgICAgICBkYXRhLT5uaSA9IE5V
TEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorc3RhdGljIGludA0KK3J1bV9hbGxv
Y19yeF9saXN0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9y
eF9kYXRhICpkYXRhOw0KKyAgICBpbnQgaSwgZXJyb3I7DQorDQorICAgIGZvciAoaSA9IDA7
IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0gJnNj
LT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgZGF0YS0+c2MgPSBzYzsNCisNCisgICAgICAg
IGRhdGEtPnhmZXIgPSB1c2JkX2FsbG9jX3hmZXIoc2MtPnNjX3VkZXYpOw0KKyAgICAgICAg
aWYgKGRhdGEtPnhmZXIgPT0gTlVMTCkgew0KKyAgICAgICAgICAgIHByaW50ZigiJXM6IGNv
dWxkIG5vdCBhbGxvY2F0ZSByeCB4ZmVyXG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2Vf
Z2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01F
TTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAgICAgICB9DQorDQorICAgICAgICBp
ZiAodXNiZF9hbGxvY19idWZmZXIoZGF0YS0+eGZlciwgTUNMQllURVMpID09IE5VTEwpIHsN
CisgICAgICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggYnVmZmVy
XG4iLA0KKyAgICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYp
KTsNCisgICAgICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZh
aWw7DQorICAgICAgICB9DQorDQorICAgICAgICBNR0VUSERSKGRhdGEtPm0sIE1fRE9OVFdB
SVQsIE1UX0RBVEEpOw0KKyAgICAgICAgaWYgKGRhdGEtPm0gPT0gTlVMTCkgew0KKyAgICAg
ICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAg
ICAgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAg
ICAgICAgICBlcnJvciA9IEVOT01FTTsNCisgICAgICAgICAgICBnb3RvIGZhaWw7DQorICAg
ICAgICB9DQorDQorICAgICAgICBNQ0xHRVQoZGF0YS0+bSwgTV9ET05UV0FJVCk7DQorICAg
ICAgICBpZiAoIShkYXRhLT5tLT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICAgICAg
cHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIHJ4IG1idWYgY2x1c3RlclxuIiwNCisg
ICAgICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAg
ICAgICAgICAgZXJyb3IgPSBFTk9NRU07DQorICAgICAgICAgICAgZ290byBmYWlsOw0KKyAg
ICAgICAgfQ0KKw0KKyAgICAgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90
ICopOw0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KKw0KK2ZhaWw6ICAgIHJ1bV9mcmVl
X3R4X2xpc3Qoc2MpOw0KKyAgICByZXR1cm4gZXJyb3I7DQorfQ0KKw0KK3N0YXRpYyB2b2lk
DQorcnVtX2ZyZWVfcnhfbGlzdChzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0
cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgaW50IGk7DQorDQorICAgIGZvciAoaSA9
IDA7IGkgPCBSVDI1NzNfUlhfTElTVF9DT1VOVDsgaSsrKSB7DQorICAgICAgICBkYXRhID0g
JnNjLT5yeF9kYXRhW2ldOw0KKw0KKyAgICAgICAgaWYgKGRhdGEtPnhmZXIgIT0gTlVMTCkg
ew0KKyAgICAgICAgICAgIHVzYmRfZnJlZV94ZmVyKGRhdGEtPnhmZXIpOw0KKyAgICAgICAg
ICAgIGRhdGEtPnhmZXIgPSBOVUxMOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGRh
dGEtPm0gIT0gTlVMTCkgew0KKyAgICAgICAgICAgIG1fZnJlZW0oZGF0YS0+bSk7DQorICAg
ICAgICAgICAgZGF0YS0+bSA9IE5VTEw7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQor
c3RhdGljIGludA0KK3J1bV9tZWRpYV9jaGFuZ2Uoc3RydWN0IGlmbmV0ICppZnApDQorew0K
KyAgICBzdHJ1Y3QgcnVtX3NvZnRjICpzYyA9IGlmcC0+aWZfc29mdGM7DQorICAgIGludCBl
cnJvcjsNCisNCisgICAgUlVNX0xPQ0soc2MpOw0KKw0KKyAgICBlcnJvciA9IGllZWU4MDIx
MV9tZWRpYV9jaGFuZ2UoaWZwKTsNCisgICAgaWYgKGVycm9yICE9IEVORVRSRVNFVCl7DQor
ICAgIAlSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgIHJldHVybiBlcnJvcjsNCisgICAgfQ0K
Kw0KKyAgICBpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfVVApICYmDQorICAgICAgICAoaWZw
LT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpKQ0KKyAgICAgICAgcnVtX2luaXQo
c2MpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCisNCisgICAgcmV0dXJuIDA7DQorfQ0K
Kw0KKy8qDQorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IChldmVy
eSAyMDBtcykgZHVyaW5nIHNjYW5uaW5nIHRvDQorICogc3dpdGNoIGZyb20gb25lIGNoYW5u
ZWwgdG8gYW5vdGhlci4NCisgKi8NCitzdGF0aWMgdm9pZA0KK3J1bV9uZXh0X3NjYW4odm9p
ZCAqYXJnKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0
cnVjdCBpZWVlODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisNCisgICAgaWYgKGljLT5p
Y19zdGF0ZSA9PSBJRUVFODAyMTFfU19TQ0FOKQ0KKyAgICAgICAgaWVlZTgwMjExX25leHRf
c2NhbihpYyk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3Rhc2sodm9pZCAqYXJnKQ0K
K3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBhcmc7DQorICAgIHN0cnVjdCBpZWVl
ODAyMTFjb20gKmljID0gJnNjLT5zY19pYzsNCisgICAgZW51bSBpZWVlODAyMTFfc3RhdGUg
b3N0YXRlOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICB1aW50MzJf
dCB0bXA7DQorDQorICAgIG9zdGF0ZSA9IGljLT5pY19zdGF0ZTsNCisNCisgICAgc3dpdGNo
IChzYy0+c2Nfc3RhdGUpIHsNCisgICAgY2FzZSBJRUVFODAyMTFfU19JTklUOg0KKyAgICAg
ICAgaWYgKG9zdGF0ZSA9PSBJRUVFODAyMTFfU19SVU4pIHsNCisgICAgICAgICAgICAvKiBh
Ym9ydCBUU0Ygc3luY2hyb25pemF0aW9uICovDQorICAgICAgICAgICAgdG1wID0gcnVtX3Jl
YWQoc2MsIFJUMjU3M19UWFJYX0NTUjkpOw0KKyAgICAgICAgICAgIHJ1bV93cml0ZShzYywg
UlQyNTczX1RYUlhfQ1NSOSwgdG1wICYgfjB4MDBmZmZmZmYpOw0KKyAgICAgICAgfQ0KKyAg
ICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfU0NBTjoNCisgICAgICAg
IHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgY2FsbG91dF9y
ZXNldCgmc2MtPnNjYW5fY2gsIGh6IC8gNSwgcnVtX25leHRfc2Nhbiwgc2MpOw0KKyAgICAg
ICAgYnJlYWs7DQorDQorICAgIGNhc2UgSUVFRTgwMjExX1NfQVVUSDoNCisgICAgICAgIHJ1
bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4pOw0KKyAgICAgICAgYnJlYWs7DQorDQor
ICAgIGNhc2UgSUVFRTgwMjExX1NfQVNTT0M6DQorICAgICAgICBydW1fc2V0X2NoYW4oc2Ms
IGljLT5pY19jdXJjaGFuKTsNCisgICAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIElFRUU4
MDIxMV9TX1JVTjoNCisgICAgICAgIHJ1bV9zZXRfY2hhbihzYywgaWMtPmljX2N1cmNoYW4p
Ow0KKw0KKyAgICAgICAgbmkgPSBpYy0+aWNfYnNzOw0KKw0KKyAgICAgICAgaWYgKGljLT5p
Y19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgICAgIHJ1bV91
cGRhdGVfc2xvdChzYyk7DQorICAgICAgICAgICAgcnVtX2VuYWJsZV9tcnIoc2MpOw0KKyAg
ICAgICAgICAgIHJ1bV9zZXRfdHhwcmVhbWJsZShzYyk7DQorICAgICAgICAgICAgcnVtX3Nl
dF9iYXNpY3JhdGVzKHNjKTsNCisgICAgICAgICAgICBydW1fc2V0X2Jzc2lkKHNjLCBuaS0+
bmlfYnNzaWQpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1vZGUg
PT0gSUVFRTgwMjExX01fSE9TVEFQIHx8DQorICAgICAgICAgICAgaWMtPmljX29wbW9kZSA9
PSBJRUVFODAyMTFfTV9JQlNTKQ0KKyAgICAgICAgICAgIHJ1bV9wcmVwYXJlX2JlYWNvbihz
Yyk7DQorDQorICAgICAgICBpZiAoaWMtPmljX29wbW9kZSAhPSBJRUVFODAyMTFfTV9NT05J
VE9SKQ0KKyAgICAgICAgICAgIHJ1bV9lbmFibGVfdHNmX3N5bmMoc2MpOw0KKw0KKyAgICAg
ICAgLyogZW5hYmxlIGF1dG9tYXRpYyByYXRlIGFkYXB0YXRpb24gaW4gU1RBIG1vZGUgKi8N
CisgICAgICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSAmJg0KKyAg
ICAgICAgICAgIGljLT5pY19maXhlZF9yYXRlID09IElFRUU4MDIxMV9GSVhFRF9SQVRFX05P
TkUpDQorICAgICAgICAgICAgcnVtX2FtcnJfc3RhcnQoc2MsIG5pKTsNCisNCisgICAgICAg
IGJyZWFrOw0KKyAgICB9DQorDQorICAgIHNjLT5zY19uZXdzdGF0ZShpYywgc2MtPnNjX3N0
YXRlLCAtMSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fbmV3c3RhdGUoc3RydWN0IGll
ZWU4MDIxMWNvbSAqaWMsIGVudW0gaWVlZTgwMjExX3N0YXRlIG5zdGF0ZSwgaW50IGFyZykN
Cit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gaWMtPmljX2lmcC0+aWZfc29mdGM7
DQorDQorICAgIHVzYl9yZW1fdGFzayhzYy0+c2NfdWRldiwgJnNjLT5zY190YXNrKTsNCisg
ICAgY2FsbG91dF9zdG9wKCZzYy0+c2Nhbl9jaCk7DQorICAgIGNhbGxvdXRfc3RvcCgmc2Mt
PmFtcnJfY2gpOw0KKw0KKyAgICAvKiBkbyBpdCBpbiBhIHByb2Nlc3MgY29udGV4dCAqLw0K
KyAgICBzYy0+c2Nfc3RhdGUgPSBuc3RhdGU7DQorICAgIHVzYl9hZGRfdGFzayhzYy0+c2Nf
dWRldiwgJnNjLT5zY190YXNrLCBVU0JfVEFTS1FfRFJJVkVSKTsNCisNCisgICAgcmV0dXJu
IDA7DQorfQ0KKw0KKy8qIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gcmF0ZSBpcyBD
Q0sgb3IgT0ZETSAqLw0KKyNkZWZpbmUgUlVNX1JBVEVfSVNfT0ZETShyYXRlKSAgICAoKHJh
dGUpID49IDEyICYmIChyYXRlKSAhPSAyMikNCisNCisjZGVmaW5lIFJVTV9BQ0tfU0laRSAg
ICAxNCAgICAvKiAxMCArIDQoRkNTKSAqLw0KKyNkZWZpbmUgUlVNX0NUU19TSVpFICAgIDE0
ICAgIC8qIDEwICsgNChGQ1MpICovDQorDQorc3RhdGljIHZvaWQNCitydW1fdHhlb2YodXNi
ZF94ZmVyX2hhbmRsZSB4ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3Rh
dHVzIHN0YXR1cykNCit7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YSA9IHByaXY7
DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBp
Zm5ldCAqaWZwID0gc2MtPnNjX2lmcDsNCisNCisgICAgaWYgKHN0YXR1cyAhPSBVU0JEX05P
Uk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICBpZiAoc3RhdHVzID09IFVTQkRfTk9UX1NU
QVJURUQgfHwgc3RhdHVzID09IFVTQkRfQ0FOQ0VMTEVEKXsNCisgICAgICAgICAgICByZXR1
cm47DQorCQl9DQorDQorICAgIAlwcmludGYoIiVzOiBjb3VsZCBub3QgdHJhbnNtaXQgYnVm
ZmVyOiAlc1xuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19k
ZXYpLCB1c2JkX2VycnN0cihzdGF0dXMpKTsNCisNCisgICAgICAgIGlmIChzdGF0dXMgPT0g
VVNCRF9TVEFMTEVEKQ0KKyAgICAgICAgICAgIHVzYmRfY2xlYXJfZW5kcG9pbnRfc3RhbGxf
YXN5bmMoc2MtPnNjX3R4X3BpcGVoKTsNCisNCisgICAgICAgIGlmcC0+aWZfb2Vycm9ycysr
Ow0KKyAgICAgICAgcmV0dXJuOw0KKyAgICB9DQorDQorICAgIG1fZnJlZW0oZGF0YS0+bSk7
DQorICAgIGRhdGEtPm0gPSBOVUxMOw0KKyAgICBpZWVlODAyMTFfZnJlZV9ub2RlKGRhdGEt
Pm5pKTsNCisgICAgZGF0YS0+bmkgPSBOVUxMOw0KKw0KKyAgICBzYy0+dHhfcXVldWVkLS07
DQorICAgIGlmcC0+aWZfb3BhY2tldHMrKzsNCisNCisgICAgRFBSSU5URk4oMTAsICgidHgg
ZG9uZVxuIikpOw0KKw0KKyAgICBzYy0+c2NfdHhfdGltZXIgPSAwOw0KKyAgICBpZnAtPmlm
X2Rydl9mbGFncyAmPSB+SUZGX0RSVl9PQUNUSVZFOw0KKyAgICBydW1fc3RhcnQoaWZwKTsN
CisNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fcnhlb2YodXNiZF94ZmVyX2hhbmRsZSB4
ZmVyLCB1c2JkX3ByaXZhdGVfaGFuZGxlIHByaXYsIHVzYmRfc3RhdHVzIHN0YXR1cykNCit7
DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YSA9IHByaXY7DQorICAgIHN0cnVjdCBy
dW1fc29mdGMgKnNjID0gZGF0YS0+c2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFjb20gKmlj
ID0gJnNjLT5zY19pYzsNCisgICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0K
KyAgICBzdHJ1Y3QgcnVtX3J4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf
ZnJhbWUgKndoOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pOw0KKyAgICBzdHJ1
Y3QgbWJ1ZiAqbW5ldywgKm07DQorICAgIGludCBsZW47DQorDQorICAgIGlmIChzdGF0dXMg
IT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTikgew0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBV
U0JEX05PVF9TVEFSVEVEIHx8IHN0YXR1cyA9PSBVU0JEX0NBTkNFTExFRCl7DQorICAgICAg
ICAgICAgcmV0dXJuOw0KKwkJfQ0KKw0KKyAgICAgICAgaWYgKHN0YXR1cyA9PSBVU0JEX1NU
QUxMRUQpDQorICAgICAgICAgICAgdXNiZF9jbGVhcl9lbmRwb2ludF9zdGFsbF9hc3luYyhz
Yy0+c2NfcnhfcGlwZWgpOw0KKyAgICAgICAgZ290byBza2lwOw0KKyAgICB9DQorDQorICAg
IHVzYmRfZ2V0X3hmZXJfc3RhdHVzKHhmZXIsIE5VTEwsIE5VTEwsICZsZW4sIE5VTEwpOw0K
Kw0KKyAgICBpZiAobGVuIDwgUlQyNTczX1JYX0RFU0NfU0laRSArIHNpemVvZiAoc3RydWN0
IGllZWU4MDIxMV9mcmFtZV9taW4pKSB7DQorICAgICAgICBEUFJJTlRGKCgiJXM6IHhmZXIg
dG9vIHNob3J0ICVkXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLA0KKyAg
ICAgICAgICAgIGxlbikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg
ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgZGVzYyA9IChzdHJ1Y3QgcnVtX3J4X2Rl
c2MgKilkYXRhLT5idWY7DQorDQorICAgIGlmIChsZTMydG9oKGRlc2MtPmZsYWdzKSAmIFJU
MjU3M19SWF9DUkNfRVJST1IpIHsNCisgICAgICAgIC8qDQorICAgICAgICAgKiBUaGlzIHNo
b3VsZCBub3QgaGFwcGVuIHNpbmNlIHdlIGRpZCBub3QgcmVxdWVzdCB0byByZWNlaXZlDQor
ICAgICAgICAgKiB0aG9zZSBmcmFtZXMgd2hlbiB3ZSBmaWxsZWQgUlQyNTczX1RYUlhfQ1NS
MC4NCisgICAgICAgICAqLw0KKyAgICAgICAgRFBSSU5URk4oNSwgKCJDUkMgZXJyb3JcbiIp
KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290byBza2lwOw0K
KyAgICB9DQorDQorICAgIE1HRVRIRFIobW5ldywgTV9ET05UV0FJVCwgTVRfREFUQSk7DQor
ICAgIGlmIChtbmV3ID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNvdWxkIG5v
dCBhbGxvY2F0ZSByeCBtYnVmXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVu
aXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgaWZwLT5pZl9pZXJyb3JzKys7DQorICAgICAg
ICBnb3RvIHNraXA7DQorICAgIH0NCisNCisgICAgTUNMR0VUKG1uZXcsIE1fRE9OVFdBSVQp
Ow0KKyAgICBpZiAoIShtbmV3LT5tX2ZsYWdzICYgTV9FWFQpKSB7DQorICAgICAgICBwcmlu
dGYoIiVzOiBjb3VsZCBub3QgYWxsb2NhdGUgcnggbWJ1ZiBjbHVzdGVyXG4iLA0KKyAgICAg
ICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAgICAgICAgbV9m
cmVlbShtbmV3KTsNCisgICAgICAgIGlmcC0+aWZfaWVycm9ycysrOw0KKyAgICAgICAgZ290
byBza2lwOw0KKyAgICB9DQorDQorICAgIG0gPSBkYXRhLT5tOw0KKyAgICBkYXRhLT5tID0g
bW5ldzsNCisgICAgZGF0YS0+YnVmID0gbXRvZChkYXRhLT5tLCB1aW50OF90ICopOw0KKw0K
KyAgICAvKiBmaW5hbGl6ZSBtYnVmICovDQorICAgIG0tPm1fcGt0aGRyLnJjdmlmID0gaWZw
Ow0KKyAgICBtLT5tX2RhdGEgPSAoY2FkZHJfdCkoZGVzYyArIDEpOw0KKyAgICBtLT5tX3Br
dGhkci5sZW4gPSBtLT5tX2xlbiA9IChsZTMydG9oKGRlc2MtPmZsYWdzKSA+PiAxNikgJiAw
eGZmZjsNCisNCisgICAgaWYgKHNjLT5zY19kcnZicGYgIT0gTlVMTCkgew0KKyAgICAgICAg
c3RydWN0IHJ1bV9yeF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2Nfcnh0YXA7DQor
DQorICAgICAgICB0YXAtPndyX2ZsYWdzID0gSUVFRTgwMjExX1JBRElPVEFQX0ZfRkNTOw0K
KyAgICAgICAgdGFwLT53cl9yYXRlID0gcnVtX3J4cmF0ZShkZXNjKTsNCisgICAgICAgIHRh
cC0+d3JfY2hhbl9mcmVxID0gaHRvbGUxNihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQor
ICAgICAgICB0YXAtPndyX2NoYW5fZmxhZ3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5p
Y19mbGFncyk7DQorICAgICAgICB0YXAtPndyX2FudGVubmEgPSBzYy0+cnhfYW50Ow0KKyAg
ICAgICAgdGFwLT53cl9hbnRzaWduYWwgPSBkZXNjLT5yc3NpOw0KKw0KKyAgICAgICAgYnBm
X210YXAyKHNjLT5zY19kcnZicGYsIHRhcCwgc2MtPnNjX3J4dGFwX2xlbiwgbSk7DQorICAg
IH0NCisNCisgICAgd2ggPSBtdG9kKG0sIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQor
ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfcnhub2RlKGljLCAoc3RydWN0IGllZWU4MDIxMV9m
cmFtZV9taW4gKil3aCk7DQorDQorICAgIC8qIHNlbmQgdGhlIGZyYW1lIHRvIHRoZSA4MDIu
MTEgbGF5ZXIgKi8NCisgICAgaWVlZTgwMjExX2lucHV0KGljLCBtLCBuaSwgZGVzYy0+cnNz
aSwgMCk7DQorDQorICAgIC8qIG5vZGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCAqLw0KKyAgICBp
ZWVlODAyMTFfZnJlZV9ub2RlKG5pKTsNCisNCisgICAgRFBSSU5URk4oMTUsICgicnggZG9u
ZVxuIikpOw0KKw0KK3NraXA6ICAgIC8qIHNldHVwIGEgbmV3IHRyYW5zZmVyICovDQorICAg
IHVzYmRfc2V0dXBfeGZlcih4ZmVyLCBzYy0+c2NfcnhfcGlwZWgsIGRhdGEsIGRhdGEtPmJ1
ZiwgTUNMQllURVMsDQorICAgICAgICBVU0JEX1NIT1JUX1hGRVJfT0ssIFVTQkRfTk9fVElN
RU9VVCwgcnVtX3J4ZW9mKTsNCisgICAgdXNiZF90cmFuc2Zlcih4ZmVyKTsNCit9DQorDQor
LyoNCisgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSB0aGUgUnggcmFkaW90YXAg
Y29kZS4gSXQgcmV0dXJucyB0aGUgcmF0ZSBhdA0KKyAqIHdoaWNoIGEgZ2l2ZW4gZnJhbWUg
d2FzIHJlY2VpdmVkLg0KKyAqLw0KK3N0YXRpYyB1aW50OF90DQorcnVtX3J4cmF0ZShzdHJ1
Y3QgcnVtX3J4X2Rlc2MgKmRlc2MpDQorew0KKyAgICBpZiAobGUzMnRvaChkZXNjLT5mbGFn
cykgJiBSVDI1NzNfUlhfT0ZETSkgew0KKyAgICAgICAgLyogcmV2ZXJzZSBmdW5jdGlvbiBv
ZiBydW1fcGxjcF9zaWduYWwgKi8NCisgICAgICAgIHN3aXRjaCAoZGVzYy0+cmF0ZSkgew0K
KyAgICAgICAgY2FzZSAweGI6ICAgIHJldHVybiAxMjsNCisgICAgICAgIGNhc2UgMHhmOiAg
ICByZXR1cm4gMTg7DQorICAgICAgICBjYXNlIDB4YTogICAgcmV0dXJuIDI0Ow0KKyAgICAg
ICAgY2FzZSAweGU6ICAgIHJldHVybiAzNjsNCisgICAgICAgIGNhc2UgMHg5OiAgICByZXR1
cm4gNDg7DQorICAgICAgICBjYXNlIDB4ZDogICAgcmV0dXJuIDcyOw0KKyAgICAgICAgY2Fz
ZSAweDg6ICAgIHJldHVybiA5NjsNCisgICAgICAgIGNhc2UgMHhjOiAgICByZXR1cm4gMTA4
Ow0KKyAgICAgICAgfQ0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgaWYgKGRlc2MtPnJhdGUg
PT0gMTApDQorICAgICAgICAgICAgcmV0dXJuIDI7DQorICAgICAgICBpZiAoZGVzYy0+cmF0
ZSA9PSAyMCkNCisgICAgICAgICAgICByZXR1cm4gNDsNCisgICAgICAgIGlmIChkZXNjLT5y
YXRlID09IDU1KQ0KKyAgICAgICAgICAgIHJldHVybiAxMTsNCisgICAgICAgIGlmIChkZXNj
LT5yYXRlID09IDExMCkNCisgICAgICAgICAgICByZXR1cm4gMjI7DQorICAgIH0NCisgICAg
cmV0dXJuIDI7ICAgIC8qIHNob3VsZCBub3QgZ2V0IHRoZXJlICovDQorfQ0KKw0KKy8qDQor
ICogUmV0dXJuIHRoZSBleHBlY3RlZCBhY2sgcmF0ZSBmb3IgYSBmcmFtZSB0cmFuc21pdHRl
ZCBhdCByYXRlIGByYXRlJy4NCisgKiBYWFg6IHRoaXMgc2hvdWxkIGRlcGVuZCBvbiB0aGUg
ZGVzdGluYXRpb24gbm9kZSBiYXNpYyByYXRlIHNldC4NCisgKi8NCitzdGF0aWMgaW50DQor
cnVtX2Fja19yYXRlKHN0cnVjdCBpZWVlODAyMTFjb20gKmljLCBpbnQgcmF0ZSkNCit7DQor
ICAgIHN3aXRjaCAocmF0ZSkgew0KKyAgICAvKiBDQ0sgcmF0ZXMgKi8NCisgICAgY2FzZSAy
Og0KKyAgICAgICAgcmV0dXJuIDI7DQorICAgIGNhc2UgNDoNCisgICAgY2FzZSAxMToNCisg
ICAgY2FzZSAyMjoNCisgICAgICAgIHJldHVybiAoaWMtPmljX2N1cm1vZGUgPT0gSUVFRTgw
MjExX01PREVfMTFCKSA/IDQgOiByYXRlOw0KKw0KKyAgICAvKiBPRkRNIHJhdGVzICovDQor
ICAgIGNhc2UgMTI6DQorICAgIGNhc2UgMTg6DQorICAgICAgICByZXR1cm4gMTI7DQorICAg
IGNhc2UgMjQ6DQorICAgIGNhc2UgMzY6DQorICAgICAgICByZXR1cm4gMjQ7DQorICAgIGNh
c2UgNDg6DQorICAgIGNhc2UgNzI6DQorICAgIGNhc2UgOTY6DQorICAgIGNhc2UgMTA4Og0K
KyAgICAgICAgcmV0dXJuIDQ4Ow0KKyAgICB9DQorDQorICAgIC8qIGRlZmF1bHQgdG8gMU1i
cHMgKi8NCisgICAgcmV0dXJuIDI7DQorfQ0KKw0KKy8qDQorICogQ29tcHV0ZSB0aGUgZHVy
YXRpb24gKGluIHVzKSBuZWVkZWQgdG8gdHJhbnNtaXQgYGxlbicgYnl0ZXMgYXQgcmF0ZSBg
cmF0ZScuDQorICogVGhlIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUg
b3BlcmF0aW5nIG1vZGUgZGVwZW5kaW5nIG9uIHRoZQ0KKyAqIGdpdmVuIHJhdGUuIGBmbGFn
cycgaW5kaWNhdGVzIHdoZXRoZXIgc2hvcnQgcHJlYW1ibGUgaXMgaW4gdXNlIG9yIG5vdC4N
CisgKi8NCitzdGF0aWMgdWludDE2X3QNCitydW1fdHh0aW1lKGludCBsZW4sIGludCByYXRl
LCB1aW50MzJfdCBmbGFncykNCit7DQorICAgIHVpbnQxNl90IHR4dGltZTsNCisNCisgICAg
aWYgKFJVTV9SQVRFX0lTX09GRE0ocmF0ZSkpIHsNCisgICAgICAgIC8qIElFRUUgU3RkIDgw
Mi4xMWEtMTk5OSwgcHAuIDM3ICovDQorICAgICAgICB0eHRpbWUgPSAoOCArIDQgKiBsZW4g
KyAzICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIHR4dGltZSA9IDE2ICsgNCArIDQg
KiB0eHRpbWUgKyA2Ow0KKyAgICB9IGVsc2Ugew0KKyAgICAgICAgLyogSUVFRSBTdGQgODAy
LjExYi0xOTk5LCBwcC4gMjggKi8NCisgICAgICAgIHR4dGltZSA9ICgxNiAqIGxlbiArIHJh
dGUgLSAxKSAvIHJhdGU7DQorICAgICAgICBpZiAocmF0ZSAhPSAyICYmIChmbGFncyAmIElF
RUU4MDIxMV9GX1NIUFJFQU1CTEUpKQ0KKyAgICAgICAgICAgIHR4dGltZSArPSAgNzIgKyAy
NDsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICB0eHRpbWUgKz0gMTQ0ICsgNDg7DQor
ICAgIH0NCisgICAgcmV0dXJuIHR4dGltZTsNCit9DQorDQorc3RhdGljIHVpbnQ4X3QNCity
dW1fcGxjcF9zaWduYWwoaW50IHJhdGUpDQorew0KKyAgICBzd2l0Y2ggKHJhdGUpIHsNCisg
ICAgLyogQ0NLIHJhdGVzIChyZXR1cm5lZCB2YWx1ZXMgYXJlIGRldmljZS1kZXBlbmRlbnQp
ICovDQorICAgIGNhc2UgMjogICAgICAgIHJldHVybiAweDA7DQorICAgIGNhc2UgNDogICAg
ICAgIHJldHVybiAweDE7DQorICAgIGNhc2UgMTE6ICAgIHJldHVybiAweDI7DQorICAgIGNh
c2UgMjI6ICAgIHJldHVybiAweDM7DQorDQorICAgIC8qIE9GRE0gcmF0ZXMgKGNmIElFRUUg
U3RkIDgwMi4xMWEtMTk5OSwgcHAuIDE0IFRhYmxlIDgwKSAqLw0KKyAgICBjYXNlIDEyOiAg
ICByZXR1cm4gMHhiOw0KKyAgICBjYXNlIDE4OiAgICByZXR1cm4gMHhmOw0KKyAgICBjYXNl
IDI0OiAgICByZXR1cm4gMHhhOw0KKyAgICBjYXNlIDM2OiAgICByZXR1cm4gMHhlOw0KKyAg
ICBjYXNlIDQ4OiAgICByZXR1cm4gMHg5Ow0KKyAgICBjYXNlIDcyOiAgICByZXR1cm4gMHhk
Ow0KKyAgICBjYXNlIDk2OiAgICByZXR1cm4gMHg4Ow0KKyAgICBjYXNlIDEwODogICAgcmV0
dXJuIDB4YzsNCisNCisgICAgLyogdW5zdXBwb3J0ZWQgcmF0ZXMgKHNob3VsZCBub3QgZ2V0
IHRoZXJlKSAqLw0KKyAgICBkZWZhdWx0OiAgICByZXR1cm4gMHhmZjsNCisgICAgfQ0KK30N
CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXR1cF90eF9kZXNjKHN0cnVjdCBydW1fc29mdGMg
KnNjLCBzdHJ1Y3QgcnVtX3R4X2Rlc2MgKmRlc2MsDQorICAgIHVpbnQzMl90IGZsYWdzLCB1
aW50MTZfdCB4ZmxhZ3MsIGludCBsZW4sIGludCByYXRlKQ0KK3sNCisgICAgc3RydWN0IGll
ZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MTZfdCBwbGNwX2xlbmd0
aDsNCisgICAgaW50IHJlbWFpbmRlcjsNCisNCisgICAgZGVzYy0+ZmxhZ3MgPSBodG9sZTMy
KGZsYWdzKTsNCisgICAgZGVzYy0+ZmxhZ3MgfD0gaHRvbGUzMihSVDI1NzNfVFhfVkFMSUQp
Ow0KKyAgICBkZXNjLT5mbGFncyB8PSBodG9sZTMyKGxlbiA8PCAxNik7DQorDQorICAgIGRl
c2MtPnhmbGFncyA9IGh0b2xlMTYoeGZsYWdzKTsNCisNCisgICAgZGVzYy0+d21lID0gaHRv
bGUxNigNCisgICAgICAgIFJUMjU3M19RSUQoMCkgfA0KKyAgICAgICAgUlQyNTczX0FJRlNO
KDIpIHwNCisgICAgICAgIFJUMjU3M19MT0dDV01JTig0KSB8DQorICAgICAgICBSVDI1NzNf
TE9HQ1dNQVgoMTApKTsNCisNCisgICAgLyogc2V0dXAgUExDUCBmaWVsZHMgKi8NCisgICAg
ZGVzYy0+cGxjcF9zaWduYWwgID0gcnVtX3BsY3Bfc2lnbmFsKHJhdGUpOw0KKyAgICBkZXNj
LT5wbGNwX3NlcnZpY2UgPSA0Ow0KKw0KKyAgICBsZW4gKz0gSUVFRTgwMjExX0NSQ19MRU47
DQorICAgIGlmIChSVU1fUkFURV9JU19PRkRNKHJhdGUpKSB7DQorICAgICAgICBkZXNjLT5m
bGFncyB8PSBodG9sZTMyKFJUMjU3M19UWF9PRkRNKTsNCisNCisgICAgICAgIHBsY3BfbGVu
Z3RoID0gbGVuICYgMHhmZmY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9oaSA9IHBs
Y3BfbGVuZ3RoID4+IDY7DQorICAgICAgICBkZXNjLT5wbGNwX2xlbmd0aF9sbyA9IHBsY3Bf
bGVuZ3RoICYgMHgzZjsNCisgICAgfSBlbHNlIHsNCisgICAgICAgIHBsY3BfbGVuZ3RoID0g
KDE2ICogbGVuICsgcmF0ZSAtIDEpIC8gcmF0ZTsNCisgICAgICAgIGlmIChyYXRlID09IDIy
KSB7DQorICAgICAgICAgICAgcmVtYWluZGVyID0gKDE2ICogbGVuKSAlIDIyOw0KKyAgICAg
ICAgICAgIGlmIChyZW1haW5kZXIgIT0gMCAmJiByZW1haW5kZXIgPCA3KQ0KKyAgICAgICAg
ICAgICAgICBkZXNjLT5wbGNwX3NlcnZpY2UgfD0gUlQyNTczX1BMQ1BfTEVOR0VYVDsNCisg
ICAgICAgIH0NCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2hpID0gcGxjcF9sZW5ndGgg
Pj4gODsNCisgICAgICAgIGRlc2MtPnBsY3BfbGVuZ3RoX2xvID0gcGxjcF9sZW5ndGggJiAw
eGZmOw0KKw0KKyAgICAgICAgaWYgKHJhdGUgIT0gMiAmJiAoaWMtPmljX2ZsYWdzICYgSUVF
RTgwMjExX0ZfU0hQUkVBTUJMRSkpDQorICAgICAgICAgICAgZGVzYy0+cGxjcF9zaWduYWwg
fD0gMHgwODsNCisgICAgfQ0KK30NCisNCisjZGVmaW5lIFJVTV9UWF9USU1FT1VUICAgIDUw
MDANCisNCitzdGF0aWMgaW50DQorcnVtX3R4X21ndChzdHJ1Y3QgcnVtX3NvZnRjICpzYywg
c3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisgICAg
c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgcnVt
X3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisgICAg
c3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHVpbnQzMl90IGZsYWdzID0gMDsN
CisgICAgdWludDE2X3QgZHVyOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisgICAgaW50
IHhmZXJsZW4sIHJhdGU7DQorDQorICAgIGRhdGEgPSAmc2MtPnR4X2RhdGFbMF07DQorICAg
IGRlc2MgPSAoc3RydWN0IHJ1bV90eF9kZXNjICopZGF0YS0+YnVmOw0KKw0KKyAgICByYXRl
ID0gSUVFRTgwMjExX0lTX0NIQU5fNUdIWihpYy0+aWNfY3VyY2hhbikgPyAxMiA6IDI7DQor
DQorICAgIGRhdGEtPm0gPSBtMDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgd2gg
PSBtdG9kKG0wLCBzdHJ1Y3QgaWVlZTgwMjExX2ZyYW1lICopOw0KKw0KKyAgICBpZiAoIUlF
RUU4MDIxMV9JU19NVUxUSUNBU1Qod2gtPmlfYWRkcjEpKSB7DQorICAgICAgICBmbGFncyB8
PSBSVDI1NzNfVFhfQUNLOw0KKw0KKyAgICAgICAgZHVyID0gcnVtX3R4dGltZShSVU1fQUNL
X1NJWkUsIHJ1bV9hY2tfcmF0ZShpYywgcmF0ZSksDQorICAgICAgICAgICAgaWMtPmljX2Zs
YWdzKSArIHNjLT5zaWZzOw0KKyAgICAgICAgKih1aW50MTZfdCAqKXdoLT5pX2R1ciA9IGh0
b2xlMTYoZHVyKTsNCisNCisgICAgICAgIC8qIHRlbGwgaGFyZHdhcmUgdG8gc2V0IHRpbWVz
dGFtcCBpbiBwcm9iZSByZXNwb25zZXMgKi8NCisgICAgICAgIGlmICgod2gtPmlfZmNbMF0g
Jg0KKyAgICAgICAgICAgIChJRUVFODAyMTFfRkMwX1RZUEVfTUFTSyB8IElFRUU4MDIxMV9G
QzBfU1VCVFlQRV9NQVNLKSkgPT0NCisgICAgICAgICAgICAoSUVFRTgwMjExX0ZDMF9UWVBF
X01HVCB8IElFRUU4MDIxMV9GQzBfU1VCVFlQRV9QUk9CRV9SRVNQKSkNCisgICAgICAgICAg
ICBmbGFncyB8PSBSVDI1NzNfVFhfVElNRVNUQU1QOw0KKyAgICB9DQorDQorICAgIGlmIChi
cGZfcGVlcnNfcHJlc2VudChzYy0+c2NfZHJ2YnBmKSkgew0KKyAgICAgICAgc3RydWN0IHJ1
bV90eF9yYWRpb3RhcF9oZWFkZXIgKnRhcCA9ICZzYy0+c2NfdHh0YXA7DQorDQorICAgICAg
ICB0YXAtPnd0X2ZsYWdzID0gMDsNCisgICAgICAgIHRhcC0+d3RfcmF0ZSA9IHJhdGU7DQor
ICAgICAgICB0YXAtPnd0X2NoYW5fZnJlcSA9IGh0b2xlMTYoaWMtPmljX2N1cmNoYW4tPmlj
X2ZyZXEpOw0KKyAgICAgICAgdGFwLT53dF9jaGFuX2ZsYWdzID0gaHRvbGUxNihpYy0+aWNf
Y3VyY2hhbi0+aWNfZmxhZ3MpOw0KKyAgICAgICAgdGFwLT53dF9hbnRlbm5hID0gc2MtPnR4
X2FudDsNCisNCisgICAgICAgIGJwZl9tdGFwMihzYy0+c2NfZHJ2YnBmLCB0YXAsIHNjLT5z
Y190eHRhcF9sZW4sIG0wKTsNCisgICAgfQ0KKw0KKyAgICBtX2NvcHlkYXRhKG0wLCAwLCBt
MC0+bV9wa3RoZHIubGVuLCBkYXRhLT5idWYgKyBSVDI1NzNfVFhfREVTQ19TSVpFKTsNCisg
ICAgcnVtX3NldHVwX3R4X2Rlc2Moc2MsIGRlc2MsIGZsYWdzLCAwLCBtMC0+bV9wa3RoZHIu
bGVuLCByYXRlKTsNCisNCisgICAgLyogYWxpZ24gZW5kIG9uIGEgNC1ieXRlcyBib3VuZGFy
eSAqLw0KKyAgICB4ZmVybGVuID0gKFJUMjU3M19UWF9ERVNDX1NJWkUgKyBtMC0+bV9wa3Ro
ZHIubGVuICsgMykgJiB+MzsNCisNCisgICAgLyoNCisgICAgICogTm8gc3BhY2UgbGVmdCBp
biB0aGUgbGFzdCBVUkIgdG8gc3RvcmUgdGhlIGV4dHJhIDQgYnl0ZXMsIGZvcmNlDQorICAg
ICAqIHNlbmRpbmcgb2YgYW5vdGhlciBVUkIuDQorICAgICAqLw0KKyAgICBpZiAoKHhmZXJs
ZW4gJSA2NCkgPT0gMCkNCisgICAgICAgIHhmZXJsZW4gKz0gNDsNCisNCisgICAgRFBSSU5U
Rk4oMTAsICgic2VuZGluZyBtc2cgZnJhbWUgbGVuPSVsZCByYXRlPSVkIHhmZXIgbGVuPSVk
XG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiArIFJUMjU3M19UWF9ERVNDX1NJWkUs
IHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9zZXR1cF94ZmVyKGRhdGEtPnhmZXIs
IHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVmLCB4ZmVybGVuLA0KKyAgICAgICAg
VVNCRF9GT1JDRV9TSE9SVF9YRkVSIHwgVVNCRF9OT19DT1BZLCBSVU1fVFhfVElNRU9VVCwg
cnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2JkX3RyYW5zZmVyKGRhdGEtPnhmZXIp
Ow0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTiAmJiBlcnJvciAh
PSBVU0JEX0lOX1BST0dSRVNTKSB7DQorICAgICAgICBtX2ZyZWVtKG0wKTsNCisJCWRhdGEt
Pm0gPSBOVUxMOw0KKwkJZGF0YS0+bmkgPSBOVUxMOw0KKyAgICAgICAgcmV0dXJuIGVycm9y
Ow0KKyAgICB9DQorDQorICAgIHNjLT50eF9xdWV1ZWQrKzsNCisNCisgICAgcmV0dXJuIDA7
DQorfQ0KKw0KK3N0YXRpYyBpbnQNCitydW1fdHhfZGF0YShzdHJ1Y3QgcnVtX3NvZnRjICpz
Yywgc3RydWN0IG1idWYgKm0wLCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQ0KK3sNCisg
ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3Qg
cnVtX3R4X2Rlc2MgKmRlc2M7DQorICAgIHN0cnVjdCBydW1fdHhfZGF0YSAqZGF0YTsNCisg
ICAgc3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7DQorICAgIHN0cnVjdCBpZWVlODAyMTFf
a2V5ICprOw0KKyAgICB1aW50MzJfdCBmbGFncyA9IDA7DQorICAgIHVpbnQxNl90IGR1cjsN
CisgICAgdXNiZF9zdGF0dXMgZXJyb3I7DQorICAgIGludCB4ZmVybGVuLCByYXRlOw0KKw0K
KyAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7DQorDQorICAg
IGlmIChpYy0+aWNfZml4ZWRfcmF0ZSAhPSBJRUVFODAyMTFfRklYRURfUkFURV9OT05FKQ0K
KyAgICAgICAgcmF0ZSA9IGljLT5pY19ic3MtPm5pX3JhdGVzLnJzX3JhdGVzW2ljLT5pY19m
aXhlZF9yYXRlXTsNCisgICAgZWxzZQ0KKyAgICAgICAgcmF0ZSA9IG5pLT5uaV9yYXRlcy5y
c19yYXRlc1tuaS0+bmlfdHhyYXRlXTsNCisNCisgICAgcmF0ZSAmPSBJRUVFODAyMTFfUkFU
RV9WQUw7DQorDQorICAgIGlmICh3aC0+aV9mY1sxXSAmIElFRUU4MDIxMV9GQzFfV0VQKSB7
DQorICAgICAgICBrID0gaWVlZTgwMjExX2NyeXB0b19lbmNhcChpYywgbmksIG0wKTsNCisg
ICAgICAgIGlmIChrID09IE5VTEwpIHsNCisgICAgICAgICAgICBtX2ZyZWVtKG0wKTsNCisg
ICAgICAgICAgICByZXR1cm4gRU5PQlVGUzsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8q
IHBhY2tldCBoZWFkZXIgbWF5IGhhdmUgbW92ZWQsIHJlc2V0IG91ciBsb2NhbCBwb2ludGVy
ICovDQorICAgICAgICB3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUgKik7
DQorICAgIH0NCisNCisgICAgZGF0YSA9ICZzYy0+dHhfZGF0YVswXTsNCisgICAgZGVzYyA9
IChzdHJ1Y3QgcnVtX3R4X2Rlc2MgKilkYXRhLT5idWY7DQorDQorICAgIGRhdGEtPm0gPSBt
MDsNCisgICAgZGF0YS0+bmkgPSBuaTsNCisNCisgICAgaWYgKCFJRUVFODAyMTFfSVNfTVVM
VElDQVNUKHdoLT5pX2FkZHIxKSkgew0KKyAgICAgICAgZmxhZ3MgfD0gUlQyNTczX1RYX0FD
SzsNCisNCisgICAgICAgIGR1ciA9IHJ1bV90eHRpbWUoUlVNX0FDS19TSVpFLCBydW1fYWNr
X3JhdGUoaWMsIHJhdGUpLA0KKyAgICAgICAgICAgIGljLT5pY19mbGFncykgKyBzYy0+c2lm
czsNCisgICAgICAgICoodWludDE2X3QgKil3aC0+aV9kdXIgPSBodG9sZTE2KGR1cik7DQor
ICAgIH0NCisNCisgICAgaWYgKGJwZl9wZWVyc19wcmVzZW50KHNjLT5zY19kcnZicGYpKSB7
DQorICAgICAgICBzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciAqdGFwID0gJnNjLT5z
Y190eHRhcDsNCisNCisgICAgICAgIHRhcC0+d3RfZmxhZ3MgPSAwOw0KKyAgICAgICAgdGFw
LT53dF9yYXRlID0gcmF0ZTsNCisgICAgICAgIHRhcC0+d3RfY2hhbl9mcmVxID0gaHRvbGUx
NihpYy0+aWNfY3VyY2hhbi0+aWNfZnJlcSk7DQorICAgICAgICB0YXAtPnd0X2NoYW5fZmxh
Z3MgPSBodG9sZTE2KGljLT5pY19jdXJjaGFuLT5pY19mbGFncyk7DQorICAgICAgICB0YXAt
Pnd0X2FudGVubmEgPSBzYy0+dHhfYW50Ow0KKw0KKyAgICAgICAgYnBmX210YXAyKHNjLT5z
Y19kcnZicGYsIHRhcCwgc2MtPnNjX3R4dGFwX2xlbiwgbTApOw0KKyAgICB9DQorDQorICAg
IG1fY29weWRhdGEobTAsIDAsIG0wLT5tX3BrdGhkci5sZW4sIGRhdGEtPmJ1ZiArIFJUMjU3
M19UWF9ERVNDX1NJWkUpOw0KKyAgICBydW1fc2V0dXBfdHhfZGVzYyhzYywgZGVzYywgZmxh
Z3MsIDAsIG0wLT5tX3BrdGhkci5sZW4sIHJhdGUpOw0KKw0KKyAgICAvKiBhbGlnbiBlbmQg
b24gYSA0LWJ5dGVzIGJvdW5kYXJ5ICovDQorICAgIHhmZXJsZW4gPSAoUlQyNTczX1RYX0RF
U0NfU0laRSArIG0wLT5tX3BrdGhkci5sZW4gKyAzKSAmIH4zOw0KKw0KKyAgICAvKg0KKyAg
ICAgKiBObyBzcGFjZSBsZWZ0IGluIHRoZSBsYXN0IFVSQiB0byBzdG9yZSB0aGUgZXh0cmEg
NCBieXRlcywgZm9yY2UNCisgICAgICogc2VuZGluZyBvZiBhbm90aGVyIFVSQi4NCisgICAg
ICovDQorICAgIGlmICgoeGZlcmxlbiAlIDY0KSA9PSAwKQ0KKyAgICAgICAgeGZlcmxlbiAr
PSA0Ow0KKw0KKyAgICBEUFJJTlRGTigxMCwgKCJzZW5kaW5nIGRhdGEgZnJhbWUgbGVuPSVs
ZCByYXRlPSVkIHhmZXIgbGVuPSVkXG4iLA0KKyAgICAgICAgbTAtPm1fcGt0aGRyLmxlbiAr
IFJUMjU3M19UWF9ERVNDX1NJWkUsIHJhdGUsIHhmZXJsZW4pKTsNCisNCisgICAgdXNiZF9z
ZXR1cF94ZmVyKGRhdGEtPnhmZXIsIHNjLT5zY190eF9waXBlaCwgZGF0YSwgZGF0YS0+YnVm
LCANCisJCXhmZXJsZW4sIFVTQkRfRk9SQ0VfU0hPUlRfWEZFUiB8IFVTQkRfTk9fQ09QWSwg
UlVNX1RYX1RJTUVPVVQsIA0KKwkJcnVtX3R4ZW9mKTsNCisNCisgICAgZXJyb3IgPSB1c2Jk
X3RyYW5zZmVyKGRhdGEtPnhmZXIpOw0KKyAgICBpZiAoZXJyb3IgIT0gVVNCRF9OT1JNQUxf
Q09NUExFVElPTiAmJiBlcnJvciAhPSBVU0JEX0lOX1BST0dSRVNTKXsNCisgICAgICAgIHJl
dHVybiBlcnJvcjsNCisJfQ0KKw0KKyAgICBzYy0+dHhfcXVldWVkKys7DQorCQkNCisgICAg
cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3N0YXJ0KHN0cnVjdCBpZm5l
dCAqaWZwKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRj
Ow0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0
cnVjdCBtYnVmICptMDsNCisgICAgc3RydWN0IGV0aGVyX2hlYWRlciAqZWg7DQorICAgIHN0
cnVjdCBpZWVlODAyMTFfbm9kZSAqbmk7DQorCXN0YXRpYyBpbnQgZmJ1c3kgPSAwOw0KKw0K
KwlpZiAoZmJ1c3kpIHJldHVybjsNCisNCisJZmJ1c3kgPSAxOw0KKw0KKyAgICBmb3IgKDs7
KSB7DQorICAgICAgICBJRl9QT0xMKCZpYy0+aWNfbWd0cSwgbTApOw0KKyAgICAgICAgaWYg
KG0wICE9IE5VTEwpIHsNCisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1
NzNfVFhfTElTVF9DT1VOVCkgew0KKyAgICAgICAgICAgICAgICBpZnAtPmlmX2Rydl9mbGFn
cyB8PSBJRkZfRFJWX09BQ1RJVkU7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg
ICAgICAgIH0NCisgICAgICAgICAgICBJRl9ERVFVRVVFKCZpYy0+aWNfbWd0cSwgbTApOw0K
Kw0KKyAgICAgICAgICAgIG5pID0gKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqKW0wLT5tX3Br
dGhkci5yY3ZpZjsNCisgICAgICAgICAgICBtMC0+bV9wa3RoZHIucmN2aWYgPSBOVUxMOw0K
Kw0KKyAgICAgICAgICAgIGlmIChicGZfcGVlcnNfcHJlc2VudChpYy0+aWNfcmF3YnBmKSkN
CisgICAgICAgICAgICAgICAgYnBmX210YXAoaWMtPmljX3Jhd2JwZiwgbTApOw0KKw0KKyAg
ICAgICAgICAgIGlmIChydW1fdHhfbWd0KHNjLCBtMCwgbmkpICE9IDApDQorICAgICAgICAg
ICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICBpZiAo
aWMtPmljX3N0YXRlICE9IElFRUU4MDIxMV9TX1JVTikNCisgICAgICAgICAgICAgICAgYnJl
YWs7DQorICAgICAgICAgICAgSUZRX0RSVl9ERVFVRVVFKCZpZnAtPmlmX3NuZCwgbTApOw0K
KyAgICAgICAgICAgIGlmIChtMCA9PSBOVUxMKQ0KKyAgICAgICAgICAgICAgICBicmVhazsN
CisgICAgICAgICAgICBpZiAoc2MtPnR4X3F1ZXVlZCA+PSBSVDI1NzNfVFhfTElTVF9DT1VO
VCkgew0KKyAgICAgICAgICAgIAlJRlFfRFJWX1BSRVBFTkQoJmlmcC0+aWZfc25kLCBtMCk7
DQorICAgICAgICAgICAgICAgIGlmcC0+aWZfZHJ2X2ZsYWdzIHw9IElGRl9EUlZfT0FDVElW
RTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAg
ICAgICAgIGlmIChtMC0+bV9sZW4gPCBzaXplb2Yoc3RydWN0IGV0aGVyX2hlYWRlcikgJiYN
CisgICAgICAgICAgICAgICAgIShtMCA9IG1fcHVsbHVwKG0wLCBzaXplb2Yoc3RydWN0IGV0
aGVyX2hlYWRlcikpKSkNCisgICAgICAgICAgICAgICAgY29udGludWU7DQorDQorICAgICAg
ICAgICAgZWggPSBtdG9kKG0wLCBzdHJ1Y3QgZXRoZXJfaGVhZGVyICopOw0KKyAgICAgICAg
ICAgIG5pID0gaWVlZTgwMjExX2ZpbmRfdHhub2RlKGljLCBlaC0+ZXRoZXJfZGhvc3QpOw0K
KyAgICAgICAgICAgIGlmIChuaSA9PSBOVUxMKSB7DQorICAgICAgICAgICAgICAgIG1fZnJl
ZW0obTApOw0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsNCisgICAgICAgICAgICB9DQor
ICAgICAgICAgICAgQlBGX01UQVAoaWZwLCBtMCk7DQorDQorICAgICAgICAgICAgbTAgPSBp
ZWVlODAyMTFfZW5jYXAoaWMsIG0wLCBuaSk7DQorICAgICAgICAgICAgaWYgKG0wID09IE5V
TEwpIHsNCisgICAgICAgICAgICAgICAgaWVlZTgwMjExX2ZyZWVfbm9kZShuaSk7DQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAg
ICBpZiAoYnBmX3BlZXJzX3ByZXNlbnQoaWMtPmljX3Jhd2JwZikpDQorICAgICAgICAgICAg
ICAgIGJwZl9tdGFwKGljLT5pY19yYXdicGYsIG0wKTsNCisNCisgICAgICAgICAgICBpZiAo
cnVtX3R4X2RhdGEoc2MsIG0wLCBuaSkgIT0gMCkgew0KKyAgICAgICAgICAgICAgICBpZWVl
ODAyMTFfZnJlZV9ub2RlKG5pKTsNCisgICAgICAgICAgICAgICAgaWZwLT5pZl9vZXJyb3Jz
Kys7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0NCisgICAgICAg
IH0NCisNCisgICAgICAgIHNjLT5zY190eF90aW1lciA9IDU7DQorICAgICAgICBpZnAtPmlm
X3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKwlmYnVzeSA9IDA7DQorDQorfQ0KKw0KK3N0YXRp
YyB2b2lkDQorcnVtX3dhdGNoZG9nKHN0cnVjdCBpZm5ldCAqaWZwKQ0KK3sNCisgICAgc3Ry
dWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgw
MjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorDQorICAgIFJVTV9MT0NLKHNjKTsNCisNCisg
ICAgaWZwLT5pZl90aW1lciA9IDA7DQorDQorICAgIGlmIChzYy0+c2NfdHhfdGltZXIgPiAw
KSB7DQorICAgICAgICBpZiAoLS1zYy0+c2NfdHhfdGltZXIgPT0gMCkgew0KKyAgICAgICAg
ICAgIHByaW50ZigiJXM6IGRldmljZSB0aW1lb3V0XG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0
KHNjLT5zY19kZXYpKTsNCisgICAgICAgICAgICAvKnJ1bV9pbml0KGlmcCk7IFhYWCBuZWVk
cyBhIHByb2Nlc3MgY29udGV4dCEgKi8NCisgICAgICAgICAgICBpZnAtPmlmX29lcnJvcnMr
KzsNCisgICAgCSAgICBSVU1fVU5MT0NLKHNjKTsNCisgICAgICAgICAgICByZXR1cm47DQor
ICAgICAgICB9DQorICAgICAgICBpZnAtPmlmX3RpbWVyID0gMTsNCisgICAgfQ0KKw0KKyAg
ICBpZWVlODAyMTFfd2F0Y2hkb2coaWMpOw0KKw0KKyAgICBSVU1fVU5MT0NLKHNjKTsNCit9
DQorDQorc3RhdGljIGludA0KK3J1bV9pb2N0bChzdHJ1Y3QgaWZuZXQgKmlmcCwgdV9sb25n
IGNtZCwgY2FkZHJfdCBkYXRhKQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBp
ZnAtPmlmX3NvZnRjOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
aWM7DQorICAgIGludCBlcnJvciA9IDA7DQorDQorICAgIHN3aXRjaCAoY21kKSB7DQorICAg
IGNhc2UgU0lPQ1NJRkZMQUdTOg0KKyAgICAgICAgaWYgKGlmcC0+aWZfZmxhZ3MgJiBJRkZf
VVApIHsNCisgICAgICAgICAgICBpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JV
Tk5JTkcpew0KKyAgICAJCQlSVU1fTE9DSyhzYyk7DQorICAgICAgICAgICAgICAgIHJ1bV91
cGRhdGVfcHJvbWlzYyhzYyk7DQorICAgIAkJCVJVTV9VTkxPQ0soc2MpOw0KKyAgICAgICAg
ICAgIH0gZWxzZSB7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg
cnVtX2luaXQoc2MpOw0KKyAgICAJCQlSVU1fVU5MT0NLKHNjKTsNCisJCQl9DQorICAgICAg
ICB9IGVsc2Ugew0KKyAgICAgICAgICAgIGlmIChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9E
UlZfUlVOTklORyl7DQorICAgIAkJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgICAgICAgICAg
cnVtX3N0b3AoaWZwKTsNCisgICAgCQkJUlVNX1VOTE9DSyhzYyk7DQorCQkJfQ0KKyAgICAg
ICAgfQ0KKyAgICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgICBlcnJv
ciA9IGllZWU4MDIxMV9pb2N0bChpYywgY21kLCBkYXRhKTsNCisgICAgfQ0KKw0KKyAgICBp
ZiAoZXJyb3IgPT0gRU5FVFJFU0VUKSB7DQorCQlpZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZf
VVApICYmDQorICAgICAgICAgICAgCShpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVO
TklORykgJiYNCisJCQkJKGljLT5pY19yb2FtaW5nICE9IElFRUU4MDIxMV9ST0FNSU5HX01B
TlVBTCkpew0KKyAgICAJCVJVTV9MT0NLKHNjKTsNCisgICAgICAgIAlydW1faW5pdChzYyk7
DQorICAgIAkJUlVNX1VOTE9DSyhzYyk7DQorCQl9DQorICAgICAgICBlcnJvciA9IDA7DQor
ICAgIH0NCisNCisgICAgcmV0dXJuIGVycm9yOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1
bV9lZXByb21fcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgYWRkciwgdm9p
ZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0X3QgcmVxOw0K
KyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBV
VF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJlcS5iUmVxdWVzdCA9IFJUMjU3M19SRUFE
X0VFUFJPTTsNCisgICAgVVNFVFcocmVxLndWYWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53
SW5kZXgsIGFkZHIpOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgbGVuKTsNCisNCisgICAg
ZXJyb3IgPSB1c2JkX2RvX3JlcXVlc3Qoc2MtPnNjX3VkZXYsICZyZXEsIGJ1Zik7DQorICAg
IGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBub3QgcmVh
ZCBFRVBST006ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2Mt
PnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgIH0NCit9DQorDQorc3RhdGlj
IHVpbnQzMl90DQorcnVtX3JlYWQoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl
ZykNCit7DQorICAgIHVpbnQzMl90IHZhbDsNCisNCisgICAgcnVtX3JlYWRfbXVsdGkoc2Ms
IHJlZywgJnZhbCwgc2l6ZW9mIHZhbCk7DQorDQorICAgIHJldHVybiBsZTMydG9oKHZhbCk7
DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0
YyAqc2MsIHVpbnQxNl90IHJlZywgdm9pZCAqYnVmLCBpbnQgbGVuKQ0KK3sNCisgICAgdXNi
X2RldmljZV9yZXF1ZXN0X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisg
ICAgcmVxLmJtUmVxdWVzdFR5cGUgPSBVVF9SRUFEX1ZFTkRPUl9ERVZJQ0U7DQorICAgIHJl
cS5iUmVxdWVzdCA9IFJUMjU3M19SRUFEX01VTFRJX01BQzsNCisgICAgVVNFVFcocmVxLndW
YWx1ZSwgMCk7DQorICAgIFVTRVRXKHJlcS53SW5kZXgsIHJlZyk7DQorICAgIFVTRVRXKHJl
cS53TGVuZ3RoLCBsZW4pOw0KKw0KKyAgICBlcnJvciA9IHVzYmRfZG9fcmVxdWVzdChzYy0+
c2NfdWRldiwgJnJlcSwgYnVmKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAg
IHByaW50ZigiJXM6IGNvdWxkIG5vdCBtdWx0aSByZWFkIE1BQyByZWdpc3RlcjogJXNcbiIs
DQorICAgICAgICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9l
cnJzdHIoZXJyb3IpKTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV93cml0
ZShzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDE2X3QgcmVnLCB1aW50MzJfdCB2YWwpDQor
ew0KKyAgICB1aW50MzJfdCB0bXAgPSBodG9sZTMyKHZhbCk7DQorDQorICAgIHJ1bV93cml0
ZV9tdWx0aShzYywgcmVnLCAmdG1wLCBzaXplb2YgdG1wKTsNCit9DQorDQorc3RhdGljIHZv
aWQNCitydW1fd3JpdGVfbXVsdGkoc3RydWN0IHJ1bV9zb2Z0YyAqc2MsIHVpbnQxNl90IHJl
Zywgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisgICAgdXNiX2RldmljZV9yZXF1ZXN0
X3QgcmVxOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvcjsNCisNCisgICAgcmVxLmJtUmVxdWVz
dFR5cGUgPSBVVF9XUklURV9WRU5ET1JfREVWSUNFOw0KKyAgICByZXEuYlJlcXVlc3QgPSBS
VDI1NzNfV1JJVEVfTVVMVElfTUFDOw0KKyAgICBVU0VUVyhyZXEud1ZhbHVlLCAwKTsNCisg
ICAgVVNFVFcocmVxLndJbmRleCwgcmVnKTsNCisgICAgVVNFVFcocmVxLndMZW5ndGgsIGxl
bik7DQorDQorICAgIGVycm9yID0gdXNiZF9kb19yZXF1ZXN0KHNjLT5zY191ZGV2LCAmcmVx
LCBidWYpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAgICAgcHJpbnRmKCIlczog
Y291bGQgbm90IG11bHRpIHdyaXRlIE1BQyByZWdpc3RlcjogJXNcbiIsDQorICAgICAgICAg
ICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSwgdXNiZF9lcnJzdHIoZXJyb3Ip
KTsNCisgICAgfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9iYnBfd3JpdGUoc3RydWN0
IHJ1bV9zb2Z0YyAqc2MsIHVpbnQ4X3QgcmVnLCB1aW50OF90IHZhbCkNCit7DQorICAgIHVp
bnQzMl90IHRtcDsNCisgICAgaW50IG50cmllczsNCisNCisgICAgZm9yIChudHJpZXMgPSAw
OyBudHJpZXMgPCA1OyBudHJpZXMrKykgew0KKyAgICAgICAgaWYgKCEocnVtX3JlYWQoc2Ms
IFJUMjU3M19QSFlfQ1NSMykgJiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIGJy
ZWFrOw0KKyAgICB9DQorICAgIGlmIChudHJpZXMgPT0gNSkgew0KKyAgICAgICAgcHJpbnRm
KCIlczogY291bGQgbm90IHdyaXRlIHRvIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz
Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g
UlQyNTczX0JCUF9CVVNZIHwgKHJlZyAmIDB4N2YpIDw8IDggfCB2YWw7DQorICAgIHJ1bV93
cml0ZShzYywgUlQyNTczX1BIWV9DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdWludDhf
dA0KK3J1bV9iYnBfcmVhZChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgdWludDhfdCByZWcpDQor
ew0KKyAgICB1aW50MzJfdCB2YWw7DQorICAgIGludCBudHJpZXM7DQorDQorICAgIGZvciAo
bnRyaWVzID0gMDsgbnRyaWVzIDwgNTsgbnRyaWVzKyspIHsNCisgICAgICAgIGlmICghKHJ1
bV9yZWFkKHNjLCBSVDI1NzNfUEhZX0NTUjMpICYgUlQyNTczX0JCUF9CVVNZKSkNCisgICAg
ICAgICAgICBicmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAg
ICAgIHByaW50ZigiJXM6IGNvdWxkIG5vdCByZWFkIEJCUFxuIiwgZGV2aWNlX2dldF9uYW1l
dW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAg
ICB2YWwgPSBSVDI1NzNfQkJQX0JVU1kgfCBSVDI1NzNfQkJQX1JFQUQgfCByZWcgPDwgODsN
CisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfUEhZX0NTUjMsIHZhbCk7DQorDQorICAgIGZv
ciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwOyBudHJpZXMrKykgew0KKyAgICAgICAgdmFs
ID0gcnVtX3JlYWQoc2MsIFJUMjU3M19QSFlfQ1NSMyk7DQorICAgICAgICBpZiAoISh2YWwg
JiBSVDI1NzNfQkJQX0JVU1kpKQ0KKyAgICAgICAgICAgIHJldHVybiB2YWwgJiAweGZmOw0K
KyAgICAgICAgREVMQVkoMSk7DQorICAgIH0NCisNCisgICAgcHJpbnRmKCIlczogY291bGQg
bm90IHJlYWQgQkJQXG4iLCBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisg
ICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3JmX3dyaXRlKHN0cnVj
dCBydW1fc29mdGMgKnNjLCB1aW50OF90IHJlZywgdWludDMyX3QgdmFsKQ0KK3sNCisgICAg
dWludDMyX3QgdG1wOw0KKyAgICBpbnQgbnRyaWVzOw0KKw0KKyAgICBmb3IgKG50cmllcyA9
IDA7IG50cmllcyA8IDU7IG50cmllcysrKSB7DQorICAgICAgICBpZiAoIShydW1fcmVhZChz
YywgUlQyNTczX1BIWV9DU1I0KSAmIFJUMjU3M19SRl9CVVNZKSkNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDUpIHsNCisgICAgICAgIHByaW50
ZigiJXM6IGNvdWxkIG5vdCB3cml0ZSB0byBSRlxuIiwgZGV2aWNlX2dldF9uYW1ldW5pdChz
Yy0+c2NfZGV2KSk7DQorICAgICAgICByZXR1cm47DQorICAgIH0NCisNCisgICAgdG1wID0g
UlQyNTczX1JGX0JVU1kgfCBSVDI1NzNfUkZfMjBCSVQgfCAodmFsICYgMHhmZmZmZikgPDwg
MiB8DQorICAgICAgICAocmVnICYgMyk7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1BI
WV9DU1I0LCB0bXApOw0KKw0KKyAgICAvKiByZW1lbWJlciBsYXN0IHdyaXR0ZW4gdmFsdWUg
aW4gc2MgKi8NCisgICAgc2MtPnJmX3JlZ3NbcmVnXSA9IHZhbDsNCisNCisgICAgRFBSSU5U
Rk4oMTUsICgiUkYgUlsldV0gPC0gMHglMDV4XG4iLCByZWcgJiAzLCB2YWwgJiAweGZmZmZm
KSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorcnVtX3NlbGVjdF9hbnRlbm5hKHN0cnVjdCBy
dW1fc29mdGMgKnNjKQ0KK3sNCisgICAgdWludDhfdCBiYnA0LCBiYnA3NzsNCisgICAgdWlu
dDMyX3QgdG1wOw0KKw0KKyAgICBiYnA0ICA9IHJ1bV9iYnBfcmVhZChzYywgNCk7DQorICAg
IGJicDc3ID0gcnVtX2JicF9yZWFkKHNjLCA3Nyk7DQorDQorICAgIC8qIFRCRCAqLw0KKw0K
KyAgICAvKiBtYWtlIHN1cmUgUnggaXMgZGlzYWJsZWQgYmVmb3JlIHN3aXRjaGluZyBhbnRl
bm5hICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKTsNCisg
ICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1NzNfRElTQUJM
RV9SWCk7DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsICA0LCBiYnA0KTsNCisgICAgcnVt
X2JicF93cml0ZShzYywgNzcsIGJicDc3KTsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1
NzNfVFhSWF9DU1IwLCB0bXApOw0KK30NCisNCisvKg0KKyAqIEVuYWJsZSBtdWx0aS1yYXRl
IHJldHJpZXMgZm9yIGZyYW1lcyBzZW50IGF0IE9GRE0gcmF0ZXMuDQorICogSW4gODAyLjEx
Yi9nIG1vZGUsIGFsbG93IGZhbGxiYWNrIHRvIENDSyByYXRlcy4NCisgKi8NCitzdGF0aWMg
dm9pZA0KK3J1bV9lbmFibGVfbXJyKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisgICAg
c3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50MzJfdCB0
bXA7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I0KTsNCisN
CisgICAgdG1wICY9IH5SVDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgaWYgKCFJRUVF
ODAyMTFfSVNfQ0hBTl81R0haKGljLT5pY19jdXJjaGFuKSkNCisgICAgICAgIHRtcCB8PSBS
VDI1NzNfTVJSX0NDS19GQUxMQkFDSzsNCisgICAgdG1wIHw9IFJUMjU3M19NUlJfRU5BQkxF
RDsNCisNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I0LCB0bXApOw0KK30N
CisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRfdHhwcmVhbWJsZShzdHJ1Y3QgcnVtX3NvZnRj
ICpzYykNCit7DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gcnVtX3JlYWQo
c2MsIFJUMjU3M19UWFJYX0NTUjQpOw0KKw0KKyAgICB0bXAgJj0gflJUMjU3M19TSE9SVF9Q
UkVBTUJMRTsNCisgICAgaWYgKHNjLT5zY19pYy5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NI
UFJFQU1CTEUpDQorICAgICAgICB0bXAgfD0gUlQyNTczX1NIT1JUX1BSRUFNQkxFOw0KKw0K
KyAgICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjQsIHRtcCk7DQorfQ0KKw0KK3N0
YXRpYyB2b2lkDQorcnVtX3NldF9iYXNpY3JhdGVzKHN0cnVjdCBydW1fc29mdGMgKnNjKQ0K
K3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKw0KKyAg
ICAvKiB1cGRhdGUgYmFzaWMgcmF0ZSBzZXQgKi8NCisgICAgaWYgKGljLT5pY19jdXJtb2Rl
ID09IElFRUU4MDIxMV9NT0RFXzExQikgew0KKyAgICAgICAgLyogMTFiIGJhc2ljIHJhdGVz
OiAxLCAyTWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1
LCAweDMpOw0KKyAgICB9IGVsc2UgaWYgKElFRUU4MDIxMV9JU19DSEFOXzVHSFooaWMtPmlj
X2Jzcy0+bmlfY2hhbikpIHsNCisgICAgICAgIC8qIDExYSBiYXNpYyByYXRlczogNiwgMTIs
IDI0TWJwcyAqLw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1I1LCAw
eDE1MCk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICAvKiAxMWcgYmFzaWMgcmF0ZXM6IDEs
IDIsIDUuNSwgMTEsIDYsIDEyLCAyNE1icHMgKi8NCisgICAgICAgIHJ1bV93cml0ZShzYywg
UlQyNTczX1RYUlhfQ1NSNSwgMHgxNWYpOw0KKyAgICB9DQorfQ0KKw0KKy8qDQorICogUmVw
cm9ncmFtIE1BQy9CQlAgdG8gc3dpdGNoIHRvIGEgbmV3IGJhbmQuICBWYWx1ZXMgdGFrZW4g
ZnJvbSB0aGUgcmVmZXJlbmNlDQorICogZHJpdmVyLg0KKyAqLw0KK3N0YXRpYyB2b2lkDQor
cnVtX3NlbGVjdF9iYW5kKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjEx
X2NoYW5uZWwgKmMpDQorew0KKyAgICB1aW50OF90IGJicDE3LCBiYnAzNSwgYmJwOTYsIGJi
cDk3LCBiYnA5OCwgYmJwMTA0Ow0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIC8qIHVw
ZGF0ZSBhbGwgQkJQIHJlZ2lzdGVycyB0aGF0IGRlcGVuZCBvbiB0aGUgYmFuZCAqLw0KKyAg
ICBiYnAxNyA9IDB4MjA7IGJicDk2ID0gMHg0ODsgYmJwMTA0ID0gMHgyYzsNCisgICAgYmJw
MzUgPSAweDUwOyBiYnA5NyA9IDB4NDg7IGJicDk4ICA9IDB4NDg7DQorICAgIGlmIChJRUVF
ODAyMTFfSVNfQ0hBTl81R0haKGMpKSB7DQorICAgICAgICBiYnAxNyArPSAweDA4OyBiYnA5
NiArPSAweDEwOyBiYnAxMDQgKz0gMHgwYzsNCisgICAgICAgIGJicDM1ICs9IDB4MTA7IGJi
cDk3ICs9IDB4MTA7IGJicDk4ICArPSAweDEwOw0KKyAgICB9DQorICAgIGlmICgoSUVFRTgw
MjExX0lTX0NIQU5fMkdIWihjKSAmJiBzYy0+ZXh0XzJnaHpfbG5hKSB8fA0KKyAgICAgICAg
KElFRUU4MDIxMV9JU19DSEFOXzVHSFooYykgJiYgc2MtPmV4dF81Z2h6X2xuYSkpIHsNCisg
ICAgICAgIGJicDE3ICs9IDB4MTA7IGJicDk2ICs9IDB4MTA7IGJicDEwNCArPSAweDEwOw0K
KyAgICB9DQorDQorICAgIHNjLT5iYnAxNyA9IGJicDE3Ow0KKyAgICBydW1fYmJwX3dyaXRl
KHNjLCAgMTcsIGJicDE3KTsNCisgICAgcnVtX2JicF93cml0ZShzYywgIDk2LCBiYnA5Nik7
DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDEwNCwgYmJwMTA0KTsNCisNCisgICAgaWYgKChJ
RUVFODAyMTFfSVNfQ0hBTl8yR0haKGMpICYmIHNjLT5leHRfMmdoel9sbmEpIHx8DQorICAg
ICAgICAoSUVFRTgwMjExX0lTX0NIQU5fNUdIWihjKSAmJiBzYy0+ZXh0XzVnaHpfbG5hKSkg
ew0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgNzUsIDB4ODApOw0KKyAgICAgICAgcnVt
X2JicF93cml0ZShzYywgODYsIDB4ODApOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywg
ODgsIDB4ODApOw0KKyAgICB9DQorDQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDM1LCBiYnAz
NSk7DQorICAgIHJ1bV9iYnBfd3JpdGUoc2MsIDk3LCBiYnA5Nyk7DQorICAgIHJ1bV9iYnBf
d3JpdGUoc2MsIDk4LCBiYnA5OCk7DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1
NzNfUEhZX0NTUjApOw0KKyAgICB0bXAgJj0gfihSVDI1NzNfUEFfUEVfMkdIWiB8IFJUMjU3
M19QQV9QRV81R0haKTsNCisgICAgaWYgKElFRUU4MDIxMV9JU19DSEFOXzJHSFooYykpDQor
ICAgICAgICB0bXAgfD0gUlQyNTczX1BBX1BFXzJHSFo7DQorICAgIGVsc2UNCisgICAgICAg
IHRtcCB8PSBSVDI1NzNfUEFfUEVfNUdIWjsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf
UEhZX0NTUjAsIHRtcCk7DQorDQorICAgIC8qIDgwMi4xMWEgdXNlcyBhIDE2IG1pY3Jvc2Vj
b25kcyBzaG9ydCBpbnRlcmZyYW1lIHNwYWNlICovDQorICAgIHNjLT5zaWZzID0gSUVFRTgw
MjExX0lTX0NIQU5fNUdIWihjKSA/IDE2IDogMTA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQor
cnVtX3NldF9jaGFuKHN0cnVjdCBydW1fc29mdGMgKnNjLCBzdHJ1Y3QgaWVlZTgwMjExX2No
YW5uZWwgKmMpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
aWM7DQorICAgIGNvbnN0IHN0cnVjdCByZnByb2cgKnJmcHJvZzsNCisgICAgdWludDhfdCBi
YnAzLCBiYnA5NCA9IFJUMjU3M19CQlBSOTRfREVGQVVMVDsNCisgICAgaW50OF90IHBvd2Vy
Ow0KKyAgICB1X2ludCBpLCBjaGFuOw0KKw0KKyAgICBjaGFuID0gaWVlZTgwMjExX2NoYW4y
aWVlZShpYywgYyk7DQorICAgIGlmIChjaGFuID09IDAgfHwgY2hhbiA9PSBJRUVFODAyMTFf
Q0hBTl9BTlkpDQorICAgICAgICByZXR1cm47DQorDQorICAgIC8qIHNlbGVjdCB0aGUgYXBw
cm9wcmlhdGUgUkYgc2V0dGluZ3MgYmFzZWQgb24gd2hhdCBFRVBST00gc2F5cyAqLw0KKyAg
ICByZnByb2cgPSAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIyNSB8fA0KKyAgICAgICAg
ICBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KSA/IHJ1bV9yZjUyMjUgOiBydW1fcmY1
MjI2Ow0KKw0KKyAgICAvKiBmaW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBjaGFubmVsICh3
ZSBrbm93IGl0IGV4aXN0cykgKi8NCisgICAgZm9yIChpID0gMDsgcmZwcm9nW2ldLmNoYW4g
IT0gY2hhbjsgaSsrKTsNCisNCisgICAgcG93ZXIgPSBzYy0+dHhwb3dbaV07DQorICAgIGlm
IChwb3dlciA8IDApIHsNCisgICAgICAgIGJicDk0ICs9IHBvd2VyOw0KKyAgICAgICAgcG93
ZXIgPSAwOw0KKyAgICB9IGVsc2UgaWYgKHBvd2VyID4gMzEpIHsNCisgICAgICAgIGJicDk0
ICs9IHBvd2VyIC0gMzE7DQorICAgICAgICBwb3dlciA9IDMxOw0KKyAgICB9DQorDQorICAg
IC8qDQorICAgICAqIElmIHdlIGFyZSBzd2l0Y2hpbmcgZnJvbSB0aGUgMkdIeiBiYW5kIHRv
IHRoZSA1R0h6IGJhbmQgb3INCisgICAgICogdmljZS12ZXJzYSwgQkJQIHJlZ2lzdGVycyBu
ZWVkIHRvIGJlIHJlcHJvZ3JhbW1lZC4NCisgICAgICovDQorICAgIGlmIChjLT5pY19mbGFn
cyAhPSBpYy0+aWNfY3VyY2hhbi0+aWNfZmxhZ3MpIHsNCisgICAgICAgIHJ1bV9zZWxlY3Rf
YmFuZChzYywgYyk7DQorICAgICAgICBydW1fc2VsZWN0X2FudGVubmEoc2MpOw0KKyAgICB9
DQorICAgIGljLT5pY19jdXJjaGFuID0gYzsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBS
VDI1NzNfUkYxLCByZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3
M19SRjIsIHJmcHJvZ1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JG
MywgcmZwcm9nW2ldLnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywg
UlQyNTczX1JGNCwgcmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAg
IHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMSwgcmZwcm9nW2ldLnIxKTsNCisgICAgcnVt
X3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYyLCByZnByb2dbaV0ucjIpOw0KKyAgICBydW1fcmZf
d3JpdGUoc2MsIFJUMjU3M19SRjMsIHJmcHJvZ1tpXS5yMyB8IHBvd2VyIDw8IDcgfCAxKTsN
CisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkY0LCByZnByb2dbaV0ucjQgfCBzYy0+
cmZmcmVxIDw8IDEwKTsNCisNCisgICAgcnVtX3JmX3dyaXRlKHNjLCBSVDI1NzNfUkYxLCBy
ZnByb2dbaV0ucjEpOw0KKyAgICBydW1fcmZfd3JpdGUoc2MsIFJUMjU3M19SRjIsIHJmcHJv
Z1tpXS5yMik7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGMywgcmZwcm9nW2ld
LnIzIHwgcG93ZXIgPDwgNyk7DQorICAgIHJ1bV9yZl93cml0ZShzYywgUlQyNTczX1JGNCwg
cmZwcm9nW2ldLnI0IHwgc2MtPnJmZnJlcSA8PCAxMCk7DQorDQorICAgIERFTEFZKDEwKTsN
CisNCisgICAgLyogZW5hYmxlIHNtYXJ0IG1vZGUgZm9yIE1JTU8tY2FwYWJsZSBSRnMgKi8N
CisgICAgYmJwMyA9IHJ1bV9iYnBfcmVhZChzYywgMyk7DQorDQorICAgIGJicDMgJj0gflJU
MjU3M19TTUFSVF9NT0RFOw0KKyAgICBpZiAoc2MtPnJmX3JldiA9PSBSVDI1NzNfUkZfNTIy
NSB8fCBzYy0+cmZfcmV2ID09IFJUMjU3M19SRl8yNTI3KQ0KKyAgICAgICAgYmJwMyB8PSBS
VDI1NzNfU01BUlRfTU9ERTsNCisNCisgICAgcnVtX2JicF93cml0ZShzYywgMywgYmJwMyk7
DQorDQorICAgIGlmIChiYnA5NCAhPSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQpDQorICAgICAg
ICBydW1fYmJwX3dyaXRlKHNjLCA5NCwgYmJwOTQpOw0KK30NCisNCisvKg0KKyAqIEVuYWJs
ZSBUU0Ygc3luY2hyb25pemF0aW9uIGFuZCB0ZWxsIGgvdyB0byBzdGFydCBzZW5kaW5nIGJl
YWNvbnMgZm9yIElCU1MNCisgKiBhbmQgSG9zdEFQIG9wZXJhdGluZyBtb2Rlcy4NCisgKi8N
CitzdGF0aWMgdm9pZA0KK3J1bV9lbmFibGVfdHNmX3N5bmMoc3RydWN0IHJ1bV9zb2Z0YyAq
c2MpDQorew0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQor
ICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgaWYgKGljLT5pY19vcG1vZGUgIT0gSUVFRTgw
MjExX01fU1RBKSB7DQorICAgICAgICAvKg0KKyAgICAgICAgICogQ2hhbmdlIGRlZmF1bHQg
MTZtcyBUQlRUIGFkanVzdG1lbnQgdG8gOG1zLg0KKyAgICAgICAgICogTXVzdCBiZSBkb25l
IGJlZm9yZSBlbmFibGluZyBiZWFjb24gZ2VuZXJhdGlvbi4NCisgICAgICAgICAqLw0KKyAg
ICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IxMCwgMSA8PCAxMiB8IDgpOw0K
KyAgICB9DQorDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1I5KSAm
IDB4ZmYwMDAwMDA7DQorDQorICAgIC8qIHNldCBiZWFjb24gaW50ZXJ2YWwgKGluIDEvMTZt
cyB1bml0KSAqLw0KKyAgICB0bXAgfD0gaWMtPmljX2Jzcy0+bmlfaW50dmFsICogMTY7DQor
DQorICAgIHRtcCB8PSBSVDI1NzNfVFNGX1RJQ0tJTkcgfCBSVDI1NzNfRU5BQkxFX1RCVFQ7
DQorICAgIGlmIChpYy0+aWNfb3Btb2RlID09IElFRUU4MDIxMV9NX1NUQSkNCisgICAgICAg
IHRtcCB8PSBSVDI1NzNfVFNGX01PREUoMSk7DQorICAgIGVsc2UNCisgICAgICAgIHRtcCB8
PSBSVDI1NzNfVFNGX01PREUoMikgfCBSVDI1NzNfR0VORVJBVEVfQkVBQ09OOw0KKw0KKyAg
ICBydW1fd3JpdGUoc2MsIFJUMjU3M19UWFJYX0NTUjksIHRtcCk7DQorfQ0KKw0KK3N0YXRp
YyB2b2lkDQorcnVtX3VwZGF0ZV9zbG90KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisg
ICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICB1aW50OF90
IHNsb3R0aW1lOw0KKyAgICB1aW50MzJfdCB0bXA7DQorDQorICAgIHNsb3R0aW1lID0gKGlj
LT5pY19mbGFncyAmIElFRUU4MDIxMV9GX1NIU0xPVCkgPyA5IDogMjA7DQorDQorICAgIHRt
cCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfTUFDX0NTUjkpOw0KKyAgICB0bXAgPSAodG1wICYg
fjB4ZmYpIHwgc2xvdHRpbWU7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1I5
LCB0bXApOw0KKw0KKyAgICBEUFJJTlRGKCgic2V0dGluZyBzbG90IHRpbWUgdG8gJXV1c1xu
Iiwgc2xvdHRpbWUpKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fc2V0X2Jzc2lkKHN0
cnVjdCBydW1fc29mdGMgKnNjLCBjb25zdCB1aW50OF90ICpic3NpZCkNCit7DQorICAgIHVp
bnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYnNzaWRbMF0gfCBic3NpZFsxXSA8PCA4IHwg
YnNzaWRbMl0gPDwgMTYgfCBic3NpZFszXSA8PCAyNDsNCisgICAgcnVtX3dyaXRlKHNjLCBS
VDI1NzNfTUFDX0NTUjQsIHRtcCk7DQorDQorICAgIHRtcCA9IGJzc2lkWzRdIHwgYnNzaWRb
NV0gPDwgOCB8IFJUMjU3M19PTkVfQlNTSUQgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywg
UlQyNTczX01BQ19DU1I1LCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zZXRf
bWFjYWRkcihzdHJ1Y3QgcnVtX3NvZnRjICpzYywgY29uc3QgdWludDhfdCAqYWRkcikNCit7
DQorICAgIHVpbnQzMl90IHRtcDsNCisNCisgICAgdG1wID0gYWRkclswXSB8IGFkZHJbMV0g
PDwgOCB8IGFkZHJbMl0gPDwgMTYgfCBhZGRyWzNdIDw8IDI0Ow0KKyAgICBydW1fd3JpdGUo
c2MsIFJUMjU3M19NQUNfQ1NSMiwgdG1wKTsNCisNCisgICAgdG1wID0gYWRkcls0XSB8IGFk
ZHJbNV0gPDwgOCB8IDB4ZmYgPDwgMTY7DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX01B
Q19DU1IzLCB0bXApOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV91cGRhdGVfcHJvbWlz
YyhzdHJ1Y3QgcnVtX3NvZnRjICpzYykNCit7DQorICAgIHN0cnVjdCBpZm5ldCAqaWZwID0g
c2MtPnNjX2ljLmljX2lmcDsNCisgICAgdWludDMyX3QgdG1wOw0KKw0KKyAgICB0bXAgPSBy
dW1fcmVhZChzYywgUlQyNTczX1RYUlhfQ1NSMCk7DQorDQorICAgIHRtcCAmPSB+UlQyNTcz
X0RST1BfTk9UX1RPX01FOw0KKyAgICBpZiAoIShpZnAtPmlmX2ZsYWdzICYgSUZGX1BST01J
U0MpKQ0KKyAgICAgICAgdG1wIHw9IFJUMjU3M19EUk9QX05PVF9UT19NRTsNCisNCisgICAg
cnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXApOw0KKw0KKyAgICBEUFJJTlRG
KCgiJXMgcHJvbWlzY3VvdXMgbW9kZVxuIiwgKGlmcC0+aWZfZmxhZ3MgJiBJRkZfUFJPTUlT
QykgPw0KKyAgICAgICAgImVudGVyaW5nIiA6ICJsZWF2aW5nIikpOw0KK30NCisNCitzdGF0
aWMgY29uc3QgY2hhciAqDQorcnVtX2dldF9yZihpbnQgcmV2KQ0KK3sNCisgICAgc3dpdGNo
IChyZXYpIHsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyNzogICAgcmV0dXJuICJSVDI1Mjcg
KE1JTU8gWFIpIjsNCisgICAgY2FzZSBSVDI1NzNfUkZfMjUyODogICAgcmV0dXJuICJSVDI1
MjgiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI1OiAgICByZXR1cm4gIlJUNTIyNSAoTUlN
TyBYUikiOw0KKyAgICBjYXNlIFJUMjU3M19SRl81MjI2OiAgICByZXR1cm4gIlJUNTIyNiI7
DQorICAgIGRlZmF1bHQ6ICAgICAgICByZXR1cm4gInVua25vd24iOw0KKyAgICB9DQorfQ0K
Kw0KK3N0YXRpYyB2b2lkDQorcnVtX3JlYWRfZWVwcm9tKHN0cnVjdCBydW1fc29mdGMgKnNj
KQ0KK3sNCisgICAgc3RydWN0IGllZWU4MDIxMWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAg
ICB1aW50MTZfdCB2YWw7DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBpbnQgaTsNCisjZW5k
aWYNCisNCisgICAgLyogcmVhZCBNQUMvQkJQIHR5cGUgKi8NCisgICAgcnVtX2VlcHJvbV9y
ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX01BQ0JCUCwgJnZhbCwgMik7DQorICAgIHNjLT5tYWNi
YnBfcmV2ID0gbGUxNnRvaCh2YWwpOw0KKw0KKyAgICAvKiByZWFkIE1BQyBhZGRyZXNzICov
DQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9BRERSRVNTLCBpYy0+
aWNfbXlhZGRyLCA2KTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQ
Uk9NX0FOVEVOTkEsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAg
IHNjLT5yZl9yZXYgPSAgICh2YWwgPj4gMTEpICYgMHgxZjsNCisgICAgc2MtPmh3X3JhZGlv
ID0gKHZhbCA+PiAxMCkgJiAweDE7DQorICAgIHNjLT5yeF9hbnQgPSAgICh2YWwgPj4gNCkg
ICYgMHgzOw0KKyAgICBzYy0+dHhfYW50ID0gICAodmFsID4+IDIpICAmIDB4MzsNCisgICAg
c2MtPm5iX2FudCA9ICAgdmFsICYgMHgzOw0KKw0KKyAgICBEUFJJTlRGKCgiUkYgcmV2aXNp
b249JWRcbiIsIHNjLT5yZl9yZXYpKTsNCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS
VDI1NzNfRUVQUk9NX0NPTkZJRzIsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZh
bCk7DQorICAgIHNjLT5leHRfNWdoel9sbmEgPSAodmFsID4+IDYpICYgMHgxOw0KKyAgICBz
Yy0+ZXh0XzJnaHpfbG5hID0gKHZhbCA+PiA0KSAmIDB4MTsNCisNCisgICAgRFBSSU5URigo
IkV4dGVybmFsIDJHSHogTE5BPSVkXG5FeHRlcm5hbCA1R0h6IExOQT0lZFxuIiwNCisgICAg
ICAgIHNjLT5leHRfMmdoel9sbmEsIHNjLT5leHRfNWdoel9sbmEpKTsNCisNCisgICAgcnVt
X2VlcHJvbV9yZWFkKHNjLCBSVDI1NzNfRUVQUk9NX1JTU0lfMkdIWl9PRkZTRVQsICZ2YWws
IDIpOw0KKyAgICB2YWwgPSBsZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikg
IT0gMHhmZikNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAm
IDB4ZmYpOyAgICAvKiBzaWduZWQgKi8NCisNCisgICAgcnVtX2VlcHJvbV9yZWFkKHNjLCBS
VDI1NzNfRUVQUk9NX1JTU0lfNUdIWl9PRkZTRVQsICZ2YWwsIDIpOw0KKyAgICB2YWwgPSBs
ZTE2dG9oKHZhbCk7DQorICAgIGlmICgodmFsICYgMHhmZikgIT0gMHhmZikNCisgICAgICAg
IHNjLT5yc3NpXzVnaHpfY29yciA9IChpbnQ4X3QpKHZhbCAmIDB4ZmYpOyAgICAvKiBzaWdu
ZWQgKi8NCisNCisgICAgRFBSSU5URigoIlJTU0kgMkdIeiBjb3JyPSVkXG5SU1NJIDVHSHog
Y29ycj0lZFxuIiwNCisgICAgICAgIHNjLT5yc3NpXzJnaHpfY29yciwgc2MtPnJzc2lfNWdo
el9jb3JyKSk7DQorDQorICAgIHJ1bV9lZXByb21fcmVhZChzYywgUlQyNTczX0VFUFJPTV9G
UkVRX09GRlNFVCwgJnZhbCwgMik7DQorICAgIHZhbCA9IGxlMTZ0b2godmFsKTsNCisgICAg
aWYgKCh2YWwgJiAweGZmKSAhPSAweGZmKQ0KKyAgICAgICAgc2MtPnJmZnJlcSA9IHZhbCAm
IDB4ZmY7DQorDQorICAgIERQUklOVEYoKCJSRiBmcmVxPSVkXG4iLCBzYy0+cmZmcmVxKSk7
DQorDQorICAgIC8qIHJlYWQgVHggcG93ZXIgZm9yIGFsbCBhL2IvZyBjaGFubmVscyAqLw0K
KyAgICBydW1fZWVwcm9tX3JlYWQoc2MsIFJUMjU3M19FRVBST01fVFhQT1dFUiwgc2MtPnR4
cG93LCAxNCk7DQorICAgIC8qIFhYWCBkZWZhdWx0IFR4IHBvd2VyIGZvciA4MDIuMTFhIGNo
YW5uZWxzICovDQorICAgIG1lbXNldChzYy0+dHhwb3cgKyAxNCwgMjQsIHNpemVvZiAoc2Mt
PnR4cG93KSAtIDE0KTsNCisjaWZkZWYgUlVNX0RFQlVHDQorICAgIGZvciAoaSA9IDA7IGkg
PCAxNDsgaSsrKQ0KKyAgICAgICAgRFBSSU5URigoIkNoYW5uZWw9JWQgVHggcG93ZXI9JWRc
biIsIGkgKyAxLCAgc2MtPnR4cG93W2ldKSk7DQorI2VuZGlmDQorDQorICAgIC8qIHJlYWQg
ZGVmYXVsdCB2YWx1ZXMgZm9yIEJCUCByZWdpc3RlcnMgKi8NCisgICAgcnVtX2VlcHJvbV9y
ZWFkKHNjLCBSVDI1NzNfRUVQUk9NX0JCUF9CQVNFLCBzYy0+YmJwX3Byb20sIDIgKiAxNik7
DQorI2lmZGVmIFJVTV9ERUJVRw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykgew0K
KyAgICAgICAgaWYgKHNjLT5iYnBfcHJvbVtpXS5yZWcgPT0gMCB8fCBzYy0+YmJwX3Byb21b
aV0ucmVnID09IDB4ZmYpDQorICAgICAgICAgICAgY29udGludWU7DQorICAgICAgICBEUFJJ
TlRGKCgiQkJQIFIlZD0lMDJ4XG4iLCBzYy0+YmJwX3Byb21baV0ucmVnLA0KKyAgICAgICAg
ICAgIHNjLT5iYnBfcHJvbVtpXS52YWwpKTsNCisgICAgfQ0KKyNlbmRpZg0KK30NCisNCitz
dGF0aWMgaW50DQorcnVtX2JicF9pbml0KHN0cnVjdCBydW1fc29mdGMgKnNjKQ0KK3sNCisj
ZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQorICAgIGlu
dCBpLCBudHJpZXM7DQorICAgIHVpbnQ4X3QgdmFsOw0KKw0KKyAgICAvKiB3YWl0IGZvciBC
QlAgdG8gYmUgcmVhZHkgKi8NCisgICAgZm9yIChudHJpZXMgPSAwOyBudHJpZXMgPCAxMDA7
IG50cmllcysrKSB7DQorICAgICAgICB2YWwgPSBydW1fYmJwX3JlYWQoc2MsIDApOw0KKyAg
ICAgICAgaWYgKHZhbCAhPSAwICYmIHZhbCAhPSAweGZmKQ0KKyAgICAgICAgICAgIGJyZWFr
Ow0KKyAgICAgICAgREVMQVkoMTAwMCk7DQorICAgIH0NCisgICAgaWYgKG50cmllcyA9PSAx
MDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQXG4i
LA0KKyAgICAgICAgICAgIGRldmljZV9nZXRfbmFtZXVuaXQoc2MtPnNjX2RldikpOw0KKyAg
ICAgICAgcmV0dXJuIEVJTzsNCisgICAgfQ0KKw0KKyAgICAvKiBpbml0aWFsaXplIEJCUCBy
ZWdpc3RlcnMgdG8gZGVmYXVsdCB2YWx1ZXMgKi8NCisgICAgZm9yIChpID0gMDsgaSA8IE4o
cnVtX2RlZl9iYnApOyBpKyspDQorICAgICAgICBydW1fYmJwX3dyaXRlKHNjLCBydW1fZGVm
X2JicFtpXS5yZWcsIHJ1bV9kZWZfYmJwW2ldLnZhbCk7DQorDQorICAgIC8qIHdyaXRlIHZl
bmRvci1zcGVjaWZpYyBCQlAgdmFsdWVzIChmcm9tIEVFUFJPTSkgKi8NCisgICAgZm9yIChp
ID0gMDsgaSA8IDE2OyBpKyspIHsNCisgICAgICAgIGlmIChzYy0+YmJwX3Byb21baV0ucmVn
ID09IDAgfHwgc2MtPmJicF9wcm9tW2ldLnJlZyA9PSAweGZmKQ0KKyAgICAgICAgICAgIGNv
bnRpbnVlOw0KKyAgICAgICAgcnVtX2JicF93cml0ZShzYywgc2MtPmJicF9wcm9tW2ldLnJl
Zywgc2MtPmJicF9wcm9tW2ldLnZhbCk7DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQor
I3VuZGVmIE4NCit9DQorDQorc3RhdGljIHZvaWQNCitydW1faW5pdCh2b2lkICpwcml2KQ0K
K3sNCisjZGVmaW5lIE4oYSkgICAgKHNpemVvZiAoYSkgLyBzaXplb2YgKChhKVswXSkpDQor
ICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gcHJpdjsNCisgICAgc3RydWN0IGllZWU4MDIx
MWNvbSAqaWMgPSAmc2MtPnNjX2ljOw0KKyAgICBzdHJ1Y3QgaWZuZXQgKmlmcCA9IGljLT5p
Y19pZnA7DQorICAgIHN0cnVjdCBydW1fcnhfZGF0YSAqZGF0YTsNCisgICAgdWludDMyX3Qg
dG1wOw0KKyAgICB1c2JkX3N0YXR1cyBlcnJvciA9IDA7DQorICAgIGludCBpLCBudHJpZXM7
DQorDQorLy8gICAgaWYgKChzYy0+c2NfZmxhZ3MgJiBSVDI1NzNfRldMT0FERUQpID09IDAp
IHsNCisvLyAgICAgICAgcnVtX2F0dGFjaGhvb2soc2MpOw0KKy8vICAgIH0NCisNCisgICAg
cnVtX3N0b3AoaWZwKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBNQUMgcmVnaXN0ZXJzIHRv
IGRlZmF1bHQgdmFsdWVzICovDQorICAgIGZvciAoaSA9IDA7IGkgPCBOKHJ1bV9kZWZfbWFj
KTsgaSsrKQ0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBydW1fZGVmX21hY1tpXS5yZWcsIHJ1
bV9kZWZfbWFjW2ldLnZhbCk7DQorDQorICAgIC8qIHNldCBob3N0IHJlYWR5ICovDQorICAg
IHJ1bV93cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCAzKTsNCisgICAgcnVtX3dyaXRlKHNj
LCBSVDI1NzNfTUFDX0NTUjEsIDApOw0KKw0KKyAgICAvKiB3YWl0IGZvciBCQlAvUkYgdG8g
d2FrZXVwICovDQorICAgIGZvciAobnRyaWVzID0gMDsgbnRyaWVzIDwgMTAwMDsgbnRyaWVz
KyspIHsNCisgICAgICAgIGlmIChydW1fcmVhZChzYywgUlQyNTczX01BQ19DU1IxMikgJiA4
KQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNf
TUFDX0NTUjEyLCA0KTsgICAgLyogZm9yY2Ugd2FrZXVwICovDQorICAgICAgICBERUxBWSgx
MDAwKTsNCisgICAgfQ0KKyAgICBpZiAobnRyaWVzID09IDEwMDApIHsNCisgICAgICAgIHBy
aW50ZigiJXM6IHRpbWVvdXQgd2FpdGluZyBmb3IgQkJQL1JGIHRvIHdha2V1cFxuIiwNCisg
ICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAg
IGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAgICBpZiAoKGVycm9yID0gcnVtX2JicF9pbml0
KHNjKSkgIT0gMCkNCisgICAgICAgIGdvdG8gZmFpbDsNCisNCisgICAgLyogc2VsZWN0IGRl
ZmF1bHQgY2hhbm5lbCAqLw0KKyAgICBydW1fc2VsZWN0X2JhbmQoc2MsIGljLT5pY19jdXJj
aGFuKTsNCisgICAgcnVtX3NlbGVjdF9hbnRlbm5hKHNjKTsNCisgICAgcnVtX3NldF9jaGFu
KHNjLCBpYy0+aWNfY3VyY2hhbik7DQorDQorICAgIC8qIGNsZWFyIFNUQSByZWdpc3RlcnMg
Ki8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJUMjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwg
c2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBJRUVFODAyMTFfQUREUl9DT1BZKGljLT5pY19t
eWFkZHIsIElGX0xMQUREUihpZnApKTsNCisgICAgcnVtX3NldF9tYWNhZGRyKHNjLCBpYy0+
aWNfbXlhZGRyKTsNCisNCisgICAgLyogaW5pdGlhbGl6ZSBBU0lDICovDQorICAgIHJ1bV93
cml0ZShzYywgUlQyNTczX01BQ19DU1IxLCA0KTsNCisNCisgICAgLyoNCisgICAgICogQWxs
b2NhdGUgeGZlciBmb3IgQU1SUiBzdGF0aXN0aWNzIHJlcXVlc3RzLg0KKyAgICAgKi8NCisg
ICAgc2MtPmFtcnJfeGZlciA9IHVzYmRfYWxsb2NfeGZlcihzYy0+c2NfdWRldik7DQorICAg
IGlmIChzYy0+YW1ycl94ZmVyID09IE5VTEwpIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv
dWxkIG5vdCBhbGxvY2F0ZSBBTVJSIHhmZXJcbiIsDQorICAgICAgICAgICAgZGV2aWNlX2dl
dF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3RvIGZhaWw7DQorICAgIH0N
CisNCisgICAgLyoNCisgICAgICogT3BlbiBUeCBhbmQgUnggVVNCIGJ1bGsgcGlwZXMuDQor
ICAgICAqLw0KKyAgICBlcnJvciA9IHVzYmRfb3Blbl9waXBlKHNjLT5zY19pZmFjZSwgc2Mt
PnNjX3R4X25vLCBVU0JEX0VYQ0xVU0lWRV9VU0UsDQorICAgICAgICAmc2MtPnNjX3R4X3Bp
cGVoKTsNCisgICAgaWYgKGVycm9yICE9IDApIHsNCisgICAgICAgIHByaW50ZigiJXM6IGNv
dWxkIG5vdCBvcGVuIFR4IHBpcGU6ICVzXG4iLA0KKyAgICAgICAgICAgIGRldmljZV9nZXRf
bmFtZXVuaXQoc2MtPnNjX2RldiksIHVzYmRfZXJyc3RyKGVycm9yKSk7DQorICAgICAgICBn
b3RvIGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSB1c2JkX29wZW5fcGlwZShzYy0+
c2NfaWZhY2UsIHNjLT5zY19yeF9ubywgVVNCRF9FWENMVVNJVkVfVVNFLA0KKyAgICAgICAg
JnNjLT5zY19yeF9waXBlaCk7DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBw
cmludGYoIiVzOiBjb3VsZCBub3Qgb3BlbiBSeCBwaXBlOiAlc1xuIiwNCisgICAgICAgICAg
ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpLCB1c2JkX2VycnN0cihlcnJvcikp
Ow0KKyAgICAgICAgZ290byBmYWlsOw0KKyAgICB9DQorDQorICAgIC8qDQorICAgICAqIEFs
bG9jYXRlIFR4IGFuZCBSeCB4ZmVyIHF1ZXVlcy4NCisgICAgICovDQorICAgIGVycm9yID0g
cnVtX2FsbG9jX3R4X2xpc3Qoc2MpOw0KKyAgICBpZiAoZXJyb3IgIT0gMCkgew0KKyAgICAg
ICAgcHJpbnRmKCIlczogY291bGQgbm90IGFsbG9jYXRlIFR4IGxpc3RcbiIsDQorICAgICAg
ICAgICAgZGV2aWNlX2dldF9uYW1ldW5pdChzYy0+c2NfZGV2KSk7DQorICAgICAgICBnb3Rv
IGZhaWw7DQorICAgIH0NCisNCisgICAgZXJyb3IgPSBydW1fYWxsb2NfcnhfbGlzdChzYyk7
DQorICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICBwcmludGYoIiVzOiBjb3VsZCBu
b3QgYWxsb2NhdGUgUnggbGlzdFxuIiwNCisgICAgICAgICAgICBkZXZpY2VfZ2V0X25hbWV1
bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAg
ICAvKg0KKyAgICAgKiBTdGFydCB1cCB0aGUgcmVjZWl2ZSBwaXBlLg0KKyAgICAgKi8NCisg
ICAgZm9yIChpID0gMDsgaSA8IFJUMjU3M19SWF9MSVNUX0NPVU5UOyBpKyspIHsNCisgICAg
ICAgIGRhdGEgPSAmc2MtPnJ4X2RhdGFbaV07DQorDQorICAgICAgICB1c2JkX3NldHVwX3hm
ZXIoZGF0YS0+eGZlciwgc2MtPnNjX3J4X3BpcGVoLCBkYXRhLCBkYXRhLT5idWYsDQorICAg
ICAgICAgICAgTUNMQllURVMsIFVTQkRfU0hPUlRfWEZFUl9PSywgVVNCRF9OT19USU1FT1VU
LCBydW1fcnhlb2YpOw0KKyAgICAgICAgdXNiZF90cmFuc2ZlcihkYXRhLT54ZmVyKTsNCisg
ICAgfQ0KKw0KKyAgICAvKiB1cGRhdGUgUnggZmlsdGVyICovDQorICAgIHRtcCA9IHJ1bV9y
ZWFkKHNjLCBSVDI1NzNfVFhSWF9DU1IwKSAmIDB4ZmZmZjsNCisNCisgICAgdG1wIHw9IFJU
MjU3M19EUk9QX1BIWV9FUlJPUiB8IFJUMjU3M19EUk9QX0NSQ19FUlJPUjsNCisgICAgaWYg
KGljLT5pY19vcG1vZGUgIT0gSUVFRTgwMjExX01fTU9OSVRPUikgew0KKyAgICAgICAgdG1w
IHw9IFJUMjU3M19EUk9QX0NUTCB8IFJUMjU3M19EUk9QX1ZFUl9FUlJPUiB8DQorICAgICAg
ICAgICAgICAgUlQyNTczX0RST1BfQUNLQ1RTOw0KKyAgICAgICAgaWYgKGljLT5pY19vcG1v
ZGUgIT0gSUVFRTgwMjExX01fSE9TVEFQKQ0KKyAgICAgICAgICAgIHRtcCB8PSBSVDI1NzNf
RFJPUF9UT0RTOw0KKyAgICAgICAgaWYgKCEoaWZwLT5pZl9mbGFncyAmIElGRl9QUk9NSVND
KSkNCisgICAgICAgICAgICB0bXAgfD0gUlQyNTczX0RST1BfTk9UX1RPX01FOw0KKyAgICB9
DQorICAgIHJ1bV93cml0ZShzYywgUlQyNTczX1RYUlhfQ1NSMCwgdG1wKTsNCisNCisgICAg
aWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9EUlZfT0FDVElWRTsNCisgICAgaWZwLT5pZl9k
cnZfZmxhZ3MgfD0gSUZGX0RSVl9SVU5OSU5HOw0KKw0KKyAgICBpZiAoaWMtPmljX29wbW9k
ZSA9PSBJRUVFODAyMTFfTV9NT05JVE9SKQ0KKyAgICAgICAgaWVlZTgwMjExX25ld19zdGF0
ZShpYywgSUVFRTgwMjExX1NfUlVOLCAtMSk7DQorICAgIGVsc2UNCisgICAgICAgIGllZWU4
MDIxMV9uZXdfc3RhdGUoaWMsIElFRUU4MDIxMV9TX1NDQU4sIC0xKTsNCisNCisgICAgcmV0
dXJuOw0KKw0KK2ZhaWw6ICAgIHJ1bV9zdG9wKGlmcCk7DQorICAgIHJldHVybjsNCisjdW5k
ZWYgTg0KK30NCisNCitzdGF0aWMgdm9pZA0KK3J1bV9zdG9wKHN0cnVjdCBpZm5ldCAqaWZw
KQ0KK3sNCisgICAgc3RydWN0IHJ1bV9zb2Z0YyAqc2MgPSBpZnAtPmlmX3NvZnRjOw0KKyAg
ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHVpbnQzMl90
IHRtcDsNCisNCisgICAgaWVlZTgwMjExX25ld19zdGF0ZShpYywgSUVFRTgwMjExX1NfSU5J
VCwgLTEpOyAgICAvKiBmcmVlIGFsbCBub2RlcyAqLw0KKw0KKyAgICBzYy0+c2NfdHhfdGlt
ZXIgPSAwOw0KKyAgICBpZnAtPmlmX3RpbWVyID0gMDsNCisgICAgaWZwLT5pZl9kcnZfZmxh
Z3MgJj0gfihJRkZfRFJWX1JVTk5JTkcgfCBJRkZfRFJWX09BQ1RJVkUpOw0KKw0KKyAgICAv
KiBkaXNhYmxlIFJ4ICovDQorICAgIHRtcCA9IHJ1bV9yZWFkKHNjLCBSVDI1NzNfVFhSWF9D
U1IwKTsNCisgICAgcnVtX3dyaXRlKHNjLCBSVDI1NzNfVFhSWF9DU1IwLCB0bXAgfCBSVDI1
NzNfRElTQUJMRV9SWCk7DQorDQorICAgIC8qIHJlc2V0IEFTSUMgKi8NCisgICAgcnVtX3dy
aXRlKHNjLCBSVDI1NzNfTUFDX0NTUjEsIDMpOw0KKyAgICBydW1fd3JpdGUoc2MsIFJUMjU3
M19NQUNfQ1NSMSwgMCk7DQorDQorICAgIGlmIChzYy0+c2NfcnhfcGlwZWggIT0gTlVMTCkg
ew0KKyAgICAgICAgdXNiZF9hYm9ydF9waXBlKHNjLT5zY19yeF9waXBlaCk7DQorICAgICAg
ICB1c2JkX2Nsb3NlX3BpcGUoc2MtPnNjX3J4X3BpcGVoKTsNCisgICAgICAgIHNjLT5zY19y
eF9waXBlaCA9IE5VTEw7DQorICAgIH0NCisNCisgICAgaWYgKHNjLT5zY190eF9waXBlaCAh
PSBOVUxMKSB7DQorICAgICAgICB1c2JkX2Fib3J0X3BpcGUoc2MtPnNjX3R4X3BpcGVoKTsN
CisgICAgICAgIHVzYmRfY2xvc2VfcGlwZShzYy0+c2NfdHhfcGlwZWgpOw0KKyAgICAgICAg
c2MtPnNjX3R4X3BpcGVoID0gTlVMTDsNCisgICAgfQ0KKw0KKyAgICBydW1fZnJlZV9yeF9s
aXN0KHNjKTsNCisgICAgcnVtX2ZyZWVfdHhfbGlzdChzYyk7DQorfQ0KKw0KK3N0YXRpYyBp
bnQNCitydW1fcHJlcGFyZV9iZWFjb24oc3RydWN0IHJ1bV9zb2Z0YyAqc2MpDQorew0KKyAg
ICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2NfaWM7DQorICAgIHN0cnVjdCBy
dW1fdHhfZGVzYyBkZXNjOw0KKyAgICBzdHJ1Y3QgbWJ1ZiAqbTA7DQorICAgIGludCByYXRl
Ow0KKw0KKyAgICBtMCA9IGllZWU4MDIxMV9iZWFjb25fYWxsb2MoaWMsIGljLT5pY19ic3Ms
ICZzYy0+c2NfYm8pOw0KKyAgICBpZiAobTAgPT0gTlVMTCkgew0KKyAgICAgICAgcHJpbnRm
KCIlczogY291bGQgbm90IGFsbG9jYXRlIGJlYWNvbiBmcmFtZVxuIiwNCisgICAgICAgICAg
ICBkZXZpY2VfZ2V0X25hbWV1bml0KHNjLT5zY19kZXYpKTsNCisgICAgICAgIHJldHVybiBF
Tk9CVUZTOw0KKyAgICB9DQorDQorICAgIC8qIHNlbmQgYmVhY29ucyBhdCB0aGUgbG93ZXN0
IGF2YWlsYWJsZSByYXRlICovDQorICAgIHJhdGUgPSBJRUVFODAyMTFfSVNfQ0hBTl81R0ha
KGljLT5pY19jdXJjaGFuKSA/IDEyIDogMjsNCisNCisgICAgcnVtX3NldHVwX3R4X2Rlc2Mo
c2MsICZkZXNjLCBSVDI1NzNfVFhfVElNRVNUQU1QLCBSVDI1NzNfVFhfSFdTRVEsDQorICAg
ICAgICBtMC0+bV9wa3RoZHIubGVuLCByYXRlKTsNCisNCisgICAgLyogY29weSB0aGUgZmly
c3QgMjQgYnl0ZXMgb2YgVHggZGVzY3JpcHRvciBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAg
cnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNfSFdfQkVBQ09OX0JBU0UwLCAodWludDhfdCAq
KSZkZXNjLCAyNCk7DQorDQorICAgIC8qIGNvcHkgYmVhY29uIGhlYWRlciBhbmQgcGF5bG9h
ZCBpbnRvIE5JQyBtZW1vcnkgKi8NCisgICAgcnVtX3dyaXRlX211bHRpKHNjLCBSVDI1NzNf
SFdfQkVBQ09OX0JBU0UwICsgMjQsIG10b2QobTAsIHVpbnQ4X3QgKiksDQorICAgICAgICBt
MC0+bV9wa3RoZHIubGVuKTsNCisNCisgICAgbV9mcmVlbShtMCk7DQorDQorICAgIHJldHVy
biAwOw0KK30NCisNCisjZGVmaW5lIFJVTV9BTVJSX01JTl9TVUNDRVNTX1RIUkVTSE9MRCAg
MQ0KKyNkZWZpbmUgUlVNX0FNUlJfTUFYX1NVQ0NFU1NfVEhSRVNIT0xEIDEwDQorDQorc3Rh
dGljIHZvaWQNCitydW1fYW1ycl9zdGFydChzdHJ1Y3QgcnVtX3NvZnRjICpzYywgc3RydWN0
IGllZWU4MDIxMV9ub2RlICpuaSkNCit7DQorICAgIHN0cnVjdCBpZWVlODAyMTFfYW1yciAq
YW1yciA9ICZzYy0+YW1ycjsNCisgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFt
biA9ICZzYy0+YW1uOw0KKyAgICBzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9ICZzYy0+c2Nf
aWM7DQorICAgIGludCBpOw0KKw0KKyAgICAvKiBjbGVhciBzdGF0aXN0aWMgcmVnaXN0ZXJz
IChTVEFfQ1NSMCB0byBTVEFfQ1NSNSkgKi8NCisgICAgcnVtX3JlYWRfbXVsdGkoc2MsIFJU
MjU3M19TVEFfQ1NSMCwgc2MtPnN0YSwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0KKyAgICBpZWVl
ODAyMTFfYW1ycl9pbml0KGFtcnIsIGljLCANCisJCQkJCQlJRUVFODAyMTFfQU1SUl9NSU5f
U1VDQ0VTU19USFJFU0hPTEQsIA0KKwkJCQkJCUlFRUU4MDIxMV9BTVJSX01BWF9TVUNDRVNT
X1RIUkVTSE9MRCk7DQorICAgIGllZWU4MDIxMV9hbXJyX25vZGVfaW5pdChhbXJyLCBhbW4p
Ow0KKw0KKyAgICAvKiBzZXQgcmF0ZSB0byBzb21lIHJlYXNvbmFibGUgaW5pdGlhbCB2YWx1
ZSAqLw0KKyAgICBmb3IgKGkgPSBuaS0+bmlfcmF0ZXMucnNfbnJhdGVzIC0gMTsNCisgICAg
ICAgICBpID4gMCAmJiAobmktPm5pX3JhdGVzLnJzX3JhdGVzW2ldICYgSUVFRTgwMjExX1JB
VEVfVkFMKSA+IDcyOw0KKyAgICAgICAgIGktLSk7DQorICAgIG5pLT5uaV90eHJhdGUgPSBp
Ow0KKw0KKyAgICBjYWxsb3V0X3Jlc2V0KCZzYy0+YW1ycl9jaCwgaHosIHJ1bV9hbXJyX3Rp
bWVvdXQsIHNjKTsNCit9DQorDQorc3RhdGljIHZvaWQNCitydW1fYW1ycl90aW1lb3V0KHZv
aWQgKmFyZykNCit7DQorICAgIHN0cnVjdCBydW1fc29mdGMgKnNjID0gYXJnOw0KKyAgICB1
c2JfZGV2aWNlX3JlcXVlc3RfdCByZXE7DQorDQorICAgIC8qDQorICAgICAqIEFzeW5jaHJv
bm91c2x5IHJlYWQgc3RhdGlzdGljIHJlZ2lzdGVycyAoY2xlYXJlZCBieSByZWFkKS4NCisg
ICAgICovDQorICAgIHJlcS5ibVJlcXVlc3RUeXBlID0gVVRfUkVBRF9WRU5ET1JfREVWSUNF
Ow0KKyAgICByZXEuYlJlcXVlc3QgPSBSVDI1NzNfUkVBRF9NVUxUSV9NQUM7DQorICAgIFVT
RVRXKHJlcS53VmFsdWUsIDApOw0KKyAgICBVU0VUVyhyZXEud0luZGV4LCBSVDI1NzNfU1RB
X0NTUjApOw0KKyAgICBVU0VUVyhyZXEud0xlbmd0aCwgc2l6ZW9mIHNjLT5zdGEpOw0KKw0K
KyAgICB1c2JkX3NldHVwX2RlZmF1bHRfeGZlcihzYy0+YW1ycl94ZmVyLCBzYy0+c2NfdWRl
diwgc2MsDQorICAgICAgICBVU0JEX0RFRkFVTFRfVElNRU9VVCwgJnJlcSwgc2MtPnN0YSwg
c2l6ZW9mIHNjLT5zdGEsIDAsDQorICAgICAgICBydW1fYW1ycl91cGRhdGUpOw0KKyAgICAo
dm9pZCl1c2JkX3RyYW5zZmVyKHNjLT5hbXJyX3hmZXIpOw0KK30NCisNCitzdGF0aWMgdm9p
ZA0KK3J1bV9hbXJyX3VwZGF0ZSh1c2JkX3hmZXJfaGFuZGxlIHhmZXIsIHVzYmRfcHJpdmF0
ZV9oYW5kbGUgcHJpdiwNCisgICAgdXNiZF9zdGF0dXMgc3RhdHVzKQ0KK3sNCisgICAgICAg
IHN0cnVjdCBydW1fc29mdGMgKnNjID0gKHN0cnVjdCBydW1fc29mdGMgKilwcml2Ow0KKyAg
ICAgICAgc3RydWN0IGllZWU4MDIxMV9hbXJyICphbXJyID0gJnNjLT5hbXJyOw0KKyAgICAg
ICAgc3RydWN0IGllZWU4MDIxMV9hbXJyX25vZGUgKmFtbiA9ICZzYy0+YW1uOw0KKyAgICAg
ICAgc3RydWN0IGlmbmV0ICppZnAgPSBzYy0+c2NfaWZwOw0KKw0KKyAgICAgICAgaWYgKHN0
YXR1cyAhPSBVU0JEX05PUk1BTF9DT01QTEVUSU9OKSB7DQorICAgICAgICAgICAgICAgIGRl
dmljZV9wcmludGYoc2MtPnNjX2RldiwgImNvdWxkIG5vdCByZXRyaWV2ZSBUeCBzdGF0aXN0
aWNzIC0gIg0KKyAgICAgICAgICAgICAgICAgICAgImNhbmNlbGxpbmcgYXV0b21hdGljIHJh
dGUgY29udHJvbFxuIik7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0N
CisNCisgICAgICAgIC8qIGNvdW50IFRYIHJldHJ5LWZhaWwgYXMgVHggZXJyb3JzICovDQor
ICAgICAgICBpZnAtPmlmX29lcnJvcnMgKz0gbGUzMnRvaChzYy0+c3RhWzVdKSA+PiAxNjsN
CisNCisgICAgICAgIGllZWU4MDIxMV9hbXJyX2Nob29zZShhbXJyLCBzYy0+c2NfaWMuaWNf
YnNzLCBhbW4pOw0KKw0KKyAgICAgICAgY2FsbG91dF9yZXNldCgmc2MtPmFtcnJfY2gsIGh6
LCBydW1fYW1ycl90aW1lb3V0LCBzYyk7DQorfQ0KKw0KK0RSSVZFUl9NT0RVTEUocnVtLCB1
aHViLCBydW1fZHJpdmVyLCBydW1fZGV2Y2xhc3MsIHVzYmRfZHJpdmVyX2xvYWQsIDApOw0K
Kw0KSW5kZXg6IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogc3lzL2Rldi91c2IvaWZfcnVtcmVnLmgNCmRpZmYgLU4gc3lzL2Rldi91c2IvaWZf
cnVtcmVnLmgNCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMA0KKysr
IHN5cy9kZXYvdXNiL2lmX3J1bXJlZy5oCTIyIEFwciAyMDA3IDA4OjAxOjU0IC0wMDAwDQpA
QCAtMCwwICsxLDM5MCBAQA0KKy8qCSRPcGVuQlNEOiBpZl9ydW1yZWcuaCx2IDEuMTIgMjAw
Ni8wOC8wOSAwODoyMTowOCBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln
aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm
cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs
b0BvcGVuYnNkLm9yZz4NCisgKg0KKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KKyAqIHB1cnBvc2Ug
d2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0
aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVT
DQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJ
RUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SDQorICogQU5ZIFNQRUNJ
QUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkg
REFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERB
VEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFDVElPTiBPRiBDT05UUkFDVCwg
TkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GDQor
ICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJ
UyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3M19UWF9ERVNDX1NJWkUJKHNp
emVvZiAoc3RydWN0IHJ1bV90eF9kZXNjKSkNCisjZGVmaW5lIFJUMjU3M19SWF9ERVNDX1NJ
WkUJKHNpemVvZiAoc3RydWN0IHJ1bV9yeF9kZXNjKSkNCisNCisjZGVmaW5lIFJUMjU3M19D
T05GSUdfTk8JMQ0KKyNkZWZpbmUgUlQyNTczX0lGQUNFX0lOREVYCTANCisNCisjZGVmaW5l
IFJUMjU3M19NQ1VfQ05UTAkJMHgwMQ0KKyNkZWZpbmUgUlQyNTczX1dSSVRFX01BQwkweDAy
DQorI2RlZmluZSBSVDI1NzNfUkVBRF9NQUMJCTB4MDMNCisjZGVmaW5lIFJUMjU3M19XUklU
RV9NVUxUSV9NQUMJMHgwNg0KKyNkZWZpbmUgUlQyNTczX1JFQURfTVVMVElfTUFDCTB4MDcN
CisjZGVmaW5lIFJUMjU3M19SRUFEX0VFUFJPTQkweDA5DQorI2RlZmluZSBSVDI1NzNfV1JJ
VEVfTEVECTB4MGENCisNCisvKg0KKyAqIENvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlcnMu
DQorICovDQorI2RlZmluZSBSVDI1NzNfQUlGU05fQ1NSCTB4MDQwMA0KKyNkZWZpbmUgUlQy
NTczX0NXTUlOX0NTUgkweDA0MDQNCisjZGVmaW5lIFJUMjU3M19DV01BWF9DU1IJMHgwNDA4
DQorI2RlZmluZSBSVDI1NzNfTUNVX0NPREVfQkFTRQkweDA4MDANCisjZGVmaW5lIFJUMjU3
M19IV19CRUFDT05fQkFTRTAJMHgyNDAwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjAJCTB4
MzAwMA0KKyNkZWZpbmUgUlQyNTczX01BQ19DU1IxCQkweDMwMDQNCisjZGVmaW5lIFJUMjU3
M19NQUNfQ1NSMgkJMHgzMDA4DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjMJCTB4MzAwYw0K
KyNkZWZpbmUgUlQyNTczX01BQ19DU1I0CQkweDMwMTANCisjZGVmaW5lIFJUMjU3M19NQUNf
Q1NSNQkJMHgzMDE0DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjYJCTB4MzAxOA0KKyNkZWZp
bmUgUlQyNTczX01BQ19DU1I3CQkweDMwMWMNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSOAkJ
MHgzMDIwDQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjkJCTB4MzAyNA0KKyNkZWZpbmUgUlQy
NTczX01BQ19DU1IxMAkweDMwMjgNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTEJMHgzMDJj
DQorI2RlZmluZSBSVDI1NzNfTUFDX0NTUjEyCTB4MzAzMA0KKyNkZWZpbmUgUlQyNTczX01B
Q19DU1IxMwkweDMwMzQNCisjZGVmaW5lIFJUMjU3M19NQUNfQ1NSMTQJMHgzMDM4DQorI2Rl
ZmluZSBSVDI1NzNfTUFDX0NTUjE1CTB4MzAzYw0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NS
MAkweDMwNDANCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjEJMHgzMDQ0DQorI2RlZmluZSBS
VDI1NzNfVFhSWF9DU1IyCTB4MzA0OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMwkweDMw
NGMNCisjZGVmaW5lIFJUMjU3M19UWFJYX0NTUjQJMHgzMDUwDQorI2RlZmluZSBSVDI1NzNf
VFhSWF9DU1I1CTB4MzA1NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSNgkweDMwNTgNCisj
ZGVmaW5lIFJUMjU3M19UWFJYX0NTUjcJMHgzMDVjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9D
U1I4CTB4MzA2MA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSOQkweDMwNjQNCisjZGVmaW5l
IFJUMjU3M19UWFJYX0NTUjEwCTB4MzA2OA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTEJ
MHgzMDZjDQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxMgkweDMwNzANCisjZGVmaW5lIFJU
MjU3M19UWFJYX0NTUjEzCTB4MzA3NA0KKyNkZWZpbmUgUlQyNTczX1RYUlhfQ1NSMTQJMHgz
MDc4DQorI2RlZmluZSBSVDI1NzNfVFhSWF9DU1IxNQkweDMwN2MNCisjZGVmaW5lIFJUMjU3
M19QSFlfQ1NSMAkJMHgzMDgwDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjEJCTB4MzA4NA0K
KyNkZWZpbmUgUlQyNTczX1BIWV9DU1IyCQkweDMwODgNCisjZGVmaW5lIFJUMjU3M19QSFlf
Q1NSMwkJMHgzMDhjDQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjQJCTB4MzA5MA0KKyNkZWZp
bmUgUlQyNTczX1BIWV9DU1I1CQkweDMwOTQNCisjZGVmaW5lIFJUMjU3M19QSFlfQ1NSNgkJ
MHgzMDk4DQorI2RlZmluZSBSVDI1NzNfUEhZX0NTUjcJCTB4MzA5Yw0KKyNkZWZpbmUgUlQy
NTczX1NFQ19DU1IwCQkweDMwYTANCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSMQkJMHgzMGE0
DQorI2RlZmluZSBSVDI1NzNfU0VDX0NTUjIJCTB4MzBhOA0KKyNkZWZpbmUgUlQyNTczX1NF
Q19DU1IzCQkweDMwYWMNCisjZGVmaW5lIFJUMjU3M19TRUNfQ1NSNAkJMHgzMGIwDQorI2Rl
ZmluZSBSVDI1NzNfU0VDX0NTUjUJCTB4MzBiNA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1Iw
CQkweDMwYzANCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSMQkJMHgzMGM0DQorI2RlZmluZSBS
VDI1NzNfU1RBX0NTUjIJCTB4MzBjOA0KKyNkZWZpbmUgUlQyNTczX1NUQV9DU1IzCQkweDMw
Y2MNCisjZGVmaW5lIFJUMjU3M19TVEFfQ1NSNAkJMHgzMGQwDQorI2RlZmluZSBSVDI1NzNf
U1RBX0NTUjUJCTB4MzBkNA0KKw0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdpc3Rl
ciBSVDI1NzNfTUFDX0NTUjEgKi8NCisjZGVmaW5lIFJUMjU3M19SRVNFVF9BU0lDCSgxIDw8
IDApDQorI2RlZmluZSBSVDI1NzNfUkVTRVRfQkJQCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1
NzNfSE9TVF9SRUFEWQkoMSA8PCAyKQ0KKw0KKy8qIHBvc3NpYmxlIGZsYWdzIGZvciByZWdp
c3RlciBNQUNfQ1NSNSAqLw0KKyNkZWZpbmUgUlQyNTczX09ORV9CU1NJRAkzDQorDQorLyog
cG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSMCAqLw0KKy8qIFR4IGZpbHRl
ciBmbGFncyBhcmUgaW4gdGhlIGxvdyAxNiBiaXRzICovDQorI2RlZmluZSBSVDI1NzNfQVVU
T19UWF9TRVEJCSgxIDw8IDE1KQ0KKy8qIFJ4IGZpbHRlciBmbGFncyBhcmUgaW4gdGhlIGhp
Z2ggMTYgYml0cyAqLw0KKyNkZWZpbmUgUlQyNTczX0RJU0FCTEVfUlgJCSgxIDw8IDE2KQ0K
KyNkZWZpbmUgUlQyNTczX0RST1BfQ1JDX0VSUk9SCQkoMSA8PCAxNykNCisjZGVmaW5lIFJU
MjU3M19EUk9QX1BIWV9FUlJPUgkJKDEgPDwgMTgpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9D
VEwJCQkoMSA8PCAxOSkNCisjZGVmaW5lIFJUMjU3M19EUk9QX05PVF9UT19NRQkJKDEgPDwg
MjApDQorI2RlZmluZSBSVDI1NzNfRFJPUF9UT0RTCQkoMSA8PCAyMSkNCisjZGVmaW5lIFJU
MjU3M19EUk9QX1ZFUl9FUlJPUgkJKDEgPDwgMjIpDQorI2RlZmluZSBSVDI1NzNfRFJPUF9N
VUxUSUNBU1QJCSgxIDw8IDIzKQ0KKyNkZWZpbmUgUlQyNTczX0RST1BfQlJPQURDQVNUCQko
MSA8PCAyNCkNCisjZGVmaW5lIFJUMjU3M19EUk9QX0FDS0NUUwkJKDEgPDwgMjUpDQorDQor
LyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSNCAqLw0KKyNkZWZpbmUg
UlQyNTczX1NIT1JUX1BSRUFNQkxFCSgxIDw8IDE4KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9F
TkFCTEVECSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX01SUl9DQ0tfRkFMTEJBQ0sJKDEg
PDwgMjIpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9yIHJlZ2lzdGVyIFRYUlhfQ1NSOSAq
Lw0KKyNkZWZpbmUgUlQyNTczX1RTRl9USUNLSU5HCSgxIDw8IDE2KQ0KKyNkZWZpbmUgUlQy
NTczX1RTRl9NT0RFKHgpCSgoKHgpICYgMHgzKSA8PCAxNykNCisvKiBUQlRUIHN0YW5kcyBm
b3IgVGFyZ2V0IEJlYWNvbiBUcmFuc21pc3Npb24gVGltZSAqLw0KKyNkZWZpbmUgUlQyNTcz
X0VOQUJMRV9UQlRUCSgxIDw8IDE5KQ0KKyNkZWZpbmUgUlQyNTczX0dFTkVSQVRFX0JFQUNP
TgkoMSA8PCAyMCkNCisNCisvKiBwb3NzaWJsZSBmbGFncyBmb3IgcmVnaXN0ZXIgUEhZX0NT
UjAgKi8NCisjZGVmaW5lIFJUMjU3M19QQV9QRV8yR0haCSgxIDw8IDE2KQ0KKyNkZWZpbmUg
UlQyNTczX1BBX1BFXzVHSFoJKDEgPDwgMTcpDQorDQorLyogcG9zc2libGUgZmxhZ3MgZm9y
IHJlZ2lzdGVyIFBIWV9DU1IzICovDQorI2RlZmluZSBSVDI1NzNfQkJQX1JFQUQJKDEgPDwg
MTUpDQorI2RlZmluZSBSVDI1NzNfQkJQX0JVU1kJKDEgPDwgMTYpDQorLyogcG9zc2libGUg
ZmxhZ3MgZm9yIHJlZ2lzdGVyIFBIWV9DU1I0ICovDQorI2RlZmluZSBSVDI1NzNfUkZfMjBC
SVQJKDIwIDw8IDI0KQ0KKyNkZWZpbmUgUlQyNTczX1JGX0JVU1kJKDEgPDwgMzEpDQorDQor
LyogTEVEIHZhbHVlcyAqLw0KKyNkZWZpbmUgUlQyNTczX0xFRF9SQURJTwkoMSA8PCA4KQ0K
KyNkZWZpbmUgUlQyNTczX0xFRF9HCQkoMSA8PCA5KQ0KKyNkZWZpbmUgUlQyNTczX0xFRF9B
CQkoMSA8PCAxMCkNCisjZGVmaW5lIFJUMjU3M19MRURfT04JCTB4MWUxZQ0KKyNkZWZpbmUg
UlQyNTczX0xFRF9PRkYJCTB4MA0KKw0KKyNkZWZpbmUgUlQyNTczX01DVV9SVU4JKDEgPDwg
MykNCisNCisjZGVmaW5lIFJUMjU3M19TTUFSVF9NT0RFCSgxIDw8IDApDQorDQorI2RlZmlu
ZSBSVDI1NzNfQkJQUjk0X0RFRkFVTFQJNg0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9XUklU
RQkoMSA8PCAxNSkNCisNCisvKiBkdWFsLWJhbmQgUkYgKi8NCisjZGVmaW5lIFJUMjU3M19S
Rl81MjI2CTENCisjZGVmaW5lIFJUMjU3M19SRl81MjI1CTMNCisvKiBzaW5nbGUtYmFuZCBS
RiAqLw0KKyNkZWZpbmUgUlQyNTczX1JGXzI1MjgJMg0KKyNkZWZpbmUgUlQyNTczX1JGXzI1
MjcJNA0KKw0KKyNkZWZpbmUgUlQyNTczX0JCUF9WRVJTSU9OCTANCisNCitzdHJ1Y3QgcnVt
X3R4X2Rlc2Mgew0KKwl1aW50MzJfdAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19UWF9CVVJT
VAkJCSgxIDw8IDApDQorI2RlZmluZSBSVDI1NzNfVFhfVkFMSUQJCQkoMSA8PCAxKQ0KKyNk
ZWZpbmUgUlQyNTczX1RYX01PUkVfRlJBRwkJKDEgPDwgMikNCisjZGVmaW5lIFJUMjU3M19U
WF9BQ0sJCQkoMSA8PCAzKQ0KKyNkZWZpbmUgUlQyNTczX1RYX1RJTUVTVEFNUAkJKDEgPDwg
NCkNCisjZGVmaW5lIFJUMjU3M19UWF9PRkRNCQkJKDEgPDwgNSkNCisjZGVmaW5lIFJUMjU3
M19UWF9JRlNfU0lGUwkJKDEgPDwgNikNCisjZGVmaW5lIFJUMjU3M19UWF9MT05HX1JFVFJZ
CQkoMSA8PCA3KQ0KKw0KKwl1aW50MTZfdAl3bWU7DQorI2RlZmluZSBSVDI1NzNfUUlEKHYp
CQkodikNCisjZGVmaW5lIFJUMjU3M19BSUZTTih2KQkJKCh2KSA8PCA0KQ0KKyNkZWZpbmUg
UlQyNTczX0xPR0NXTUlOKHYpCSgodikgPDwgOCkNCisjZGVmaW5lIFJUMjU3M19MT0dDV01B
WCh2KQkoKHYpIDw8IDEyKQ0KKw0KKwl1aW50MTZfdAl4ZmxhZ3M7DQorI2RlZmluZSBSVDI1
NzNfVFhfSFdTRVEJCSgxIDw8IDEyKQ0KKw0KKwl1aW50OF90CQlwbGNwX3NpZ25hbDsNCisJ
dWludDhfdAkJcGxjcF9zZXJ2aWNlOw0KKyNkZWZpbmUgUlQyNTczX1BMQ1BfTEVOR0VYVAkw
eDgwDQorDQorCXVpbnQ4X3QJCXBsY3BfbGVuZ3RoX2xvOw0KKwl1aW50OF90CQlwbGNwX2xl
bmd0aF9oaTsNCisNCisJdWludDMyX3QJaXY7DQorCXVpbnQzMl90CWVpdjsNCisNCisJdWlu
dDhfdAkJb2Zmc2V0Ow0KKwl1aW50OF90CQlxaWQ7DQorCXVpbnQ4X3QJCXR4cG93ZXI7DQor
I2RlZmluZSBSVDI1NzNfREVGQVVMVF9UWFBPV0VSCTANCisNCisJdWludDhfdAkJcmVzZXJ2
ZWQ7DQorfSBfX3BhY2tlZDsNCisNCitzdHJ1Y3QgcnVtX3J4X2Rlc2Mgew0KKwl1aW50MzJf
dAlmbGFnczsNCisjZGVmaW5lIFJUMjU3M19SWF9CVVNZCQkoMSA8PCAwKQ0KKyNkZWZpbmUg
UlQyNTczX1JYX0RST1AJCSgxIDw8IDEpDQorI2RlZmluZSBSVDI1NzNfUlhfQ1JDX0VSUk9S
CSgxIDw8IDYpDQorI2RlZmluZSBSVDI1NzNfUlhfT0ZETQkJKDEgPDwgNykNCisNCisJdWlu
dDhfdAkJcmF0ZTsNCisJdWludDhfdAkJcnNzaTsNCisJdWludDhfdAkJcmVzZXJ2ZWQxOw0K
Kwl1aW50OF90CQlvZmZzZXQ7DQorCXVpbnQzMl90CWl2Ow0KKwl1aW50MzJfdAllaXY7DQor
CXVpbnQzMl90CXJlc2VydmVkMlsyXTsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQy
NTczX1JGMQkwDQorI2RlZmluZSBSVDI1NzNfUkYyCTINCisjZGVmaW5lIFJUMjU3M19SRjMJ
MQ0KKyNkZWZpbmUgUlQyNTczX1JGNAkzDQorDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX01B
Q0JCUAkJMHgwMDAwDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0FERFJFU1MJCTB4MDAwNA0K
KyNkZWZpbmUgUlQyNTczX0VFUFJPTV9BTlRFTk5BCQkweDAwMjANCisjZGVmaW5lIFJUMjU3
M19FRVBST01fQ09ORklHMgkJMHgwMDIyDQorI2RlZmluZSBSVDI1NzNfRUVQUk9NX0JCUF9C
QVNFCQkweDAwMjYNCisjZGVmaW5lIFJUMjU3M19FRVBST01fVFhQT1dFUgkJMHgwMDQ2DQor
I2RlZmluZSBSVDI1NzNfRUVQUk9NX0ZSRVFfT0ZGU0VUCTB4MDA1ZQ0KKyNkZWZpbmUgUlQy
NTczX0VFUFJPTV9SU1NJXzJHSFpfT0ZGU0VUCTB4MDA5YQ0KKyNkZWZpbmUgUlQyNTczX0VF
UFJPTV9SU1NJXzVHSFpfT0ZGU0VUCTB4MDA5Yw0KKw0KKy8qDQorICogRGVmYXVsdCB2YWx1
ZXMgZm9yIE1BQyByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBmcm9tIHRoZSByZWZlcmVuY2Ug
ZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX0RFRl9NQUMJCQkJXA0KKwl7IFJUMjU3
M19UWFJYX0NTUjAsICAweDAyNWZiMDMyIH0sCVwNCisJeyBSVDI1NzNfVFhSWF9DU1IxLCAg
MHg5ZWFhOWVhZiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSMiwgIDB4OGE4YjhjOGQgfSwJ
XA0KKwl7IFJUMjU3M19UWFJYX0NTUjMsICAweDAwODU4Njg3IH0sCVwNCisJeyBSVDI1NzNf
VFhSWF9DU1I3LCAgMHgyZTMxMzUzYiB9LAlcDQorCXsgUlQyNTczX1RYUlhfQ1NSOCwgIDB4
MmEyYTJhMmMgfSwJXA0KKwl7IFJUMjU3M19UWFJYX0NTUjE1LCAweDAwMDAwMDBmIH0sCVwN
CisJeyBSVDI1NzNfTUFDX0NTUjYsICAgMHgwMDAwMGZmZiB9LAlcDQorCXsgUlQyNTczX01B
Q19DU1I4LCAgIDB4MDE2YzAzMGEgfSwJXA0KKwl7IFJUMjU3M19NQUNfQ1NSMTAsICAweDAw
MDAwNzE4IH0sCVwNCisJeyBSVDI1NzNfTUFDX0NTUjEyLCAgMHgwMDAwMDAwNCB9LAlcDQor
CXsgUlQyNTczX01BQ19DU1IxMywgIDB4MDAwMDdmMDAgfSwJXA0KKwl7IFJUMjU3M19TRUNf
Q1NSMCwgICAweDAwMDAwMDAwIH0sCVwNCisJeyBSVDI1NzNfU0VDX0NTUjEsICAgMHgwMDAw
MDAwMCB9LAlcDQorCXsgUlQyNTczX1NFQ19DU1I1LCAgIDB4MDAwMDAwMDAgfSwJXA0KKwl7
IFJUMjU3M19QSFlfQ1NSMSwgICAweDAwMDAyM2IwIH0sCVwNCisJeyBSVDI1NzNfUEhZX0NT
UjUsICAgMHgwMDA0MGEwNiB9LAlcDQorCXsgUlQyNTczX1BIWV9DU1I2LCAgIDB4MDAwODA2
MDYgfSwJXA0KKwl7IFJUMjU3M19QSFlfQ1NSNywgICAweDAwMDAwNDA4IH0sCVwNCisJeyBS
VDI1NzNfQUlGU05fQ1NSLCAgMHgwMDAwMjI3MyB9LAlcDQorCXsgUlQyNTczX0NXTUlOX0NT
UiwgIDB4MDAwMDIzNDQgfSwJXA0KKwl7IFJUMjU3M19DV01BWF9DU1IsICAweDAwMDAzNGFh
IH0NCisNCisvKg0KKyAqIERlZmF1bHQgdmFsdWVzIGZvciBCQlAgcmVnaXN0ZXJzOyB2YWx1
ZXMgdGFrZW4gZnJvbSB0aGUgcmVmZXJlbmNlIGRyaXZlci4NCisgKi8NCisjZGVmaW5lIFJU
MjU3M19ERUZfQkJQCVwNCisJeyAgIDMsIDB4ODAgfSwJXA0KKwl7ICAxNSwgMHgzMCB9LAlc
DQorCXsgIDE3LCAweDIwIH0sCVwNCisJeyAgMjEsIDB4YzggfSwJXA0KKwl7ICAyMiwgMHgz
OCB9LAlcDQorCXsgIDIzLCAweDA2IH0sCVwNCisJeyAgMjQsIDB4ZmUgfSwJXA0KKwl7ICAy
NSwgMHgwYSB9LAlcDQorCXsgIDI2LCAweDBkIH0sCVwNCisJeyAgMzIsIDB4MGIgfSwJXA0K
Kwl7ICAzNCwgMHgxMiB9LAlcDQorCXsgIDM3LCAweDA3IH0sCVwNCisJeyAgMzksIDB4Zjgg
fSwJXA0KKwl7ICA0MSwgMHg2MCB9LAlcDQorCXsgIDUzLCAweDEwIH0sCVwNCisJeyAgNTQs
IDB4MTggfSwJXA0KKwl7ICA2MCwgMHgxMCB9LAlcDQorCXsgIDYxLCAweDA0IH0sCVwNCisJ
eyAgNjIsIDB4MDQgfSwJXA0KKwl7ICA3NSwgMHhmZSB9LAlcDQorCXsgIDg2LCAweGZlIH0s
CVwNCisJeyAgODgsIDB4ZmUgfSwJXA0KKwl7ICA5MCwgMHgwZiB9LAlcDQorCXsgIDk5LCAw
eDAwIH0sCVwNCisJeyAxMDIsIDB4MTYgfSwJXA0KKwl7IDEwNywgMHgwNCB9DQorDQorLyoN
CisgKiBEZWZhdWx0IHNldHRpbmdzIGZvciBSRiByZWdpc3RlcnM7IHZhbHVlcyB0YWtlbiBm
cm9tIHRoZSByZWZlcmVuY2UgZHJpdmVyLg0KKyAqLw0KKyNkZWZpbmUgUlQyNTczX1JGNTIy
NgkJCQkJXA0KKwl7ICAgMSwgMHgwMGIwMywgMHgwMDFlMSwgMHgxYTAxNCwgMHgzMDI4MiB9
LAlcDQorCXsgICAyLCAweDAwYjAzLCAweDAwMWUxLCAweDFhMDE0LCAweDMwMjg3IH0sCVwN
CisJeyAgIDMsIDB4MDBiMDMsIDB4MDAxZTIsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7
ICAgNCwgMHgwMGIwMywgMHgwMDFlMiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgICA1
LCAweDAwYjAzLCAweDAwMWUzLCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDYsIDB4
MDBiMDMsIDB4MDAxZTMsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgNywgMHgwMGIw
MywgMHgwMDFlNCwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgICA4LCAweDAwYjAzLCAw
eDAwMWU0LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgIDksIDB4MDBiMDMsIDB4MDAx
ZTUsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMCwgMHgwMGIwMywgMHgwMDFlNSwg
MHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDExLCAweDAwYjAzLCAweDAwMWU2LCAweDFh
MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTIsIDB4MDBiMDMsIDB4MDAxZTYsIDB4MWEwMTQs
IDB4MzAyODcgfSwJXA0KKwl7ICAxMywgMHgwMGIwMywgMHgwMDFlNywgMHgxYTAxNCwgMHgz
MDI4MiB9LAlcDQorCXsgIDE0LCAweDAwYjAzLCAweDAwMWU4LCAweDFhMDE0LCAweDMwMjg0
IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNCwgMHgwMGIwMywgMHgyMDI2NiwgMHgzNjAxNCwg
MHgzMDI4MiB9LAlcDQorCXsgIDM4LCAweDAwYjAzLCAweDIwMjY3LCAweDM2MDE0LCAweDMw
Mjg0IH0sCVwNCisJeyAgNDIsIDB4MDBiMDMsIDB4MjAyNjgsIDB4MzYwMTQsIDB4MzAyODYg
fSwJXA0KKwl7ICA0NiwgMHgwMGIwMywgMHgyMDI2OSwgMHgzNjAxNCwgMHgzMDI4OCB9LAlc
DQorCQkJCQkJCVwNCisJeyAgMzYsIDB4MDBiMDMsIDB4MDAyNjYsIDB4MjYwMTQsIDB4MzAy
ODggfSwJXA0KKwl7ICA0MCwgMHgwMGIwMywgMHgwMDI2OCwgMHgyNjAxNCwgMHgzMDI4MCB9
LAlcDQorCXsgIDQ0LCAweDAwYjAzLCAweDAwMjY5LCAweDI2MDE0LCAweDMwMjgyIH0sCVwN
CisJeyAgNDgsIDB4MDBiMDMsIDB4MDAyNmEsIDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7
ICA1MiwgMHgwMGIwMywgMHgwMDI2YiwgMHgyNjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDU2
LCAweDAwYjAzLCAweDAwMjZjLCAweDI2MDE0LCAweDMwMjg4IH0sCVwNCisJeyAgNjAsIDB4
MDBiMDMsIDB4MDAyNmUsIDB4MjYwMTQsIDB4MzAyODAgfSwJXA0KKwl7ICA2NCwgMHgwMGIw
MywgMHgwMDI2ZiwgMHgyNjAxNCwgMHgzMDI4MiB9LAlcDQorCQkJCQkJCVwNCisJeyAxMDAs
IDB4MDBiMDMsIDB4MDAyOGEsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEwNCwgMHgw
MGIwMywgMHgwMDI4YiwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTA4LCAweDAwYjAz
LCAweDAwMjhjLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMTIsIDB4MDBiMDMsIDB4
MDAyOGQsIDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDExNiwgMHgwMGIwMywgMHgwMDI4
ZSwgMHgyZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTIwLCAweDAwYjAzLCAweDAwMmEwLCAw
eDJlMDE0LCAweDMwMjgwIH0sCVwNCisJeyAxMjQsIDB4MDBiMDMsIDB4MDAyYTEsIDB4MmUw
MTQsIDB4MzAyODIgfSwJXA0KKwl7IDEyOCwgMHgwMGIwMywgMHgwMDJhMiwgMHgyZTAxNCwg
MHgzMDI4NCB9LAlcDQorCXsgMTMyLCAweDAwYjAzLCAweDAwMmEzLCAweDJlMDE0LCAweDMw
Mjg2IH0sCVwNCisJeyAxMzYsIDB4MDBiMDMsIDB4MDAyYTQsIDB4MmUwMTQsIDB4MzAyODgg
fSwJXA0KKwl7IDE0MCwgMHgwMGIwMywgMHgwMDJhNiwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc
DQorCQkJCQkJCVwNCisJeyAxNDksIDB4MDBiMDMsIDB4MDAyYTgsIDB4MmUwMTQsIDB4MzAy
ODcgfSwJXA0KKwl7IDE1MywgMHgwMGIwMywgMHgwMDJhOSwgMHgyZTAxNCwgMHgzMDI4OSB9
LAlcDQorCXsgMTU3LCAweDAwYjAzLCAweDAwMmFiLCAweDJlMDE0LCAweDMwMjgxIH0sCVwN
CisJeyAxNjEsIDB4MDBiMDMsIDB4MDAyYWMsIDB4MmUwMTQsIDB4MzAyODMgfSwJXA0KKwl7
IDE2NSwgMHgwMGIwMywgMHgwMDJhZCwgMHgyZTAxNCwgMHgzMDI4NSB9DQorDQorI2RlZmlu
ZSBSVDI1NzNfUkY1MjI1CQkJCQlcDQorCXsgICAxLCAweDAwYjMzLCAweDAxMWUxLCAweDFh
MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgIDIsIDB4MDBiMzMsIDB4MDExZTEsIDB4MWEwMTQs
IDB4MzAyODcgfSwJXA0KKwl7ICAgMywgMHgwMGIzMywgMHgwMTFlMiwgMHgxYTAxNCwgMHgz
MDI4MiB9LAlcDQorCXsgICA0LCAweDAwYjMzLCAweDAxMWUyLCAweDFhMDE0LCAweDMwMjg3
IH0sCVwNCisJeyAgIDUsIDB4MDBiMzMsIDB4MDExZTMsIDB4MWEwMTQsIDB4MzAyODIgfSwJ
XA0KKwl7ICAgNiwgMHgwMGIzMywgMHgwMTFlMywgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQor
CXsgICA3LCAweDAwYjMzLCAweDAxMWU0LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAg
IDgsIDB4MDBiMzMsIDB4MDExZTQsIDB4MWEwMTQsIDB4MzAyODcgfSwJXA0KKwl7ICAgOSwg
MHgwMGIzMywgMHgwMTFlNSwgMHgxYTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgIDEwLCAweDAw
YjMzLCAweDAxMWU1LCAweDFhMDE0LCAweDMwMjg3IH0sCVwNCisJeyAgMTEsIDB4MDBiMzMs
IDB4MDExZTYsIDB4MWEwMTQsIDB4MzAyODIgfSwJXA0KKwl7ICAxMiwgMHgwMGIzMywgMHgw
MTFlNiwgMHgxYTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgIDEzLCAweDAwYjMzLCAweDAxMWU3
LCAweDFhMDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMTQsIDB4MDBiMzMsIDB4MDExZTgsIDB4
MWEwMTQsIDB4MzAyODQgfSwJXA0KKwkJCQkJCQlcDQorCXsgIDM0LCAweDAwYjMzLCAweDAx
MjY2LCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJeyAgMzgsIDB4MDBiMzMsIDB4MDEyNjcs
IDB4MjYwMTQsIDB4MzAyODQgfSwJXA0KKwl7ICA0MiwgMHgwMGIzMywgMHgwMTI2OCwgMHgy
NjAxNCwgMHgzMDI4NiB9LAlcDQorCXsgIDQ2LCAweDAwYjMzLCAweDAxMjY5LCAweDI2MDE0
LCAweDMwMjg4IH0sCVwNCisJCQkJCQkJXA0KKwl7ICAzNiwgMHgwMGIzMywgMHgwMTI2Niwg
MHgyNjAxNCwgMHgzMDI4OCB9LAlcDQorCXsgIDQwLCAweDAwYjMzLCAweDAxMjY4LCAweDI2
MDE0LCAweDMwMjgwIH0sCVwNCisJeyAgNDQsIDB4MDBiMzMsIDB4MDEyNjksIDB4MjYwMTQs
IDB4MzAyODIgfSwJXA0KKwl7ICA0OCwgMHgwMGIzMywgMHgwMTI2YSwgMHgyNjAxNCwgMHgz
MDI4NCB9LAlcDQorCXsgIDUyLCAweDAwYjMzLCAweDAxMjZiLCAweDI2MDE0LCAweDMwMjg2
IH0sCVwNCisJeyAgNTYsIDB4MDBiMzMsIDB4MDEyNmMsIDB4MjYwMTQsIDB4MzAyODggfSwJ
XA0KKwl7ICA2MCwgMHgwMGIzMywgMHgwMTI2ZSwgMHgyNjAxNCwgMHgzMDI4MCB9LAlcDQor
CXsgIDY0LCAweDAwYjMzLCAweDAxMjZmLCAweDI2MDE0LCAweDMwMjgyIH0sCVwNCisJCQkJ
CQkJXA0KKwl7IDEwMCwgMHgwMGIzMywgMHgwMTI4YSwgMHgyZTAxNCwgMHgzMDI4MCB9LAlc
DQorCXsgMTA0LCAweDAwYjMzLCAweDAxMjhiLCAweDJlMDE0LCAweDMwMjgyIH0sCVwNCisJ
eyAxMDgsIDB4MDBiMzMsIDB4MDEyOGMsIDB4MmUwMTQsIDB4MzAyODQgfSwJXA0KKwl7IDEx
MiwgMHgwMGIzMywgMHgwMTI4ZCwgMHgyZTAxNCwgMHgzMDI4NiB9LAlcDQorCXsgMTE2LCAw
eDAwYjMzLCAweDAxMjhlLCAweDJlMDE0LCAweDMwMjg4IH0sCVwNCisJeyAxMjAsIDB4MDBi
MzMsIDB4MDEyYTAsIDB4MmUwMTQsIDB4MzAyODAgfSwJXA0KKwl7IDEyNCwgMHgwMGIzMywg
MHgwMTJhMSwgMHgyZTAxNCwgMHgzMDI4MiB9LAlcDQorCXsgMTI4LCAweDAwYjMzLCAweDAx
MmEyLCAweDJlMDE0LCAweDMwMjg0IH0sCVwNCisJeyAxMzIsIDB4MDBiMzMsIDB4MDEyYTMs
IDB4MmUwMTQsIDB4MzAyODYgfSwJXA0KKwl7IDEzNiwgMHgwMGIzMywgMHgwMTJhNCwgMHgy
ZTAxNCwgMHgzMDI4OCB9LAlcDQorCXsgMTQwLCAweDAwYjMzLCAweDAxMmE2LCAweDJlMDE0
LCAweDMwMjgwIH0sCVwNCisJCQkJCQkJXA0KKwl7IDE0OSwgMHgwMGIzMywgMHgwMTJhOCwg
MHgyZTAxNCwgMHgzMDI4NyB9LAlcDQorCXsgMTUzLCAweDAwYjMzLCAweDAxMmE5LCAweDJl
MDE0LCAweDMwMjg5IH0sCVwNCisJeyAxNTcsIDB4MDBiMzMsIDB4MDEyYWIsIDB4MmUwMTQs
IDB4MzAyODEgfSwJXA0KKwl7IDE2MSwgMHgwMGIzMywgMHgwMTJhYywgMHgyZTAxNCwgMHgz
MDI4MyB9LAlcDQorCXsgMTY1LCAweDAwYjMzLCAweDAxMmFkLCAweDJlMDE0LCAweDMwMjg1
IH0NCkluZGV4OiBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
IGZpbGU6IHN5cy9kZXYvdXNiL2lmX3J1bXZhci5oDQpkaWZmIC1OIHN5cy9kZXYvdXNiL2lm
X3J1bXZhci5oDQotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisr
KyBzeXMvZGV2L3VzYi9pZl9ydW12YXIuaAkyMiBBcHIgMjAwNyAwODowMTo1NCAtMDAwMA0K
QEAgLTAsMCArMSwxNjMgQEANCisvKgkkT3BlbkJTRDogaWZfcnVtdmFyLmgsdiAxLjYgMjAw
Ni8wOC8xOCAxNToxMToxMiBkYW1pZW4gRXhwICQJKi8NCisNCisvKi0NCisgKiBDb3B5cmln
aHQgKGMpIDIwMDUsIDIwMDYgRGFtaWVuIEJlcmdhbWluaSA8ZGFtaWVuLmJlcmdhbWluaUBm
cmVlLmZyPg0KKyAqIENvcHlyaWdodCAoYykgMjAwNiBOaWFsbCBPJ0hpZ2dpbnMgPG5pYWxs
b0BvcGVuYnNkLm9yZz4NCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIDIwMDcgVmFsZXJ5IFYu
Q2hpa2Fsb3YgPHZhbGVyYUBjaGlrYWxvdi5kcC51YT4NCisgKg0KKyAqIFBlcm1pc3Npb24g
dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y
IGFueQ0KKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0
aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLg0KKyAqDQorICog
VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xB
SU1TIEFMTCBXQVJSQU5USUVTDQorICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJ
TkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRg0KKyAqIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUg
Rk9SDQorICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUw0KKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZS
T00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KKyAqIEFD
VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04s
IEFSSVNJTkcgT1VUIE9GDQorICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1Ig
UEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCisgKi8NCisNCisjZGVmaW5lIFJUMjU3
M19SWF9MSVNUX0NPVU5UCTENCisjZGVmaW5lIFJUMjU3M19UWF9MSVNUX0NPVU5UCTENCisN
CitzdHJ1Y3QgcnVtX3J4X3JhZGlvdGFwX2hlYWRlciB7DQorCXN0cnVjdCBpZWVlODAyMTFf
cmFkaW90YXBfaGVhZGVyIHdyX2loZHI7DQorCXVpbnQ4X3QJCXdyX2ZsYWdzOw0KKwl1aW50
OF90CQl3cl9yYXRlOw0KKwl1aW50MTZfdAl3cl9jaGFuX2ZyZXE7DQorCXVpbnQxNl90CXdy
X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXdyX2FudGVubmE7DQorCXVpbnQ4X3QJCXdyX2Fu
dHNpZ25hbDsNCit9IF9fcGFja2VkOw0KKw0KKyNkZWZpbmUgUlQyNTczX1JYX1JBRElPVEFQ
X1BSRVNFTlQJCQkJCVwNCisJKCgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9GTEFHUykgfAkJ
CQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9UQVBfUkFURSkgfAkJCQlcDQorCSAoMSA8
PCBJRUVFODAyMTFfUkFESU9UQVBfQ0hBTk5FTCkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAy
MTFfUkFESU9UQVBfQU5URU5OQSkgfAkJCQlcDQorCSAoMSA8PCBJRUVFODAyMTFfUkFESU9U
QVBfREJfQU5UU0lHTkFMKSkNCisNCitzdHJ1Y3QgcnVtX3R4X3JhZGlvdGFwX2hlYWRlciB7
DQorCXN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyIHd0X2loZHI7DQorCXVpbnQ4
X3QJCXd0X2ZsYWdzOw0KKwl1aW50OF90CQl3dF9yYXRlOw0KKwl1aW50MTZfdAl3dF9jaGFu
X2ZyZXE7DQorCXVpbnQxNl90CXd0X2NoYW5fZmxhZ3M7DQorCXVpbnQ4X3QJCXd0X2FudGVu
bmE7DQorfSBfX3BhY2tlZDsNCisNCisjZGVmaW5lIFJUMjU3M19UWF9SQURJT1RBUF9QUkVT
RU5UCQkJCQkJXA0KKwkoKDEgPDwgSUVFRTgwMjExX1JBRElPVEFQX0ZMQUdTKSB8CQkJCVwN
CisJICgxIDw8IElFRUU4MDIxMV9SQURJT1RBUF9SQVRFKSB8CQkJCVwNCisJICgxIDw8IElF
RUU4MDIxMV9SQURJT1RBUF9DSEFOTkVMKSB8CQkJCVwNCisJICgxIDw8IElFRUU4MDIxMV9S
QURJT1RBUF9BTlRFTk5BKSkNCisNCitzdHJ1Y3QgcnVtX3NvZnRjOw0KKw0KK3N0cnVjdCBy
dW1fdHhfZGF0YSB7DQorCXN0cnVjdCBydW1fc29mdGMJKnNjOw0KKwl1c2JkX3hmZXJfaGFu
ZGxlCXhmZXI7DQorCXVpbnQ4X3QJCQkqYnVmOw0KKwlzdHJ1Y3QgbWJ1ZgkJKm07DQorCXN0
cnVjdCBpZWVlODAyMTFfbm9kZQkqbmk7DQorfTsNCisNCitzdHJ1Y3QgcnVtX3J4X2RhdGEg
ew0KKwlzdHJ1Y3QgcnVtX3NvZnRjCSpzYzsNCisJdXNiZF94ZmVyX2hhbmRsZQl4ZmVyOw0K
Kwl1aW50OF90CQkJKmJ1ZjsNCisJc3RydWN0IG1idWYJCSptOw0KK307DQorDQorc3RydWN0
IHJ1bV9zb2Z0YyB7DQorCWRldmljZV90CQkJICAgIHNjX2RldjsNCisJc3RydWN0IGlmbmV0
ICAgICAgICAgICAqc2NfaWZwOw0KKwlzdHJ1Y3QgaWVlZTgwMjExY29tCQlzY19pYzsNCisJ
aW50CQkJCSgqc2NfbmV3c3RhdGUpKHN0cnVjdCBpZWVlODAyMTFjb20gKiwNCisJCQkJCSAg
ICBlbnVtIGllZWU4MDIxMV9zdGF0ZSwgaW50KTsNCisNCisJdXNiZF9kZXZpY2VfaGFuZGxl
CQlzY191ZGV2Ow0KKwl1c2JkX2ludGVyZmFjZV9oYW5kbGUJCXNjX2lmYWNlOw0KKwlpbnQJ
CQkJc2NfZmxhZ3M7DQorI2RlZmluZQlSVDI1NzNfRldMT0FERUQJKDEgPDwgMCkNCisNCisJ
c3RydWN0IGllZWU4MDIxMV9jaGFubmVsCSpzY19jdXJjaGFuOw0KKw0KKwlpbnQJCQkJc2Nf
cnhfbm87DQorCWludAkJCQlzY190eF9ubzsNCisNCisJdWludDE2X3QJCQltYWNiYnBfcmV2
Ow0KKwl1aW50OF90CQkJCXJmX3JldjsNCisJdWludDhfdAkJCQlyZmZyZXE7DQorDQorCXVz
YmRfeGZlcl9oYW5kbGUJCWFtcnJfeGZlcjsNCisNCisJdXNiZF9waXBlX2hhbmRsZQkJc2Nf
cnhfcGlwZWg7DQorCXVzYmRfcGlwZV9oYW5kbGUJCXNjX3R4X3BpcGVoOw0KKw0KKwllbnVt
IGllZWU4MDIxMV9zdGF0ZQkJc2Nfc3RhdGU7DQorCXN0cnVjdCB1c2JfdGFzawkJCXNjX3Rh
c2s7DQorDQorCXN0cnVjdCBpZWVlODAyMTFfYW1yciAgICAgICAgCWFtcnI7DQorCXN0cnVj
dCBpZWVlODAyMTFfYW1ycl9ub2RlICAgICAJYW1uOw0KKw0KKwlzdHJ1Y3QgcnVtX3J4X2Rh
dGEJCXJ4X2RhdGFbUlQyNTczX1JYX0xJU1RfQ09VTlRdOw0KKwlzdHJ1Y3QgcnVtX3R4X2Rh
dGEJCXR4X2RhdGFbUlQyNTczX1RYX0xJU1RfQ09VTlRdOw0KKwlpbnQJCQkJdHhfcXVldWVk
Ow0KKw0KKwlzdHJ1Y3QgaWVlZTgwMjExX2JlYWNvbl9vZmZzZXRzCXNjX2JvOw0KKw0KKwlz
dHJ1Y3QJbXR4CQkJc2NfbXR4Ow0KKw0KKwlzdHJ1Y3QgY2FsbG91dAkJCXNjYW5fY2g7DQor
CXN0cnVjdCBjYWxsb3V0CQkJYW1ycl9jaDsNCisNCisJaW50CQkJCXNjX3R4X3RpbWVyOw0K
Kw0KKwl1aW50MzJfdAkJCXN0YVs2XTsNCisJdWludDMyX3QJCQlyZl9yZWdzWzRdOw0KKwl1
aW50OF90CQkJCXR4cG93WzQ0XTsNCisNCisJc3RydWN0IHsNCisJCXVpbnQ4X3QJdmFsOw0K
KwkJdWludDhfdAlyZWc7DQorCX0gX19wYWNrZWQJCQliYnBfcHJvbVsxNl07DQorDQorCWlu
dAkJCQlod19yYWRpbzsNCisJaW50CQkJCXJ4X2FudDsNCisJaW50CQkJCXR4X2FudDsNCisJ
aW50CQkJCW5iX2FudDsNCisJaW50CQkJCWV4dF8yZ2h6X2xuYTsNCisJaW50CQkJCWV4dF81
Z2h6X2xuYTsNCisJaW50CQkJCXJzc2lfMmdoel9jb3JyOw0KKwlpbnQJCQkJcnNzaV81Z2h6
X2NvcnI7DQorCWludAkJCQlzaWZzOw0KKwl1aW50OF90CQkJCWJicDE3Ow0KKw0KKwlzdHJ1
Y3QgYnBmX2lmICAgICAgKnNjX2RydmJwZjsNCisNCisJdW5pb24gew0KKwkJc3RydWN0IHJ1
bV9yeF9yYWRpb3RhcF9oZWFkZXIgdGg7DQorCQl1aW50OF90CXBhZFs2NF07DQorCX0JCQkJ
c2Nfcnh0YXB1Ow0KKyNkZWZpbmUgc2Nfcnh0YXAJc2Nfcnh0YXB1LnRoDQorCWludAkJCQlz
Y19yeHRhcF9sZW47DQorDQorCXVuaW9uIHsNCisJCXN0cnVjdCBydW1fdHhfcmFkaW90YXBf
aGVhZGVyIHRoOw0KKwkJdWludDhfdAlwYWRbNjRdOw0KKwl9CQkJCXNjX3R4dGFwdTsNCisj
ZGVmaW5lIHNjX3R4dGFwCXNjX3R4dGFwdS50aA0KKwlpbnQJCQkJc2NfdHh0YXBfbGVuOw0K
K307DQorDQorI2lmIDANCisjZGVmaW5lIFJVTV9MT0NLKHNjKSAgICBtdHhfbG9jaygmKHNj
KS0+c2NfbXR4KQ0KKyNkZWZpbmUgUlVNX1VOTE9DSyhzYykgIG10eF91bmxvY2soJihzYykt
PnNjX210eCkNCisjZWxzZQ0KKyNkZWZpbmUgUlVNX0xPQ0soc2MpICAgIGRvIHsgKChzYykg
PSAoc2MpKTsgbXR4X2xvY2soJkdpYW50KTsgfSB3aGlsZSAoMCkNCisjZGVmaW5lIFJVTV9V
TkxPQ0soc2MpICBtdHhfdW5sb2NrKCZHaWFudCkNCisjZW5kaWYNCisNCisNCkluZGV4OiBz
eXMvZGV2L3VzYi91c2JkZXZzDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2
cy9zcmMvc3lzL2Rldi91c2IvdXNiZGV2cyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjkx
DQpkaWZmIC11IC1yMS4yOTEgdXNiZGV2cw0KLS0tIHN5cy9kZXYvdXNiL3VzYmRldnMJMTMg
QXByIDIwMDcgMTg6MTU6MDcgLTAwMDAJMS4yOTENCisrKyBzeXMvZGV2L3VzYi91c2JkZXZz
CTIyIEFwciAyMDA3IDA4OjAxOjU1IC0wMDAwDQpAQCAtMzU1LDYgKzM1NSw3IEBADQogdmVu
ZG9yIERJR0lUQUxTVFJFQU0JMHgwNzRlCURpZ2l0YWwgU3RyZWFtDQogdmVuZG9yIEFVUkVB
TAkJMHgwNzU1CUF1cmVhbA0KIHZlbmRvciBNSURJTUFOCQkweDA3NjMJTWlkaW1hbg0KK3Zl
bmRvciBTVVJFQ09NCQkweDA3NjkJU3VyZWNvbSBUZWNobm9sb2d5DQogdmVuZG9yIExJTktT
WVMyCQkweDA3N2IJTGlua3N5cw0KIHZlbmRvciBHUklGRklOCQkweDA3N2QJR3JpZmZpbg0K
IHZlbmRvciBTQU5ESVNLCQkweDA3ODEJU2FuRGlzaw0KQEAgLTM4NCw2ICszODUsNyBAQA0K
IHZlbmRvciBBVkVSTUVESUEJMHgwN2NhCUFWZXJNZWRpYQ0KIHZlbmRvciBTSUlHCQkweDA3
Y2MJU0lJRw0KIHZlbmRvciBDQVNJTwkJMHgwN2NmCUNBU0lPDQordmVuZG9yIERMSU5LMgkJ
MHgwN2QxCUQtTGluaw0KIHZlbmRvciBBUFRJTwkJMHgwN2QyCUFwdGlvDQogdmVuZG9yIEFS
QVNBTgkJMHgwN2RhCUFyYXNhbg0KIHZlbmRvciBBTExJRURDQUJMRQkweDA3ZTYJQWxsaWVk
IENhYmxlDQpAQCAtNDg3LDYgKzQ4OSw3IEBADQogdmVuZG9yIEFDREMJCTB4MGQ3ZQlBQ0RD
DQogdmVuZG9yIEFCQwkJMHgwZDhjCUFCQw0KIHZlbmRvciBDT05DRVBUUk9OSUMJMHgwZDhl
CUNvbmNlcHRyb25pYw0KK3ZlbmRvciBTSVRFQ09NRVUgICAgMHgwZGY2ICBTaXRlY29tIEV1
cm9wZQ0KIHZlbmRvciBNU0kJCTB4MGRiMAlNaWNybyBTdGFyIEludGVybmF0aW9uYWwNCiB2
ZW5kb3IgSEFXS0lORwkJMHgwZTY2CUhhd2tpbmcNCiB2ZW5kb3IgR01BVEUJCTB4MGU3ZQlH
Lk1hdGUsIEluYw0KQEAgLTUxNywxMCArNTIwLDEyIEBADQogdmVuZG9yIEhVQVdFSQkJMHgx
MmQxCUh1YXdlaSBUZWNobm9sb2dpZXMNCiB2ZW5kb3IgQUlOQ09NTQkJMHgxMmZkCUFpbmNv
bW0NCiB2ZW5kb3IgTU9CSUxJVFkJCTB4MTM0MglNb2JpbGl0eQ0KK3ZlbmRvciBESUNLU01J
VEgJMHgxMzcxCURpY2sgU21pdGggRWxlY3Ryb25pY3MNCiB2ZW5kb3IgTElOS1NZUzQJCTB4
MTNiMQlMaW5rc3lzDQogdmVuZG9yIFNIQVJLCQkweDEzZDIJU2hhcmsNCiB2ZW5kb3IgTk9W
QVRFTAkJMHgxNDEwCU5vdmF0ZWwgV2lyZWxlc3MNCiB2ZW5kb3IgUkFESU9TSEFDSwkweDE0
NTMJUmFkaW8gU2hhY2sNCit2ZW5kb3IgSFVBV0VJM0NPTQkweDE0NzIJSHVhd2VpIDNDb20N
CiB2ZW5kb3IgU0lMSUNPTQkJMHgxNDg1CVNpbGljb20NCiB2ZW5kb3IgUkFMSU5LCQkweDE0
OGYJUmFsaW5rIFRlY2hub2xvZ3kNCiB2ZW5kb3IgSU1BR0lOQVRJT04JMHgxNDlhCUltYWdp
bmF0aW9uIFRlY2hub2xvZ2llcw0KQEAgLTUzMSwxNCArNTM2LDE3IEBADQogdmVuZG9yIFNP
SE9XQVJFCQkweDE1ZTgJU09IT3dhcmUNCiB2ZW5kb3IgVU1BWAkJMHgxNjA2CVVNQVgNCiB2
ZW5kb3IgSU5TSURFT1VUCTB4MTYwOAlJbnNpZGUgT3V0IE5ldHdvcmtzDQordmVuZG9yIEdP
T0RXQVkgICAgICAweDE2MzEgIEdvb2QgV2F5IFRlY2hub2xvZ3kNCiB2ZW5kb3IgRU5UUkVH
QQkJMHgxNjQ1CUVudHJlZ2ENCiB2ZW5kb3IgQUNUSU9OVEVDCTB4MTY2OAlBY3Rpb250ZWMN
CiB2ZW5kb3IgQVRIRVJPUwkJMHgxNjhjCUF0aGVyb3MgQ29tbXVuaWNhdGlvbnMNCiB2ZW5k
b3IgR0lHQVNFVAkJMHgxNjkwCUdpZ2FzZXQNCiB2ZW5kb3IgR0xPQkFMU1VOCTB4MTZhYglH
bG9iYWwgU3VuIFRlY2hub2xvZ3kNCiB2ZW5kb3IgQ01PVEVDSAkJMHgxNmQ4CUNNT1RFQ0gg
Q08uLCBMVEQuDQordmVuZG9yIFFDT00gICAgICAgICAweDE4ZTggIFFjb20NCiB2ZW5kb3Ig
TElOS1NZUzMJCTB4MTkxNQlMaW5rc3lzDQogdmVuZG9yIERMSU5LCQkweDIwMDEJRC1MaW5r
DQordmVuZG9yIFBMQU5FWDIgICAgICAweDIwMTkgIFBsYW5leCBDb21tdW5pY2F0aW9ucw0K
IHZlbmRvciBFUklDU1NPTgkJMHgyMjgyCUVyaWNzc29uDQogdmVuZG9yIE1PVE9ST0xBMgkw
eDIyYjgJTW90b3JvbGENCiB2ZW5kb3IgVFJJUFBMSVRFCTB4MjQ3OAlUcmlwcC1MaXRlDQpA
QCAtNTU5LDcgKzU2Nyw3IEBADQogdmVuZG9yIE9OU1BFQzIJCTB4NTVhYQlPblNwZWMNCiB2
ZW5kb3IgWklOV0VMTAkJMHg1YTU3CVppbndlbGwNCiB2ZW5kb3IgU0lURUNPTQkJMHg2MTg5
CVNpdGVjb20NCi12ZW5kb3IgQVJLTUlDUk8JCTB4NjU0NwlBcmttaWNybyBUZWNobm9sb2dp
ZXMNCit2ZW5kb3IgQVJLTUlDUk8gICAgIDB4NjU0NyAgQXJrbWljcm8gVGVjaG5vbG9naWVz
DQogdmVuZG9yIElOVEVMCQkweDgwODYJSW50ZWwNCiB2ZW5kb3IgSFAyCQkweGYwMDMJSGV3
bGV0dCBQYWNrYXJkDQogDQpAQCAtNTk0LDYgKzYwMiw3IEBADQogcHJvZHVjdCBBQk9DT00g
WFg4CQkweDQxMDIJWFg4DQogcHJvZHVjdCBBQk9DT00gWFg5CQkweDQxMDQJWFg5DQogcHJv
ZHVjdCBBQk9DT00gWFgxMAkJMHhhYmMxCVhYMTANCitwcm9kdWN0IEFCT0NPTSBSVDI1NzMJ
MHhiMjFkCVJUMjU3Mw0KIA0KIC8qIEFjY3RvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQUND
VE9OIFVTQjMyMF9FQwkweDEwNDYJVVNCMzIwLUVDIEV0aGVybmV0DQpAQCAtNjkyLDcgKzcw
MSw3IEBADQogcHJvZHVjdCBBUFBMRSBJUE9ETkFOTwkJMHgxMjBhCWlQb2QgTmFubw0KIA0K
IC8qIEFya21pY3JvIFRlY2hub2xvZ2llcyAqLw0KLXByb2R1Y3QgQVJLTUlDUk8gQVJLMzEx
NgkweDAyMzIJQVJLMzExNiBTZXJpYWwNCitwcm9kdWN0IEFSS01JQ1JPIEFSSzMxMTYgICAg
ICAweDAyMzIgIEFSSzMxMTYgU2VyaWFsDQogDQogLyogQXNhaGkgT3B0aWNhbCBwcm9kdWN0
cyAqLw0KIHByb2R1Y3QgQVNBSElPUFRJQ0FMIE9QVElPMjMwCTB4MDAwNAlEaWdpdGFsIGNh
bWVyYQ0KQEAgLTcwMyw2ICs3MTIsNyBAQA0KIA0KIC8qIEFTVVMgcHJvZHVjdHMgKi8NCiBw
cm9kdWN0IEFTVVMgV0wxNjdHCQkweDE3MDcJV0wtMTY3ZyB3aXJlbGVzcyBhZGFwdGVyDQor
cHJvZHVjdCBBU1VTIFJUMjU3MwkJMHgxNzIzCVJUMjU3Mw0KIA0KIC8qIEFUZW4gcHJvZHVj
dHMgKi8NCiBwcm9kdWN0IEFURU4gVUMxMjg0CQkweDIwMDEJUGFyYWxsZWwgcHJpbnRlcg0K
QEAgLTc0MCw5ICs3NTAsMTIgQEANCiBwcm9kdWN0IEJFTEtJTiBGNVUxMDkJCTB4MDEwOQlG
NVUxMDkgU2VyaWFsDQogcHJvZHVjdCBCRUxLSU4gRjVVMjA4CQkweDAyMDgJRjVVMjA4IFZp
ZGVvQnVzIElJDQogcHJvZHVjdCBCRUxLSU4gRjVVNDA5CQkweDA0MDkJRjVVNDA5IFNlcmlh
bA0KLXByb2R1Y3QgQkVMS0lOIEY2QzU1MEFWUgkweDA1NTEJRjZDNTUwLUFWUiBVUFMNCitw
cm9kdWN0IEJFTEtJTiBGNkM1NTBBVlIgICAgMHgwNTUxICBGNkM1NTAtQVZSIFVQUw0KIHBy
b2R1Y3QgQkVMS0lOIEY1VTEyMAkJMHgxMjAzCUY1VTEyMC1QQyBIdWINCiBwcm9kdWN0IEJF
TEtJTiBGNUQ3MDUwCQkweDcwNTAJRjVENzA1MCB3aXJlbGVzcyBhZGFwdGVyDQorcHJvZHVj
dCBCRUxLSU4gRjVENzA1MEEJCTB4NzA1YQlGNUQ3MDVBIDU0ZyBVU0IgTmV0d29yayBBZGFw
dGVyDQorcHJvZHVjdCBCRUxLSU4gRjVEOTA1MFYzCTB4OTA1YglGNUQ5MDUwIHZlciAzDQor
DQogDQogLyogQmlsbGlvbnRvbiBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgQklMTElPTlRPTiBV
U0IxMDAJMHgwOTg2CVVTQjEwME4gMTAvMTAwIEZhc3RFdGhlcm5ldA0KQEAgLTg0NSw3ICs4
NTgsNyBAQA0KIC8qIEN5cHJlc3MgU2VtaWNvbmR1Y3RvciBwcm9kdWN0cyAqLw0KIHByb2R1
Y3QgQ1lQUkVTUyBNT1VTRQkJMHgwMDAxCW1vdXNlDQogcHJvZHVjdCBDWVBSRVNTIFRIRVJN
TwkJMHgwMDAyCXRoZXJtb21ldGVyDQotcHJvZHVjdCBDWVBSRVNTIFdJU1BZCQkweDBiYWQJ
TWV0YUdlZWsgV2ktU3B5DQorcHJvZHVjdCBDWVBSRVNTIFdJU1BZICAgICAgICAgMHgwYmFk
ICBNZXRhR2VlayBXaS1TcHkNCiBwcm9kdWN0IENZUFJFU1MgRk1SQURJTwkJMHgxMDAyCUZN
IFJhZGlvDQogcHJvZHVjdCBDWVBSRVNTIFNMSU1fSFVCCTB4NjU2MAlTbGltIEh1Yg0KIA0K
QEAgLTg2Niw2ICs4NzksMTAgQEANCiAvKiBEaWFtb25kIHByb2R1Y3RzICovDQogcHJvZHVj
dCBESUFNT05EIFJJTzUwMFVTQgkweDAwMDEJUmlvIDUwMCBVU0INCiANCisvKiBEaWNrIFNt
aXRoIEVsZWN0cm9uaWNzIChyZWFsbHkgQy1OZXQpIHByb2R1Y3RzICovDQorcHJvZHVjdCBE
SUNLU01JVEggUlQyNTczCTB4OTAyMglSVDI1NzMNCitwcm9kdWN0IERJQ0tTTUlUSCBDV0Q4
NTRGCTB4OTAzMglDLU5ldCBDV0QtODU0IHJldiBGDQorDQogLyogRGlnaSBJbnRlcm5hdGlv
bmFsIHByb2R1Y3RzICovDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQyCTB4MDAwMglBY2Nl
bGVQb3J0IFVTQiAyDQogcHJvZHVjdCBESUdJIEFDQ0VMRVBPUlQ0CTB4MDAwNAlBY2NlbGVQ
b3J0IFVTQiA0DQpAQCAtODkxLDYgKzkwOCw4IEBADQogcHJvZHVjdCBETElOSyBEU0I2NTBU
WDMJCTB4NDAwYgkxMC8xMDAgZXRoZXJuZXQNCiBwcm9kdWN0IERMSU5LIERTQjY1MFRYMgkJ
MHg0MTAyCTEwLzEwMCBldGhlcm5ldA0KIHByb2R1Y3QgRExJTksgRFNCNjUwCQkweGFiYzEJ
MTAvMTAwIGV0aGVybmV0DQorcHJvZHVjdCBETElOSzIgRFdMRzEyMkMxCTB4M2MwMwlEV0wt
RzEyMiByZXYgQzENCitwcm9kdWN0IERMSU5LMiBXVUExMzQwCQkweDNjMDQJV1VBLTEzNDAN
CiANCiAvKiBFSVpPIHByb2R1Y3RzICovDQogcHJvZHVjdCBFSVpPIEhVQgkJMHgwMDAwCWh1
Yg0KQEAgLTk0OCwxMSArOTY3LDExIEBADQogcHJvZHVjdCBFUFNPTiAxNjcwCQkweDAxMWYJ
UGVyZmVjdGlvbiAxNjcwIHNjYW5uZXINCiBwcm9kdWN0IEVQU09OIDEyNzAJCTB4MDEyMAlQ
ZXJmZWN0aW9uIDEyNzAgc2Nhbm5lcg0KIHByb2R1Y3QgRVBTT04gMjQ4MAkJMHgwMTIxICBQ
ZXJmZWN0aW9uIDI0ODAgc2Nhbm5lcg0KLXByb2R1Y3QgRVBTT04gMzU5MAkJMHgwMTIyCVBl
cmZlY3Rpb24gMzU5MCBzY2FubmVyDQotcHJvZHVjdCBFUFNPTiA0OTkwCQkweDAxMmEJUGVy
ZmVjdGlvbiA0OTkwIFBob3RvIHNjYW5uZXINCitwcm9kdWN0IEVQU09OIDM1OTAgICAgICAg
ICAgICAweDAxMjIgIFBlcmZlY3Rpb24gMzU5MCBzY2FubmVyDQorcHJvZHVjdCBFUFNPTiA0
OTkwICAgICAgICAgICAgMHgwMTJhICBQZXJmZWN0aW9uIDQ5OTAgUGhvdG8gc2Nhbm5lcg0K
IHByb2R1Y3QgRVBTT04gMzUwMAkJMHgwODBlCUNYLTM1MDAvMzYwMC8zNjUwIE1GUA0KIHBy
b2R1Y3QgRVBTT04gUlg0MjUJCTB4MDgwZglTdHlsdXMgUGhvdG8gUlg0MjUgc2Nhbm5lcg0K
LXByb2R1Y3QgRVBTT04gNDIwMAkJMHgwODIwICBDWDQyMDAgTVAgc2Nhbm5lcg0KK3Byb2R1
Y3QgRVBTT04gNDIwMCAgICAgICAgICAgIDB4MDgyMCAgQ1g0MjAwIE1QIHNjYW5uZXINCiAN
CiAvKiBlLVRFSyBMYWJzIHByb2R1Y3RzICovDQogcHJvZHVjdCBFVEVLIDFDT00JCTB4ODAw
NwlTZXJpYWwNCkBAIC0xMDAwLDYgKzEwMTksNyBAQA0KIHByb2R1Y3QgR0lHQUJZVEUgR05C
UjQwMlcJMHg4MDAyCUdOLUJSNDAyVw0KIHByb2R1Y3QgR0lHQUJZVEUgR05XTEJNMTAxCTB4
ODAwMwlHTi1XTEJNMTAxDQogcHJvZHVjdCBHSUdBQllURSBHTldCS0cJCTB4ODAwNwlHTi1X
QktHDQorcHJvZHVjdCBHSUdBQllURSBHTldCMDFHUyAgIDB4ODAwOCAgR04tV0IwMUdTDQog
DQogLyogR2lnYXNldCBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgR0lHQVNFVCBXTEFOCQkweDA3
MDEJV0xBTg0KQEAgLTEwOTMsNiArMTExMywxMiBAQA0KIC8qIEhVQVdFSSBwcm9kdWN0cyAq
Lw0KIHByb2R1Y3QgSFVBV0VJIE1PQklMRQkJMHgxMDAxCUh1YXdlaSBNb2JpbGUNCiANCisv
KiBIVUFXRUkgcHJvZHVjdHMgKi8NCitwcm9kdWN0IEhVQVdFSTNDT00gUlQyNTczCTB4MDAw
OQlSVDI1NzMNCisNCisvKiBHb29kIFdheSBUZWNobm9sb2d5IHByb2R1Y3RzICovDQorcHJv
ZHVjdCBHT09EV0FZIFJUMjU3MyAgICAgIDB4YzAxOSAgUlQyNTczDQorDQogLyogSUJNIENv
cnBvcmF0aW9uICovDQogcHJvZHVjdCBJQk0gVVNCQ0RST01EUklWRQkweDQ0MjcJVVNCIENE
LVJPTSBEcml2ZQ0KIA0KQEAgLTEyMzYsNiArMTI2Miw3IEBADQogcHJvZHVjdCBMSU5LU1lT
NCBXVVNCNTRHCTB4MDAwZAlXVVNCNTRHIHdpcmVsZXNzIGFkYXB0ZXINCiBwcm9kdWN0IExJ
TktTWVM0IFdVU0I1NEdQCTB4MDAxMQlXVVNCNTRHUCB3aXJlbGVzcyBhZGFwdGVyDQogcHJv
ZHVjdCBMSU5LU1lTNCBIVTIwMFRTCTB4MDAxYQlIVTIwMFRTIHdpcmVsZXNzIGFkYXB0ZXIN
Citwcm9kdWN0IExJTktTWVM0IFdVU0I1NEdDCTB4MDAyMAlXVVNCNTRHQw0KIA0KIC8qIExv
Z2l0ZWNoIHByb2R1Y3RzICovDQogcHJvZHVjdCBMT0dJVEVDSCBNMjQ1MgkJMHgwMjAzCU0y
NDUyIGtleWJvYXJkDQpAQCAtMTI1MSwxMSArMTI3OCwxMSBAQA0KIHByb2R1Y3QgTE9HSVRF
Q0ggV01NT1VTRQkweGMwMDQJV2luZ01hbiBHYW1pbmcgTW91c2UNCiBwcm9kdWN0IExPR0lU
RUNIIEJENTgJCTB4YzAwYwlCRDU4IG1vdXNlDQogcHJvZHVjdCBMT0dJVEVDSCBVTjU4QQkJ
MHhjMDMwCWlGZWVsIE1vdXNlDQotcHJvZHVjdCBMT0dJVEVDSCBVTjUzQgkJMHhjMDMyCWlG
ZWVsIE1vdXNlTWFuDQorcHJvZHVjdCBMT0dJVEVDSCBVTjUzQiAgICAgIDB4YzAzMiAgaUZl
ZWwgTW91c2VNYW4NCiBwcm9kdWN0IExPR0lURUNIIFdNUEFECQkweGMyMDgJV2luZ01hbiBH
YW1lUGFkIEV4dHJlbWUNCiBwcm9kdWN0IExPR0lURUNIIFdNUlBBRAkJMHhjMjBhCVdpbmdN
YW4gUnVtYmxlUGFkDQogcHJvZHVjdCBMT0dJVEVDSCBXTUpPWQkJMHhjMjgxCVdpbmdNYW4g
Rm9yY2Ugam95c3RpY2sNCi1wcm9kdWN0IExPR0lURUNIIEJCMTMJCTB4YzQwMQlVU0ItUFMv
MiBUcmFja2JhbGwNCitwcm9kdWN0IExPR0lURUNIIEJCMTMgICAgICAgMHhjNDAxICBVU0It
UFMvMiBUcmFja2JhbGwNCiBwcm9kdWN0IExPR0lURUNIIFJLNTMJCTB4YzUwMQlDb3JkbGVz
cyBtb3VzZQ0KIHByb2R1Y3QgTE9HSVRFQ0ggUkI2CQkweGM1MDMJQ29yZGxlc3Mga2V5Ym9h
cmQNCiBwcm9kdWN0IExPR0lURUNIIE1YNzAwCQkweGM1MDYJQ29yZGxlc3Mgb3B0aWNhbCBt
b3VzZQ0KQEAgLTEzMTEsNiArMTMzOCw5IEBADQogcHJvZHVjdCBNU0kgUlQyNTcwCQkweDY4
NjEJUlQyNTcwDQogcHJvZHVjdCBNU0kgUlQyNTcwXzIJCTB4Njg2NQlSVDI1NzANCiBwcm9k
dWN0IE1TSSBSVDI1NzBfMwkJMHg2ODY5CVJUMjU3MA0KK3Byb2R1Y3QgTVNJIFJUMjU3MwkJ
MHg2ODc3CVJUMjU3Mw0KK3Byb2R1Y3QgTVNJIFJUMjU3M18yCQkweGE4NjEJUlQyNTczDQor
cHJvZHVjdCBNU0kgUlQyNTczXzMJCTB4YTg3NAlSVDI1NzMNCiANCiAvKiBNaWNyb3NvZnQg
cHJvZHVjdHMgKi8NCiBwcm9kdWN0IE1JQ1JPU09GVCBTSURFUFJFQwkweDAwMDgJU2lkZVdp
bmRlciBQcmVjaXNpb24gUHJvDQpAQCAtMTM5Nyw3ICsxNDI3LDcgQEANCiANCiAvKiBOZXRn
ZWFyIHByb2R1Y3RzICovDQogcHJvZHVjdCBORVRHRUFSIEVBMTAxCQkweDEwMDEJRXRoZXJu
ZXQNCi1wcm9kdWN0IE5FVEdFQVIgRkExMDEJCTB4MTAyMAlFdGhlcm5ldCAxMC8xMDAsIFVT
QjEuMQ0KK3Byb2R1Y3QgTkVUR0VBUiBGQTEwMSAgICAgICAgIDB4MTAyMCAgRXRoZXJuZXQg
MTAvMTAwLCBVU0IxLjENCiBwcm9kdWN0IE5FVEdFQVIgRkExMjAJCTB4MTA0MAlVU0IgMi4w
IEV0aGVybmV0DQogcHJvZHVjdCBORVRHRUFSMyBXRzExMVQJCTB4NDI1MAlXRzExMVQNCiBw
cm9kdWN0IE5FVEdFQVIzIFdHMTExVF9ORgkweDQyNTEJV0cxMTFUIChubyBmaXJtd2FyZSkN
CkBAIC0xNDExLDcgKzE0NDEsNyBAQA0KIHByb2R1Y3QgTklLT04gTFM0MAkJMHg0MDAwCUNv
b2xTY2FuIExTNDAgRUQNCiANCiAvKiBOb3ZhVGVjaCBQcm9kdWN0cyAqLw0KLXByb2R1Y3Qg
Tk9WQVRFQ0ggTlY5MDIJCTB4OTAyMCAgTm92YVRlY2ggTlYtOTAyVw0KK3Byb2R1Y3QgTk9W
QVRFQ0ggTlY5MDIgICAgICAgICAgICAgICAgMHg5MDIwICBOb3ZhVGVjaCBOVi05MDJXDQog
DQogLyogTm92YXRlbCBXaXJlbGVzcyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgTk9WQVRFTCBV
NzQwCQkweDE0MDAJTWVybGluIFU3NDANCkBAIC0xNDQxLDcgKzE0NzEsNyBAQA0KIHByb2R1
Y3QgUEFMTSBaSVJFCQkweDAwNzAJUGFsbSBaaXJlDQogDQogLyogUGFuYXNvbmljIHByb2R1
Y3RzICovDQotcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4JMHgwZDAxCUNELVIgRHJpdmUg
S1hMLTg0MEFODQorcHJvZHVjdCBQQU5BU09OSUMgS1hMODQwQU4gICAgMHgwZDAxICBDRC1S
IERyaXZlIEtYTC04NDBBTg0KIHByb2R1Y3QgUEFOQVNPTklDIEtYTFJXMzJBTgkweDBkMDkJ
Q0QtUiBEcml2ZSBLWEwtUlczMkFODQogcHJvZHVjdCBQQU5BU09OSUMgS1hMQ0IyMEFOCTB4
MGQwYQlDRC1SIERyaXZlIEtYTC1DQjIwQU4NCiBwcm9kdWN0IFBBTkFTT05JQyBLWExDQjM1
QU4JMHgwZDBlCURWRC1ST00gJiBDRC1SL1JXDQpAQCAtMTQ2OSw2ICsxNDk5LDEwIEBADQog
LyogUC5JLiBFbmdpbmVlcmluZyBwcm9kdWN0cyAqLw0KIHByb2R1Y3QgUElFTkdJTkVFUklO
RyBQUzJVU0IJMHgwMjBiCVBTMiB0byBNYWMgVVNCIEFkYXB0ZXINCiANCisvKiBQbGFuZXgg
Q29tbXVuaWNhdGlvbnMgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFBMQU5FWDIgR1dVU01NCQkw
eGVkMDIJR1ctVVNNTQ0KKw0KKw0KIC8qIFBsZXh0b3IgQ29ycC4gKi8NCiBwcm9kdWN0IFBM
RVhUT1IgNDBfMTJfNDBVCTB4MDAxMQlQbGV4V3JpdGVyIDQwLzEyLzQwVQ0KIA0KQEAgLTE1
MTEsNiArMTU0NSwxMCBAQA0KIC8qIFB1dGVyY29tIHByb2R1Y3RzICovDQogcHJvZHVjdCBQ
VVRFUkNPTSBVUEExMDAJCTB4MDQ3ZQlVU0ItMTI4NCBCUklER0UNCiANCisvKiBRY29tIHBy
b2R1Y3RzICovDQorcHJvZHVjdCBRQ09NIFJUMjU3MwkJMHg2MTk2CVJUMjU3Mw0KK3Byb2R1
Y3QgUUNPTSBSVDI1NzNfMgkJMHg2MjI5CVJUMjU3Mw0KKw0KIC8qIFF1YWxjb21tIHByb2R1
Y3RzICovDQogcHJvZHVjdCBRVUFMQ09NTSBSV1RfRkNUCTB4MzEwMAlSV1QgRkNULUNETUEg
MjAwMCAxeFJUVCBtb2RlbQ0KIHByb2R1Y3QgUVVBTENPTU0gQ0RNQV9NU00JMHgzMTk2CUNE
TUEgVGVjaG5vbG9naWVzIE1TTSBtb2RlbQ0KQEAgLTE1MzEsNiArMTU2OSw4IEBADQogLyog
UmFsaW5rIFRlY2hub2xvZ3kgcHJvZHVjdHMgKi8NCiBwcm9kdWN0IFJBTElOSyBSVDI1NzAJ
CTB4MTcwNglSVDI1MDBVU0Igd2lyZWxlc3MgYWRhcHRlcg0KIHByb2R1Y3QgUkFMSU5LIFJU
MjU3MF8yCQkweDI1NzAJUlQyNTAwVVNCIHdpcmVsZXNzIGFkYXB0ZXINCitwcm9kdWN0IFJB
TElOSyBSVDI1NzMJCTB4MjU3MwlSVDI1NzMNCitwcm9kdWN0IFJBTElOSyBSVDI2NzEJCTB4
MjY3MQlSVDI2NzENCiANCiAvKiBSZWFrVGVrIHByb2R1Y3RzICovDQogcHJvZHVjdCBSRUFM
VEVLIFVTQktSMTAwCTB4ODE1MAlVU0JLUjEwMCBVU0IgRXRoZXJuZXQgKEdSRUVOIEhPVVNF
KQ0KQEAgLTE2MDYsNyArMTY0Niw3IEBADQogcHJvZHVjdCBTSUlHMiBVUzIzMDgJCTB4MDQy
MQlTZXJpYWwNCiANCiAvKiBTaWxpY29tIHByb2R1Y3RzICovDQotcHJvZHVjdCBTSUxJQ09N
IEdQRQkJMHgwMDAyCVBzaW9uIEdvbGQgUG9ydCBFdGhlcm5ldA0KK3Byb2R1Y3QgU0lMSUNP
TSBHUEUgICAgICAgICAgIDB4MDAwMiAgUHNpb24gR29sZCBQb3J0IEV0aGVybmV0DQogDQog
LyogU2lsaWNvbiBQb3J0YWxzIEluYy4gKi8NCiBwcm9kdWN0IFNJTElDT05QT1JUQUxTIFlB
UFBIX05GCTB4MDIwMAlZQVAgUGhvbmUgKG5vIGZpcm13YXJlKQ0KQEAgLTE2MTksNiArMTY1
OSwxMSBAQA0KIHByb2R1Y3QgU0lURUNPTSBMTjAyOQkJMHgxODJkCVVTQiAyLjAgRXRoZXJu
ZXQNCiBwcm9kdWN0IFNJVEVDT00gU0VSSUFMCQkweDIwNjgJVVNCIHRvIHNlcmlhbCBjYWJs
ZSAodjIpDQogDQorLyogU2l0ZWNvbSBFdXJvcGUgcHJvZHVjdHMgKi8NCitwcm9kdWN0IFNJ
VEVDT01FVSBXTDE3MgkJMHg5MGFjCVdMLTE3Mg0KK3Byb2R1Y3QgU0lURUNPTUVVIFdMMTEz
UjIJMHg5NzEyCVdMLTExMyByZXYgMg0KKw0KKw0KIC8qIFNtYXJ0QnJpZGdlcyBwcm9kdWN0
cyAqLw0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTElOSwkweDAwMDEJU21hcnRMaW5r
IFVTQiBldGhlcm5ldA0KIHByb2R1Y3QgU01BUlRCUklER0VTIFNNQVJUTklDCTB4MDAwMwlz
bWFydE5JQyAyIFBuUCBldGhlcm5ldA0KQEAgLTE2ODQsNiArMTcyOSw5IEBADQogcHJvZHVj
dCBESUFNT05EMiBSSU82MDBVU0IJMHg1MDAxCVJpbyA2MDAgVVNCDQogcHJvZHVjdCBESUFN
T05EMiBSSU84MDBVU0IJMHg1MDAyCVJpbyA4MDAgVVNCDQogDQorLyogU3VyZWNvbSBUZWNo
bm9sb2d5IHByb2R1Y3RzICovDQorcHJvZHVjdCBTVVJFQ09NIFJUMjU3MwkJMHgzMWYzCVJU
MjU3Mw0KKw0KIC8qIFN5c3RlbSBUQUxLUywgSW5jLiAqLw0KIHByb2R1Y3QgU1lTVEVNVEFM
S1MgU0dDWDJVTAkweDE5MjAJU0dDLVgyVUwNCiANCkluZGV4OiBzeXMvbW9kdWxlcy9ydDI1
NzMvTWFrZWZpbGUNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiBzeXMvbW9kdWxlcy9ydDI1
NzMvTWFrZWZpbGUNCmRpZmYgLU4gc3lzL21vZHVsZXMvcnQyNTczL01ha2VmaWxlDQotLS0g
L2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDANCisrKyBzeXMvbW9kdWxlcy9y
dDI1NzMvTWFrZWZpbGUJMjIgQXByIDIwMDcgMDg6MDI6MDUgLTAwMDANCkBAIC0wLDAgKzEs
MyBAQA0KK0tNT0Q9IHJ0MjU3Mw0KK0ZJUk1XUz0gcnVtLXJ0MjU3MzpydDI1NzM6MTAwDQor
LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0KSW5kZXg6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmls
ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQ0K
ZGlmZiAtTiBzeXMvbW9kdWxlcy9ydW0vTWFrZWZpbGUNCi0tLSAvZGV2L251bGwJMSBKYW4g
MTk3MCAwMDowMDowMCAtMDAwMA0KKysrIHN5cy9tb2R1bGVzL3J1bS9NYWtlZmlsZQkyMiBB
cHIgMjAwNyAwODowMjowNSAtMDAwMA0KQEAgLTAsMCArMSwxMCBAQA0KKyMgJEZyZWVCU0Q6
IHNyYy9zeXMvbW9kdWxlcy91cmFsL01ha2VmaWxlLHYgMS4xIDIwMDUvMDQvMTggMTg6NDc6
MzggZGFtaWVuIEV4cCAkDQorDQorLlBBVEg6ICR7LkNVUkRJUn0vLi4vLi4vZGV2L3VzYg0K
Ky5QQVRIOiAkey5DVVJESVJ9Ly4uLy4uL25ldDgwMjExDQorDQorS01PRCAgICA9IGlmX3J1
bQ0KK1NSQ1MgICAgPSBpZl9ydW0uYyBvcHRfYmRnLmggb3B0X3VzYi5oIGRldmljZV9pZi5o
IGJ1c19pZi5oIHVzYmRldnMuaA0KK1NSQ1MgICArPSBpZWVlODAyMTFfYW1yci5jDQorDQor
LmluY2x1ZGUgPGJzZC5rbW9kLm1rPg0K
--------------030900090303000507070905--
More information about the freebsd-usb
mailing list