Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 2018 12:21:49 +0000
From:      "sux2mfgj_gmail.com (Shunsuke Mie)" <phabric-noreply@FreeBSD.org>
To:        freebsd-virtualization@freebsd.org
Subject:   [Differential] D13995: NVMe controller emulator for bhyve.
Message-ID:  <differential-rev-PHID-DREV-vgewguea2dhplsjkeozl-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_03bd2db2ea9364bf79c571da2b2f20e4
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: base64

c3V4Mm1mZ2pfZ21haWwuY29tIGNyZWF0ZWQgdGhpcyByZXZpc2lvbi4Kc3V4Mm1mZ2pfZ21haWwu
Y29tIGFkZGVkIHJldmlld2VyczogZ3JlaGFuLCB0cmFzei4Kc3V4Mm1mZ2pfZ21haWwuY29tIGFk
ZGVkIGEgcHJvamVjdDogYmh5dmUuCgpSRVZJU0lPTiBTVU1NQVJZCiAgVGhpcyBlbXVsYXRvciBp
cyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMCwgYW5kIGRp
ZG4ndCBjb3ZlcmVkIGFsbC4gSG93ZXZlciwgSSB0ZXN0ZWQgdXNpbmcgYG5ld2ZzYCBhbmQgYG52
bWVjb250cm9sIHBlcmZgOyBUaGVzZSB3YXMgY2xlYXJlZC4gVGhlIHRlc3Qgd2FzIGV4ZWN1dGVk
IG1hbnVhbGx5LgoKUkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3Jn
L0QxMzk5NQoKQUZGRUNURUQgRklMRVMKICBzeXMvZGV2L252bWUvbnZtZS5oCiAgdXNyLnNiaW4v
Ymh5dmUvTWFrZWZpbGUKICB1c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CiAgdXNyLnNiaW4vYmh5dmUv
cGNpX252bWUuYwoKRU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5v
cmcvc2V0dGluZ3MvcGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5j
b20sIGdyZWhhbiwgdHJhc3oKQ2M6IGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK

--b1_03bd2db2ea9364bf79c571da2b2f20e4
Content-Type: text/x-patch; charset=utf-8; name="D13995.38245.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D13995.38245.patch"

ZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZlL3BjaV9udm1lLmMgYi91c3Iuc2Jpbi9iaHl2ZS9w
Y2lfbnZtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdXNyLnNi
aW4vYmh5dmUvcGNpX252bWUuYwpAQCAtMCwwICsxLDEyNTcgQEAKKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0
ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNs
dWRlIDxwdGhyZWFkLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL3ZtbS5oPgorI2luY2x1ZGUgPHZt
bWFwaS5oPgorCisjaW5jbHVkZSA8bnZtZS5oPgorCisjaW5jbHVkZSAicGNpX2VtdWwuaCIKKyNp
bmNsdWRlICJibG9ja19pZi5oIgorI2luY2x1ZGUgImJoeXZlcnVuLmgiCisKKyNpZmRlZiBOVk1F
X0RFQlVHCitzdGF0aWMgRklMRSogZGJnOworI2RlZmluZSBEUFJJTlRGKGZvcm1hdCwgYXJnLi4u
KSAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGZwcmludGYoZGJnLCBmb3JtYXQsICMjYXJnKTsgXAorICAgICAgICBmZmx1c2goZGJnKTsgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKKyNkZWZpbmUgRFBSSU5URihm
b3JtYXQsIGFyZy4uLikKKyNlbmRpZgorCitlbnVtIG52bWVfY29udHJvbGxlcl9yZWdpc3Rlcl9v
ZmZzZXRzIHsKKyAgICBOVk1FX0NSX0NBUF9MT1cgPSAweDAwLAorICAgIE5WTUVfQ1JfQ0FQX0hJ
ID0gMHgwNCwKKyAgICBOVk1FX0NSX1ZTID0gMHgwOCwKKyAgICBOVk1FX0NSX0lOVE1TID0gMHgw
YywKKyAgICBOVk1FX0NSX0lOVE1DID0gMHgxMCwKKyAgICBOVk1FX0NSX0NDID0gMHgxNCwKKyAg
ICBOVk1FX0NSX0NTVFMgPSAweDFjLAorICAgIE5WTUVfQ1JfTlNTUiA9IDB4MjAsCisgICAgTlZN
RV9DUl9BUUEgPSAweDI0LAorICAgIE5WTUVfQ1JfQVNRX0xPVyA9IDB4MjgsCisgICAgTlZNRV9D
Ul9BU1FfSEkgPSAweDJjLAorICAgIE5WTUVfQ1JfQUNRX0xPVyA9IDB4MzAsCisgICAgTlZNRV9D
Ul9BQ1FfSEkgPSAweDM0LAorICAgIC8vIHN1Ym1pc3Npb24gcXVldWUgMCB0YWlsIGRvb3JiZWxs
IChhZG1pbikKKyAgICBOVk1FX0NSX0lPX1FVRVVFX0JBU0UgPSAweDEwMDAsCisgICAgLyoKKyAg
ICAgKiAweDEwMDAgfiAweDEwMDMgIDogc3VibWlzc2lvbiBxdWV1ZSAwIGhlYWQgZG9vcmJlbGwo
YWRtaW4pCisgICAgICogMHgxMDA0IH4gMHgxMDA3ICA6IGNvbXBsZXRpb24gcXVldWUgMCB0YWls
IGRvb3JiZWxsKGFkbWluKQorICAgICAqIDB4MTAwOCB+IDB4MTAwYiAgOiBzdWJtaXNzaW9uIHF1
ZXVlIDEgaGVhZCBkb29yYmVsbAorICAgICAqIDB4MTAwYyB+IDB4MTAwZiAgOiBjb21wbGV0aW9u
IHF1ZXVlIDEgdGFpbCBkb29yYmVsbAorICAgICAqLworICAgIE5WTUVfQ1JfQURNSU5fU1FfVEFJ
TCA9IDB4MTAwMCwKKyAgICBOVk1FX0NSX0FETUlOX0NRX0hFQUQgPSAweDEwMDQsCisgICAgTlZN
RV9DUl9TUV8xX1RBSUwgPSAweDEwMDgsCisgICAgTlZNRV9DUl9DUV8xX0hFQUQgPSAweDEwMGMs
CisgICAgTlZNRV9DUl9TSVpFID0gMHgxMDEwLAorfTsKKworI2RlZmluZSBOVk1FX0lPX1NRX05V
TSAxCisjZGVmaW5lIE5WTUVfSU9fQ1FfTlVNIDEKKworI2RlZmluZSBOVk1FX0lPX1NRU19TSVpF
IChOVk1FX0lPX1NRX05VTSArIDEpCisjZGVmaW5lIE5WTUVfSU9fQ1FTX1NJWkUgKE5WTUVfSU9f
Q1FfTlVNICsgMSkKKworZW51bSBudm1lX3BjaV9iYXIgeworICAgIE5WTUVfQkFSX0NSID0gMCwg
Ly8gMCBhbmQgMQorICAgIE5WTUVfQkFSX1JTViA9IDMsIC8vIHJlc2VydmVkCisgICAgTlZNRV9C
QVJfTVNJWCA9IDQsIC8vIDQgYW5kIDUKK307CisKKy8qCisgKiBOVk1FX0NSX0FETUlOX0NRX0hF
QUQgYW5kIE5WTWUgSS9PIGNvbXBsZXRpb24gcXVldWVzCisgKi8KKyNkZWZpbmUgTlZNRV9DT01Q
TEVUSU9OX1FVRVVFX05VTSAoTlZNRV9JT19DUV9OVU0gKyAxKQorCitlbnVtIG52bWVfY21kX2lk
ZW50aWZ5X2NkdzEwIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlRJRCA9IDB4ZmZm
ZjAwMDAsCisgICAgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfUlNWID0gMHgwMDAwZmYwMCwKKyAg
ICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlMgPSAweDAwMDAwMGZmLAorfTsKKworZW51bSBu
dm1lX2NtZF9pZGVudGlmeV9kYXRhIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQ
QUNFID0gMHgwLAorICAgIE5WTUVfQ01EX0lERU5USUZZX0NOU19DT05UUk9MTEVSID0gMHgxLAor
fTsKKworZW51bSBudm1lX2NjX2JpdHMgeworICAgIE5WTUVfQ0NfRU4gPSAweDAwMDAwMDAxLAor
ICAgIE5WTUVfQ0NfUlNWMCA9IDB4MDAwMDAwMGUsCisgICAgTlZNRV9DQ19DQ1MgPSAweDAwMDAw
MDcwLAorICAgIE5WTUVfQ0NfTVBTID0gMHgwMDAwMDc4MCwKKyAgICBOVk1FX0NDX0FNUyA9IDB4
MDAwMDM4MDAsCisgICAgTlZNRV9DQ19TSE4gPSAweDAwMDBjMDAwLAorICAgIE5WTUVfQ0NfSU9T
UUVTID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX0NDX0lPQ1FFUyA9IDB4MDBmMDAwMDAsCisgICAg
TlZNRV9DQ19SU1YxID0gMHhmZjAwMDAwMCwKK307CisKK3N0cnVjdCBudm1lX2ZlYXR1cmVzIHsK
KyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgIHVpbnQ4X3QgYWIgOiAyOworICAgICAgICAgICAgdWludDhfdCByZXNlcnZlZCA6
IDU7CisgICAgICAgICAgICB1aW50OF90IGxwdyA6IDg7CisgICAgICAgICAgICB1aW50OF90IG1w
dyA6IDg7CisgICAgICAgICAgICB1aW50OF90IGhwdyA6IDg7CisgICAgICAgIH0gX19wYWNrZWQg
Yml0czsKKyAgICB9IF9fcGFja2VkIGFyYml0cmF0aW9uOworCisgICAgdW5pb24geworICAgICAg
ICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHBz
IDogNTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjc7CisgICAgICAgIH0gX19w
YWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHBvd2VyX21hbmFnZW1lbnQ7CisKKyAgICB1bmlv
biB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVpbnQ4X3QgbnVtIDogNjsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjY7Cisg
ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGxiYV9yYW5nZV90eXBlOwor
CisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICB1aW50MTZfdCBvdmVyOworICAgICAgICAgICAgdWludDE2X3QgdW5kZXI7Cisg
ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHRlbXBhcnR1cmVfdGhyZXNo
b2xkOworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB1aW50MTZfdCB0bGVyOworICAgICAgICAgICAgdWludDE2X3QgcmVz
ZXJ2ZWQ7CisgICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGVycm9yX3Jl
Y292ZXJ5OworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHdjZSA6IDE7CisgICAgICAgICAgICB1aW50MzJf
dCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3BhY2tl
ZCB2b2xhdGlsZV93cml0ZV9jYWNoZTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3Qg
cmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbmNxciA6IDE2Owor
ICAgICAgICAgICAgdWludDE2X3QgbnNxciA6IDE2OworICAgICAgICB9IF9fcGFja2VkIGJpdHM7
CisgICAgfSBfX3BhY2tlZCBudW1fb2ZfcXVldWVzOworCisgICAgdW5pb24geworICAgICAgICB1
aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHRociA6
IDg7CisgICAgICAgICAgICB1aW50OF90IHRpbWUgOiA4OworICAgICAgICAgICAgdWludDE2X3Qg
cmVzZXJ2ZWQgOiAxNjsKKyAgICAgICAgfSBfX3BhY2tlZCBiaXRzOworICAgIH0gX19wYWNrZWQg
aW50ZXJydXB0X2NvYWxzY2luZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3
OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgaXY7CisgICAgICAgICAg
ICB1aW50OF90IGNkIDogMTsKKyAgICAgICAgICAgIHVpbnQxNl90IHJlc2VydmVkIDogMTU7Cisg
ICAgICAgIH0gX19wYWNrZWQgYml0czsKKworCisgICAgfSBfX3BhY2tlZCBpbnRlcnJ1cHRfdmVj
dG9yX2NvbmZpZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAg
ICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBkbiA6IDE7CisgICAgICAgICAgICB1aW50
MzJfdCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3Bh
Y2tlZCB3cml0ZV9hdG9taWNpdHk7CisKKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJh
dzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQxNl90IHNtYXJ0IDogODsKKyAg
ICAgICAgICAgIHVpbnQxNl90IG5zX2F0dHJfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZf
dCBmd19hY3Rfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZfdCB0ZWxlX2xvZ19ub3RpIDog
MTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjE7CisgICAgICAgIH0gX19wYWNr
ZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGFzeW5jX2V2ZW50X2NvbmZpZzsKKworICAgIHVuaW9u
IHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
dWludDhfdCBwYnNsYzsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjQ7CisgICAg
ICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHNvZnR3YXJlX3Byb2dyZXNzX21h
cmtlcjsKKworfTsKKworc3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvIHsKKyAgICB1
aW50cHRyX3QgYmFzZV9hZGRyOworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgdGFp
bDsKKyAgICB1aW50MTZfdCBxaWQ7CisgICAgdWludDE2X3QgaW50ZXJydXB0X3ZlY3RvcjsKKyAg
ICBwdGhyZWFkX211dGV4X3QgbXR4OworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjOworLy8g
aW8gcmVxdWVzdCB0byBibG9ja19pZi4KK3N0cnVjdCBudm1lX2lvcmVxIHsKKyAgICBzdHJ1Y3Qg
YmxvY2tpZl9yZXEgaW9fcmVxOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24gY29tcGxldGlv
bl9lbnRyeTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8qIGNxX2luZm87
CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvKiBzcV9pbmZvOworICAgIHN0
cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgU1RBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlv
X2ZsaXN0OworICAgIFRBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlvX2JsaXN0OworfTsKKworc3Ry
dWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvIHsKKyAgICB1aW50cHRyX3QgYmFzZV9hZGRy
OworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgcWlkOworICAgIHVpbnQxNl90IGNv
bXBsZXRpb25fcWlkOworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBpb3JlcTsKKyAgICBTVEFJTFFf
SEVBRChudm1lX2ZoZWFkLCBudm1lX2lvcmVxKSBpb2ZoZDsKKyAgICBUQUlMUV9IRUFEKG52bWVf
YmhlYWQsIG52bWVfaW9yZXEpIGlvYmhkOworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjIHsK
KyAgICBzdHJ1Y3QgbnZtZV9yZWdpc3RlcnMgcmVnczsKKyAgICBzdHJ1Y3QgbnZtZV9mZWF0dXJl
cyBmZWF0dXJlczsKKyAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpOworICAgIHVpbnQxNl90IGNv
bXBsZXRpb25fcXVldWVfaGVhZDsKKyAgICB1aW50MTZfdCBzdWJtaXNzaW9uX3F1ZXVlX3RhaWw7
CisgICAgdWludHB0cl90IGFzcV9iYXNlOworICAgIHVpbnRwdHJfdCBhY3FfYmFzZTsKKyAgICBz
dHJ1Y3QgbnZtZV9jb250cm9sbGVyX2RhdGEgY29udHJvbGxlcl9kYXRhOworICAgIHN0cnVjdCBu
dm1lX25hbWVzcGFjZV9kYXRhIG5hbWVzcGFjZV9kYXRhOworICAgIHN0cnVjdCBudm1lX2NvbXBs
ZXRpb25fcXVldWVfaW5mbyogY3FzX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x
dWV1ZV9pbmZvKiBzcXNfaW5mbzsKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBiY3R4OworfTsK
Kworc3RhdGljIHZvaWQgcGNpX252bWVfcmVzZXQoc3RydWN0IHBjaV9udm1lX3NvZnRjKiBzYykK
K3sKKyAgICAvKgorICAgICAqIENvbnRyb2xsZXIgUmVnaXN0ZXIgdmFsdWVzIGFyZSBhY2NvcmRp
bmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMGUuCisgICAgICovCisKKyAgICAvKgorICAgICAq
IENvbnRyb2xsZXIgQ2FwYWJpbGl0ZXMKKyAgICAgKi8KKyAgICAvLyBNYXhpbXVtIHF1ZXVlIChJ
L08gc3VibWlzc2lvbiBhbmQgY29tcGxldGlvbiBxdWV1ZSkgZW50cmllcyBzdXBwb3J0ZWQgYnkg
bnZtZSBjb250cm9sbGVyCisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMubXFlcyA9IDB4MTA7CisK
KyAgICAvLyBDb250aWd1b3VzIFF1ZXVlcyBSZXF1aXJlZAorICAgIHNjLT5yZWdzLmNhcF9sby5i
aXRzLmNxciA9IDE7CisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMuYW1zID0gMDsKKyAgICBzYy0+
cmVncy5jYXBfbG8uYml0cy5yZXNlcnZlZDEgPSAwOworICAgIHNjLT5yZWdzLmNhcF9sby5iaXRz
LnRvID0gMTA7CisKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5kc3RyZCA9IDA7CisgICAgc2Mt
PnJlZ3MuY2FwX2hpLmJpdHMucmVzZXJ2ZWQzID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0
cy5jc3NfbnZtID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5jc3NfcmVzZXJ2ZWQgPSAw
OworICAgIHNjLT5yZWdzLmNhcF9oaS5iaXRzLnJlc2VydmVkMiA9IDA7CisgICAgLyoKKyAgICAg
KiBNUFNNSU4gYW5kIE1QU01BWCAKKyAgICAgKiAgaW5kaWNhdGUgdGhlIG1pbmltdW0gYW5kIG1h
eGltdW0gaG9zdCBtZW1vcnkgcGFnZSBzaXplCisgICAgICogICgyIF4gKDEyICsgTVBTTUFYIG9y
IE1QU01JTikpCisgICAgICovCisgICAgc2MtPnJlZ3MuY2FwX2hpLmJpdHMubXBzbWluID0gMDsK
KyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5tcHNtYXggPSAwOworICAgIHNjLT5yZWdzLmNhcF9o
aS5iaXRzLnJlc2VydmVkMSA9IDA7CisKKyAgICAvKgorICAgICAqIFZlcnNpb24gb2YgTlZNIGV4
cHJlc3Mgc3BlY2lmaWNhdGlvbi4KKyAgICAgKi8gCisgICAgLy8gaW4gdGhpcyBjYXNlLCB0aGUg
dmVyc2lvbiBpcyAxLjAKKyAgICB1aW50MzJfdCB2ZXJzaW9uID0gKDB4MDAwMSA8PCAxNikgfCAw
eDAwMDA7CisgICAgc2MtPnJlZ3MudnMgPSB2ZXJzaW9uOworCisgICAgLy8gSW50ZXJydXB0IE1h
c2sgU2V0CisgICAgc2MtPnJlZ3MuaW50bXMgPSAwOworICAgIAorICAgIC8vIEludGVycnVwdCBN
YXNrIGNsZWFyCisgICAgc2MtPnJlZ3MuaW50bWMgPSAwOworCisgICAgc2MtPnJlZ3MuY2MucmF3
ID0gMDsKKworICAgIHNjLT5yZWdzLmNzdHMucmF3ID0gMDsKKworICAgIHNjLT5jb21wbGV0aW9u
X3F1ZXVlX2hlYWQgPSAwOworICAgIHNjLT5hc3FfYmFzZSA9IDA7CisgICAgc2MtPmFjcV9iYXNl
ID0gMDsKK30KKworc3RhdGljIHZvaWQgbnZtZV9pbml0aWFsaXplX2ZlYXR1cmUoc3RydWN0IHBj
aV9udm1lX3NvZnRjKiBzYykKK3sKKyAgICBzYy0+ZmVhdHVyZXMuYXJiaXRyYXRpb24ucmF3ID0g
MDsKKworICAgIHNjLT5mZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXIgPSAw
eGZmZmY7CisgICAgc2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXIg
PSAweDAwMDA7CisKKyAgICBzYy0+ZmVhdHVyZXMucG93ZXJfbWFuYWdlbWVudC5yYXcgPSAwOwor
CisgICAgc2MtPmZlYXR1cmVzLmVycm9yX3JlY292ZXJ5LnJhdyA9IDA7CisgICAgCisgICAgc2Mt
PmZlYXR1cmVzLm51bV9vZl9xdWV1ZXMucmF3ID0gMDsKKworICAgIHNjLT5mZWF0dXJlcy5pbnRl
cnJ1cHRfY29hbHNjaW5nLnJhdyA9IDA7CisKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3Zl
Y3Rvcl9jb25maWcucmF3ID0gMDsKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3ZlY3Rvcl9j
b25maWcuYml0cy5jZCA9IDE7CisKKyAgICBzYy0+ZmVhdHVyZXMuYXN5bmNfZXZlbnRfY29uZmln
LnJhdyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfaW5pdGlhbGl6ZV9pZGVudGlmeShzdHJ1
Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIC8vIG9ubHkgb25lIG5hbWVzcGFjZQorICAg
IHNjLT5jb250cm9sbGVyX2RhdGEubm4gPSAweDE7ICAKKworICAgIC8vIExCQSBmb3JtYXQKKyAg
ICBzYy0+bmFtZXNwYWNlX2RhdGEubGJhZlswXS5tcyA9IDB4MDA7CisKKyAgICAvKgorICAgICAq
IExCQSBkYXRhIHNpemUgaXMgMl5uIChuIGlzIHN0YXJ0ZWQgYnkgMCkKKyAgICAgKiBzaG91bGQg
YmUgbGFyZ2VyIHRoYW4gOS4oaS5lLiA1MTIgYnl0ZXMpCisgICAgICovCisgICAgdWludDY0X3Qg
bGJhX2RhdGFfc2l6ZSA9IDk7CisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLmxiYWZbMF0ubGJhZHMg
PSBsYmFfZGF0YV9zaXplOworICAgIHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLnJwID0gMHgw
OworCisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLm5sYmFmID0gMHgwMDsKKyAgICBzYy0+bmFtZXNw
YWNlX2RhdGEuZmxiYXMuZm9ybWF0ID0gMHgwMDsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmxi
YWYgPSAweDE7CisKKyAgICB1aW50NjRfdCBibG9ja19zaXplID0gYmxvY2tpZl9zaXplKHNjLT5i
Y3R4KTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubnN6ZSA9IGJsb2NrX3NpemUgLyAoMiA8PCAo
bGJhX2RhdGFfc2l6ZSAtIDEpKTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmNhcCA9IGJsb2Nr
X3NpemUgLyAoMiA8PCAobGJhX2RhdGFfc2l6ZSAtIDEpKTsKK30KKworc3RhdGljIGludCBwY2lf
bnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luaXQoCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x
dWV1ZV9pbmZvKiBxaW5mbywKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBjdHh0KQoreworICAg
IHN0cnVjdCBudm1lX2lvcmVxKiByZXE7CisgICAgaW50IGlvcV9zaXplID0gYmxvY2tpZl9xdWV1
ZXN6KGN0eHQpOworICAgIHFpbmZvLT5pb3JlcSA9IGNhbGxvYyhpb3Ffc2l6ZSwgc2l6ZW9mKHN0
cnVjdCBudm1lX2lvcmVxKSk7CisgICAgU1RBSUxRX0lOSVQoJnFpbmZvLT5pb2ZoZCk7CisKKyAg
ICAvLyBzZXR1cCBhbmQgaW5zZXJ0IHJlcXVlc3RzIHRvIHRoZSBmcmVlIHF1ZXVlCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBpb3Ffc2l6ZTsgKytpKSB7CisgICAgICAgIHJlcSA9ICZxaW5mby0+
aW9yZXFbaV07CisgICAgICAgIHJlcS0+c3FfaW5mbyA9IHFpbmZvOworICAgICAgICAvLyBzZXR1
cCBjYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBTVEFJTFFfSU5TRVJUX1RBSUwoJnFpbmZvLT5p
b2ZoZCwgcmVxLCBpb19mbGlzdCk7CisgICAgfQorCisgICAgVEFJTFFfSU5JVCgmcWluZm8tPmlv
YmhkKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3BjaV9udm1lX2NxX2luaXQo
c3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvKiBjcWluZm8pIAoreworICAgIHB0aHJl
YWRfbXV0ZXhfaW5pdCgmY3FpbmZvLT5tdHgsIE5VTEwpOworICAgIGNxaW5mby0+YmFzZV9hZGRy
ID0gKHVpbnRwdHJfdClOVUxMOworICAgIGNxaW5mby0+c2l6ZSA9IC0xOworICAgIGNxaW5mby0+
dGFpbCA9IDA7CisgICAgY3FpbmZvLT5xaWQgPSAtMTsKKyAgICBjcWluZm8tPmludGVycnVwdF92
ZWN0b3IgPSAtMTsKK30KKworc3RhdGljIGludCBwY2lfbnZtZV9pbml0KHN0cnVjdCB2bWN0eCog
Y3R4LCBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLCBjaGFyKiBvcHRzKQoreworICAgIHN0cnVjdCBw
Y2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgc3RydWN0IGJsb2NraWZfY3R4dCogYmN0eHQ7CisJY2hh
ciBiaWRlbnRbc2l6ZW9mKCJYWDpYOlgiKV07CisKKyNpZmRlZiBOVk1FX0RFQlVHCisgICAgZGJn
ID0gZm9wZW4oIi90bXAvbnZtZV9lbXVfbG9nIiwgIncrIik7CisjZW5kaWYKKyAgICBEUFJJTlRG
KCItLS0gc3RhcnQgbnZtZSBjb250cm9sbGVyIC0tLVxuIik7CisKKyAgICBpZiAob3B0cyA9PSBO
VUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGNpX252bWU6IGJhY2tpbmcgZGV2aWNl
IHJlcXVpcmVkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIERQUklOVEYoIiVz
XG4iLCBvcHRzKTsKKworICAgIC8qIAorICAgICAqIEF0dGVtcHQgdG8gb3BlbiB0aGUgYmFja2lu
ZyBpbWFnZS4gVXNlIHRoZSBQQ0kKKwkgKiBzbG90L2Z1bmMgZm9yIHRoZSBpZGVudGlmaWVyIHN0
cmluZy4KKwkgKi8KKwlzbnByaW50ZihiaWRlbnQsIHNpemVvZihiaWRlbnQpLCAiJWQ6JWQiLCBw
aS0+cGlfc2xvdCwgcGktPnBpX2Z1bmMpOworICAgIGJjdHh0ID0gYmxvY2tpZl9vcGVuKG9wdHMs
IGJpZGVudCk7CisgICAgaWYgKGJjdHh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOwor
ICAgIH0KKworLyogICAgIHBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lSX0RFVklDRSwgMHgwOTUz
KTsgKi8KKyAgICBwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9ERVZJQ0UsIDB4MDExMSk7Cisg
ICAgcGNpX3NldF9jZmdkYXRhMTYocGksIFBDSVJfVkVORE9SLCAweDgwODYpOworICAgIHBjaV9z
ZXRfY2ZnZGF0YTgocGksIFBDSVJfQ0xBU1MsIFBDSUNfU1RPUkFHRSk7CisKKyAgICAvLyBmb3Ig
TlZNZSBDb250cm9sbGVyIFJlZ2lzdGVycworICAgIGlmIChwY2lfZW11bF9hbGxvY19iYXIocGks
IE5WTUVfQkFSX0NSLCBQQ0lCQVJfTUVNNjQsIE5WTUVfQ1JfU0laRSkpIHsKKyAgICAgICAgRFBS
SU5URigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hbGxvY19iYXJcbiIpOworICAgICAg
ICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLy8gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUg
Y29udHJvbGxlciBhbGxvY2F0ZSBhIHVuaXF1ZXVlIE1TSS1YIHZlY3RvciBmb3IgZWFjaCBjb21w
bGV0aW9uIHF1ZXVlLgorICAgIGlmIChwY2lfZW11bF9hZGRfbXNpeGNhcChwaSwgTlZNRV9DT01Q
TEVUSU9OX1FVRVVFX05VTSwgTlZNRV9CQVJfTVNJWCkpIAorICAgIHsKKyAgICAgICAgRFBSSU5U
RigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hZGRfbXNpeGNhcFxuIik7CisgICAgICAg
IGdvdG8gZmFpbDsKKyAgICB9CisgICAgRFBSSU5URigidGFibGUgJWQsIHBiYSAlZFxuIiwgcGNp
X21zaXhfdGFibGVfYmFyKHBpKSwgcGNpX21zaXhfcGJhX2JhcihwaSkpOworCisgICAgc2MgPSBj
YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lfbnZtZV9zb2Z0YykpOworICAgIHBpLT5waV9hcmcg
PSBzYzsKKyAgICBwaS0+cGlfdm1jdHggPSBjdHg7CisgICAgc2MtPnBpID0gcGk7CisKKyAgICBz
Yy0+YmN0eCA9IGJjdHh0OworCisgICAgcGNpX252bWVfcmVzZXQoc2MpOworCisgICAgc2MtPmNx
c19pbmZvID0gY2FsbG9jKE5WTUVfSU9fQ1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8pKTsKKyAgICBmb3Io
aW50IGk9MDsgaTwgTlZNRV9JT19DUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX2Nx
X2luaXQoJnNjLT5jcXNfaW5mb1tpXSk7CisgICAgfQorCisgICAgc2MtPnNxc19pbmZvID0gY2Fs
bG9jKE5WTUVfSU9fU1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz
dHJ1Y3QgbnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luZm8pKTsKKworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgTlZNRV9JT19TUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX3N1Ym1pc3Np
b25fcXVldWVfaW5pdCgmc2MtPnNxc19pbmZvW2ldLCBzYy0+YmN0eCk7CisgICAgfQorCisgICAg
bnZtZV9pbml0aWFsaXplX2lkZW50aWZ5KHNjKTsKKyAgICBudm1lX2luaXRpYWxpemVfZmVhdHVy
ZShzYyk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBibG9ja2lmX2Nsb3NlKGJjdHh0
KTsKKyAgICBmcmVlKHNjLT5jcXNfaW5mbyk7CisgICAgZnJlZShzYy0+c3FzX2luZm8pOworICAg
IGZyZWUoc2MpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBwY2lfbnZtZV9zZXR1
cF9jb250cm9sbGVyKHN0cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIERQUklOVEYo
ImFzcXMgMHgleCwgYWNxcyAweCV4XG4iLCBzYy0+cmVncy5hcWEuYml0cy5hc3FzLAorICAgICAg
ICAgICAgc2MtPnJlZ3MuYXFhLmJpdHMuYWNxcyk7CisgICAgc2MtPmFzcV9iYXNlID0gKHVpbnRw
dHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5yZWdzLmFzcSwKKyAgICAgICAgc2l6
ZW9mKHN0cnVjdCBudm1lX2NvbW1hbmQpICogc2MtPnJlZ3MuYXFhLmJpdHMuYXNxcyk7CisgICAg
c2MtPmFjcV9iYXNlID0gKHVpbnRwdHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5y
ZWdzLmFjcSwKKyAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogc2MtPnJl
Z3MuYXFhLmJpdHMuYWNxcyk7CisKKyAgICBzYy0+cmVncy5jc3RzLmJpdHMucmR5ID0gMTsKK30K
Kworc3RhdGljIHZvaWQgZXhlY3V0ZV9zZXRfZmVhdHVyZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZt
ZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IG52bWVfY29tbWFuZCogY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkpCit7CisgICAgRFBS
SU5URigiMHgleFxuIiwgY29tbWFuZC0+Y2R3MTEpOworICAgIERQUklOVEYoIjB4JXhcbiIsIGNv
bW1hbmQtPmNkdzEwKTsKKyAgICBjbXBfZW50cnktPmNkdzAgPSAweDAwMDAwMDAwOworICAgIGVu
dW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0
Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfTlVNQkVSX09GX1FVRVVFUzoK
KyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5udW1fb2ZfcXVldWVzLnJhdyA9IGNvbW1hbmQtPmNk
dzExICYgMHhmZmZmOworICAgICAgICAgICAgRFBSSU5URigiU0VUX0ZFQVRVUkUgY21kOiBuY3Fy
IDB4JXgsIG5zcXIgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzEx
ID4+IDE2KSwgKGNvbW1hbmQtPmNkdzExICYgMHhmZmZmKSk7CisgICAgICAgICAgICBjbXBfZW50
cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3Qg
PSAweDA7CisgICAgICAgICAgICBpZiAocGNpX21zaXhfZW5hYmxlZChzYy0+cGkpKSB7CisgICAg
ICAgICAgICAgICAgRFBSSU5URigiZ2VuZXJhdGUgbXNpeCwgdGFibGVfY291bnQgJWQsIFxuIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlfbXNpeC50YWJsZV9jb3VudCk7Cisg
ICAgICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJwY2lf
bXNpeCBpcyBkaXNhYmxlPyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfQVNZTkNfRVZFTlRfQ09ORklHVVJBVElPTjoKKyAgICAg
ICAgICAgIC8vVE9ETyAKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5hc3luY19ldmVudF9jb25m
aWcucmF3ID0gY29tbWFuZC0+Y2R3MTE7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5z
YyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAg
ICAgICAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfSU5URVJSVVBUX0NPQUxFU0NJTkc6CisgICAgICAg
ICAgICBEUFJJTlRGKCJpbnRlcnJ1cHQgY29hbGVzY2luZyBjZHcxMSAweCV4XG4iLCBjb21tYW5k
LT5jZHcxMSk7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAg
ICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgICAgICBzYy0+ZmVh
dHVyZXMuaW50ZXJydXB0X2NvYWxzY2luZy5iaXRzLnRociA9IGNvbW1hbmQtPmNkdzExICYgMHhm
ZjsKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5pbnRlcnJ1cHRfY29hbHNjaW5nLmJpdHMudGlt
ZSA9CisgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzExID4+IDgpICYgMHhmZjsKKyAgICAg
ICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRoaXMgZmVhdHVy
ZSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9Cit9CisKK2VudW0gdGVtcF90aHJlc2hvbGRf
Y2R3MTEgeworICAgIE5WTUVfVEVNUF9USFJFU0hPTERfVE1QVEggPSAweDAwMDBmZmZmLAorICAg
IE5WTUVfVEVNUF9USFJFU0hPTERfVE1QU0VMID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX1RFTVBf
VEhSRVNIT0xEX1RIU0VMID0gMHgwMDMwMDAwMCwKKyAgICBOVk1FX1RFTVBfVEhSRVNIT0xEX1JF
U0VSVkVEID0gMHhmZmMwMDAwMCwKK307CisKK3N0YXRpYyB2b2lkIGV4ZWN1dGVfZ2V0X2ZlYXR1
cmVfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlv
biogY21wX2VudHJ5KQoreworICAgIGVudW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5k
LT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1F
X0ZFQVRfVEVNUEVSQVRVUkVfVEhSRVNIT0xEOiB7CisgICAgICAgICAgICB1aW50OF90IHRoc2Vs
ID0gKGNvbW1hbmQtPmNkdzExICYgTlZNRV9URU1QX1RIUkVTSE9MRF9USFNFTCkgPj4gMjA7Cisg
ICAgICAgICAgICAvLyBvdmVyIHRlbXBhcnR1cmUgdGhyZXNob2xkCisgICAgICAgICAgICBpZiAo
dGhzZWwgPT0gMHgwMCkgeworICAgICAgICAgICAgICAgIGNtcF9lbnRyeS0+Y2R3MCA9IHNjLT5m
ZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyB1bmRlciB0ZW1wYXJ0dXJlIHRocmVzaG9sZAorICAgICAgICAgICAgZWxz
ZSBpZiAodGhzZWwgPT0gMHgxKSB7CisgICAgICAgICAgICAgICAgY21wX2VudHJ5LT5jZHcwID0g
c2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXI7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoInRoZSB0aHNl
bCBpcyBpbnZhbGllZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21wX2VudHJ5LT5z
dGF0dXMuc2MgPSAweDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgw
OworICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklO
VEYoImZlYXR1cmUgbnVtYmVyOiAweCV4XG4iLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIGFzc2Vy
dCgwICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK3N0
YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9pZGVudGlmeV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9z
b2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIERQ
UklOVEYoIklkZW50aWZ5IGNvbW1hbmQgKDB4JXgpXG4iLCAKKyAgICAgICAgICAgIGNvbW1hbmQt
PmNkdzEwICYgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfQ05TKTsKKyAgICBEUFJJTlRGKCJjZHcx
MCAweCV4LCBkcHRyIDB4JWx4LCAweCVseCIsIGNvbW1hbmQtPmNkdzEwLCBjb21tYW5kLT5wcnAx
LAorICAgICAgICAgICAgY29tbWFuZC0+cHJwMik7CisgICAgdWludHB0cl90IGRlc3RfYWRkciA9
ICh1aW50cHRyX3Qpdm1fbWFwX2dwYSgKKyAgICAgICAgc2MtPnBpLT5waV92bWN0eCwgY29tbWFu
ZC0+cHJwMSwgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbnRyb2xsZXJfZGF0YSkpOworCisgICAgLy8g
VE9ETyBoYXZlIHRvIGNvbnNpZGVyIGFib3V0IGNvbXBsZXRpb24gcXVldWUgZW50cnkgY29udGVu
dAorICAgIHN3aXRjaCAoY29tbWFuZC0+Y2R3MTAgJiBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9D
TlMpIHsKKyAgICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQQUNFOgorICAg
ICAgICAgICAgbWVtY3B5KChzdHJ1Y3QgbnZtZV9uYW1lc3BhY2VfZGF0YSopZGVzdF9hZGRyLCAm
c2MtPm5hbWVzcGFjZV9kYXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZt
ZV9uYW1lc3BhY2VfZGF0YSkpOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAw
eDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgwOworICAgICAgICAg
ICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfQ09OVFJPTExFUjoKKyAgICAgICAgICAg
IG1lbWNweSgoc3RydWN0IG52bWVfY29udHJvbGxlcl9kYXRhKilkZXN0X2FkZHIsCisgICAgICAg
ICAgICAgICAgICAgJnNjLT5jb250cm9sbGVyX2RhdGEsIHNpemVvZihzdHJ1Y3QgbnZtZV9jb250
cm9sbGVyX2RhdGEpKTsKKyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjID0gMHgwMDsK
KyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgICAgIHBj
aV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiW0NOU10gbm90IGlucGxlbWVudGVk
Iik7CisgICAgfQorCisgICAgYXNzZXJ0KDApOworfQorCitlbnVtIGNyZWF0ZV9pb19jcV9jZHcx
MSB7CisgICAgTlZNRV9DUkVBVEVfSU9fQ1FfQ0RXMTFfUEMgPSAweDAwMDAwMDAxLAorICAgIE5W
TUVfQ1JFQVRFX0lPX0NRX0NEVzExX0lFTiA9IDB4MDAwMDAwMDIsCisgICAgTlZNRV9DUkVBVEVf
SU9fQ1FfQ0RXMTFfUlNWID0gMHgwMDAwZmZmYywKKyAgICBOVk1FX0NSRUFURV9JT19DUV9DRFcx
MV9JViA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9pZCAKK252bWVfZXhlY3V0ZV9jcmVh
dGVfaW9fY3FfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNv
bW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIC8vIFRPRE8KKyAgICAvLyAg
SUVOCisgICAgLy8gIElWCisgICAgRFBSSU5URigiaW50ZXJydXB0IHZlY3RvciAweCV4XG4iLCBj
b21tYW5kLT5jZHcxMSA+PiAxNik7CisgICAgaWYgKGNvbW1hbmQtPmNkdzExICYgTlZNRV9DUkVB
VEVfSU9fQ1FfQ0RXMTFfUEMpIHsKKyAgICAgICAgdWludDE2X3QgcWlkID0gY29tbWFuZC0+Y2R3
MTAgJiAweGZmZmY7CisgICAgICAgIGFzc2VydChxaWQgPCBOVk1FX0lPX0NRU19TSVpFICYmIAor
ICAgICAgICAgICAgICAgICJ5b3Ugc2hvdWxkIGluY3JlYXNlIG51bWJlciBvZiBjb21wbGV0aW9u
IHF1ZXVlIG9mIHRoaXMgY29udHJvbGxlciBlbXVsYXRvciIpOworCisgICAgICAgIGlmIChzYy0+
Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgIT0gKHVpbnRwdHJfdClOVUxMKSB7CisgICAgICAgICAg
ICBhc3NlcnQoMCAmJiAidGhlIGNvbXBsZXRpb24gcXVldWUgaXMgYWxyZWFkeSB1c2VkIik7Cisg
ICAgICAgIH0KKworICAgICAgICB1aW50MTZfdCBpbnRlcnJ1cHRfdmVjdG9yID0gY29tbWFuZC0+
Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx
MCA+PiAxNjsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0uYmFzZV9hZGRyID0KKyAgICAgICAg
ICAgICh1aW50cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9j
b21wbGV0aW9uKSAqIHF1ZXVlX3NpemUpOworICAgICAgICBzYy0+Y3FzX2luZm9bcWlkXS5zaXpl
ID0gcXVldWVfc2l6ZTsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0ucWlkID0gcWlkOworICAg
ICAgICBzYy0+Y3FzX2luZm9bcWlkXS5pbnRlcnJ1cHRfdmVjdG9yID0gaW50ZXJydXB0X3ZlY3Rv
cjsKKworICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgIGNtcF9l
bnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBp
LCAwKTsKKyAgICAgICAgRFBSSU5URigicWlkICVkLCBxc2l6ZSAweCV4LCBhZGRyIDB4JWx4LCBJ
ViAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5kLT5wcnAx
LCBpbnRlcnJ1cHRfdmVjdG9yKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCgw
ICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK2VudW0g
Y3JlYXRlX2lvX3NxX2NkdzExIHsKKyAgICBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQyA9IDB4
MDAwMDAwMDEsCisgICAgTlZNRV9DUkVBVEVfSU9fU1FfQ0RXMTFfUVBSSU8gPSAweDAwMDAwMDYw
LAorICAgIE5WTUVfQ1JFQVRFX0lPX1NRX0NEVzExX1JTViA9IDB4MDAwMGZmODAsCisgICAgTlZN
RV9DUkVBVEVfSU9fU1FfQ0RXMTFfQ1FJRCA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9p
ZCBudm1lX2V4ZWN1dGVfY3JlYXRlX2lvX3NxX2NvbW1hbmQoc3RydWN0IHBjaV9udm1lX3NvZnRj
KiBzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAg
ICBpZiAoY29tbWFuZC0+Y2R3MTEgJiBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQykgeworICAg
ICAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZmZmZjsKKyAgICAgICAgYXNz
ZXJ0KHFpZCA8IE5WTUVfSU9fU1FTX1NJWkUgJiYgCisgICAgICAgICAgICAgICAgInlvdSBzaG91
bGQgaW5jcmVhc2UgbnVtYmVyIG9mIHN1Ym1pc3Npb24gcXVldWUgb2YgdGhpcyBjb250cm9sbGVy
IGVtdWxhdG9yIik7CisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgLyogICAgICAgICB1aW50OF90
IHF1ZXVlX3ByaW9yaXR5ID0gKGNvbW1hbmQtPmNkdzExICYKKyAgICAgICAgICogTlZNRV9DUkVB
VEVfSU9fU1FfQ0RXMTFfUVBSSU8pID4+IDE7ICovCisgICAgICAgIHN0cnVjdCBudm1lX3N1Ym1p
c3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlkXTsKKyAgICAgICAg
aWYgKHNxX2luZm8tPmJhc2VfYWRkciAhPSAodWludHB0cl90KU5VTEwpIHsKKyAgICAgICAgICAg
IGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCBjcWlkID0gY29tbWFuZC0+
Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx
MCA+PiAxNjsKKyAgICAgICAgc3FfaW5mby0+YmFzZV9hZGRyID0KKyAgICAgICAgICAgICh1aW50
cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAq
IHF1ZXVlX3NpemUpOworICAgICAgICBzcV9pbmZvLT5zaXplID0gcXVldWVfc2l6ZTsKKyAgICAg
ICAgc3FfaW5mby0+Y29tcGxldGlvbl9xaWQgPSBjcWlkOworICAgICAgICBzcV9pbmZvLT5xaWQg
PSBxaWQ7CisKKyAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOworICAgICAgICBj
bXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNj
LT5waSwgMCk7CisgICAgICAgIERQUklOVEYoInFpZCAlZCwgcXNpemUgMHgleCwgYWRkciAweCVs
eCwgY3FpZCAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5k
LT5wcnAxLCBjcWlkKTsKKworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KDAgJiYg
Im5vdCBpbXBsZW1lbnRlZCIpOworICAgIH0KK30KK3N0YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9k
ZWxldGVfaW9fc3FfY29tbWFuZCgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg
IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfY29tcGxldGlv
biogY21wX2VudHJ5KQoreworICAgIHVpbnQxNl90IHFpZCA9IGNvbW1hbmQtPmNkdzEwICYgMHhm
ZmZmOworICAgIHNjLT5zcXNfaW5mb1txaWRdLmJhc2VfYWRkciA9ICh1aW50cHRyX3QpTlVMTDsK
KyAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworfQorCitzdGF0aWMgdm9pZCBudm1l
X2V4ZWN1dGVfZGVsZXRlX2lvX2NxX2NvbW1hbmQoCisgICAgc3RydWN0IHBjaV9udm1lX3NvZnRj
KiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgIHN0cnVjdCBudm1l
X2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5j
ZHcxMCAmIDB4ZmZmZjsKKyAgICBzYy0+Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgPSAodWludHB0
cl90KU5VTEw7CisgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKK30KKworc3RhdGlj
IHZvaWQgZXhlY3V0ZV9hc3luY19ldmVudF9yZXF1ZXN0X2NvbW1hbmQoCisgICAgc3RydWN0IHBj
aV9udm1lX3NvZnRjKiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAg
IHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICAvLyBUT0RPCisgICAg
Ly8gd2hlbiBzb21lIGV2ZW50cyBhcmUgb2NjdXJlZCwgdGhlIGNvbnRyb2xsZXIgc2VuZCBub3Rp
ZnkKK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfZXhlY3V0ZV9hZG1pbl9jb21tYW5kKHN0cnVj
dCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3RydWN0IG52bWVfY29tbWFuZCogY29t
bWFuZCA9CisgICAgICAgIChzdHJ1Y3QgbnZtZV9jb21tYW5kKikoc2MtPmFzcV9iYXNlICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IG52bWVfY29tbWFuZCkg
KiAodmFsdWUgLSAxKSk7CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkg
PQorICAgICAgICAoc3RydWN0IG52bWVfY29tcGxldGlvbiopKHNjLT5hY3FfYmFzZSArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRp
b24pICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmNvbXBsZXRp
b25fcXVldWVfaGVhZCk7CisKKyAgICBjbXBfZW50cnktPnNxaWQgPSAwOworICAgIGNtcF9lbnRy
eS0+c3FoZCA9IHZhbHVlIC0gMTsKKyAgICBjbXBfZW50cnktPmNpZCA9IGNvbW1hbmQtPmNpZDsK
KyAgICBjbXBfZW50cnktPnN0YXR1cy5wID0gIWNtcF9lbnRyeS0+c3RhdHVzLnA7CisKKyAgICBE
UFJJTlRGKCJbYWRtaW4gY29tbWFuZF0gMHgleFxuIiwgY29tbWFuZC0+b3BjKTsKKyAgICBzd2l0
Y2ggKGNvbW1hbmQtPm9wYykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19TUToK
KyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9kZWxldGVfaW9fc3FfY29tbWFuZChzYywgY29tbWFu
ZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BD
X0NSRUFURV9JT19TUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fc3FfY29t
bWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19DUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9k
ZWxldGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0NSRUFURV9JT19DUToKKyAgICAgICAgICAg
IG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0lERU5USUZZOgor
ICAgICAgICAgICAgbnZtZV9leGVjdXRlX2lkZW50aWZ5X2NvbW1hbmQoc2MsIGNvbW1hbmQsIGNt
cF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19TRVRf
RkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX3NldF9mZWF0dXJlX2NvbW1hbmQoc2MsIGNv
bW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1F
X09QQ19HRVRfRkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX2dldF9mZWF0dXJlX2NvbW1h
bmQoc2MsIGNvbW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBOVk1FX09QQ19BU1lOQ19FVkVOVF9SRVFVRVNUOgorICAgICAgICAgICAgLy8gWFhYIHRo
aXMgaXMgYSBkaXJ0eSBoYWNrLi4uLiBzaG91bGQgYmUgZml4ZWQuLi4KKyAgICAgICAgICAgIGNt
cF9lbnRyeS0+c3RhdHVzLnAgPSAhY21wX2VudHJ5LT5zdGF0dXMucDsKKyAgICAgICAgICAgIGV4
ZWN1dGVfYXN5bmNfZXZlbnRfcmVxdWVzdF9jb21tYW5kKHNjLCBjb21tYW5kLCBjbXBfZW50cnkp
OworICAgICAgICAgICAgc2MtPmNvbXBsZXRpb25fcXVldWVfaGVhZC0tOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAidGhlIGFk
bWluIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgc2MtPmNvbXBs
ZXRpb25fcXVldWVfaGVhZCsrOworICAgIGlmKHNjLT5yZWdzLmFxYS5iaXRzLmFjcXMgPT0gc2Mt
PmNvbXBsZXRpb25fcXVldWVfaGVhZCkKKyAgICB7CisgICAgICAgIHNjLT5jb21wbGV0aW9uX3F1
ZXVlX2hlYWQgPSAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfYmxvY2tpZl9p
b3JlcV9jYihzdHJ1Y3QgYmxvY2tpZl9yZXEqIGJyLCBpbnQgZXJyKQoreworICAgIERQUklOVEYo
IiVzICVkXG4iLCBfX2Z1bmNfXywgZXJyKTsKKworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBucmVx
ID0gYnItPmJyX3BhcmFtOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyog
Y3FfaW5mbyA9IG5yZXEtPmNxX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1
ZV9pbmZvKiBzcV9pbmZvID0gbnJlcS0+c3FfaW5mbzsKKworICAgIHB0aHJlYWRfbXV0ZXhfbG9j
aygmY3FfaW5mby0+bXR4KTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9u
X2VudHJ5ID0KKyAgICAgICAgKHN0cnVjdCBudm1lX2NvbXBsZXRpb24qKShjcV9pbmZvLT5iYXNl
X2FkZHIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qg
bnZtZV9jb21wbGV0aW9uKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNxX2luZm8tPnRhaWwpOworCisgICAgbnJlcS0+Y29tcGxldGlvbl9lbnRyeS5zdGF0dXMuc2N0
ID0gMHgwOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3RhdHVzLnNjID0gMHgwMDsKKwor
ICAgIC8vIHNhdmUgcGhhc2UgdmFsdWUgYmVmb3JlIHdyaXRlIHZhbHVlcyB0byBjb21wbGV0aW9u
IHF1ZXVlIGVudHJ5CisgICAgdWludDhfdCBzdGF0dXNfcGhhc2UgPSBjb21wbGV0aW9uX2VudHJ5
LT5zdGF0dXMucDsKKworICAgIG1lbWNweShjb21wbGV0aW9uX2VudHJ5LCAmbnJlcS0+Y29tcGxl
dGlvbl9lbnRyeSwKKyAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pKTsK
KyAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMucCA9ICFzdGF0dXNfcGhhc2U7CisKKyAgICBE
UFJJTlRGKCJicl9yZXNpZCAweCVseFxuIiwgYnItPmJyX3Jlc2lkKTsKKyAgICBEUFJJTlRGKCJj
cV9oZWFkIDB4JXgobWF4IDB4JXgpLCBxaWQgJWQsIHN0YXR1cyBwaGFzZSAleCBJViAlZFxuIiwK
KyAgICAgICAgICAgIGNxX2luZm8tPnRhaWwsIGNxX2luZm8tPnNpemUsIGNxX2luZm8tPnFpZCwg
CisgICAgICAgICAgICAhc3RhdHVzX3BoYXNlLCBjcV9pbmZvLT5pbnRlcnJ1cHRfdmVjdG9yKTsK
KworICAgIGNxX2luZm8tPnRhaWwrKzsKKy8qICAgICBpZiAoY3FfaW5mby0+dGFpbCA9PSBjcV9p
bmZvLT5zaXplKSB7ICovCisgICAgaWYgKGNxX2luZm8tPnRhaWwgPiBjcV9pbmZvLT5zaXplKSB7
CisgICAgICAgIGNxX2luZm8tPnRhaWwgPSAwOworICAgIH0KKworICAgIFRBSUxRX1JFTU9WRSgm
c3FfaW5mby0+aW9iaGQsIG5yZXEsIGlvX2JsaXN0KTsKKworICAgIFNUQUlMUV9JTlNFUlRfVEFJ
TCgmc3FfaW5mby0+aW9maGQsIG5yZXEsIGlvX2ZsaXN0KTsKKworICAgIHBjaV9nZW5lcmF0ZV9t
c2l4KG5yZXEtPnNjLT5waSwgY3FfaW5mby0+aW50ZXJydXB0X3ZlY3Rvcik7CisgICAgcHRocmVh
ZF9tdXRleF91bmxvY2soJmNxX2luZm8tPm10eCk7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfbnZt
X2NvbW1hbmRfcmVhZF93cml0ZSgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg
IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lv
bl9xdWV1ZV9pbmZvKiBzcV9pbmZvLAorICAgIHVpbnQxNl90IHNxaGQpCit7CisgICAgaW50IGVy
ciA9IDA7CisgICAgdWludHB0cl90IHN0YXJ0aW5nX2xiYSA9ICgodWludDY0X3QpY29tbWFuZC0+
Y2R3MTEgPDwgMzIpIHwgY29tbWFuZC0+Y2R3MTA7CisgICAgLy8gTkxCIChudW1iZXIgb2YgbG9n
aWMgYmxvY2spIGlzIGEgMCdzIGJhc2VkIHZhbHVlCisgICAgdWludDE2X3QgbnVtYmVyX29mX2xi
ID0gKGNvbW1hbmQtPmNkdzEyICYgMHhmZmZmKSArIDE7CisgICAgaW50IGxvZ2ljX2Jsb2NrX3Np
emUgPSAxIDw8IHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLmxiYWRzOworCisgICAgRFBSSU5U
Rigic2xiYSAweCVseCwgbmxiYSAweCV4LCBsYiBzaXplIDB4JXhcbiIsCisgICAgICAgICAgICBz
dGFydGluZ19sYmEsIG51bWJlcl9vZl9sYiwgbG9naWNfYmxvY2tfc2l6ZSk7CisgICAgRFBSSU5U
Rigic3FoZDogMHgleCwgZGVzdGluYXRpb24gYWRkciA6IDB4JTA4bHhcbiIsIHNxaGQsIGNvbW1h
bmQtPnBycDEpOworCisgICAgLyogICAgIHN0cnVjdCBudm1lX2lvcmVxICpucmVxID0gc3FfaW5m
by0+aW9yZXE7ICovCisgICAgc3RydWN0IG52bWVfaW9yZXEqIG5yZXEgPSBTVEFJTFFfRklSU1Qo
JnNxX2luZm8tPmlvZmhkKTsKKyAgICBhc3NlcnQobnJlcSAhPSBOVUxMKTsKKyAgICBTVEFJTFFf
UkVNT1ZFX0hFQUQoJnNxX2luZm8tPmlvZmhkLCBpb19mbGlzdCk7CisKKyAgICBucmVxLT5jb21w
bGV0aW9uX2VudHJ5LnNxaGQgPSBzcWhkOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3Fp
ZCA9IHNxX2luZm8tPnFpZDsKKyAgICBucmVxLT5jb21wbGV0aW9uX2VudHJ5LmNpZCA9IGNvbW1h
bmQtPmNpZDsKKyAgICBucmVxLT5jcV9pbmZvID0gJnNjLT5jcXNfaW5mb1tzcV9pbmZvLT5jb21w
bGV0aW9uX3FpZF07CisgICAgbnJlcS0+c2MgPSBzYzsKKyAgICBucmVxLT5zcV9pbmZvID0gc3Ff
aW5mbzsKKyAgICBEUFJJTlRGKCJzcWlkICVkLCBjcWlkICVkXG4iLCBzcV9pbmZvLT5xaWQsIHNx
X2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKworICAgIAorICAgIGludCBkYXRhX3NpemUgPSBudW1i
ZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplOworICAgIGludCBwYWdlX251bSA9IGRhdGFfc2l6
ZSAvICgxIDw8IDEyKTsKKyAgICBpZihkYXRhX3NpemUgJSAoMSA8PCAxMikpCisgICAgeworICAg
ICAgICBwYWdlX251bSsrOworICAgIH0KKyAgICAvL1RPRE8gcGFnZSBzaXplIGlzIGRlcGVuZCBv
biBDQy5NUFMKKyAgICBEUFJJTlRGKCJhbGwgc2l6ZSAweCV4LCBwYWdlIG51bSAweCV4XG4iLCBk
YXRhX3NpemUsIHBhZ2VfbnVtKTsKKyAgICBEUFJJTlRGKCJtb2QgMHgleFxuIiwgZGF0YV9zaXpl
ICUgKDEgPDwgMTIpKTsKKyAgICBEUFJJTlRGKCJQUlAgMHglMDhseCAweCUwOGx4XG4iLCBjb21t
YW5kLT5wcnAxLCBjb21tYW5kLT5wcnAyKTsKKyAgICBEUFJJTlRGKCJDRFcwIDB4JXhcbiIsIGNv
bW1hbmQtPnJzdmQxKTsKKworICAgIHN0cnVjdCBibG9ja2lmX3JlcSogYnJlcSA9ICZucmVxLT5p
b19yZXE7CisgICAgYnJlcS0+YnJfb2Zmc2V0ID0gMDsKKworICAgIGlmKGNvbW1hbmQtPnBycDIg
PT0gMCkgeworCisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfYmFzZSA9CisgICAgICAgICAg
ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIGRhdGFf
c2l6ZSk7CisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfbGVuID0gZGF0YV9zaXplOworICAg
ICAgICBicmVxLT5icl9pb3ZjbnQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBp
ZihwYWdlX251bSA9PSAyKSB7CisgICAgICAgICAgICAvLyBwYWdlIHNpemUgKDRrKQorICAgICAg
ICAgICAgaW50IHNpemUgPSAxIDw8IDEyOworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlv
dl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1j
dHgsIGNvbW1hbmQtPnBycDEsIHNpemUpOyAKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlswXS5p
b3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzFdLmlvdl9iYXNlID0g
CisgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3ZtY3R4LCBjb21t
YW5kLT5wcnAyLCBzaXplKTsKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlsxXS5pb3ZfbGVuID0g
c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHBhZ2VfbnVtID4gMikgeworCisgICAg
ICAgICAgICBpbnQgcHJwMV9vZmZzZXQgPSAoY29tbWFuZC0+cHJwMSAmIDB4ZmZmKTsKKyAgICAg
ICAgICAgIGludCBwcnAxX3NpemUgPSAoMSA8PCAxMikgLSBwcnAxX29mZnNldDsKKworICAgICAg
ICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9n
dWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIHBycDFfc2l6ZSk7Cisg
ICAgICAgICAgICBicmVxLT5icl9pb3ZbMF0uaW92X2xlbiA9IHBycDFfc2l6ZTsKKworICAgICAg
ICAgICAgZGF0YV9zaXplIC09IDEgPDwgMTI7CisKKyAgICAgICAgICAgIHVpbnQ2NF90KiBwcnBf
bGlzdCA9IHBhZGRyX2d1ZXN0Mmhvc3QoCisgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlf
dm1jdHgsIAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLT5wcnAyLAorICAgICAgICAgICAg
ICAgICAgICBzaXplb2YodWludDY0X3QpICogKHBhZ2VfbnVtIC0gMSkpOworCisgICAgICAgICAg
ICBEUFJJTlRGKCJwcnAxICAgOiAweCVseCwgMHgleFxuIiwgY29tbWFuZC0+cHJwMSwgcHJwMV9z
aXplKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL1RPRE8gYmUgY2FyZWZ1
bGwgb2Ygc2l6ZS4gYnJfaW92W0JMT0NLSUZfSU9WX01BWF0uCisgICAgICAgICAgICBmb3IoaW50
IGk9MTsgaTwgcGFnZV9udW07ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
bnQgc2l6ZSA9ICgxPDwxMik7CisgICAgICAgICAgICAgICAgaWYoZGF0YV9zaXplIDwgKDEgPDwg
MTIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0g
KHBhZ2VfbnVtIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gZGF0YV9zaXplOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVxLT5icl9pb3ZbaV0uaW92X2Jh
c2UgPSAKKyAgICAgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3Zt
Y3R4LCBwcnBfbGlzdFtpIC0gMV0sIHNpemUpOworICAgICAgICAgICAgICAgIGJyZXEtPmJyX2lv
dltpXS5pb3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSAtPSBzaXpl
OworICAgICAgICAgICAgICAgIERQUklOVEYoInBycDJbJWRdICAgOiAweCVseCwgMHgleFxuIiwg
aSwgcHJwX2xpc3RbaV0sIHNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFBSSU5U
RigibGFzdCBkYXRhIHNpemU6IDB4JXhcbiIsIGRhdGFfc2l6ZSk7CisgICAgICAgICAgICBEUFJJ
TlRGKCJwYWdlIG51bSAweCV4IiwgcGFnZV9udW0pOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAg
ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplKTsKKwor
ICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9sZW4gPSBudW1iZXJfb2ZfbGIgKiBsb2dp
Y19ibG9ja19zaXplOworICAgICAgICB9CisgICAgfQorICAgIGJyZXEtPmJyX2lvdmNudCA9IHBh
Z2VfbnVtOworICAgIGJyZXEtPmJyX29mZnNldCArPSBzdGFydGluZ19sYmEgKiBsb2dpY19ibG9j
a19zaXplOworICAgIGJyZXEtPmJyX3Jlc2lkID0gbnVtYmVyX29mX2xiICogbG9naWNfYmxvY2tf
c2l6ZTsKKyAgICBicmVxLT5icl9jYWxsYmFjayA9IHBjaV9udm1lX2Jsb2NraWZfaW9yZXFfY2I7
CisgICAgYnJlcS0+YnJfcGFyYW0gPSBucmVxOworCisgICAgVEFJTFFfSU5TRVJUX0hFQUQoJnNx
X2luZm8tPmlvYmhkLCBucmVxLCBpb19ibGlzdCk7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQtPm9w
YykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX1JFQUQ6CisgICAgICAgICAgICBlcnIgPSBibG9j
a2lmX3JlYWQoc2MtPmJjdHgsIGJyZXEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTlZNRV9PUENfV1JJVEU6CisgICAgICAgICAgICBlcnIgPSBibG9ja2lmX3dyaXRlKHNjLT5i
Y3R4LCBicmVxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiPz8iKTsKKyAgICB9CisKKyAg
ICBhc3NlcnQoZXJyID09IDAgJiYgImJsb2NraWZfcmVhZCBvciBibG9ja2lmX3dyaXRlIGZhaWxl
ZCIpOworfQorCisvKiBzdGF0aWMgdm9pZCBudm1lX252bV9jb21tYW5kX2ZsdXNoKHN0cnVjdCBw
Y2lfbnZtZV9zb2Z0Yyogc2MsICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbywgKi8KKy8qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY2lkLCAqLworLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzcWhkKSAqLworLyogeyAq
LworLyogICAgIGFzc2VydCgibm90IHlldCBpbXBsZW1lbnRlZCIpOyAqLworLyogICAgIHN0cnVj
dCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyogY3FfaW5mbyA9ICovCisvKiAgICAgICAgICZz
Yy0+Y3FzX2luZm9bc3FfaW5mby0+Y29tcGxldGlvbl9xaWRdOyAqLworCisvKiAgICAgcHRocmVh
ZF9tdXRleF9sb2NrKCZjcV9pbmZvLT5tdHgpOyAqLworLyogICAgIHN0cnVjdCBudm1lX2NvbXBs
ZXRpb24qIGNvbXBsZXRpb25fZW50cnkgPSAqLworLyogICAgICAgICAoc3RydWN0IG52bWVfY29t
cGxldGlvbiopKGNxX2luZm8tPmJhc2VfYWRkciArICovCisvKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogKi8KKy8qICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3FfaW5mby0+aGVhZCk7ICovCisK
Ky8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zcWhkID0gc3FoZDsgKi8KKy8qICAgICBjb21wbGV0
aW9uX2VudHJ5LT5zcWlkID0gc3FfaW5mby0+cWlkOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50
cnktPmNpZCA9IGNpZDsgKi8KKy8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2N0ID0g
MHgwOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7ICovCisv
KiAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnAgPSAhY29tcGxldGlvbl9lbnRyeS0+c3Rh
dHVzLnA7ICovCisKKy8qICAgICBEUFJJTlRGKCJjaWQ6IDB4JXgsIGNxaWQ6IDB4JXgsIGNxX2lu
Zm8tPmhlYWQgMHgleCwgY3FfaW5mby0+c2l6ZSAweCV4XG4iLCAqLworLyogICAgICAgICAgICAg
Y2lkLCBzcV9pbmZvLT5jb21wbGV0aW9uX3FpZCwgY3FfaW5mby0+aGVhZCwgY3FfaW5mby0+c2l6
ZSk7ICovCisvKiAgICAgY3FfaW5mby0+aGVhZCsrOyAqLworLyogICAgIGlmIChjcV9pbmZvLT5o
ZWFkID09IGNxX2luZm8tPnNpemUpIHsgKi8KKy8qICAgICAgICAgY3FfaW5mby0+aGVhZCA9IDA7
ICovCisvKiAgICAgfSAqLworLyogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjcV9pbmZvLT5t
dHgpOyAqLworCisvKiAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCBzcV9pbmZvLT5jb21w
bGV0aW9uX3FpZCk7ICovCisvKiB9ICovCisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX2V4ZWN1dGVf
bnZtZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBxaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzcV90YWlsKQoreworICAgIHN0cnVj
dCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlk
XTsKKworICAgIHVpbnQxNl90IGNvbW1hbmRfaW5kZXggPSBzcV90YWlsIC0gMTsKKyAgICB1aW50
MTZfdCBzcWhkID0gc3FfdGFpbCAtIDE7CisgICAgaWYgKHNxX3RhaWwgPT0gMHgwKSB7CisgICAg
ICAgIGNvbW1hbmRfaW5kZXggPSBzcV9pbmZvLT5zaXplOworICAgICAgICBzcWhkID0gc3FfaW5m
by0+c2l6ZTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kID0KKyAg
ICAgICAgKHN0cnVjdCBudm1lX2NvbW1hbmQqKShzcV9pbmZvLT5iYXNlX2FkZHIgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAqIChj
b21tYW5kX2luZGV4KSk7CisKKyAgICAvKiAgICAgdWludDE2X3QgY29tcGxldGlvbl9xaWQgPSBz
cV9pbmZvLT5jb21wbGV0aW9uX3FpZDsgKi8KKyAgICAvKiAgICAgc3RydWN0IG52bWVfY29tcGxl
dGlvbl9xdWV1ZV9pbmZvICpjcV9pbmZvID0KKyAgICAgKiAmc2MtPmNxc19pbmZvW2NvbXBsZXRp
b25fcWlkXTsgKi8KKworICAgIERQUklOVEYoIioqKioqIG52bSBjb21tYW5kIDB4JXggKioqKipc
biIsIGNvbW1hbmQtPm9wYyk7CisgICAgRFBSSU5URigib3BjOiAweCV4LCBjaWQ6IDB4JXgsIG5z
aWQ6IDB4JXgsIHFpZDogMHgleCwgc3FfdGFpbCAweCVseFxuIiwKKyAgICAgICAgICAgIGNvbW1h
bmQtPm9wYywgY29tbWFuZC0+Y2lkLCBjb21tYW5kLT5uc2lkLCBxaWQsIHNxX3RhaWwpOworCisg
ICAgc3dpdGNoIChjb21tYW5kLT5vcGMpIHsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19SRUFEOgor
ICAgICAgICBjYXNlIE5WTUVfT1BDX1dSSVRFOgorICAgICAgICAgICAgbnZtZV9udm1fY29tbWFu
ZF9yZWFkX3dyaXRlKHNjLCBjb21tYW5kLCBzcV9pbmZvLCBzcWhkKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgLyogICAgICAgICBjYXNlIE5WTUVfT1BDX0ZMVVNIOiAqLworICAgICAg
ICAvKiAgICAgICAgICAgICBudm1lX252bV9jb21tYW5kX2ZsdXNoKHNjLCBzcV9pbmZvLCBjb21t
YW5kLT5jaWQsIHNxaGQpOworICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgcmV0
dXJuOyAqLworICAgICAgICAvKiAgICAgICAgIGNhc2UgTlZNRV9PUENfREFUQVNFVF9NQU5BR0VN
RU5UOiAqLworICAgICAgICAvKiAgICAgICAgICAgICB7ICovCisgICAgICAgIC8qICAgICAgICAg
ICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmNxX2luZm8tPm10eCk7ICovCisgICAgICAgIC8q
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9uX2VudHJ5
ID0gICovCisgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgcGNpX252bWVfYWNxdWlyZV9j
b21wbGV0aW9uX2VudHJ5KHNjLCBjcV9pbmZvKTsKKyAgICAgICAgICovCisgICAgICAgIC8qICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOyAqLworICAg
ICAgICAvKiAgICAgICAgICAgICAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4
MDsgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZj
cV9pbmZvLT5tdHgpOyAqLworCisgICAgICAgIC8qICAgICAgICAgICAgICAgICBwY2lfZ2VuZXJh
dGVfbXNpeChzYy0+cGksIHNxX2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKyAgICAgICAgICovCisg
ICAgICAgIC8qICAgICAgICAgICAgICAgICByZXR1cm47ICovCisgICAgICAgIC8qICAgICAgICAg
ICAgIH0gKi8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRo
ZSBudm1lIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIHlldCIpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgcGNpX252bWVfd3JpdGVfYmFyXzAoc3RydWN0IHZtY3R4KiBjdHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVnb2ZmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKK3sKKyAgICAvLyB3cml0ZSB2YWx1ZSB0byBkb29y
YmVsbCByZWdpc3RlcgorICAgIC8vIFRPRE8gbGltaXQgb2YgZG9vcmJlbGwgcmVnaXN0ZXIgYWRk
cmVzcyBpcyBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBxdWV1ZQorICAgIC8vIHBhaXJzLgorICAg
IGlmIChyZWdvZmYgPj0gTlZNRV9DUl9JT19RVUVVRV9CQVNFICYmIHJlZ29mZiA8IE5WTUVfQ1Jf
U0laRSkgeworICAgICAgICBpbnQgcXVldWVfb2Zmc2V0ID0gcmVnb2ZmIC0gTlZNRV9DUl9JT19R
VUVVRV9CQVNFOyAgLy8gMHgxMDAwIGlzIE5WTUVfQ1JfSU9fUVVFVUVfQkFTRQorICAgICAgICBE
UFJJTlRGKCJyZWdvZmYgMHglbHhcbiIsIHJlZ29mZik7CisgICAgICAgIGludCBxaWQgPSBxdWV1
ZV9vZmZzZXQgLyA4OyAgLy8gNCBpcyBkb29yYmVsbCByZWdpc3RlciBzaXplCisgICAgICAgIGlu
dCBpc19jb21wbGV0aW9uID0gKHF1ZXVlX29mZnNldCAvIDQpICUgMjsKKworICAgICAgICAvLyBj
b21wbGV0aW9uIGRvb3JiZWxsCisgICAgICAgIGlmIChpc19jb21wbGV0aW9uKSB7CisgICAgICAg
ICAgICBEUFJJTlRGKCJjb21wbGV0aW9uIGRvb3JiZWxsICglZCkgaXMga25vY2tlZCwgY3FoZCAw
eCV4XG4iLCAKKyAgICAgICAgICAgICAgICAgICAgcWlkLCAodWludDE2X3QpdmFsdWUpOworICAg
ICAgICAgICAgaWYgKHFpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIHN1
Ym1pc3Npb24gZG9vcmJlbGwKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBhZG1pbiBj
b21tYW5kCisgICAgICAgICAgICBpZiAocWlkID09IDApIHsKKyAgICAgICAgICAgICAgICBwY2lf
bnZtZV9leGVjdXRlX2FkbWluX2NvbW1hbmQoc2MsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBudm1lIGNvbW1hbmQKKyAgICAg
ICAgICAgIC8vIFRPRE8gdmFsaWRhdGUgcWlkCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBwY2lfbnZtZV9leGVjdXRlX252bWVfY29tbWFuZChzYywgcWlkLCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGFzc2VydCgwKTsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJ3cml0ZSAweCVseCwgdmFsdWUgJWx4
IFxuIiwgcmVnb2ZmLCB2YWx1ZSk7CisgICAgYXNzZXJ0KHNpemUgPT0gNCAmJiAid29yZCBzaXpl
IHNob3VsZCBiZSA0KGJ5dGUpIik7CisgICAgc3dpdGNoIChyZWdvZmYpIHsKKyAgICAgICAgY2Fz
ZSBOVk1FX0NSX0NDOgorCisgICAgICAgICAgICAvLyBlbmFibGUgKEVOKSBiaXQgaW4gY29udHJv
bGxlciByZWdpc3RlcgorICAgICAgICAgICAgLyogLSAwIC0+IDEKKyAgICAgICAgICAgICAqICAg
ICAgLSBXaGVuIGEgY29udHJvbGxlciBpcyByZWFkeSB0byBwcm9jZXNzIGNvbW1hbmRzLCB0aGUK
KyAgICAgICAgICAgICAqICAgICAgY29udHJvbGxlciBzZXQgJzEnIHRvIENTVFMuUkRZLgorICAg
ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoKHNjLT5yZWdzLmNjLmJpdHMuZW4gPT0gMCkg
JiYgKHZhbHVlICYgTlZNRV9DQ19FTikpIHsKKyAgICAgICAgICAgICAgICBwY2lfbnZtZV9yZXNl
dChzYyk7CisgICAgICAgICAgICAgICAgcGNpX252bWVfc2V0dXBfY29udHJvbGxlcihjdHgsIHNj
KTsKKyAgICAgICAgICAgICAgICBEUFJJTlRGKCJudm1lIHVwXG4iKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgLyogLSAxIC0+IDAKKyAgICAgICAg
ICAgICAqICBDb250cm9sZXIgUmVzZXQKKyAgICAgICAgICAgICAqICAgICAgLSBkZWxldGUgYWxs
IEkvTyBTdWJtaXNzaW9uIHF1ZXVlcyBhbmQgQ29tcGxldGlvbiBxdWV1ZXMKKyAgICAgICAgICAg
ICAqICAgICAgLSByZXNldCBhZG1pbiBzdWJtaXR0aW9uIHF1ZXVlIGFuZCBjb21wbGV0aW9uIHF1
ZXVlCisgICAgICAgICAgICAgKiAgICAgIC0gbW92ZSB0byBpZGxlIHN0YXRlCisgICAgICAgICAg
ICAgKiAgICAgIC0gYWxsIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFyZSByZXNldCB0byB0aGVpciBk
ZWZhdWx0IHZhbHVlcworICAgICAgICAgICAgICogICAgICAoZGVmaW5lZCBpbiBzZWN0aW9uIDUu
MjEuMSkKKyAgICAgICAgICAgICAqICAgICAgLSBDU1RTLlJEWSBiaXQgaXMgY2xlYXJlZCB0byAn
MCcuCisgICAgICAgICAgICAgKi8gIAorICAgICAgICAgICAgaWYgKChzYy0+cmVncy5jYy5iaXRz
LmVuID09IDEpICYmICEodmFsdWUgJiBOVk1FX0NDX0VOKSkgeworICAgICAgICAgICAgICAgIERQ
UklOVEYoIm52bWUgZG93blxuIik7CisgICAgICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRz
LnJkeSA9IDA7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgICAgIC8qICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0KDApOyAqLworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBzd2l0Y2goKHZhbHVlICYgTlZNRV9DQ19TSE4pID4+IDE0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9TSE5fTk9FRkNUOgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5WTUVfU0hOX05PUk1BTDoKKyAgICAgICAg
ICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRzLnNoc3QgPSBOVk1FX1NIU1RfQ09NUExFVEU7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9T
SE5fQUJSVVBUOgorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydCgwICYmICJub3QgeWV0IGltcGxlbWVudGVkIik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHNjLT5yZWdzLmNjLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQVFBOgorICAgICAgICAgICAgc2MtPnJl
Z3MuYXFhLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjYXNlIE5WTUVfQ1JfQVNRX0xPVzoKKyAgICAgICAgICAgIHNjLT5yZWdzLmFzcSA9Cisg
ICAgICAgICAgICAgICAgKHNjLT5yZWdzLmFzcSAmIDB4ZmZmZmZmZmYwMDAwMDAwMCkgfCAoMHhm
ZmZmZjAwMCAmIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIE5W
TUVfQ1JfQVNRX0hJOgorICAgICAgICAgICAgc2MtPnJlZ3MuYXNxID0gKHNjLT5yZWdzLmFzcSAm
IDB4MDAwMDAwMDBmZmZmZmZmZikgfCAodmFsdWUgPDwgMzIpOworICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGNhc2UgTlZNRV9DUl9BQ1FfTE9XOgorICAgICAgICAgICAgc2MtPnJlZ3Mu
YWNxID0KKyAgICAgICAgICAgICAgICAoc2MtPnJlZ3MuYWNxICYgMHhmZmZmZmZmZjAwMDAwMDAw
KSB8ICgweGZmZmZmMDAwICYgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNhc2UgTlZNRV9DUl9BQ1FfSEk6CisgICAgICAgICAgICBzYy0+cmVncy5hY3EgPSAoc2MtPnJl
Z3MuYWNxICYgMHgwMDAwMDAwMGZmZmZmZmZmKSB8ICh2YWx1ZSA8PCAzMik7CisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25v
d24gcmVnb2ZmIDB4JWx4IHdpdGggdmFsdWUgMHglbHgsIHNpemUgJWQgaW4gJXNcbiIsCisgICAg
ICAgICAgICAgICAgICAgIHJlZ29mZiwgdmFsdWUsIHNpemUsIF9fZnVuY19fKTsKKyAgICAgICAg
ICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX3dyaXRlKHN0
cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3Ry
dWN0IHBjaV9udm1lX3NvZnRjKiBzYyA9IHBpLT5waV9hcmc7CisKKyAgICBpZiAoYmFyaWR4ID09
IHBjaV9tc2l4X3RhYmxlX2JhcihwaSkgfHwgYmFyaWR4ID09IHBjaV9tc2l4X3BiYV9iYXIocGkp
KSB7CisgICAgICAgIERQUklOVEYoImJhcmlkeCwgJWQsIG1zaXg6IHJlZ29mZiAweCVseCwgc2l6
ZSAlZCwgdmFsdWUgJWx4XG4iLCBiYXJpZHgsCisgICAgICAgICAgICAgICAgcmVnb2ZmLCBzaXpl
LCB2YWx1ZSk7CisgICAgICAgIHBjaV9lbXVsX21zaXhfdHdyaXRlKHBpLCByZWdvZmYsIHNpemUs
IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoYmFyaWR4KSB7
CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHBjaV9udm1lX3dyaXRlX2Jhcl8wKGN0eCwg
c2MsIHJlZ29mZiwgdmFsdWUsIHNpemUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25vd24gYmFyaWR4ICVkIHdpdGggMHgl
bHggaW4gJXNcbiIsIGJhcmlkeCwgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f
KTsKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBw
Y2lfbnZtZV9yZWFkX2Jhcl8wKAorICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAg
ZW51bSBudm1lX2NvbnRyb2xsZXJfcmVnaXN0ZXJfb2Zmc2V0cyBvZmZzZXQsCisgICAgaW50IHNp
emUpCit7CisgICAgRFBSSU5URigicmVhZCAweCV4XG4iLCBvZmZzZXQpOworICAgIGFzc2VydChz
aXplID09IDQgJiYgIndvcmQgc2l6ZSBzaG91bGQgYmUgNC4iKTsKKyAgICBzd2l0Y2ggKG9mZnNl
dCkgeworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQX0xPVzoKKyAgICAgICAgICAgIHJldHVybiAo
dWludDY0X3Qpc2MtPnJlZ3MuY2FwX2xvLnJhdzsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQ
X0hJOgorICAgICAgICAgICAgcmV0dXJuICh1aW50NjRfdClzYy0+cmVncy5jYXBfaGkucmF3Owor
CisgICAgICAgIGNhc2UgTlZNRV9DUl9WUzoKKyAgICAgICAgICAgIHJldHVybiAodWludDY0X3Qp
c2MtPnJlZ3MudnM7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NDOgorICAgICAgICAgICAgcmV0
dXJuICh1aW50NjRfdClzYy0+cmVncy5jYy5yYXc7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NT
VFM6CisgICAgICAgICAgICBEUFJJTlRGKCJDU1RTIHJhdyAweCV4XG4iLCBzYy0+cmVncy5jc3Rz
LnJhdyk7CisgICAgICAgICAgICByZXR1cm4gKHVpbnQ2NF90KXNjLT5yZWdzLmNzdHMucmF3Owor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBEUFJJTlRGKCJ1bmtub3duIHJlZ29mZiB2
YWx1ZTogMHgleCwgc2l6ZSAlZCBpbiAlc1xuIiwgb2Zmc2V0LCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICBfX2Z1bmNfXyk7CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBwY2lfbnZtZV9yZWFkKHN0cnVjdCB2bWN0
eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzaXplKQoreworICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MgPSBwaS0+cGlfYXJnOwor
CisgICAgaWYgKGJhcmlkeCA9PSBwY2lfbXNpeF90YWJsZV9iYXIocGkpIHx8IGJhcmlkeCA9PSBw
Y2lfbXNpeF9wYmFfYmFyKHBpKSkgeworICAgICAgICBEUFJJTlRGKCJiYXJpZHg6ICVkLCBtc2l4
OiByZWdvZmYgMHglbHgsIHNpemUgJWRcbiIsIGJhcmlkeCwgcmVnb2ZmLAorICAgICAgICAgICAg
ICAgIHNpemUpOworICAgICAgICByZXR1cm4gcGNpX2VtdWxfbXNpeF90cmVhZChwaSwgcmVnb2Zm
LCBzaXplKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGJhcmlkeCkgeworICAgICAgICBjYXNlIDA6
CisgICAgICAgICAgICByZXR1cm4gcGNpX252bWVfcmVhZF9iYXJfMChzYywgcmVnb2ZmLCBzaXpl
KTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRFBSSU5URigidW5rbm93biBiYXIg
JWQsIDB4JWx4XG4iLCBiYXJpZHgsIHJlZ29mZik7CisgICAgICAgICAgICBhc3NlcnQoMCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBwY2lfZGV2ZW11IHBjaV9kZV9udm1l
ID0geworICAgIC5wZV9lbXUgPSAibnZtZSIsCisgICAgLnBlX2luaXQgPSBwY2lfbnZtZV9pbml0
LAorICAgIC5wZV9iYXJ3cml0ZSA9IHBjaV9udm1lX3dyaXRlLAorICAgIC5wZV9iYXJyZWFkID0g
cGNpX252bWVfcmVhZAorfTsKK1BDSV9FTVVMX1NFVChwY2lfZGVfbnZtZSk7CmRpZmYgLS1naXQg
YS91c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44IGIvdXNyLnNiaW4vYmh5dmUvYmh5dmUuOAotLS0gYS91
c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CisrKyBiL3Vzci5zYmluL2JoeXZlL2JoeXZlLjgKQEAgLTE4
MCw2ICsxODAsOCBAQAogLkl0IExpIGxwYwogTFBDIFBDSS1JU0EgYnJpZGdlIHdpdGggQ09NMSBh
bmQgQ09NMiAxNjU1MCBzZXJpYWwgcG9ydHMgYW5kIGEgYm9vdCBST00uCiBUaGUgTFBDIGJyaWRn
ZSBlbXVsYXRpb24gY2FuIG9ubHkgYmUgY29uZmlndXJlZCBvbiBidXMgMC4KKy5JdCBMaSBudm1l
CitOVk1lIGNvbnRyb2xsZXIgYXR0YWNoZWQuCiAuRWwKIC5JdCBPcCBBciBjb25mCiBUaGlzIG9w
dGlvbmFsIHBhcmFtZXRlciBkZXNjcmliZXMgdGhlIGJhY2tlbmQgZm9yIGRldmljZSBlbXVsYXRp
b25zLgpkaWZmIC0tZ2l0IGEvdXNyLnNiaW4vYmh5dmUvTWFrZWZpbGUgYi91c3Iuc2Jpbi9iaHl2
ZS9NYWtlZmlsZQotLS0gYS91c3Iuc2Jpbi9iaHl2ZS9NYWtlZmlsZQorKysgYi91c3Iuc2Jpbi9i
aHl2ZS9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBAQAogCXBjaV92aXJ0aW9fcm5kLmMJXAogCXBj
aV91YXJ0LmMJCVwKIAlwY2lfeGhjaS5jCQlcCisJcGNpX252bWUuYwkJXAogCXBtLmMJCQlcCiAJ
cG9zdC5jCQkJXAogCXBzMmtiZC5jCQlcCkBAIC02MSw3ICs2Miw3IEBACiAKIExJQkFERD0Jdm1t
YXBpIG1kIHB0aHJlYWQgegogCi1DRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3Vz
Yi9jb250cm9sbGVyCitDRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3VzYi9jb250
cm9sbGVyIC1JJHtCSFlWRV9TWVNESVJ9L3N5cy9kZXYvbnZtZS8KIAogV0FSTlM/PQkyCiAKZGlm
ZiAtLWdpdCBhL3N5cy9kZXYvbnZtZS9udm1lLmggYi9zeXMvZGV2L252bWUvbnZtZS5oCi0tLSBh
L3N5cy9kZXYvbnZtZS9udm1lLmgKKysrIGIvc3lzL2Rldi9udm1lL252bWUuaApAQCAtMTI0LDYg
KzEyNCw3IEBACiB9IF9fcGFja2VkOwogCiBlbnVtIHNobl92YWx1ZSB7CisgICAgTlZNRV9TSE5f
Tk9FRkNUICAgICA9IDB4MCwKIAlOVk1FX1NITl9OT1JNQUwJCT0gMHgxLAogCU5WTUVfU0hOX0FC
UlVQVAkJPSAweDIsCiB9OwoK


--b1_03bd2db2ea9364bf79c571da2b2f20e4--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-vgewguea2dhplsjkeozl-req>