Bug#1142942: trixie-pu: package samba/1:4.22.11+dfsg-0+deb13u1

Michael Tokarev <[email protected]> Tue, 28 Jul 2026 15:26:18 +0300
Newsgroups gmane.linux.debian.devel.release
Message-ID <178524157831.3353780.13599064576290403700.reportbug__43427.3468724982$1785241798$gmane$org@localhost>
UGFja2FnZTogcmVsZWFzZS5kZWJpYW4ub3JnClNldmVyaXR5OiBub3JtYWwKVGFnczogdHJpeGll
ClgtRGViYnVncy1DYzogc2FtYmFAcGFja2FnZXMuZGViaWFuLm9yZwpDb250cm9sOiBhZmZlY3Rz
IC0xICsgc3JjOnNhbWJhClVzZXI6IHJlbGVhc2UuZGViaWFuLm9yZ0BwYWNrYWdlcy5kZWJpYW4u
b3JnClVzZXJ0YWdzOiBwdQoKWyBSZWFzb24gXQpQcmV2aW91cyBzYW1iYSBzZWN1cml0eSBmaXhl
cyB3ZXJlIG1hZGUgdGhyb3VnaCB0cml4aWUtc2VjdXJpdHkKYXMgYSBwYXRjaHNldCBmb3IgdGhl
IGN1cnJlbnQtYXQtdGhlLXRpbWUgc2FtYmEgcmVsZWFzZSBpbgp0cml4aWUuICBXaXRoIHRoZSB1
cHN0cmVhbSBhbm5vdW5jZSwgdGhlcmUncyBhY3R1YWwgbmV3IHVwc3RyZWFtCnJlbGVhc2UgaXMg
YXZhaWxhYmxlLCB3aGljaCBpbmNvcnBvcmF0ZXMgYWxsIHRoZSBmaXhlcyBhbmQgaGFzCmFuIGFk
ZGl0aW9uYWwgZml4LgoKVG8gYXZvaWQgY29uZnVzaW9uLCBpdCBpcyBiZXN0IHRvIHN5bmNyb25p
emUgd2l0aCB0aGUgYWN0dWFsCnVwc3RyZWFtIHNvdXJjZSBhbmQgZHJvcCB0aGUgc2VjdXJpdHkg
cGF0Y2hlcy4KClsgVGVzdHMgXQpTaW5jZSB0aGlzIHJlbGVhc2UgaXMganVzdCBhIHN5bmNyb25p
emF0aW9uIHdpdGggdGhlIHVwc3RyZWFtCnRhcmJhbGwsIHByb2R1Y2luZyBiYXNpY2FsbHkgdGhl
IHNhbWUgc291cmNlIGluIHRoZSBlbmQgKG1vZHVsbwp0aGUgV0hBVFNORVcudHh0IGNoYW5nZXMs
IHZlcnNpb24gYnVtcCBhbmQgYW4gYWRkaXRpb25hbCBmaXgpLAppdCdzIGVzc2VudGFsbHkgdGhl
IHNhbWUgYXMgYmVmb3JlLCBzbyB0aGVyZSdzIG5vIG11Y2ggdGVzdGluZwpuZWNlc3NhcnkuICBJ
dCB3b3JrcyBhdCBsZWFzdCBhcyBiZXN0IGFzIHRoZSBwcmV2aW91cyByZWxlYXNlCnBsdXMgdGhl
IHNlY3JpdHkgcGF0Y2hzZXQgb24gdG9wIChhbHJlYWR5IHJ1bm5pbmcgaXQgaW4gcHJvZHVjdGlv
bgpsb2NhbGx5KS4KClsgUmlza3MgXQpUaGUgcmlzayB0aGlzIHRpbWUgaXMgcmVhbGx5IG1pbmlt
YWwuCgpbIENoZWNrbGlzdCBdCiAgW3hdICphbGwqIGNoYW5nZXMgYXJlIGRvY3VtZW50ZWQgaW4g
dGhlIGQvY2hhbmdlbG9nCiAgW3hdIEkgcmV2aWV3ZWQgYWxsIGNoYW5nZXMgYW5kIEkgYXBwcm92
ZSB0aGVtCiAgW3hdIGF0dGFjaCBkZWJkaWZmIGFnYWluc3QgdGhlIHBhY2thZ2UgaW4gKG9sZClz
dGFibGUKICBbeF0gdGhlIGlzc3VlIGlzIHZlcmlmaWVkIGFzIGZpeGVkIGluIHVuc3RhYmxlCgpb
IENoYW5nZXMgXQpUaGUgZC9jaGFuZ2Vsb2cgZGlmZmVyZW5jZSwgd2hpY2ggaXMgcmF0aGVyIHNt
YWxsLCBpcyBiZWxvdy4KVGhlIGJ1bGsgb2YgdGhlIGRlYmRpZmYgY29uc2lzdHMgb2YgdGhlIHJl
bW92YWwgb2YgdGhlIGJpZwpzZWN1cml0eSBwYXRjaHNldCBhbmQgYXBwbHlpbmcgaXQgdG8gdGhl
IG9yaWcudGFyLnh6LiAgVGhlCmFjdHVhbCBjb2RlIGRpZmZlcmVuY2UgbGVhZHMgdG8gV0hBVFNO
RVcudHh0IGNoYW5nZXMsIHRoZQp2ZXJzaW9uIGJ1bXAsIGFuZCBhIHNpbmdsZSBhZGRpdGlvbmFs
IGZpeCBpbgpsaWJjbGkvc2VjdXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRvci5jLgoKSGVyZSdzIGhv
dyB0aGUgZGlmZnN0YXQgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGV4dHJhY3RlZApz
b3VyY2UgZGlycyBsb29rcyBsaWtlOgoKIDQuMjIuMTAvLnBjLzIwMjYtanVsLXNlYy11cGRhdGUt
YnVnLTE2MDM5LXY0LTIyLWNvbWJpbmVkLnBhdGNoICAgICAgICAgICAgfG9ubHkKIDQuMjIuMTAv
ZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1idWctMTYwMzktdjQtMjItY29tYmlu
ZWQucGF0Y2ggfG9ubHkKIDQuMjIuMTEvLnBjL2FwcGxpZWQtcGF0Y2hlcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIAogNC4yMi4xMS9WRVJTSU9O
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgCiA0LjIyLjExL1dIQVRTTkVXLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKy0KIDQuMjIuMTEvZGViaWFuL2NoYW5nZWxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysKIDQuMjIuMTEvZGVi
aWFuL3BhdGNoZXMvc2VyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxIAogNC4yMi4xMS9saWJjbGkvc2VjdXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRv
ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKy0tLQogOCBmaWxlcyBjaGFu
Z2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpbIE90aGVyIEluZm8gXQpJ
J20gdXBsb2FkaW5nIHRoZSBuZXcgZGViaWFuIHJlbGVhc2UgaW50byB0aGUgYXJjaGl2ZSB0b2dl
dGhlcgp3aXRoIGZpbGluZyB0aGlzIGJ1ZyByZXBvcnQsIHRvIHNhdmUgYSByb3VuZC10cmlwIC0g
c2luY2UgdGhlCnJlc3VsdGluZyBjaGFuZ2VzIGFyZSByZWFsbHkgbWluaW1hbC4KClRoYW5rcywK
Ci9tanQKCmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL2NoYW5nZWxvZyBzYW1i
YS00LjIyLjExK2Rmc2cvZGViaWFuL2NoYW5nZWxvZwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2Rl
Ymlhbi9jaGFuZ2Vsb2cJMjAyNi0wNy0yNCAxNjoxNDoxMy4wMDAwMDAwMDAgKzAzMDAKKysrIHNh
bWJhLTQuMjIuMTErZGZzZy9kZWJpYW4vY2hhbmdlbG9nCTIwMjYtMDctMjggMTU6MDI6MDMuMDAw
MDAwMDAwICswMzAwCkBAIC0xLDMgKzEsMTYgQEAKK3NhbWJhICgyOjQuMjIuMTErZGZzZy0wK2Rl
YjEzdTEpIHRyaXhpZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIHN3aXRjaCB0byBhY3R1YWwgbmV3
IHVwc3RyZWFtIHJlbGVhc2UsIGRyb3BwaW5nIHRoZSBzZWN1cml0eQorICAgIHBhdGNoc2V0IChp
dCBpcyBpbmNsdWRlZCBpbnRvIHRoZSB1cHN0cmVhbSB0YXJiYWxsIG5vdykuCisKKyAgICBCZXNp
ZGVzIGFsbCB0aGUgc2VjdXJpdHkgZml4ZXMsIHRoZXJlJ3MgYW4gYWRkdGlvbmFsIGZpeCBpbgor
ICAgIHRoaXMgcmVsZWFzZSAod2hpY2ggd2FzIHF1ZXVlZCBiZWZvcmUgdGhlIHNlY3VyaXR5IGZp
eGVzKToKKworICAgIG8gbGlic2VjdXJpdHk6IEZpeCBzZWN1cml0eV9hY2xfZHVwKCkncyB0YWxs
b2MgaGllcmFyY2h5CisgICAgICBCdWc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA5NQorCisgLS0gTWljaGFlbCBUb2thcmV2IDxtanRAdGxzLm1zay5ydT4g
IFR1ZSwgMjggSnVsIDIwMjYgMTU6MDI6MDMgKzAzMDAKKwogc2FtYmEgKDI6NC4yMi4xMCtkZnNn
LTArZGViMTN1MikgdHJpeGllLXNlY3VyaXR5OyB1cmdlbmN5PW1lZGl1bQogCiAgICogMjAyNi1q
dWwtc2VjLXVwZGF0ZS1idWctMTYwMzktdjQtMjItY29tYmluZWQucGF0Y2g6CmRpZmYgLU5ydSBz
YW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1idWct
MTYwMzktdjQtMjItY29tYmluZWQucGF0Y2ggc2FtYmEtNC4yMi4xMStkZnNnL2RlYmlhbi9wYXRj
aGVzLzIwMjYtanVsLXNlYy11cGRhdGUtYnVnLTE2MDM5LXY0LTIyLWNvbWJpbmVkLnBhdGNoCi0t
LSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvMjAyNi1qdWwtc2VjLXVwZGF0ZS1i
dWctMTYwMzktdjQtMjItY29tYmluZWQucGF0Y2gJMjAyNi0wNy0yNCAxNjowMzowNS4wMDAwMDAw
MDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9kZWJpYW4vcGF0Y2hlcy8yMDI2LWp1bC1z
ZWMtdXBkYXRlLWJ1Zy0xNjAzOS12NC0yMi1jb21iaW5lZC5wYXRjaAkxOTcwLTAxLTAxIDAzOjAw
OjAwLjAwMDAwMDAwMCArMDMwMApAQCAtMSwxOTYwICswLDAgQEAKLURhdGU6IFdlZCwgMTUgSnVs
IDIwMjYgMTg6NDI6MDAgKzAwMDAKLUZyb206IEJqw7ZybiBKYWNrZSA8YmphY2tlQHNhbWJhLm9y
Zz4KLVN1YmplY3Q6IEp1bHkgMjAyNiBzYW1iYSBzZWN1cml0eSBmaXhlcyBmb3IgdjQuMjIKLU9y
aWdpbjogdXBzdHJlYW0sIGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjAzOQotRm9yd2FyZGVkOiBub3QtbmVlZGVkCi0KLUZyb20gZWE3NTMwMzY2ZGE1MDJlMGEx
MTY0NjdlNDU2NTMwNDYwM2ViYTViMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0
ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1EYXRlOiBGcmksIDI5IE1heSAyMDI2
IDEyOjQzOjEzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjNdIENWRS0yMDI2LTY5NDk6IG5k
cl9kbnM6IGxldCBuZHJfcHVsbF9kbnNfcmVzX3JlYygpCi0gcmVtZW1iZXIgdGhlIHN0YXJ0IG9m
ZnNldAotCi1JbiBvcmRlciB0byB2ZXJpZnkgVFNJRyBzaWduYXR1cmVzIHdlIG5lZWQgYSByZWxp
YWJsZSB3YXkgdG8KLXRydW5jYXRlIHRoZSBvcmlnaW5hbCBkbnNfbmFtZV9wYWNrZXQgYnVmZmVy
IGJlZm9yZSB0aGUKLWxhc3QgYWRkaXRpb25hbCBkbnNfcmVzX3JlYy4KLQotQlVHOiBodHRwczov
L2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODMKLQotU2lnbmVkLW9mZi1i
eTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLVJldmlld2VkLWJ5OiBEb3Vn
bGFzIEJhZ25hbGwgPGRiYWduYWxsQHNhbWJhLm9yZz4KLS0tLQotIGxpYnJwYy9pZGwvZG5zLmlk
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gbGlicnBj
L25kci9uZHJfZG5zLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMSArKysr
KysrKysrKwotIC4uLi9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9kbnNfbmFtZV9wYWNrZXQtaGV4
LnR4dCAgIHwgIDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZm
IC0tZ2l0IGEvbGlicnBjL2lkbC9kbnMuaWRsIGIvbGlicnBjL2lkbC9kbnMuaWRsCi1pbmRleCBl
Yzg2NjhhYTIxMi4uN2NiMzE2YjJiMTIgMTAwNjQ0Ci0tLS0gYS9saWJycGMvaWRsL2Rucy5pZGwK
LSsrKyBiL2xpYnJwYy9pZGwvZG5zLmlkbAotQEAgLTI1MSw2ICsyNTEsMTIgQEAgaW50ZXJmYWNl
IGRucwotIAl9IGRuc19yZGF0YTsKLSAKLSAJdHlwZWRlZiBbZmxhZyhMSUJORFJfUFJJTlRfQVJS
QVlfSEVYfE5EUl9OT0FMSUdOKSxub3B1c2gsbm9wdWxsXSBzdHJ1Y3QgewotKwkJLyoKLSsJCSAq
IFRoaXMgaXMgdGhlIHN0YXJ0IG9mZnNldCBvZiB0aGlzCi0rCQkgKiBkbnNfcmVzX3JlYyByZWxh
dGl2ZSB0byB0aGUgc3RhcnQgb2YKLSsJCSAqIGRuc19uYW1lX3BhY2tldCBidWZmZXIuCi0rCQkg
Ki8KLSsJCVtpZ25vcmVdIHVpbnQzMiBzdGFydF9uZHJfb2Zmc2V0OwotIAkJZG5zX3N0cmluZyBu
YW1lOwotIAkJZG5zX3F0eXBlICBycl90eXBlOwotIAkJZG5zX3FjbGFzcyBycl9jbGFzczsKLWRp
ZmYgLS1naXQgYS9saWJycGMvbmRyL25kcl9kbnMuYyBiL2xpYnJwYy9uZHIvbmRyX2Rucy5jCi1p
bmRleCA5Y2M1NGMxYTk3Mi4uZjFkZTQwZmQ3ZTggMTAwNjQ0Ci0tLS0gYS9saWJycGMvbmRyL25k
cl9kbnMuYwotKysrIGIvbGlicnBjL25kci9uZHJfZG5zLmMKLUBAIC0yNzYsNiArMjc2LDE3IEBA
IF9QVUJMSUNfIGVudW0gbmRyX2Vycl9jb2RlIG5kcl9wdWxsX2Ruc19yZXNfcmVjKHN0cnVjdCBu
ZHJfcHVsbCAqbmRyLAotIAluZHJfc2V0X2ZsYWdzKCZuZHItPmZsYWdzLCBMSUJORFJfUFJJTlRf
QVJSQVlfSEVYIHwKLSAJCQkJICAgTElCTkRSX0ZMQUdfTk9BTElHTik7Ci0gCWlmIChuZHJfZmxh
Z3MgJiBORFJfU0NBTEFSUykgewotKwkJLyoKLSsJCSAqIFJlbWVtYmVyIHRoZSBzdGFydCBvZmZz
ZXQgaW4gb3JkZXIKLSsJCSAqIHRvIGtub3cgaG93IHRvIHRydW5jYXRlIGJlZm9yZSB0aGUKLSsJ
CSAqIGxhc3QgZG5zX3Jlc19yZWMgaW4gb3JkZXIgdG8gZG8KLSsJCSAqIHRoZSBjb3JyZWN0IFRT
SUcgY2FsY3VsYXRpb24uCi0rCQkgKgotKwkJICogTm90ZSB0aGF0IHdlIGp1c3Qgc2V0IExJQk5E
Ul9GTEFHX05PQUxJR04KLSsJCSAqIGFib3ZlLCBzbyBuZHJfcHVsbF9hbGlnbiBpcyBhIG5vLW9w
LgotKwkJICovCi0rCQlyLT5zdGFydF9uZHJfb2Zmc2V0ID0gbmRyLT5vZmZzZXQ7Ci0rCi0gCQlO
RFJfQ0hFQ0sobmRyX3B1bGxfYWxpZ24obmRyLCA0KSk7Ci0gCQlORFJfQ0hFQ0sobmRyX3B1bGxf
ZG5zX3N0cmluZyhuZHIsIE5EUl9TQ0FMQVJTLCAmci0+bmFtZSkpOwotIAkJTkRSX0NIRUNLKG5k
cl9wdWxsX2Ruc19xdHlwZShuZHIsIE5EUl9TQ0FMQVJTLCAmci0+cnJfdHlwZSkpOwotZGlmZiAt
LWdpdCBhL3NvdXJjZTQvbGlicnBjL3Rlc3RzL2Rucy1kZWNvZGVfZG5zX25hbWVfcGFja2V0LWhl
eC50eHQgYi9zb3VyY2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1o
ZXgudHh0Ci1pbmRleCA4NGI1NWYyZDM2Mi4uY2NjMjljMDYyZjIgMTAwNjQ0Ci0tLS0gYS9zb3Vy
Y2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0Ci0rKysg
Yi9zb3VyY2U0L2xpYnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0
Ci1AQCAtMjEsNiArMjEsNyBAQCBwdWxsIHJldHVybmVkIFN1Y2Nlc3MKLSAgICAgICAgIGFuc3dl
cnM6IEFSUkFZKDApCi0gICAgICAgICBuc3JlY3M6IEFSUkFZKDEpCi0gICAgICAgICAgICAgbnNy
ZWNzOiBzdHJ1Y3QgZG5zX3Jlc19yZWMKLSsgICAgICAgICAgICAgICAgc3RhcnRfbmRyX29mZnNl
dCAgICAgICAgIDogMHgwMDAwMDAyNyAoMzkpCi0gICAgICAgICAgICAgICAgIG5hbWUgICAgICAg
ICAgICAgICAgICAgICA6ICdjbmFtZWRvdHByZWZpeDAuc2FtYmEyMDAzLmV4YW1wbGUuY29tJwot
ICAgICAgICAgICAgICAgICBycl90eXBlICAgICAgICAgICAgICAgICAgOiBETlNfUVRZUEVfQ05B
TUUgKDB4NSkKLSAgICAgICAgICAgICAgICAgcnJfY2xhc3MgICAgICAgICAgICAgICAgIDogRE5T
X1FDTEFTU19JTiAoMHgxKQotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGY3ZjRkMDk2YWVkYjIzNmNj
ZjAyNmVkM2M1OWM3NTM4ZTUzMDM4MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBT
dGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotRGF0ZTogRnJpLCAyOSBNYXkgMjAy
NiAxMzoxMjoyMCArMDIwMAotU3ViamVjdDogW1BBVENIIDAyLzIzXSBDVkUtMjAyNi02OTQ5OiBz
NDpkbnNfc2VydmVyOiBjb3JyZWN0bHkgdHJ1bmNhdGUgdGhlCi0gYnVmZmVyIGZvciBUU0lHIHZl
cmlmaWNhdGlvbgotCi1DYWxjdWxhdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBUU0lHIGFkZGl0aW9u
YWwgZG5zX3Jlc19yZWMsCi12aWEgbmRyX3B1c2hfZG5zX3Jlc19yZWMoKSBpcyBmcmFnaWxlIGFu
ZCBtYXkgZ2VuZXJhdGUKLWEgYnVmZmVyIGxhcmdlciB0aGFuIHRoZSBvcmlnaW5hbCBkbnNfbmFt
ZV9wYWNrZXQgYnVmZmVyLgotCi1UaGlzIGNvdWxkIHVuZGVyZmxvdyB0aGUgcmVzdWx0aW5nIHBh
Y2tldF9sZW4sCi10byBhIHZlcnkgbGFyZ2UgdmFsdWUgYW5kIGJ1ZmZlcl9sZW4gdG8gYSBzbWFs
bCB2YWx1ZS4KLQotUmVzdWx0aW5nIGluIGEgbWVtY3B5KCkgb2YgYSB2ZXJ5IGxhcmdlIHNpemUg
aW50bwotYSB2ZXJ5IHNtYWxsIGJ1ZmZlci4gVGhpcyBtb3N0IGxpa2VseSBhbHJlYWR5Ci1nZXRz
IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gcmVhZGluZyBhZnRlciB0aGUKLWluLT5kYXRhLgot
Ci1UaGlzIHdhcyByZXBvcnRlZCBieSBBcmp1biBCYXNuZXQgd2l0aCBTZWN1cmluIExhYnMuCi0K
LUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDgzCi0K
LVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1SZXZp
ZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkYmFnbmFsbEBzYW1iYS5vcmc+Ci0tLS0KLSBzb3Vy
Y2U0L2Ruc19zZXJ2ZXIvZG5zX2NyeXB0by5jIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysr
LS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u
cygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYyBiL3Nv
dXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLWluZGV4IGQzMGU5NzE1MDg2Li43MjIyMTNi
ZmQwYSAxMDA2NDQKLS0tLSBhL3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLSsrKyBi
L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMKLUBAIC0zNiw2ICszNiw4IEBAIHN0YXRp
YyBXRVJST1IgZG5zX2NvcHlfdHNpZyhUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSAgICBzdHJ1
Y3QgZG5zX3Jlc19yZWMgKm9sZCwKLSAJCQkgICAgc3RydWN0IGRuc19yZXNfcmVjICpuZXdfcmVj
KQotIHsKLSsJbmV3X3JlYy0+c3RhcnRfbmRyX29mZnNldCA9IDA7Ci0rCi0gCW5ld19yZWMtPm5h
bWUgPSB0YWxsb2Nfc3RyZHVwKG1lbV9jdHgsIG9sZC0+bmFtZSk7Ci0gCVdfRVJST1JfSEFWRV9O
T19NRU1PUlkobmV3X3JlYy0+bmFtZSk7Ci0gCi1AQCAtMTAxLDcgKzEwMyw3IEBAIFdFUlJPUiBk
bnNfdmVyaWZ5X3RzaWcoc3RydWN0IGRuc19zZXJ2ZXIgKmRucywKLSAJTlRTVEFUVVMgc3RhdHVz
OwotIAllbnVtIG5kcl9lcnJfY29kZSBuZHJfZXJyOwotIAl1aW50MTZfdCBpLCBhcmNvdW50ID0g
MDsKLS0JREFUQV9CTE9CIHRzaWdfYmxvYiwgZmFrZV90c2lnX2Jsb2IsIHNpZzsKLSsJREFUQV9C
TE9CIGZha2VfdHNpZ19ibG9iLCBzaWc7Ci0gCXVpbnQ4X3QgKmJ1ZmZlciA9IE5VTEw7Ci0gCXNp
emVfdCBidWZmZXJfbGVuID0gMCwgcGFja2V0X2xlbiA9IDA7Ci0gCXN0cnVjdCBkbnNfc2VydmVy
X3RrZXkgKnRrZXkgPSBOVUxMOwotQEAgLTEzMSw2ICsxMzMsMjIgQEAgV0VSUk9SIGRuc192ZXJp
ZnlfdHNpZyhzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAlzdGF0ZS0+c2lnbiA9IHRydWU7Ci0g
CURCR19ERUJVRygiR290IFRTSUdcbiIpOwotIAotKwkvKgotKwkgKiBXZSBuZWVkIHRvIGtlZXAg
dGhlIGlucHV0IHBhY2tldCBleGFjdGx5IGxpa2Ugd2UgZ290IGl0LAotKwkgKiBidXQgd2UgbmVl
ZCB0byBjdXQgb2ZmIHRoZSB0c2lnIHJlY29yZC4KLSsJICoKLSsJICogRE5TIHBhY2tldHMgY2Fu
IG5vdCBiZSBsYXJnZXIgdGhhbiBVSU5UMTZfTUFYLAotKwkgKiB0aGUgc2l6ZSBvZiB0aGUgVURQ
IHBheWxvYWQgaXMgdWludDE2X3QgYW5kCi0rCSAqIHRoZXJlJ3MgYSB1aW50MTZfdCBsZW5ndGgg
aGVhZGVyIGZvciBUQ1AuCi0rCSAqCi0rCSAqIEFuZCB0aGUgc3RhcnQgb2Zmc2V0IG9mIHRoZSBs
YXN0Ci0rCSAqIGFkZGl0aW9uYWwgcmVjb3JkIGNhbid0IGJlIGxhcmdlciB0aGFuCi0rCSAqIHRo
ZSB3aG9sZSBwYWNrZXQuCi0rCSAqLwotKwlwYWNrZXRfbGVuID0gcGFja2V0LT5hZGRpdGlvbmFs
W2ldLnN0YXJ0X25kcl9vZmZzZXQ7Ci0rCVNNQl9BU1NFUlQoaW4tPmxlbmd0aCA8PSBVSU5UMTZf
TUFYKTsKLSsJU01CX0FTU0VSVChpbi0+bGVuZ3RoID4gcGFja2V0X2xlbik7Ci0rCi0gCXN0YXRl
LT50c2lnID0gdGFsbG9jX3plcm8oc3RhdGUtPm1lbV9jdHgsIHN0cnVjdCBkbnNfcmVzX3JlYyk7
Ci0gCWlmIChzdGF0ZS0+dHNpZyA9PSBOVUxMKSB7Ci0gCQlyZXR1cm4gV0VSUl9OT1RfRU5PVUdI
X01FTU9SWTsKLUBAIC0yMDUsMTQgKzIyMyw2IEBAIFdFUlJPUiBkbnNfdmVyaWZ5X3RzaWcoc3Ry
dWN0IGRuc19zZXJ2ZXIgKmRucywKLSAJY2hlY2tfcmVjLT5vdGhlcl9zaXplID0gMDsKLSAJY2hl
Y2tfcmVjLT5vdGhlcl9kYXRhID0gTlVMTDsKLSAKLS0JbmRyX2VyciA9IG5kcl9wdXNoX3N0cnVj
dF9ibG9iKCZ0c2lnX2Jsb2IsIG1lbV9jdHgsIHN0YXRlLT50c2lnLAotLQkJKG5kcl9wdXNoX2Zs
YWdzX2ZuX3QpbmRyX3B1c2hfZG5zX3Jlc19yZWMpOwotLQlpZiAoIU5EUl9FUlJfQ09ERV9JU19T
VUNDRVNTKG5kcl9lcnIpKSB7Ci0tCQlERUJVRygxLCAoIkZhaWxlZCB0byBwdXNoIHBhY2tldDog
JXMhXG4iLAotLQkJCSAgbmRyX2VycnN0cihuZHJfZXJyKSkpOwotLQkJcmV0dXJuIEROU19FUlIo
U0VSVkVSX0ZBSUxVUkUpOwotLQl9Ci0tCi0gCW5kcl9lcnIgPSBuZHJfcHVzaF9zdHJ1Y3RfYmxv
YigmZmFrZV90c2lnX2Jsb2IsIG1lbV9jdHgsIGNoZWNrX3JlYywKLSAJCShuZHJfcHVzaF9mbGFn
c19mbl90KW5kcl9wdXNoX2Ruc19mYWtlX3RzaWdfcmVjKTsKLSAJaWYgKCFORFJfRVJSX0NPREVf
SVNfU1VDQ0VTUyhuZHJfZXJyKSkgewotQEAgLTIyMSw5ICsyMzEsMTkgQEAgV0VSUk9SIGRuc192
ZXJpZnlfdHNpZyhzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJcmV0dXJuIEROU19FUlIoU0VS
VkVSX0ZBSUxVUkUpOwotIAl9Ci0gCi0tCS8qIHdlIG5lZWQgdG8gd29yayBzb21lIG1hZ2ljIGhl
cmUuIHdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0Ci0tCSAqIGV4YWN0bHkgbGlrZSB3
ZSBnb3QgaXQsIGJ1dCB3ZSBuZWVkIHRvIGN1dCBvZmYgdGhlIHRzaWcgcmVjb3JkICovCi0tCXBh
Y2tldF9sZW4gPSBpbi0+bGVuZ3RoIC0gdHNpZ19ibG9iLmxlbmd0aDsKLSsJLyoKLSsJICogV2Ug
YWxyZWFkeSBhc3NlcnRlZCBwYWNrZXRfbGVuIDwgVUlOVDE2X01BWAotKwkgKiBhYm92ZSwgYW5k
IHN0cnVjdCBuZHJfcHVzaCBoYXMgYWxsb2Nfc2l6ZSBhbmQKLSsJICogb2Zmc2V0IGFzIHVpbnQz
Ml90LCBzbyBpdCdzIHJlYWxseSB1bmxpa2VseQotKwkgKiB0byBvdmVyZmxvdyBidWZmZXJfbGVu
LiBGb3IgU0laRV9NQVggPT0gVUlOVDMyX01BWCwKLSsJICogdGhlIGZvbGxvd2luZyBjaGVjayBt
aWdodCBiZSBpbXBvcnRhbnQsIGJ1dAotKwkgKiBqdXN0IGxldHMgZG8gaXQgYWx3YXlzLgotKwkg
Ki8KLSsJaWYgKGZha2VfdHNpZ19ibG9iLmxlbmd0aCA+IChTSVpFX01BWCAtIFVJTlQxNl9NQVgp
KSB7Ci0rCQlEQkdfV0FSTklORygiZmFrZV90c2lnX2Jsb2IubGVuZ3RoPSV6dSB0b28gbGFyZ2Uh
XG4iLAotKwkJCSAgICBmYWtlX3RzaWdfYmxvYi5sZW5ndGgpOwotKwkJcmV0dXJuIEROU19FUlIo
U0VSVkVSX0ZBSUxVUkUpOwotKwl9Ci0gCWJ1ZmZlcl9sZW4gPSBwYWNrZXRfbGVuICsgZmFrZV90
c2lnX2Jsb2IubGVuZ3RoOwotIAlidWZmZXIgPSB0YWxsb2NfemVyb19hcnJheShtZW1fY3R4LCB1
aW50OF90LCBidWZmZXJfbGVuKTsKLSAJaWYgKGJ1ZmZlciA9PSBOVUxMKSB7Ci0tLSAKLTIuNDMu
MAotCi0KLUZyb20gZjI1MmExN2JjOGFlNzU2ODk0M2IwZjRjZjUyNmQxZjg1NTVkNjQyOSBNb24g
U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRk
bi5jb20+Ci1EYXRlOiBXZWQsIDI3IE1heSAyMDI2IDE4OjU5OjI0ICsxMDAwCi1TdWJqZWN0OiBb
UEFUQ0ggMDMvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjogQXZvaWQgb3V0IG9mIGJv
dW5kcyBkYXRhIGFjY2VzcwotCi1Qcm90b2NvbCBmaWVsZCBsZW5ndGhzIG5lZWQgdG8gYmUgdmFs
aWRhdGVkIHRvIGF2b2lkIGF0dGVtcHRzIHRvCi1hY2Nlc3MgbWVtb3J5IGJleW9uZCB0aGUgZW5k
IG9mIHRoZSBwYWNrZXQgYnVmZmVyLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRy
aXN0YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5r
ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0
YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8
bWV0emVAc2FtYmEub3JnPgotLS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMgICAgfCAzOCAr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGN0ZGIvc2VydmVyL2N0ZGJf
Y2xpZW50LmMgIHwgIDkgKysrKysrKysrCi0gY3RkYi9zZXJ2ZXIvY3RkYl9jb250cm9sLmMgfCAx
OSArKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCsp
Ci0KLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9jdGRiX2NhbGwuYyBiL2N0ZGIvc2VydmVyL2N0
ZGJfY2FsbC5jCi1pbmRleCBhNTFhOTJkM2U0NS4uY2ZlY2E3ODA2MWMgMTAwNjQ0Ci0tLS0gYS9j
dGRiL3NlcnZlci9jdGRiX2NhbGwuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMKLUBA
IC01ODMsNiArNTgzLDkgQEAgc3RhdGljIGludCBkbWFzdGVyX2RlZmVyX2FkZChzdHJ1Y3QgY3Rk
Yl9kYl9jb250ZXh0ICpjdGRiX2RiLAotIHZvaWQgY3RkYl9yZXF1ZXN0X2RtYXN0ZXIoc3RydWN0
IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJ
c3RydWN0IGN0ZGJfcmVxX2RtYXN0ZXJfb2xkICpjID0gKHN0cnVjdCBjdGRiX3JlcV9kbWFzdGVy
X29sZCAqKWhkcjsKLSsJc2l6ZV90IHJlcV9kbWFzdGVyX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihz
dHJ1Y3QgY3RkYl9yZXFfZG1hc3Rlcl9vbGQsCi0rCQkJCQkJIGRhdGEpOwotKwlzaXplX3QgYnVm
X2xlbiA9IGhkci0+bGVuZ3RoOwotIAlUREJfREFUQSBrZXksIGRhdGEsIGRhdGEyOwotIAlzdHJ1
Y3QgY3RkYl9sdGRiX2hlYWRlciBoZWFkZXI7Ci0gCXN0cnVjdCBjdGRiX2RiX2NvbnRleHQgKmN0
ZGJfZGI7Ci1AQCAtNTkwLDYgKzU5MywxMyBAQCB2b2lkIGN0ZGJfcmVxdWVzdF9kbWFzdGVyKHN0
cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcgotIAlz
aXplX3QgbGVuOwotIAlpbnQgcmV0OwotIAotKwlpZiAoYnVmX2xlbiA8IHJlcV9kbWFzdGVyX2hl
YWRlcl9sZW4gfHwKLSsJICAgIGMtPmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFfZG1hc3Rlcl9oZWFk
ZXJfbGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcV9kbWFzdGVyX2hlYWRl
cl9sZW4gLSBjLT5rZXlsZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7
Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJa2V5LmRwdHIgPSBjLT5kYXRhOwotIAlrZXkuZHNpemUg
PSBjLT5rZXlsZW47Ci0gCWRhdGEuZHB0ciA9IGMtPmRhdGEgKyBjLT5rZXlsZW47Ci1AQCAtOTE3
LDYgKzkyNyw4IEBAIHNvcnRfa2V5czoKLSB2b2lkIGN0ZGJfcmVxdWVzdF9jYWxsKHN0cnVjdCBj
dGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKLSB7Ci0gCXN0
cnVjdCBjdGRiX3JlcV9jYWxsX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXFfY2FsbF9vbGQgKilo
ZHI7Ci0rCXNpemVfdCByZXFfY2FsbF9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJf
cmVxX2NhbGxfb2xkLCBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJ
VERCX0RBVEEgZGF0YTsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKnI7Ci0gCWludCBy
ZXQsIGxlbjsKLUBAIC05MjUsNiArOTM3LDEzIEBAIHZvaWQgY3RkYl9yZXF1ZXN0X2NhbGwoc3Ry
dWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIAlz
dHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpjdGRiX2RiOwotIAlpbnQgdG1wX2NvdW50LCBidWNrZXQ7
Ci0gCi0rCWlmIChidWZfbGVuIDwgcmVxX2NhbGxfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+a2V5
bGVuID4gYnVmX2xlbiAtIHJlcV9jYWxsX2hlYWRlcl9sZW4gIHx8Ci0rCSAgICBjLT5jYWxsZGF0
YWxlbiA+IGJ1Zl9sZW4gLSByZXFfY2FsbF9oZWFkZXJfbGVuIC0gYy0+a2V5bGVuKSB7Ci0rCQlE
QkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuOwotKwl9Ci0rCi0gCWlm
IChjdGRiLT5tZXRob2RzID09IE5VTEwpIHsKLSAJCURFQlVHKERFQlVHX0lORk8sKF9fbG9jYXRp
b25fXyAiIEZhaWxlZCBjdGRiX3JlcXVlc3RfY2FsbC4gVHJhbnNwb3J0IGlzIERPV05cbiIpKTsK
LSAJCXJldHVybjsKLUBAIC0xMTk5LDggKzEyMTgsMTcgQEAgdm9pZCBjdGRiX3JlcXVlc3RfY2Fs
bChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIp
Ci0gdm9pZCBjdGRiX3JlcGx5X2NhbGwoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0
IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQg
KmMgPSAoc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKiloZHI7Ci0rCXNpemVfdCByZXBseV9j
YWxsX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXBseV9jYWxsX29sZCwKLSsJ
CQkJCQlkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJc3RydWN0IGN0
ZGJfY2FsbF9zdGF0ZSAqc3RhdGU7Ci0gCi0rCWlmIChidWZfbGVuIDwgcmVwbHlfY2FsbF9oZWFk
ZXJfbGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcGx5X2NhbGxfaGVhZGVy
X2xlbikgewotKwkJREJHX1dBUk5JTkcoIkludmFsaWQgcGFja2V0XG4iKTsKLSsJCXJldHVybjsK
LSsJfQotKwotIAlzdGF0ZSA9IHJlcWlkX2ZpbmQoY3RkYi0+aWRyLCBoZHItPnJlcWlkLCBzdHJ1
Y3QgY3RkYl9jYWxsX3N0YXRlKTsKLSAJaWYgKHN0YXRlID09IE5VTEwpIHsKLSAJCURFQlVHKERF
QlVHX0VSUiwgKF9fbG9jYXRpb25fXyAiIHJlcWlkICV1IG5vdCBmb3VuZFxuIiwgaGRyLT5yZXFp
ZCkpOwotQEAgLTEyOTYsMTIgKzEzMjQsMjIgQEAgZmluaXNoZWRfcm86Ci0gdm9pZCBjdGRiX3Jl
cGx5X2RtYXN0ZXIoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgc3RydWN0IGN0ZGJfcmVxX2hl
YWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQgKmMgPSAoc3Ry
dWN0IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQgKiloZHI7Ci0rCXNpemVfdCByZXBseV9kbWFzdGVy
X2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXBseV9kbWFzdGVyX29sZCwKLSsJ
CQkJCQkgICBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKLSAJc3RydWN0
IGN0ZGJfZGJfY29udGV4dCAqY3RkYl9kYjsKLSAJVERCX0RBVEEga2V5LCBkYXRhOwotIAl1aW50
MzJfdCByZWNvcmRfZmxhZ3MgPSAwOwotIAlzaXplX3QgbGVuOwotIAlpbnQgcmV0OwotIAotKwlp
ZiAoYnVmX2xlbiA8IHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+a2V5bGVu
ID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8fAotKwkgICAgYy0+ZGF0YWxl
biA+IGJ1Zl9sZW4gLSByZXBseV9kbWFzdGVyX2hlYWRlcl9sZW4gLSBjLT5rZXlsZW4pIHsKLSsJ
CURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSAJ
Y3RkYl9kYiA9IGZpbmRfY3RkYl9kYihjdGRiLCBjLT5kYl9pZCk7Ci0gCWlmIChjdGRiX2RiID09
IE5VTEwpIHsKLSAJCURFQlVHKERFQlVHX0VSUiwoIlVua25vd24gZGJfaWQgMHgleCBpbiBjdGRi
X3JlcGx5X2RtYXN0ZXJcbiIsIGMtPmRiX2lkKSk7Ci1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIv
Y3RkYl9jbGllbnQuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLWluZGV4IGM5ZWRiMWQ1
NTRjLi44NGU4ZTNkMmRhNiAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMK
LSsrKyBiL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLUBAIC0xOTMsOCArMTkzLDE3IEBAIHZv
aWQgY3RkYl9yZXF1ZXN0X21lc3NhZ2Uoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwKLSAJCQkg
IHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKLSB7Ci0gCXN0cnVjdCBjdGRiX3JlcV9tZXNz
YWdlX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXFfbWVzc2FnZV9vbGQgKiloZHI7Ci0rCXNpemVf
dCByZXFfbWVzc2FnZV9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfcmVxX21lc3Nh
Z2Vfb2xkLAotKwkJCQkJCSBkYXRhKTsKLSsJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsK
LSAJVERCX0RBVEEgZGF0YTsKLSAKLSsJaWYgKGJ1Zl9sZW4gPCByZXFfbWVzc2FnZV9oZWFkZXJf
bGVuIHx8Ci0rCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcV9tZXNzYWdlX2hlYWRlcl9s
ZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm47Ci0r
CX0KLSsKLSAJZGF0YS5kc2l6ZSA9IGMtPmRhdGFsZW47Ci0gCWRhdGEuZHB0ciA9IHRhbGxvY19t
ZW1kdXAoYywgJmMtPmRhdGFbMF0sIGMtPmRhdGFsZW4pOwotIAlpZiAoZGF0YS5kcHRyID09IE5V
TEwpIHsKLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYyBiL2N0ZGIvc2Vy
dmVyL2N0ZGJfY29udHJvbC5jCi1pbmRleCBhNTE3OTVmMzQwYS4uY2ZkODAzMzBjNDEgMTAwNjQ0
Ci0tLS0gYS9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3Rk
Yl9jb250cm9sLmMKLUBAIC05MzMsMTEgKzkzMywyMCBAQCB2b2lkIGN0ZGJfcmVxdWVzdF9jb250
cm9sX3JlcGx5KHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9jb250
cgotIHZvaWQgY3RkYl9yZXF1ZXN0X2NvbnRyb2woc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwg
c3RydWN0IGN0ZGJfcmVxX2hlYWRlciAqaGRyKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVxX2NvbnRy
b2xfb2xkICpjID0gKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCAqKWhkcjsKLSsJc2l6ZV90
IHJlcV9jb250cm9sX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZXFfY29udHJv
bF9vbGQsCi0rCQkJCQkJIGRhdGEpOwotKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwot
IAlUREJfREFUQSBkYXRhLCAqb3V0ZGF0YTsKLSAJaW50MzJfdCBzdGF0dXM7Ci0gCWJvb2wgYXN5
bmNfcmVwbHkgPSBmYWxzZTsKLSAJY29uc3QgY2hhciAqZXJyb3Jtc2cgPSBOVUxMOwotIAotKwlp
ZiAoYnVmX2xlbiA8IHJlcV9jb250cm9sX2hlYWRlcl9sZW4gfHwKLSsJICAgIGMtPmRhdGFsZW4g
PiBidWZfbGVuIC0gcmVxX2NvbnRyb2xfaGVhZGVyX2xlbikgewotKwkJREJHX1dBUk5JTkcoIklu
dmFsaWQgcGFja2V0XG4iKTsKLSsJCXJldHVybjsKLSsJfQotKwotIAlkYXRhLmRwdHIgPSAmYy0+
ZGF0YVswXTsKLSAJZGF0YS5kc2l6ZSA9IGMtPmRhdGFsZW47Ci0gCi1AQCAtOTU3LDEwICs5NjYs
MjAgQEAgdm9pZCBjdGRiX3JlcXVlc3RfY29udHJvbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRi
LCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIKLSB2b2lkIGN0ZGJfcmVwbHlfY29udHJvbChz
dHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCi0g
ewotIAlzdHJ1Y3QgY3RkYl9yZXBseV9jb250cm9sX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXBs
eV9jb250cm9sX29sZCAqKWhkcjsKLSsJc2l6ZV90IHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiA9
IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcGx5X2NvbnRyb2xfb2xkLAotKwkJCQkJCSAgIGRhdGEp
OwotKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwotIAlUREJfREFUQSBkYXRhOwotIAlz
dHJ1Y3QgY3RkYl9jb250cm9sX3N0YXRlICpzdGF0ZTsKLSAJY29uc3QgY2hhciAqZXJyb3Jtc2cg
PSBOVUxMOwotIAotKwlpZiAoYnVmX2xlbiA8IHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiB8fAot
KwkgICAgYy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwK
LSsJICAgIGMtPmVycm9ybGVuID4gYnVmX2xlbiAtIHJlcGx5X2NvbnRyb2xfaGVhZGVyX2xlbiAt
IGMtPmRhdGFsZW4pIHsKLSsJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7Ci0rCQly
ZXR1cm47Ci0rCX0KLSsKLSAJc3RhdGUgPSByZXFpZF9maW5kKGN0ZGItPmlkciwgaGRyLT5yZXFp
ZCwgc3RydWN0IGN0ZGJfY29udHJvbF9zdGF0ZSk7Ci0gCWlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0g
CQlERUJVRyhERUJVR19FUlIsKCJwbm4gJXUgSW52YWxpZCByZXFpZCAldSBpbiBjdGRiX3JlcGx5
X2NvbnRyb2xcbiIsCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gMzhhNjJjZjVmNzI0OTViOTlmMTBi
NzQzMzljNmY4OTU1MDQ0NjlhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRp
biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE0
OjM4OjAyICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRi
LXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb24KLQotVGhlIHB1bGwgbG9vcCBh
bHJlYWR5IGF2b2lkcyBvdXQgb2YgYm91bmRzIGFjY2Vzc2VzIGJleW9uZCB0aGUgZW5kIG9mCi10
aGUgYnVmZmVyLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgYXZvaWQgYSBEb1MgbWVtb3J5IGFsbG9j
YXRpb24gZHVlIHRvCi1hbiB1bnJlYXNvbmFibHkgbGFyZ2UgYXJyYXkgc2l6ZS4KLQotQ2hlY2sg
dGhhdCB0aGUgbnVtYmVyIG9mIHNwZWNpZmllZCBhcnJheSBlbGVtZW50cyBjYW4gYmUgcHVsbGVk
IGZyb20KLWJ1ZmZlciwgd2hpY2ggcHV0cyBhIHJlYXNvbmFibGUgdXBwZXIgYm91bmQgb24gdGhl
IHN1YnNlcXVlbnQgbWVtb3J5Ci1hbGxvY2F0aW9uLgotCi1Vc2UgYW4gaW5pdGlhbGlzZWQgZHVt
bXkgdmFyaWFibGUgdG8gYXZvaWQgc3RhdGljIGFuYWx5c2VycwotY29tcGxhaW5pbmcgYWJvdXQg
dW5pbml0aWFsaXNlZCB2YXJpYWJsZXMgYmVpbmcgcGFzc2VkLiAgVmFyaWFibGUgaQotY291bGQg
YmUgcmV1c2VkIGJ1dCB0aGF0IG1pZ2h0IGJlIGNvbmZ1c2luZywgc28gbGVhdmUgYW55IG9wdGlt
aXNhdGlvbgotdG8gdGhlIGNvbXBpbGVyLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogTWFydGluIFNjaHdlbmtl
IDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJlcG9ydGVkLWJ5OiBBbHNvIEFuZHJldyBUcmlkZ2VsbCAo
aXNzdWUgMjIpCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4u
Y29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0
eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4K
LS0tLQotIGN0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYyB8IDYgKysrKysrCi0gMSBmaWxl
IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9wcm90b2NvbC9w
cm90b2NvbF90eXBlcy5jIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi1pbmRleCAw
ZWIxOTIzMjA3ZS4uODZlMWJjMzk1NGUgMTAwNjQ0Ci0tLS0gYS9jdGRiL3Byb3RvY29sL3Byb3Rv
Y29sX3R5cGVzLmMKLSsrKyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotQEAgLTky
NSw2ICs5MjUsNyBAQCBpbnQgY3RkYl92bm5fbWFwX3B1bGwodWludDhfdCAqYnVmLCBzaXplX3Qg
YnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAlzdHJ1Y3QgY3RkYl92bm5fbWFwICp2YWw7
Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJdWludDMyX3QgaTsKLSsJdWludDMyX3QgZHVt
bXkgPSAwOwotIAlpbnQgcmV0OwotIAotIAl2YWwgPSB0YWxsb2MobWVtX2N0eCwgc3RydWN0IGN0
ZGJfdm5uX21hcCk7Ci1AQCAtOTUwLDYgKzk1MSwxMSBAQCBpbnQgY3RkYl92bm5fbWFwX3B1bGwo
dWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJZ290
byBkb25lOwotIAl9Ci0gCi0rCWlmICgodWludDY0X3QpdmFsLT5zaXplICogY3RkYl91aW50MzJf
bGVuKCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dTSVpFOwotKwkJ
Z290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+bWFwID0gdGFsbG9jX2FycmF5KHZhbCwgdWludDMy
X3QsIHZhbC0+c2l6ZSk7Ci0gCWlmICh2YWwtPm1hcCA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9N
RU07Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMDBkZGE4YTMxYTA0NWMyNDI5ODBjMDk1ZDAyZjkw
MmQyZWUzYWNjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5r
ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE0OjI1OjAwICsx
MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjog
QXZvaWQgb3V0LW9mLWJvdW5kcyBkYXRhIGFjY2VzcwotCi1EbyBub3QgYWxsb3cgdGhlIFZOTiBt
YXAncyBzaXplIHRvIGV4dGVuZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLVRoaXMgaXMg
Y2hlY2tlZCBieSBzd2l0Y2hpbmcgdG8gY3RkYl92bm5fbWFwX3B1bGwoKSwgd2hpY2ggYWxzbwot
c2ltcGxpZmllcyB0aGUgY29kZS4KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxt
c2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0
YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6
ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYyB8IDMyICsrKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv
bnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIvY3RkYl9y
ZWNvdmVyLmMgYi9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwotaW5kZXggMThkYzI1MGY1Y2Uu
LjUwNmIwOTg5Nzk5IDEwMDY0NAotLS0tIGEvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLSsr
KyBiL2N0ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5jCi1AQCAtMzYsNiArMzYsOCBAQAotICNpbmNs
dWRlICJjdGRiX3ByaXZhdGUuaCIKLSAjaW5jbHVkZSAiY3RkYl9jbGllbnQuaCIKLSAKLSsjaW5j
bHVkZSAicHJvdG9jb2wvcHJvdG9jb2xfcHJpdmF0ZS5oIgotKwotICNpbmNsdWRlICJjb21tb24v
c3lzdGVtLmgiCi0gI2luY2x1ZGUgImNvbW1vbi9jb21tb24uaCIKLSAjaW5jbHVkZSAiY29tbW9u
L2xvZ2dpbmcuaCIKLUBAIC02NywyNCArNjksMzIgQEAgY3RkYl9jb250cm9sX2dldHZubm1hcChz
dHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCB1aW50MzJfdCBvcGNvZGUsIFREQl9EQVRBIGluZGEK
LSBpbnQKLSBjdGRiX2NvbnRyb2xfc2V0dm5ubWFwKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIs
IHVpbnQzMl90IG9wY29kZSwgVERCX0RBVEEgaW5kYXRhLCBUREJfREFUQSAqb3V0ZGF0YSkKLSB7
Ci0tCXN0cnVjdCBjdGRiX3Zubl9tYXBfd2lyZSAqbWFwID0gKHN0cnVjdCBjdGRiX3Zubl9tYXBf
d2lyZSAqKWluZGF0YS5kcHRyOwotKwlzdHJ1Y3QgY3RkYl92bm5fbWFwICpuZXcgPSBOVUxMOwot
KwlzaXplX3QgbnB1bGwgPSAwOwotKwlpbnQgcmV0ID0gMDsKLSAKLSAJaWYgKGN0ZGItPnJlY292
ZXJ5X21vZGUgIT0gQ1REQl9SRUNPVkVSWV9BQ1RJVkUpIHsKLSAJCURFQlVHKERFQlVHX0VSUiwg
KCJBdHRlbXB0IHRvIHNldCB2bm5tYXAgd2hlbiBub3QgaW4gcmVjb3ZlcnlcbiIpKTsKLSAJCXJl
dHVybiAtMTsKLSAJfQotIAotKwlyZXQgPSBjdGRiX3Zubl9tYXBfcHVsbChpbmRhdGEuZHB0ciwg
aW5kYXRhLmRzaXplLCBjdGRiLCAmbmV3LCAmbnB1bGwpOwotKwlpZiAocmV0ICE9IDApIHsKLSsJ
CXN3aXRjaCAocmV0KSB7Ci0rCQljYXNlIEVOT01FTToKLSsJCQlEQkdfRVJSKCJNZW1vcnkgYWxs
b2NhdGlvbiBlcnJvclxuIik7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIEVNU0dTSVpFOgotKwkJCURC
R19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKLSsJCQlicmVhazsKLSsJCWRlZmF1bHQ6Ci0rCQkJ
REJHX0VSUigiVW5leHBlY3RlZCBlcnJvciAoJWQpXG4iLCByZXQpOwotKwkJfQotKwkJcmV0dXJu
IC0xOwotKwl9Ci0rCi0gCXRhbGxvY19mcmVlKGN0ZGItPnZubl9tYXApOwotLQotLQljdGRiLT52
bm5fbWFwID0gdGFsbG9jKGN0ZGIsIHN0cnVjdCBjdGRiX3Zubl9tYXApOwotLQlDVERCX05PX01F
TU9SWShjdGRiLCBjdGRiLT52bm5fbWFwKTsKLS0KLS0JY3RkYi0+dm5uX21hcC0+Z2VuZXJhdGlv
biA9IG1hcC0+Z2VuZXJhdGlvbjsKLS0JY3RkYi0+dm5uX21hcC0+c2l6ZSAgICAgICA9IG1hcC0+
c2l6ZTsKLS0JY3RkYi0+dm5uX21hcC0+bWFwID0gdGFsbG9jX2FycmF5KGN0ZGItPnZubl9tYXAs
IHVpbnQzMl90LCBtYXAtPnNpemUpOwotLQlDVERCX05PX01FTU9SWShjdGRiLCBjdGRiLT52bm5f
bWFwLT5tYXApOwotLQotLQltZW1jcHkoY3RkYi0+dm5uX21hcC0+bWFwLCBtYXAtPm1hcCwgc2l6
ZW9mKHVpbnQzMl90KSptYXAtPnNpemUpOwotKwljdGRiLT52bm5fbWFwID0gbmV3OwotIAotIAly
ZXR1cm4gMDsKLSB9Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gODE3ZjkyNmVlOTNmNWE1ZmM1MzZl
Njc2NTUxZWI5ZmMzZWRiODBlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRp
biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE1
OjA0OjMxICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRi
LWRhZW1vbjogQXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRhIGFjY2VzcwotCi1JZiBhIE5VTCB0ZXJt
aW5hdG9yIGRvZXNuJ3QgYXBwZWFyIGluIHRoZSBidWZmZXIgdGhlbiB0aGUgZGF0YWJhc2UKLW5h
bWUgaXMgbm90IGEgdmFsaWQgc3RyaW5nLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vu
a2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlz
dGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIg
PG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIuYyB8
IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdp
dCBhL2N0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfbHRk
Yl9zZXJ2ZXIuYwotaW5kZXggOGQwMzA2MmI5N2EuLjI0MzNiMzliODM2IDEwMDY0NAotLS0tIGEv
Y3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCi0rKysgYi9jdGRiL3NlcnZlci9jdGRiX2x0
ZGJfc2VydmVyLmMKLUBAIC0xMTA5LDggKzExMDksMTUgQEAgaW50MzJfdCBjdGRiX2NvbnRyb2xf
ZGJfYXR0YWNoKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsCi0gCXN0cnVjdCBjdGRiX2RiX2Nv
bnRleHQgKmRiOwotIAlzdHJ1Y3QgY3RkYl9ub2RlICpub2RlID0gY3RkYi0+bm9kZXNbY3RkYi0+
cG5uXTsKLSAJc3RydWN0IGN0ZGJfY2xpZW50ICpjbGllbnQgPSBOVUxMOwotKwljaGFyICp0ID0g
TlVMTDsKLSAJdWludDMyX3Qgb3Bjb2RlOwotIAotKwl0ID0gbWVtY2hyKGluZGF0YS5kcHRyLCAn
XDAnLCBpbmRhdGEuZHNpemUpOwotKwlpZiAodCA9PSBOVUxMKSB7Ci0rCQlEQkdfRVJSKCJJbnZh
bGlkIHBhY2tldFxuIik7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSAJaWYgKGN0ZGItPnR1bmFi
bGUuYWxsb3dfY2xpZW50X2RiX2F0dGFjaCA9PSAwKSB7Ci0gCQlERUJVRyhERUJVR19FUlIsICgi
REIgQXR0YWNoIHRvIGRhdGFiYXNlICVzIGRlbmllZCBieSB0dW5hYmxlICIKLSAJCQkJICAiQWxs
b3dDbGllbnREQkFjY2VzcyA9PSAwXG4iLCBkYl9uYW1lKSk7Ci0tLSAKLTIuNDMuMAotCi0KLUZy
b20gYWViZjg4Y2MzZjczNTc0MTEyYTQxYjRhZWFhNjc0NWJmNzM1ODE2YSBNb24gU2VwIDE3IDAw
OjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1E
YXRlOiBTYXQsIDMwIE1heSAyMDI2IDE3OjM1OjIzICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcv
MjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjogQXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRh
IGFjY2VzcwotCi1UaGUgY291bnQgY2FuJ3QgZXhjZWVkIHRoZSByZWNkYXRhIGJ1ZmZlciBzaXpl
LgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4
NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgot
UmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+
Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQot
IGN0ZGIvc2VydmVyL2N0ZGJfdXBkYXRlX3JlY29yZC5jIHwgMTAgKysrKysrKysrKwotIDEgZmls
ZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jdGRiL3NlcnZlci9j
dGRiX3VwZGF0ZV9yZWNvcmQuYyBiL2N0ZGIvc2VydmVyL2N0ZGJfdXBkYXRlX3JlY29yZC5jCi1p
bmRleCA0MDU0OTljODFlMi4uMTU0YjE0Mjc0MTAgMTAwNjQ0Ci0tLS0gYS9jdGRiL3NlcnZlci9j
dGRiX3VwZGF0ZV9yZWNvcmQuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl91cGRhdGVfcmVjb3Jk
LmMKLUBAIC0zMTgsNiArMzE4LDE2IEBAIGludDMyX3QgY3RkYl9jb250cm9sX3VwZGF0ZV9yZWNv
cmQoc3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwKLSAJc3RydWN0IGNoaWxkd3JpdGVfaGFuZGxl
ICpoYW5kbGU7Ci0gCXN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqbSA9IChzdHJ1Y3QgY3Rk
Yl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7Ci0gCi0rCWlmIChyZWNkYXRhLmRzaXpl
IDwgb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJH
X0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmIChtLT5j
b3VudCA+Ci0rCSAgICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hh
bGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJ
cmV0dXJuIC0xOwotKwl9Ci0rCi0gCWlmIChjdGRiLT5yZWNvdmVyeV9tb2RlICE9IENUREJfUkVD
T1ZFUllfTk9STUFMKSB7Ci0gCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29u
dHJvbF91cGRhdGVfcmVjb3JkIHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7Ci0gCQlyZXR1cm4g
LTE7Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gNDI0YzQyMjI2ZmEyZGVhYzU2ZjVkZjhmZDliMTE0
YjZhYjBiMTQ0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5r
ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDI2IDE3OjQ1OjU2ICsx
MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWRhZW1vbjog
QXZvaWQgb3V0IG9mIGJvdW5kcyBkYXRhIGFjY2VzcwotCi1UaGUgY291bnQgY2FuJ3QgZXhjZWVk
IHRoZSBpbmRhdGEgYnVmZmVyIHNpemUuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5r
ZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0
YW5AdGFsZW5jZXNlY3VyaXR5LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8
bWV0emVAc2FtYmEub3JnPgotLS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMgfCA2ICsr
KysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2N0
ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5jIGIvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLWlu
ZGV4IDUwNmIwOTg5Nzk5Li5iNzRkY2E1OGM4ZCAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVyL2N0
ZGJfcmVjb3Zlci5jCi0rKysgYi9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwotQEAgLTEwNjIs
NiArMTA2MiwxMiBAQCBpbnQzMl90IGN0ZGJfY29udHJvbF90cnlfZGVsZXRlX3JlY29yZHMoc3Ry
dWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgVERCX0RBVEEgaW5kYQotIAkJcmV0dXJuIC0xOwotIAl9
Ci0gCi0rCWlmIChyZXBseS0+Y291bnQgPgotKwkgICAgaW5kYXRhLmRzaXplIC0gb2Zmc2V0b2Yo
c3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxp
ZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCi0gCWN0ZGJfZGIgPSBmaW5kX2N0
ZGJfZGIoY3RkYiwgcmVwbHktPmRiX2lkKTsKLSAJaWYgKCFjdGRiX2RiKSB7Ci0gCQlERUJVRyhE
RUJVR19FUlIsKF9fbG9jYXRpb25fXyAiIFVua25vd24gZGIgMHglMDh4XG4iLCByZXBseS0+ZGJf
aWQpKTsKLS0tIAotMi40My4wCi0KLQotRnJvbSBlZDNlNzIzNTg3OTIwZGMzYzk1NWYwOThjMGUx
YTAwZjMxNjgzNWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdl
bmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLURhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTU6MTE6Mzkg
KzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZGFlbW9u
OiBBdm9pZCBvdXQgb2YgYm91bmRzIGRhdGEgYWNjZXNzCi0KLVRoZSBmaXJzdCBjaGVjayBpcyBj
bGVhcmx5IG5lZWRlZCBiZWNhdXNlIG0tPmRiX2lkIGlzIHJlZmVyZW5jZWQuICBUaGUKLXNlY29u
ZCBjaGVjayBpcyBoYW5kbGVkIGJ5IGEgc2ltaWxhciB1cGRhdGUgdG8KLWN0ZGJfY29udHJvbF91
cGRhdGVfcmVjb3JkKCksIGJ1dCByZXBlYXQgaXQgaW4gY2FzZSBzb21ldGhpbmcgZWxzZQotY2hh
bmdlcy4KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwODUKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNv
bT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHku
Y29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0t
LS0KLSBjdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQuYyB8IDEwICsrKysrKysrKysKLSAxIGZp
bGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9zZXJ2ZXIv
Y3RkYl9wZXJzaXN0ZW50LmMgYi9jdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQuYwotaW5kZXgg
MjY3MTc0NDFkMTcuLjFiMGQxNDExNTUzIDEwMDY0NAotLS0tIGEvY3RkYi9zZXJ2ZXIvY3RkYl9w
ZXJzaXN0ZW50LmMKLSsrKyBiL2N0ZGIvc2VydmVyL2N0ZGJfcGVyc2lzdGVudC5jCi1AQCAtMTgy
LDYgKzE4MiwxNiBAQCBpbnQzMl90IGN0ZGJfY29udHJvbF90cmFuczNfY29tbWl0KHN0cnVjdCBj
dGRiX2NvbnRleHQgKmN0ZGIsCi0gCXN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqbSA9IChz
dHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7Ci0gCXN0cnVjdCBjdGRi
X2RiX2NvbnRleHQgKmN0ZGJfZGI7Ci0gCi0rCWlmIChyZWNkYXRhLmRzaXplIDwgb2Zmc2V0b2Yo
c3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBkYXRhKSkgewotKwkJREJHX0VSUigiSW52YWxp
ZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWlmIChtLT5jb3VudCA+Ci0rCSAg
ICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVmZmVyLCBk
YXRhKSkgewotKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOwotKwkJcmV0dXJuIC0xOwot
Kwl9Ci0rCi0gCWlmIChjdGRiLT5yZWNvdmVyeV9tb2RlICE9IENUREJfUkVDT1ZFUllfTk9STUFM
KSB7Ci0gCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29udHJvbF90cmFuczNf
Y29tbWl0IHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7Ci0gCQlyZXR1cm4gLTE7Ci0tLSAKLTIu
NDMuMAotCi0KLUZyb20gNmE2Y2ZhMjUxNDhhMzlkMDI0ZjRlODY4MDI5ZGI0MjBhMzZhMmI2MSBN
b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtl
QGRkbi5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIwMjYgMTA6NDE6MjUgKzEwMDAKLVN1YmplY3Q6
IFtQQVRDSCAxMC8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZGFlbW9uOiBBdm9pZCBvdXQgb2Yg
Ym91bmRzIGRhdGEgYWNjZXNzCi0KLUluc3RlYWQgb2YgY2hlY2tpbmcgb25seSB0aGF0IHRoZXJl
IGlzIGVub3VnaCBkYXRhIGZvciB0aGUgbGVuZ3RoCi1maWVsZCwgY2hlY2sgdGhlcmUgaXMgZW5v
dWdoIGRhdGEgZm9yIHRoZSBlbnRpcmUgaGVhZGVyIHBhcnQgb2YgdGhlCi1zdHJ1Y3QuICBBZnRl
ciBjcm9zcy1jaGVja2luZyBvdmVyYWxsIGxlbmd0aHMsIGVuc3VyZSB0aGVyZSBpcyBlbm91Z2gK
LWRhdGEgZm9yIHRoZSBrZXkvZGF0YSBpbiB0aGUgZGF0YSBlbGVtZW50LgotCi1XaGlsZSBoZXJl
LCBtb2Rlcm5pc2UgdGhlIERFQlVHLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2FtYmEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1SZXBvcnRlZC1ieTogQW5kcmV3IFRyaWRnZWxsIChp
c3N1ZSAxMykKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5j
b20+Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0YW5AdGFsZW5jZXNlY3VyaXR5
LmNvbT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgot
LS0tCi0gY3RkYi9zZXJ2ZXIvY3RkYl90cmF2ZXJzZS5jIHwgOCArKysrKystLQotIDEgZmlsZSBj
aGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9j
dGRiL3NlcnZlci9jdGRiX3RyYXZlcnNlLmMgYi9jdGRiL3NlcnZlci9jdGRiX3RyYXZlcnNlLmMK
LWluZGV4IDQ4NjVkY2M5NGYwLi4wOTRmODI0YmY5ZCAxMDA2NDQKLS0tLSBhL2N0ZGIvc2VydmVy
L2N0ZGJfdHJhdmVyc2UuYwotKysrIGIvY3RkYi9zZXJ2ZXIvY3RkYl90cmF2ZXJzZS5jCi1AQCAt
NTYxLDEzICs1NjEsMTcgQEAgaW50MzJfdCBjdGRiX2NvbnRyb2xfdHJhdmVyc2VfYWxsKHN0cnVj
dCBjdGRiX2NvbnRleHQgKmN0ZGIsIFREQl9EQVRBIGRhdGEsIFREQl8KLSBpbnQzMl90IGN0ZGJf
Y29udHJvbF90cmF2ZXJzZV9kYXRhKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIFREQl9EQVRB
IGRhdGEsIFREQl9EQVRBICpvdXRkYXRhKQotIHsKLSAJc3RydWN0IGN0ZGJfcmVjX2RhdGFfb2xk
ICpkID0gKHN0cnVjdCBjdGRiX3JlY19kYXRhX29sZCAqKWRhdGEuZHB0cjsKLSsJc2l6ZV90IHJl
Y19kYXRhX2hlYWRlcl9sZW4gPSBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9yZWNfZGF0YV9vbGQsIGRh
dGEpOwotIAlzdHJ1Y3QgY3RkYl90cmF2ZXJzZV9hbGxfaGFuZGxlICpzdGF0ZTsKLSAJVERCX0RB
VEEga2V5OwotIAljdGRiX3RyYXZlcnNlX2ZuX3QgY2FsbGJhY2s7Ci0gCXZvaWQgKnByaXZhdGVf
ZGF0YTsKLSAKLS0JaWYgKGRhdGEuZHNpemUgPCBzaXplb2YodWludDMyX3QpIHx8IGRhdGEuZHNp
emUgIT0gZC0+bGVuZ3RoKSB7Ci0tCQlERUJVRyhERUJVR19FUlIsKCJCYWQgcmVjb3JkIHNpemUg
aW4gY3RkYl9jb250cm9sX3RyYXZlcnNlX2RhdGFcbiIpKTsKLSsJaWYgKGRhdGEuZHNpemUgPCBy
ZWNfZGF0YV9oZWFkZXJfbGVuIHx8Ci0rCSAgICBkYXRhLmRzaXplICE9IGQtPmxlbmd0aCB8fAot
KwkgICAgZC0+a2V5bGVuID4gZC0+bGVuZ3RoIC0gcmVjX2RhdGFfaGVhZGVyX2xlbiB8fAotKwkg
ICAgZC0+ZGF0YWxlbiA+IGQtPmxlbmd0aCAtIHJlY19kYXRhX2hlYWRlcl9sZW4gLSBkLT5rZXls
ZW4pIHsKLSsJCURCR19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKLSAJCXJldHVybiAtMTsKLSAJ
fQotIAotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGJiZjdmMWM2NGMzMWY1MGE0ZmNlYWZlZTQwMzE1
YzJhNjYwNWUzMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gU2Nod2Vu
a2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotRGF0ZTogVHVlLCA5IEp1biAyMDI2IDIxOjQ4OjAyICsx
MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLXByb3RvY29s
OiBBdm9pZCBvZmYtYnktb25lIGVycm9yIGZvciBieXRlcyBwdWxsZWQKLQotQXMgcGVyIHRoZSBj
b21tZW50LCBpZiB0aGVyZSBpcyBubyBOVUwgYnl0ZSBpbiB0aGUgYnVmZmVyIHRoZW4gZG9uJ3QK
LWNvdW50IG9uZSBpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHB1bGxlZC4KLQotTm90ZSB0aGF0IHRo
aXMgaXMgdW5saWtlbHkgdG8gYmUgYSBzZWN1cml0eSBpc3N1ZSBiZWNhdXNlIGl0IHdvdWxkCi10
YWtlIGEgcHJvdG9jb2wgYnVnIGVsc2V3aGVyZSB0byBvdmVycnVuIHRoZSBidWZmZXIuICBIb3dl
dmVyLCBpbmNsdWRlCi10aGlzIGZpeCBoZXJlIGZvciBwb3N0ZXJpdHkuCi0KLUJVRzogaHR0cHM6
Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVJlcG9ydGVkLWJ5
OiBBbmRyZXcgVHJpZGdlbGwgKGlzc3VlIDE2KQotU2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdl
bmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJp
c3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVy
IDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMg
fCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBk
ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfYmFzaWMu
YyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfYmFzaWMuYwotaW5kZXggNDJmMjA3NzkwZDAuLjlj
YzUyZGVmNjQ0IDEwMDY0NAotLS0tIGEvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jCi0r
KysgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMKLUBAIC0yNDcsNyArMjQ3LDggQEAg
dm9pZCBjdGRiX3N0cmluZ19wdXNoKGNvbnN0IGNoYXIgKippbiwgdWludDhfdCAqYnVmLCBzaXpl
X3QgKm5wdXNoKQotIGludCBjdGRiX3N0cmluZ19wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1
ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCSAgICAgY29uc3QgY2hhciAqKm91dCwgc2l6
ZV90ICpucHVsbCkKLSB7Ci0tCWNvbnN0IGNoYXIgKnN0cjsKLSsJY29uc3QgY2hhciAqc3RyID0g
TlVMTDsKLSsJc2l6ZV90IGxlbiA9IDA7Ci0gCi0gCWlmIChidWZsZW4gPiBVSU5UMzJfTUFYKSB7
Ci0gCQlyZXR1cm4gRU1TR1NJWkU7Ci1AQCAtMjY1LDcgKzI2NiwxNCBAQCBpbnQgY3RkYl9zdHJp
bmdfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgs
Ci0gCX0KLSAKLSAJKm91dCA9IHN0cjsKLS0JKm5wdWxsID0gY3RkYl9zdHJpbmdfbGVuKCZzdHIp
OwotKwkvKgotKwkgKiBBdm9pZCBjbGFpbWluZyB0byBoYXZlIGNvbnN1bWVkIG1vcmUgdGhhbiBi
dWZsZW4uCi0rCSAqIGN0ZGJfc3RyaW5nX2xlbigpIHJldHVybnMgYnVmbGVuICsgMSBpZiB0aGVy
ZSBpcyBubwotKwkgKiBOVUwtdGVybWluYXRvciB3aXRoaW4gYnVmbGVuLCBzbyBubyBOVUwgd2Fz
IGFjdHVhbGx5Ci0rCSAqIGNvbnN1bWVkIChzbyBubyArMSBuZWVkZWQpLgotKwkgKi8KLSsJbGVu
ID0gY3RkYl9zdHJpbmdfbGVuKCZzdHIpOwotKwkqbnB1bGwgPSBNSU4oYnVmbGVuLCBsZW4pOwot
IAlyZXR1cm4gMDsKLSB9Ci0gCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gNjIzY2JhZGQ0NjA0M2Jh
NjM1MmQ2MWExZmE5ZDhjMTdkZWIyYjE3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206
IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBUdWUsIDkgSnVuIDIw
MjYgMjE6NTQ6MjAgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yM10gQ1ZFLTIwMjYtNTgyMjQ6
IGN0ZGItcHJvdG9jb2w6IEFsd2F5cyBwdWxsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCi0gYnl0
ZXMKLQotVGhlIHN0cmluZyBzaG91bGQgbm90IGNvbnRhaW4gYSBwcmVtYXR1cmUgTlVMIHRlcm1p
bmF0b3IsIHdoaWNoIHdvdWxkCi1jYXVzZSBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCBudW1iZXIg
b2YgYnl0ZXMgdG8gYmUgcHVsbGVkLiAgSWYgaXQKLWRvZXMsIGNvbnN1bWUgdGhlIHNwZWNpZmll
ZCBudW1iZXIgb2YgYnl0ZXMgYW55d2F5LiAgVGhlIGFsdGVybmF0aXZlCi1kb2Vzbid0IG1ha2Ug
c2Vuc2UuCi0KLU5vdGUgdGhhdCB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGEgc2VjdXJpdHkgaXNz
dWUsIHdoZXJlIHRyYWlsaW5nIGRhdGEKLWluIHRoZSBzdHJpbmcgZmllbGQgY2F1c2VzIHRoZSBi
dWZmZXIgdG8gYmUgb3ZlcnJ1bi4gIFRoYXQgd291bGQKLXJlcXVpcmUgYW4gYWRkaXRpb25hbCBw
cm90b2NvbCBidWcuICBIb3dldmVyLCBpbmNsdWRlIHRoaXMgZml4IGhlcmUKLWZvciBwb3N0ZXJp
dHkuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+
Ci1SZXZpZXdlZC1ieTogVHJpc3RhbiBNYWRhbmkgPHRyaXN0YW5AdGFsZW5jZXNlY3VyaXR5LmNv
bT4KLVJldmlld2VkLWJ5OiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotLS0t
Ci0gY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdl
ZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jdGRiL3By
b3RvY29sL3Byb3RvY29sX2Jhc2ljLmMgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMK
LWluZGV4IDljYzUyZGVmNjQ0Li43NTBlYThmOWZlNyAxMDA2NDQKLS0tLSBhL2N0ZGIvcHJvdG9j
b2wvcHJvdG9jb2xfYmFzaWMuYwotKysrIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5j
Ci1AQCAtMzE5LDcgKzMxOSw4IEBAIGludCBjdGRiX3N0cmluZ25fcHVsbCh1aW50OF90ICpidWYs
IHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCWlmIChyZXQgIT0gMCkgewot
IAkJcmV0dXJuIHJldDsKLSAJfQotLQlvZmZzZXQgKz0gbnA7Ci0rCS8qIEFsd2F5cyBjb25zdW1l
IHRoZSBzcGVjaWZpZWQgbnVtYmVyIGJ5dGVzICovCi0rCW9mZnNldCArPSB1MzI7Ci0gCi0gCSpu
cHVsbCA9IG9mZnNldDsKLSAJcmV0dXJuIDA7Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMGZhNmJi
NGYzZWRmYmU4MTllZDE1NTU1YzJjNjRmZDY2ZjMwNzdhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw
MDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBXZWQs
IDEwIEp1biAyMDI2IDEyOjE1OjE3ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMjNdIENWRS0y
MDI2LTU4MjI0OiBjdGRiLXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb25zCi0K
LVRoZSBwdWxsIGxvb3AgYWxyZWFkeSBhdm9pZHMgb3V0IG9mIGJvdW5kcyBhY2Nlc3NlcyBiZXlv
bmQgdGhlIGVuZCBvZgotdGhlIGJ1ZmZlci4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGF2b2lkIGEg
RG9TIG1lbW9yeSBhbGxvY2F0aW9uIGR1ZSB0bwotYW4gdW5yZWFzb25hYmx5IGxhcmdlIGFycmF5
IHNpemUuCi0KLUNoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgYXJyYXkgZWxlbWVu
dHMgY2FuIGJlIHB1bGxlZCBmcm9tCi1idWZmZXIsIHdoaWNoIHB1dHMgYSByZWFzb25hYmxlIHVw
cGVyIGJvdW5kIG9uIHRoZSBzdWJzZXF1ZW50IG1lbW9yeQotYWxsb2NhdGlvbi4KLQotVXNlIGFu
IGluaXRpYWxpc2VkIGR1bW15IHZhcmlhYmxlIHRvIGF2b2lkIHN0YXRpYyBhbmFseXNlcnMKLWNv
bXBsYWluaW5nIGFib3V0IHVuaW5pdGlhbGlzZWQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZC4KLQot
QlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQot
UmVwb3J0ZWQtYnk6IEFuZHJldyBUcmlkZ2VsbCAoaXNzdWUgMjIpCi1TaWduZWQtb2ZmLWJ5OiBN
YXJ0aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4g
TWFkYW5pIDx0cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFu
IE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvcHJvdG9jb2wvcHJvdG9j
b2xfdHlwZXMuYyB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTkg
aW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBl
cy5jIGIvY3RkYi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi1pbmRleCA4NmUxYmMzOTU0ZS4u
MmVkZjgyMjhkMTggMTAwNjQ0Ci0tLS0gYS9jdGRiL3Byb3RvY29sL3Byb3RvY29sX3R5cGVzLmMK
LSsrKyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotQEAgLTgzOCw2ICs4MzgsNyBA
QCBpbnQgY3RkYl9zdGF0aXN0aWNzX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZs
ZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkJICAgICAgc2l6ZV90ICpucHVsbCkKLSB7Ci0g
CXN0cnVjdCBjdGRiX3N0YXRpc3RpY3NfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9zdGF0aXN0
aWNzIGR1bW15ID0ge307Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJaW50IHJldCwgaTsK
LSAKLUBAIC04NjMsNiArODY0LDExIEBAIGludCBjdGRiX3N0YXRpc3RpY3NfbGlzdF9wdWxsKHVp
bnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8g
ZG9uZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9zdGF0aXN0aWNz
X2xlbigmZHVtbXkpID4gYnVmbGVuIC0gb2Zmc2V0KSB7Ci0rCQlyZXQgPSBFTVNHU0laRTsKLSsJ
CWdvdG8gZmFpbDsKLSsJfQotKwotIAl2YWwtPnN0YXRzID0gdGFsbG9jX2FycmF5KHZhbCwgc3Ry
dWN0IGN0ZGJfc3RhdGlzdGljcywgdmFsLT5udW0pOwotIAlpZiAodmFsLT5zdGF0cyA9PSBOVUxM
KSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci1AQCAtMTA4OCw2ICsxMDk0LDcgQEAgaW50IGN0ZGJfZGJp
ZF9tYXBfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9j
dHgsCi0gCQkgICAgICAgc3RydWN0IGN0ZGJfZGJpZF9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwp
Ci0gewotIAlzdHJ1Y3QgY3RkYl9kYmlkX21hcCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9kYmlkIGR1
bW15ID0ge307Ci0gCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKLSAJdWludDMyX3QgaTsKLSAJaW50
IHJldDsKLUBAIC0xMTA4LDYgKzExMTUsMTEgQEAgaW50IGN0ZGJfZGJpZF9tYXBfcHVsbCh1aW50
OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQlnb3RvIGRv
bmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJfZGJpZF9sZW4oJmR1
bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJcmV0ID0gRU1TR1NJWkU7Ci0rCQlnb3RvIGZh
aWw7Ci0rCX0KLSsKLSAJdmFsLT5kYnMgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9k
YmlkLCB2YWwtPm51bSk7Ci0gCWlmICh2YWwtPmRicyA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9N
RU07Ci1AQCAtMzkwNSw2ICszOTE3LDcgQEAgaW50IGN0ZGJfbm9kZV9tYXBfcHVsbCh1aW50OF90
ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkgICAgICAgc3Ry
dWN0IGN0ZGJfbm9kZV9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlzdHJ1Y3QgY3Rk
Yl9ub2RlX21hcCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9ub2RlX2FuZF9mbGFncyBkdW1teSA9IHt9
OwotIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7Ci0gCXVpbnQzMl90IGk7Ci0gCWludCByZXQ7Ci1A
QCAtMzkyNSw2ICszOTM4LDEyIEBAIGludCBjdGRiX25vZGVfbWFwX3B1bGwodWludDhfdCAqYnVm
LCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJZ290byBkb25lOwotIAl9
Ci0gCi0rCWlmICgodWludDY0X3QpdmFsLT5udW0gKiBjdGRiX25vZGVfYW5kX2ZsYWdzX2xlbigm
ZHVtbXkpID4KLSsJICAgIGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJcmV0ID0gRU1TR1NJWkU7Ci0r
CQlnb3RvIGZhaWw7Ci0rCX0KLSsKLSAJdmFsLT5ub2RlID0gdGFsbG9jX2FycmF5KHZhbCwgc3Ry
dWN0IGN0ZGJfbm9kZV9hbmRfZmxhZ3MsIHZhbC0+bnVtKTsKLSAJaWYgKHZhbC0+bm9kZSA9PSBO
VUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci0tLSAKLTIuNDMuMAotCi0KLUZyb20gMGU1MGI4NjAw
ZDQ5MWZkNDAwMWMyMGFlY2NjZjNhYmUxZWExOTlhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK
LUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1EYXRlOiBXZWQsIDEw
IEp1biAyMDI2IDEyOjM3OjAyICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjNdIENWRS0yMDI2
LTU4MjI0OiBjdGRiLXByb3RvY29sOiBBdm9pZCBEb1MgbWVtb3J5IGFsbG9jYXRpb25zCi0KLVRo
ZSBwdWxsIGxvb3AgYWxyZWFkeSBhdm9pZHMgb3V0IG9mIGJvdW5kcyBhY2Nlc3NlcyBiZXlvbmQg
dGhlIGVuZCBvZgotdGhlIGJ1ZmZlci4gIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGF2b2lkIGEgRG9T
IG1lbW9yeSBhbGxvY2F0aW9uIGR1ZSB0bwotYW4gdW5yZWFzb25hYmx5IGxhcmdlIGFycmF5IHNp
emUuCi0KLUNoZWNrIHRoYXQgdGhlIG51bWJlciBvZiBzcGVjaWZpZWQgYXJyYXkgZWxlbWVudHMg
Y2FuIGJlIHB1bGxlZCBmcm9tCi1idWZmZXIsIHdoaWNoIHB1dHMgYSByZWFzb25hYmxlIHVwcGVy
IGJvdW5kIG9uIHRoZSBzdWJzZXF1ZW50IG1lbW9yeQotYWxsb2NhdGlvbi4KLQotVXNlIGFuIGlu
aXRpYWxpc2VkIGR1bW15IHZhcmlhYmxlIHRvIGF2b2lkIHN0YXRpYyBhbmFseXNlcnMKLWNvbXBs
YWluaW5nIGFib3V0IHVuaW5pdGlhbGlzZWQgdmFyaWFibGVzIGJlaW5nIHBhc3NlZC4KLQotQlVH
OiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQotU2ln
bmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmlld2Vk
LWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2aWV3
ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRiL3By
b3RvY29sL3Byb3RvY29sX3R5cGVzLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBh
L2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYyBiL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xf
dHlwZXMuYwotaW5kZXggMmVkZjgyMjhkMTguLjhjYmRhZWU1MTA2IDEwMDY0NAotLS0tIGEvY3Rk
Yi9wcm90b2NvbC9wcm90b2NvbF90eXBlcy5jCi0rKysgYi9jdGRiL3Byb3RvY29sL3Byb3RvY29s
X3R5cGVzLmMKLUBAIC0yMzgwLDYgKzIzODAsNyBAQCBpbnQgY3RkYl9jb25uZWN0aW9uX2xpc3Rf
cHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1lbV9jdHgsCi0g
CQkJICAgICAgc3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICoqb3V0LCBzaXplX3QgKm5wdWxs
KQotIHsKLSAJc3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICp2YWw7Ci0rCXN0cnVjdCBjdGRi
X2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50
MzJfdCBpOwotIAlpbnQgcmV0OwotQEAgLTI0MDAsNiArMjQwMSwxMSBAQCBpbnQgY3RkYl9jb25u
ZWN0aW9uX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFgg
Km1lbV9jdHgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51
bSAqIGN0ZGJfY29ubmVjdGlvbl9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewotKwkJ
cmV0ID0gRU1TR1NJWkU7Ci0rCQlnb3RvIGZhaWw7Ci0rCX0KLSsKLSAJdmFsLT5jb25uID0gdGFs
bG9jX2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfY29ubmVjdGlvbiwgdmFsLT5udW0pOwotIAlpZiAo
dmFsLT5jb25uID09IE5VTEwpIHsKLSAJCXJldCA9IEVOT01FTTsKLUBAIC0zNDE3LDYgKzM0MjMs
NyBAQCBpbnQgY3RkYl90aWNrbGVfbGlzdF9wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1Zmxl
biwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCQkgICBzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAq
Km91dCwgc2l6ZV90ICpucHVsbCkKLSB7Ci0gCXN0cnVjdCBjdGRiX3RpY2tsZV9saXN0ICp2YWw7
Ci0rCXN0cnVjdCBjdGRiX2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9
IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0OwotQEAgLTM0NDQsNiArMzQ1MSwxMSBA
QCBpbnQgY3RkYl90aWNrbGVfbGlzdF9wdWxsKHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbiwg
VEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9uZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2
NF90KXZhbC0+bnVtICogY3RkYl9jb25uZWN0aW9uX2xlbigmZHVtbXkpID4gYnVmbGVuIC0gb2Zm
c2V0KSB7Ci0rCQlyZXQgPSBFTVNHU0laRTsKLSsJCWdvdG8gZmFpbDsKLSsJfQotKwotIAl2YWwt
PmNvbm4gPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uLCB2YWwtPm51
bSk7Ci0gCWlmICh2YWwtPmNvbm4gPT0gTlVMTCkgewotIAkJcmV0ID0gRU5PTUVNOwotQEAgLTM3
NjIsNiArMzc3NCw3IEBAIGludCBjdGRiX3B1YmxpY19pcF9saXN0X3B1bGwodWludDhfdCAqYnVm
LCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSAgICAgc3RydWN0IGN0
ZGJfcHVibGljX2lwX2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlzdHJ1Y3QgY3Rk
Yl9wdWJsaWNfaXBfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9wdWJsaWNfaXAgZHVtbXkgPSB7
fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0Owot
QEAgLTM3ODIsNiArMzc5NSwxMSBAQCBpbnQgY3RkYl9wdWJsaWNfaXBfbGlzdF9wdWxsKHVpbnQ4
X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9u
ZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9wdWJsaWNfaXBfbGVu
KCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dTSVpFOwotKwkJZ290
byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+aXAgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3Rk
Yl9wdWJsaWNfaXAsIHZhbC0+bnVtKTsKLSAJaWYgKHZhbC0+aXAgPT0gTlVMTCkgewotIAkJcmV0
ID0gRU5PTUVNOwotQEAgLTQxMjQsNiArNDE0Miw3IEBAIGludCBjdGRiX3NjcmlwdF9saXN0X3B1
bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAotIAkJ
CSAgc3RydWN0IGN0ZGJfc2NyaXB0X2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCi0gewotIAlz
dHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqdmFsOwotKwlzdHJ1Y3QgY3RkYl9zY3JpcHQgZHVtbXkg
PSB7fTsKLSAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwotIAl1aW50MzJfdCBpOwotIAlpbnQgcmV0
OwotQEAgLTQxNTcsNiArNDE3NiwxMiBAQCBpbnQgY3RkYl9zY3JpcHRfbGlzdF9wdWxsKHVpbnQ4
X3QgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSAJCWdvdG8gZG9u
ZTsKLSAJfQotIAotKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtX3NjcmlwdHMgKiBjdGRiX3Njcmlw
dF9sZW4oJmR1bW15KQotKwkgICAgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVNU0dT
SVpFOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+c2NyaXB0ID0gdGFsbG9jX2FycmF5
KHZhbCwgc3RydWN0IGN0ZGJfc2NyaXB0LCB2YWwtPm51bV9zY3JpcHRzKTsKLSAJaWYgKHZhbC0+
c2NyaXB0ID09IE5VTEwpIHsKLSAJCXJldCA9IEVOT01FTTsKLUBAIC00NDAwLDYgKzQ0MjUsNyBA
QCBpbnQgY3RkYl9pZmFjZV9saXN0X3B1bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBU
QUxMT0NfQ1RYICptZW1fY3R4LAotIAkJCSBzdHJ1Y3QgY3RkYl9pZmFjZV9saXN0ICoqb3V0LCBz
aXplX3QgKm5wdWxsKQotIHsKLSAJc3RydWN0IGN0ZGJfaWZhY2VfbGlzdCAqdmFsOwotKwlzdHJ1
Y3QgY3RkYl9pZmFjZSBkdW1teSA9IHt9OwotIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7Ci0gCXVp
bnQzMl90IGk7Ci0gCWludCByZXQ7Ci1AQCAtNDQyMCw2ICs0NDQ2LDExIEBAIGludCBjdGRiX2lm
YWNlX2xpc3RfcHVsbCh1aW50OF90ICpidWYsIHNpemVfdCBidWZsZW4sIFRBTExPQ19DVFggKm1l
bV9jdHgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLSsJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAq
IGN0ZGJfaWZhY2VfbGVuKCZkdW1teSkgPiBidWZsZW4gLSBvZmZzZXQpIHsKLSsJCXJldCA9IEVN
U0dTSVpFOwotKwkJZ290byBmYWlsOwotKwl9Ci0rCi0gCXZhbC0+aWZhY2UgPSB0YWxsb2NfYXJy
YXkodmFsLCBzdHJ1Y3QgY3RkYl9pZmFjZSwgdmFsLT5udW0pOwotIAlpZiAodmFsLT5pZmFjZSA9
PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci1AQCAtNTM0Nyw2ICs1Mzc4LDEwIEBAIGludCBj
dGRiX2dfbG9ja19saXN0X3B1bGwodWludDhfdCAqYnVmLCBzaXplX3QgYnVmbGVuLCBUQUxMT0Nf
Q1RYICptZW1fY3R4LAotIAotIAl2YWwtPm51bSA9IGJ1ZmxlbiAvIGN0ZGJfZ19sb2NrX2xlbigm
bG9jayk7Ci0gCi0rCS8qCi0rCSAqIE5vIGFycmF5IGNvdW50IHByZS1jaGVjayBuZWVkZWQgYmVj
YXVzZSB2YWwtPm51bSBpcwotKwkgKiBjYWxjdWxhdGVkIGZyb20gYnVmbGVuCi0rCSAqLwotIAl2
YWwtPmxvY2sgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9nX2xvY2ssIHZhbC0+bnVt
KTsKLSAJaWYgKHZhbC0+bG9jayA9PSBOVUxMKSB7Ci0gCQlyZXQgPSBFTk9NRU07Ci0tLSAKLTIu
NDMuMAotCi0KLUZyb20gM2YwYzcxNjE5ODliMmFkYmJiMDBjZTI2ODM4MDk3ZTI2ZWQ2YzA5YSBN
b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBTY2h3ZW5rZSA8bXNjaHdlbmtl
QGRkbi5jb20+Ci1EYXRlOiBUaHUsIDExIEp1biAyMDI2IDExOjI1OjUyICsxMDAwCi1TdWJqZWN0
OiBbUEFUQ0ggMTUvMjNdIENWRS0yMDI2LTU4MjI0OiBjdGRiLWNvbW1vbjogU2VjdXJlIHNvY2tf
ZGFlbW9uIFVuaXggZG9tYWluIHNvY2tldHMKLQotQ3VycmVudGx5LCB0aGUgbW9kZSBvZiB0aGUg
c29ja2V0IGRlcGVuZHMgb24gdGhlIGNyZWF0aW5nIHByb2Nlc3MncwotdW1hc2suICBUaGlzIG1p
Z2h0IGFsbG93IHVud2FudGVkIGFjY2Vzcy4KLQotSXQgbWlnaHQgYmUgcHJlZmVyYWJsZSB0byBk
byB0aGlzIGp1c3QgZm9yIHRoZSBldmVudGQgc29ja2V0LgotSG93ZXZlciwgdGhlcmUgaXMgbm8g
dXNlZnVsIHBsYWNlIHRvIGhvb2sgdGhpcyBpbiBvdXRzaWRlIG9mCi1zb2NrX2RhZW1vbi4KLQot
QlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwODUKLQot
U2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNvbT4KLVJldmll
d2VkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8dHJpc3RhbkB0YWxlbmNlc2VjdXJpdHkuY29tPgotUmV2
aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBjdGRi
L2NvbW1vbi9zb2NrX2RhZW1vbi5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAx
IGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3RkYi9jb21t
b24vc29ja19kYWVtb24uYyBiL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9uLmMKLWluZGV4IGUzMWEz
NjQ0NWI1Li5lZDBjY2ZkNzBlZiAxMDA2NDQKLS0tLSBhL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9u
LmMKLSsrKyBiL2N0ZGIvY29tbW9uL3NvY2tfZGFlbW9uLmMKLUBAIC0yMDQsNiArMjA0LDggQEAg
c3RhdGljIGludCBzb2NrX2NsaWVudF9jb250ZXh0X2Rlc3RydWN0b3IoCi0gc3RhdGljIGludCBz
b2NrZXRfc2V0dXAoY29uc3QgY2hhciAqc29ja3BhdGgsIGJvb2wgcmVtb3ZlX2JlZm9yZV91c2Up
Ci0gewotIAlzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkcjsKLSsJY29uc3QgY2hhciAqdDsKLSsJYm9v
bCB0ZXN0X21vZGVfZW5hYmxlZCA9IGZhbHNlOwotIAlzaXplX3QgbGVuOwotIAlpbnQgcmV0LCBm
ZDsKLSAKLUBAIC0yNDAsNiArMjQyLDMwIEBAIHN0YXRpYyBpbnQgc29ja2V0X3NldHVwKGNvbnN0
IGNoYXIgKnNvY2twYXRoLCBib29sIHJlbW92ZV9iZWZvcmVfdXNlKQotIAkJcmV0dXJuIC0xOwot
IAl9Ci0gCi0rCXQgPSBnZXRlbnYoIkNUREJfVEVTVF9NT0RFIik7Ci0rCWlmICh0ICE9IE5VTEwp
IHsKLSsJCXRlc3RfbW9kZV9lbmFibGVkID0gdHJ1ZTsKLSsJfQotKwotKwlpZiAoIXRlc3RfbW9k
ZV9lbmFibGVkKSB7Ci0rCQkvKiBCZWhhdmlvdXIgb2YgZmNob3duKDIpIGlzIHVuZGVmaW5lZCBv
biBzb2NrZXRzICovCi0rCQlyZXQgPSBjaG93bihzb2NrcGF0aCwgZ2V0ZXVpZCgpLCBnZXRlZ2lk
KCkpOwotKwkJaWYgKHJldCAhPSAwKSB7Ci0rCQkJRF9FUlIoIlVuYWJsZSB0byBzZWN1cmUgKGNo
b3duKSBzb2NrZXQgJyVzJ1xuIiwKLSsJCQkgICAgICBzb2NrcGF0aCk7Ci0rCQkJY2xvc2UoZmQp
OwotKwkJCXJldHVybiAtMTsKLSsJCX0KLSsJfQotKwotKwkvKiBCZWhhdmlvdXIgb2YgZmNobW9k
KDIpIGlzIHVuZGVmaW5lZCBvbiBzb2NrZXRzICovCi0rCXJldCA9IGNobW9kKHNvY2twYXRoLCAw
NzAwKTsKLSsJaWYgKHJldCAhPSAwKSB7Ci0rCQlEX0VSUigiVW5hYmxlIHRvIHNlY3VyZSAoY2ht
b2QpIHNvY2tldCAnJXMnXG4iLCBzb2NrcGF0aCk7Ci0rCQljbG9zZShmZCk7Ci0rCQlyZXR1cm4g
LTE7Ci0rCX0KLSsKLSAJcmV0ID0gbGlzdGVuKGZkLCAxMCk7Ci0gCWlmIChyZXQgIT0gMCkgewot
IAkJRF9FUlIoInNvY2tldCBsaXN0ZW4gZmFpbGVkIC0gJXNcbiIsIHNvY2twYXRoKTsKLS0tIAot
Mi40My4wCi0KLQotRnJvbSA2YTM1MDY1YmU2ODhmZTQ0OTEyMGQwOTA0NWI5MGFkMWFkNjgxMzg2
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vu
a2VAZGRuLmNvbT4KLURhdGU6IFdlZCwgMTAgSnVuIDIwMjYgMTg6NDU6NDMgKzEwMDAKLVN1Ympl
Y3Q6IFtQQVRDSCAxNi8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItZG9jOiBFbXBoYXNpc2UgdGhh
dCB0aGUgcHJpdmF0ZSBuZXR3b3JrIG11c3QgYmUKLSBwcml2YXRlCi0KLU5vdGUgdGhhdCB0aGUg
ZGlmZmVyZW5jZSBpbiB0aGUgZmlyc3QgY291cGxlIG9mIGxpbmVzIGlzIGxlYWRpbmcKLXdoaXRl
c3BhY2UgYmVpbmcgc3dpdGNoIHRvIGEgVEFCLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEuc2Ft
YmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gU2No
d2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgotUmV2aWV3ZWQtYnk6IFRyaXN0YW4gTWFkYW5pIDx0
cmlzdGFuQHRhbGVuY2VzZWN1cml0eS5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHptYWNo
ZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvZG9jL2N0ZGIuNy54bWwgfCAyNyArKysr
KysrKysrKysrKysrKysrLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygr
KSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2N0ZGIvZG9jL2N0ZGIuNy54bWwgYi9j
dGRiL2RvYy9jdGRiLjcueG1sCi1pbmRleCBiZTJkZDVlNWI2NS4uOTA4N2FjZjk4NzAgMTAwNjQ0
Ci0tLS0gYS9jdGRiL2RvYy9jdGRiLjcueG1sCi0rKysgYi9jdGRiL2RvYy9jdGRiLjcueG1sCi1A
QCAtMjQyLDE0ICsyNDIsMjUgQEAKLSAJc2VydmljZXMgcHJvdmlkZWQgYnkgdGhlIGNsdXN0ZXIu
Ci0gICAgICAgPC9wYXJhPgotICAgICAgIDxwYXJhPgotLSAgICAgICAgSXQgaXMgc3Ryb25nbHkg
cmVjb21tZW5kZWQgdGhhdCB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMgYXJlCi0tICAgICAgICBjb25m
aWd1cmVkIG9uIGEgcHJpdmF0ZSBuZXR3b3JrIHRoYXQgaXMgc2VwYXJhdGUgZnJvbSBjbGllbnQK
LS0gICAgICAgIG5ldHdvcmtzLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBDVERCIHByb3RvY29sIGlz
IGJvdGgKLS0gICAgICAgIHVuYXV0aGVudGljYXRlZCBhbmQgdW5lbmNyeXB0ZWQuICBJZiBjbGll
bnRzIHNoYXJlIHRoZSBwcml2YXRlCi0tICAgICAgICBuZXR3b3JrIHRoZW4gc3RlcHMgbmVlZCB0
byBiZSB0YWtlbiB0byBzdG9wIGluamVjdGlvbiBvZgotLSAgICAgICAgcGFja2V0cyB0byByZWxl
dmFudCBwb3J0cyBvbiB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMuICBJdCBpcwotLSAgICAgICAgYWxz
byBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRyYWZmaWMgYmV0d2VlbiBub2RlcyBjb3VsZAot
LSAgICAgICAgbGVhayBzZW5zaXRpdmUgaW5mb3JtYXRpb24gaWYgaXQgY2FuIGJlIGludGVyY2Vw
dGVkLgotKwlJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IHRoZSBwcml2YXRlIGFkZHJl
c3NlcyBhcmUKLSsJY29uZmlndXJlZCBvbiBhIHByaXZhdGUgbmV0d29yayB0aGF0IGlzIHNlcGFy
YXRlIGZyb20gY2xpZW50Ci0rCW5ldHdvcmtzLiAgVGhpcyBpcyBiZWNhdXNlIDxlbXBoYXNpcz50
aGUgQ1REQiBwcm90b2NvbCBpcyBib3RoCi0rCXVuYXV0aGVudGljYXRlZCBhbmQgdW5lbmNyeXB0
ZWQ8L2VtcGhhc2lzPi4gIElmIGNsaWVudHMgc2hhcmUKLSsJdGhlIHByaXZhdGUgbmV0d29yayB0
aGVuIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW4gdG8gc3RvcAotKwlpbmplY3Rpb24gb2YgcGFja2V0
cyB0byByZWxldmFudCBwb3J0cyBvbiB0aGUgcHJpdmF0ZQotKwlhZGRyZXNzZXMuICBJdCBpcyBh
bHNvIGxpa2VseSB0aGF0IENUREIgcHJvdG9jb2wgdHJhZmZpYwotKwliZXR3ZWVuIG5vZGVzIGNv
dWxkIGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGlmIGl0IGNhbiBiZQotKwlpbnRlcmNlcHRl
ZCBvciBtYW5pcHVsYXRlZC4KLSsgICAgICA8L3BhcmE+Ci0rICAgICAgPHBhcmE+Ci0rCUluIHN1
bW1hcnksIHRoZSBwcml2YXRlIG5ldHdvcmsgc2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGJ5Ci0r
CXVudHJ1c3RlZCBzb3VyY2VzLiAgV2UgY2FuJ3Qgc2F5ICJtdXN0IG5vdCIgYmVjYXVzZSB0aGlz
IGNhbid0Ci0rCWJlIGVuZm9yY2VkIGJ5IENUREIsIHNvIHdlIGNhbiBvbmx5IG1ha2UgYSBzdHJv
bmcKLSsJcmVjb21tZW5kYXRpb24uIEhvd2V2ZXIsIGZvciB0aGlzIHJlYXNvbiwgZnV0dXJlIGJ1
Z3MgaW4gdGhlCi0rCUNUREIgcHJvdG9jb2wgdXNlZCBvdmVyIHRoZSBwcml2YXRlIG5ldHdvcmsg
d2lsbCBiZSBmaXhlZCBhcwotKwlyZWd1bGFyIGJ1Z3Mgd2l0aG91dCBmb2xsb3dpbmcgdGhlIFNh
bWJhIHNlY3VyaXR5IHByb2Nlc3MuCi0rCVRoZSBzYW1lIGlzIHRydWUgb2YgbG9jYWwgQ1REQiBw
cm90b2NvbHMgdXNlZCBmb3IgVW5peCBkb21haW4KLSsJc29ja2V0IGFuZCBvdGhlciBjb21tdW5p
Y2F0aW9uLgotICAgICAgIDwvcGFyYT4KLSAKLSAgICAgICA8cGFyYT4KLS0tIAotMi40My4wCi0K
LQotRnJvbSAxZWM5NWI3M2IyMzUwMjMyMjFhNGExOGU4ODhmYTMyODY1NTBmYWVhIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFNjaHdlbmtlIDxtc2Nod2Vua2VAZGRuLmNv
bT4KLURhdGU6IFR1ZSwgMzAgSnVuIDIwMjYgMTM6NTg6MjIgKzEwMDAKLVN1YmplY3Q6IFtQQVRD
SCAxNy8yM10gQ1ZFLTIwMjYtNTgyMjQ6IGN0ZGItY29tbW9uOiBBZGQgY29tbWVudHMgdG8gd2Fy
ZCBvZmYgdnVsbmVyYWJpbGl0eQotIHJlcG9ydHMKLQotV2UgY2FuJ3QgZGVhbCB3aXRoIHRoaXMg
aW4gdGhlIGN1cnJlbnQgQ1REQiBwcm90b2NvbCB3aXRob3V0Ci1kaXNwcm9wb3J0aW9uYXRlIGVm
Zm9ydC4gIFNvLCBkb2N1bWVudCByZWFsaXR5IGNsZWFybHkgaW4gdGhlIGNvZGUgdG8KLXRyeSB0
byBzdG9wIHRoZXNlIGZyb20gYmVpbmcgcmVwb3J0ZWQuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxs
YS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg1Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcnRp
biBTY2h3ZW5rZSA8bXNjaHdlbmtlQGRkbi5jb20+Ci1SZXZpZXdlZC1ieTogU3RlZmFuIE1ldHpt
YWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLS0tLQotIGN0ZGIvY29tbW9uL2N0ZGJfaW8uYyAgfCAy
MCArKysrKysrKysrKysrKysrKysrLQotIGN0ZGIvY29tbW9uL3BrdF9yZWFkLmMgfCAxOSArKysr
KysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAxIGRl
bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jdGRiL2NvbW1vbi9jdGRiX2lvLmMgYi9jdGRiL2Nv
bW1vbi9jdGRiX2lvLmMKLWluZGV4IDlhYzliODRhN2ZiLi4zNDZhNzQ1NmY0NyAxMDA2NDQKLS0t
LSBhL2N0ZGIvY29tbW9uL2N0ZGJfaW8uYwotKysrIGIvY3RkYi9jb21tb24vY3RkYl9pby5jCi1A
QCAtMTE1LDcgKzExNSwyNSBAQCBzdGF0aWMgdm9pZCBxdWV1ZV9wcm9jZXNzKHN0cnVjdCBjdGRi
X3F1ZXVlICpxdWV1ZSkKLSAJCXJldHVybjsKLSAJfQotIAotLQkvKiBFeHRyYWN0IGNvbXBsZXRl
IHBhY2tldCAqLwotKwkvKgotKwkgKiBFeHRyYWN0IGNvbXBsZXRlIHBhY2tldAotKwkgKgotKwkg
KiBZZXMsIHRoaXMgYWxsb3dzIGFuIG91dC1vZi1tZW1vcnkgZGVuaWFsIG9mIHNlcnZpY2UgKERv
UykKLSsJICogYXR0YWNrIGlmIGEgbnVtYmVyIG9mIHBhY2tldHMgYXJlIHJlY2VpdmVkIHdpdGgK
LSsJICogdW5yZWFzb25hYmxlIHBhY2tldCBzaXplcywgbm90aW5nIHRoYXQgdGhlIG1heGltdW0g
cGFja2V0Ci0rCSAqIHNpemUgaXMgfjRHQi4gIFRoZSBDVERCIHByb3RvY29sIHdhcyBub3QgZGVz
aWduZWQgd2l0aCBhCi0rCSAqIG1heGltdW0gcGFja2V0IHNpemUgaW4gbWluZCwgc28gQ1REQiBt
YXkgc2VuZCB2ZXJ5IGxhcmdlCi0rCSAqIHZhbGlkIHBhY2tldHMuICBUaGlzIG1lYW5zIHRoYXQg
aW1wb3NpbmcgYW4gYXJiaXRyYXJ5IGxpbWl0Ci0rCSAqIG9uIGluY29taW5nIHBhY2tldHMgaXMg
bm90IHJlYXNvbmFibGUuICBBcmd1bWVudHMgdGhhdAotKwkgKiBoZWFkZXIgZmllbGRzLCBzdWNo
IGFzIG1hZ2ljIGFuZC9vciB2ZXJzaW9uLCBzaG91bGQgYmUKLSsJICogdmFsaWRhdGVkIGJlZm9y
ZSBhbGxvY2F0aW5nIGEgcGFja2V0IGJ1ZmZlciBhcmUgc3B1cmlvdXMKLSsJICogZnJvbSBhIHNl
Y3VyaXR5IHBlcnNwZWN0aXZlIGJlY2F1c2UgYW4gYXR0YWNrZXIgYXR0ZW1wdGluZwotKwkgKiBE
b1MgY2FuIHNlbmQgcGFja2V0cyB3aXRoIHZhbGlkIGhlYWRlcnMuICBUaGUgcHJpdmF0ZQotKwkg
KiBuZXR3b3JrIGFuZCBjdGRiZCBzb2NrZXQgc2hvdWxkIGJlIHNlY3VyZWQgYWdhaW5zdAotKwkg
KiB1bnRydXN0ZWQgYWNjZXNzLCBzbyByZXBvcnRzIHRoYXQgdGhpcyBwb3NzaWJsZSBEb1MgdmVj
dG9yCi0rCSAqIHJlcHJlc2VudHMgYSBzZWN1cml0eSBpc3N1ZSB3aWxsIGJlIGlnbm9yZWQuICBT
ZWUgdGhlCi0rCSAqICJQcml2YXRlIGFkZHJlc3NlcyIgc2VjdGlvbiBpbiBjdGRiKDcpIGZvciBt
b3JlIGRldGFpbHMuCi0rCSAqLwotIAlkYXRhID0gdGFsbG9jX21lbWR1cChxdWV1ZS0+ZGF0YV9w
b29sLAotIAkJCSAgICAgcXVldWUtPmJ1ZmZlci5kYXRhICsgcXVldWUtPmJ1ZmZlci5vZmZzZXQs
Ci0gCQkJICAgICBwa3Rfc2l6ZSk7Ci1kaWZmIC0tZ2l0IGEvY3RkYi9jb21tb24vcGt0X3JlYWQu
YyBiL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMKLWluZGV4IDIxMmFjZTU0YmJkLi44ODc3ZjZhYTM2
OCAxMDA2NDQKLS0tLSBhL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMKLSsrKyBiL2N0ZGIvY29tbW9u
L3BrdF9yZWFkLmMKLUBAIC0xNDYsNiArMTQ2LDI1IEBAIHZvaWQgcGt0X3JlYWRfaGFuZGxlcihz
dHJ1Y3QgdGV2ZW50X2NvbnRleHQgKmV2LCBzdHJ1Y3QgdGV2ZW50X2ZkICpmZGUsCi0gCQlyZXR1
cm47Ci0gCX0KLSAKLSsJLyoKLSsJICogQWxsb2NhdGUgYnVmZmVyIGZvciBlbnRpcmUgcGFja2V0
Ci0rCSAqCi0rCSAqIFllcywgdGhpcyBhbGxvd3MgYW4gb3V0LW9mLW1lbW9yeSBkZW5pYWwgb2Yg
c2VydmljZSAoRG9TKQotKwkgKiBhdHRhY2sgaWYgYSBudW1iZXIgb2YgcGFja2V0cyBhcmUgcmVj
ZWl2ZWQgd2l0aAotKwkgKiB1bnJlYXNvbmFibGUgcGFja2V0IHNpemVzLCBub3RpbmcgdGhhdCB0
aGUgbWF4aW11bSBwYWNrZXQKLSsJICogc2l6ZSBpcyB+NEdCLiAgVGhlIENUREIgcHJvdG9jb2wg
d2FzIG5vdCBkZXNpZ25lZCB3aXRoIGEKLSsJICogbWF4aW11bSBwYWNrZXQgc2l6ZSBpbiBtaW5k
LCBzbyBDVERCIG1heSBzZW5kIHZlcnkgbGFyZ2UKLSsJICogdmFsaWQgcGFja2V0cy4gIFRoaXMg
bWVhbnMgdGhhdCBpbXBvc2luZyBhbiBhcmJpdHJhcnkgbGltaXQKLSsJICogb24gaW5jb21pbmcg
cGFja2V0cyBpcyBub3QgcmVhc29uYWJsZS4gIEFyZ3VtZW50cyB0aGF0Ci0rCSAqIGhlYWRlciBm
aWVsZHMsIHN1Y2ggYXMgbWFnaWMgYW5kL29yIHZlcnNpb24sIHNob3VsZCBiZQotKwkgKiB2YWxp
ZGF0ZWQgYmVmb3JlIGFsbG9jYXRpbmcgYSBwYWNrZXQgYnVmZmVyIGFyZSBzcHVyaW91cwotKwkg
KiBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUgYmVjYXVzZSBhbiBhdHRhY2tlciBhdHRlbXB0
aW5nCi0rCSAqIERvUyBjYW4gc2VuZCBwYWNrZXRzIHdpdGggdmFsaWQgaGVhZGVycy4gIFRoZSBw
cml2YXRlCi0rCSAqIG5ldHdvcmsgYW5kIGN0ZGJkIHNvY2tldCBzaG91bGQgYmUgc2VjdXJlZCBh
Z2FpbnN0Ci0rCSAqIHVudHJ1c3RlZCBhY2Nlc3MsIHNvIHJlcG9ydHMgdGhhdCB0aGlzIHBvc3Np
YmxlIERvUyB2ZWN0b3IKLSsJICogcmVwcmVzZW50cyBhIHNlY3VyaXR5IGlzc3VlIHdpbGwgYmUg
aWdub3JlZC4gIFNlZSB0aGUKLSsJICogIlByaXZhdGUgYWRkcmVzc2VzIiBzZWN0aW9uIGluIGN0
ZGIoNykgZm9yIG1vcmUgZGV0YWlscy4KLSsJICovCi0gCWlmIChzdGF0ZS0+dXNlX2ZpeGVkKSB7
Ci0gCQkvKiBzd2l0Y2ggdG8gZHluYW1pYyBidWZmZXIgKi8KLSAJCXRtcCA9IHRhbGxvY19hcnJh
eShzdGF0ZSwgdWludDhfdCwgc3RhdGUtPnRvdGFsICsgbW9yZSk7Ci0tLSAKLTIuNDMuMAotCi0K
LUZyb20gY2VkMGEwMGY5N2Q5ZjE2NWU2Yzc3MjVmMGQzMzViMWEzNDExYTQ3OCBNb24gU2VwIDE3
IDAwOjAwOjAwIDIwMDEKLUZyb206IERvdWdsYXMgQmFnbmFsbCA8ZG91Z2xhcy5iYWduYWxsQGNh
dGFseXN0Lm5ldC5uej4KLURhdGU6IFN1biwgMzEgTWF5IDIwMjYgMTI6NDg6MTEgKzEyMDAKLVN1
YmplY3Q6IFtQQVRDSCAxOC8yM10gQ1ZFLTIwMjYtNTgyMTY6IGtkYzprcGFzc3dkOiBjYWxjdWxh
dGUgY29ycmVjdCBzaXplIGZvciBwYXNzd29yZCBibG9iCi0KLVdlIHdlcmUgbWFraW5nIHRoZSBl
bmNfZGF0YV9ibG9iIDYgYnl0ZXMgdG9vIGJpZy4KLQotSXRzIHBheWxvYWQgaXMgYW4gQVNOLjEg
c3RydWN0dXJlIHRoYXQga25vd3MgaXRzIG93biBzaXplLCBzbyB0aGUKLWV4dHJhIGJ5dGVzIGFy
ZSBub3QgdXN1YWxseSByZWFkIGJ5IEhlaW1kYWwsIGJ1dCBhIGNyYWZ0ZWQgcGFja2V0Ci1jb3Vs
ZCBmb3JjZSB0aGVtIHRvIGJlIHJlYWQuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDg3Ci0KLVJlcG9ydGVkLWJ5OiBUcmlzdGFuIDxUcmlzdGFu
SW5TZWNAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFz
LmJhZ25hbGxAY2F0YWx5c3QubmV0Lm56PgotUmV2aWV3ZWQtYnk6IFN0ZWZhbiBNZXR6bWFjaGVy
IDxtZXR6ZUBzYW1iYS5vcmc+Ci0tLS0KLSBzb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYyB8
IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQot
ZGlmZiAtLWdpdCBhL3NvdXJjZTQva2RjL2twYXNzd2Qtc2VydmljZS5jIGIvc291cmNlNC9rZGMv
a3Bhc3N3ZC1zZXJ2aWNlLmMKLWluZGV4IGM2NzFlYjQ2ZDA3Li4wMjg0ZmI0ZjEzMyAxMDA2NDQK
LS0tLSBhL3NvdXJjZTQva2RjL2twYXNzd2Qtc2VydmljZS5jCi0rKysgYi9zb3VyY2U0L2tkYy9r
cGFzc3dkLXNlcnZpY2UuYwotQEAgLTEzNyw3ICsxMzcsNyBAQCBrZGNfY29kZSBrcGFzc3dkX3By
b2Nlc3Moc3RydWN0IGtkY19zZXJ2ZXIgKmtkYywKLSAKLSAJYXBfcmVxX2Jsb2IgPSBkYXRhX2Js
b2JfY29uc3QoJnJlcXVlc3QtPmRhdGFbSEVBREVSX0xFTl0sIGFwX3JlcV9sZW4pOwotIAotLQll
bmNfZGF0YV9sZW4gPSBsZW4gLSBhcF9yZXFfbGVuOwotKwllbmNfZGF0YV9sZW4gPSBsZW4gLSAo
YXBfcmVxX2xlbiArIEhFQURFUl9MRU4pOwotIAllbmNfZGF0YV9ibG9iID0gZGF0YV9ibG9iX2Nv
bnN0KCZyZXF1ZXN0LT5kYXRhW0hFQURFUl9MRU4gKyBhcF9yZXFfbGVuXSwKLSAJCQkJCWVuY19k
YXRhX2xlbik7Ci0gCi0tLSAKLTIuNDMuMAotCi0KLUZyb20gYmU0YzMzYTE0NTJhYTJjZDJmYTZh
NDIwYTFkNDQzYWVmNDIzMzI0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZvbGtl
ciBMZW5kZWNrZSA8dmxAc2FtYmEub3JnPgotRGF0ZTogV2VkLCAxNyBKdW4gMjAyNiAwODoyNDo0
NyArMDIwMAotU3ViamVjdDogW1BBVENIIDE5LzIzXSBDVkUtMjAyNi01ODIxODogZG5zX3NlcnZl
cjogRml4IGFuIGVycm9yIHBhdGggbWVtbGVhawotCi1XZSB0YWxsb2MgdGhlIG5ldyBrZXkgb2Zm
ICJkbnMtPnRrZXlzIiwgd2hpY2ggaXMgbG9uZy1saXZlZC4gT24gYW55Ci1lcnJvciB3ZSBuZXZl
ciBmcmVlJ2QgdGhhdCBhZ2Fpbi4gUHJvYmFibHkgbm90IHJlbW90ZWx5IHRyaWdnZXJhYmxlLAot
dGhpcyBpcyBvbmx5IHNldHRpbmcgdXAgdGhlIGdlbnNlYyBjb250ZXh0LgotCi1CVUc6IGh0dHBz
Oi8vYnVnemlsbGEuc2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNQotCi1TaWduZWQtb2Zm
LWJ5OiBWb2xrZXIgTGVuZGVja2UgPHZsQHNhbWJhLm9yZz4KLVJldmlld2VkLWJ5OiBEb3VnbGFz
IEJhZ25hbGwgPGRiYWduYWxsQHNhbWJhLm9yZz4KLS0tLQotIHNvdXJjZTQvZG5zX3NlcnZlci9k
bnNfcXVlcnkuYyB8IDI1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdl
ZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zb3Vy
Y2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMgYi9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5
LmMKLWluZGV4IDFmNDZlZTBhYTE5Li5lYmM2YTczNWE3NiAxMDA2NDQKLS0tLSBhL3NvdXJjZTQv
ZG5zX3NlcnZlci9kbnNfcXVlcnkuYwotKysrIGIvc291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVy
eS5jCi1AQCAtNjc1LDE4ICs2NzUsMTggQEAgc3RhdGljIE5UU1RBVFVTIGNyZWF0ZV90a2V5KHN0
cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCi0gCWsgPSB0YWxsb2NfemVybyhzdG9yZSwgc3RydWN0
IGRuc19zZXJ2ZXJfdGtleSk7Ci0gCWlmIChrID09IE5VTEwpIHsKLS0JCXJldHVybiBOVF9TVEFU
VVNfTk9fTUVNT1JZOwotKwkJZ290byBub21lbTsKLSAJfQotIAotIAlrLT5uYW1lID0gdGFsbG9j
X3N0cmR1cChrLCBuYW1lKTsKLSAKLSAJaWYgKGstPm5hbWUgID09IE5VTEwpIHsKLS0JCXJldHVy
biBOVF9TVEFUVVNfTk9fTUVNT1JZOwotKwkJZ290byBub21lbTsKLSAJfQotIAotIAlrLT5hbGdv
cml0aG0gPSB0YWxsb2Nfc3RyZHVwKGssIGFsZ29yaXRobSk7Ci0gCWlmIChrLT5hbGdvcml0aG0g
PT0gTlVMTCkgewotLQkJcmV0dXJuIE5UX1NUQVRVU19OT19NRU1PUlk7Ci0rCQlnb3RvIG5vbWVt
OwotIAl9Ci0gCi0gCS8qCi1AQCAtNzA0LDggKzcwNCw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVh
dGVfdGtleShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJCQkJCSZrLT5nZW5zZWMpOwotIAlp
ZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0gCQlERUJVRygxLCAoIkZhaWxlZCB0byBz
dGFydCBHRU5TRUMgc2VydmVyIGNvZGU6ICVzXG4iLCBudF9lcnJzdHIoc3RhdHVzKSkpOwotLQkJ
KnRrZXkgPSBOVUxMOwotLQkJcmV0dXJuIHN0YXR1czsKLSsJCWdvdG8gZmFpbDsKLSAJfQotIAot
IAlnZW5zZWNfd2FudF9mZWF0dXJlKGstPmdlbnNlYywgR0VOU0VDX0ZFQVRVUkVfU0lHTik7Ci1A
QCAtNzE1LDggKzcxNCw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShzdHJ1Y3QgZG5z
X3NlcnZlciAqZG5zLAotIAlpZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0gCQlERUJV
RygxLCAoIkZhaWxlZCB0byBzZXQgcmVtb3RlIGFkZHJlc3MgaW50byBHRU5TRUM6ICVzXG4iLAot
IAkJCSAgbnRfZXJyc3RyKHN0YXR1cykpKTsKLS0JCSp0a2V5ID0gTlVMTDsKLS0JCXJldHVybiBz
dGF0dXM7Ci0rCQlnb3RvIGZhaWw7Ci0gCX0KLSAKLSAJc3RhdHVzID0gZ2Vuc2VjX3NldF9sb2Nh
bF9hZGRyZXNzKGstPmdlbnNlYywKLUBAIC03MjQsOCArNzIyLDcgQEAgc3RhdGljIE5UU1RBVFVT
IGNyZWF0ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCWlmICghTlRfU1RBVFVTX0lT
X09LKHN0YXR1cykpIHsKLSAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHNldCBsb2NhbCBhZGRyZXNz
IGludG8gR0VOU0VDOiAlc1xuIiwKLSAJCQkgIG50X2VycnN0cihzdGF0dXMpKSk7Ci0tCQkqdGtl
eSA9IE5VTEw7Ci0tCQlyZXR1cm4gc3RhdHVzOwotKwkJZ290byBmYWlsOwotIAl9Ci0gCi0gCXN0
YXR1cyA9IGdlbnNlY19zdGFydF9tZWNoX2J5X29pZChrLT5nZW5zZWMsIEdFTlNFQ19PSURfU1BO
RUdPKTsKLUBAIC03MzMsOCArNzMwLDcgQEAgc3RhdGljIE5UU1RBVFVTIGNyZWF0ZV90a2V5KHN0
cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsK
LSAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHN0YXJ0IEdFTlNFQyBzZXJ2ZXIgY29kZTogJXNcbiIs
Ci0gCQkJICBudF9lcnJzdHIoc3RhdHVzKSkpOwotLQkJKnRrZXkgPSBOVUxMOwotLQkJcmV0dXJu
IHN0YXR1czsKLSsJCWdvdG8gZmFpbDsKLSAJfQotIAotIAlUQUxMT0NfRlJFRShzdG9yZS0+dGtl
eXNbc3RvcmUtPm5leHRfaWR4XSk7Ci1AQCAtNzQ1LDYgKzc0MSwxMyBAQCBzdGF0aWMgTlRTVEFU
VVMgY3JlYXRlX3RrZXkoc3RydWN0IGRuc19zZXJ2ZXIgKmRucywKLSAKLSAJKnRrZXkgPSBrOwot
IAlyZXR1cm4gTlRfU1RBVFVTX09LOwotKwotK25vbWVtOgotKwlzdGF0dXMgPSBOVF9TVEFUVVNf
Tk9fTUVNT1JZOwotK2ZhaWw6Ci0rCVRBTExPQ19GUkVFKGspOwotKwkqdGtleSA9IE5VTEw7Ci0r
CXJldHVybiBzdGF0dXM7Ci0gfQotIAotIHN0YXRpYyBOVFNUQVRVUyBhY2NlcHRfZ3NzX3RpY2tl
dChUQUxMT0NfQ1RYICptZW1fY3R4LAotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGQ4NzUyYWY3NTg5
OWNhYTYyMWY3MWU2MTQ5MDI0YTJlZDVkNTUyYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G
cm9tOiBWb2xrZXIgTGVuZGVja2UgPHZsQHNhbWJhLm9yZz4KLURhdGU6IFdlZCwgMTcgSnVuIDIw
MjYgMDg6NTg6NDAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8yM10gQ1ZFLTIwMjYtNTgyMTg6
IGRuc19zZXJ2ZXI6IE9ubHkgYWRkIGEgdGtleSBhZnRlciBzdWNjZXNzZnVsCi0gYXV0aGVudGlj
YXRpb24KLQotQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMTUKLQotU2lnbmVkLW9mZi1ieTogVm9sa2VyIExlbmRlY2tlIDx2bEBzYW1iYS5vcmc+Ci1S
ZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkYmFnbmFsbEBzYW1iYS5vcmc+Ci0tLS0KLSBz
b3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysr
LS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0
aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jIGIv
c291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jCi1pbmRleCBlYmM2YTczNWE3Ni4uMjk5OGRi
ZWUwNjAgMTAwNjQ0Ci0tLS0gYS9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMKLSsrKyBi
L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfcXVlcnkuYwotQEAgLTY1NCw3ICs2NTQsOCBAQCBzdGF0
aWMgV0VSUk9SIGhhbmRsZV9hdXRob3JpdGF0aXZlX3JlY3Yoc3RydWN0IHRldmVudF9yZXEgKnJl
cSkKLSAJcmV0dXJuIFdFUlJfT0s7Ci0gfQotIAotLXN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtl
eShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotK3N0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShU
QUxMT0NfQ1RYICptZW1fY3R4LAotKwkJCSAgICBzdHJ1Y3QgZG5zX3NlcnZlciAqZG5zLAotIAkJ
CSAgICBjb25zdCBjaGFyKiBuYW1lLAotIAkJCSAgICBjb25zdCBjaGFyKiBhbGdvcml0aG0sCi0g
CQkJICAgIGNvbnN0IHN0cnVjdCB0c29ja2V0X2FkZHJlc3MgKnJlbW90ZV9hZGRyZXNzLAotQEAg
LTY2Miw3ICs2NjMsNiBAQCBzdGF0aWMgTlRTVEFUVVMgY3JlYXRlX3RrZXkoc3RydWN0IGRuc19z
ZXJ2ZXIgKmRucywKLSAJCQkgICAgc3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqKnRrZXkpCi0gewot
IAlOVFNUQVRVUyBzdGF0dXM7Ci0tCXN0cnVjdCBkbnNfc2VydmVyX3RrZXlfc3RvcmUgKnN0b3Jl
ID0gZG5zLT50a2V5czsKLSAJc3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqayA9IE5VTEw7Ci0gCi0g
CWlmIChzdHJjbXAoYWxnb3JpdGhtLCAiZ3NzLXRzaWciKSA9PSAwKSB7Ci1AQCAtNjczLDcgKzY3
Myw3IEBAIHN0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShzdHJ1Y3QgZG5zX3NlcnZlciAqZG5z
LAotIAkJcmV0dXJuIE5UX1NUQVRVU19BQ0NFU1NfREVOSUVEOwotIAl9Ci0gCi0tCWsgPSB0YWxs
b2NfemVybyhzdG9yZSwgc3RydWN0IGRuc19zZXJ2ZXJfdGtleSk7Ci0rCWsgPSB0YWxsb2NfemVy
byhtZW1fY3R4LCBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5KTsKLSAJaWYgKGsgPT0gTlVMTCkgewot
IAkJZ290byBub21lbTsKLSAJfQotQEAgLTczMywxMiArNzMzLDYgQEAgc3RhdGljIE5UU1RBVFVT
IGNyZWF0ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQlnb3RvIGZhaWw7Ci0gCX0K
LSAKLS0JVEFMTE9DX0ZSRUUoc3RvcmUtPnRrZXlzW3N0b3JlLT5uZXh0X2lkeF0pOwotLQotLQlz
dG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IGs7Ci0tCShzdG9yZS0+bmV4dF9pZHgpKys7
Ci0tCXN0b3JlLT5uZXh0X2lkeCAlPSBzdG9yZS0+c2l6ZTsKLS0KLSAJKnRrZXkgPSBrOwotIAly
ZXR1cm4gTlRfU1RBVFVTX09LOwotIAotQEAgLTc1MCw2ICs3NDQsMTcgQEAgZmFpbDoKLSAJcmV0
dXJuIHN0YXR1czsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgYWRkX3RrZXkoc3RydWN0IGRuc19zZXJ2
ZXJfdGtleV9zdG9yZSAqc3RvcmUsCi0rCQkgICAgIHN0cnVjdCBkbnNfc2VydmVyX3RrZXkgKip0
a2V5KQotK3sKLSsJVEFMTE9DX0ZSRUUoc3RvcmUtPnRrZXlzW3N0b3JlLT5uZXh0X2lkeF0pOwot
KwotKwlzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IHRhbGxvY19tb3ZlKHN0b3JlLT50
a2V5cywgdGtleSk7Ci0rCi0rCShzdG9yZS0+bmV4dF9pZHgpKys7Ci0rCXN0b3JlLT5uZXh0X2lk
eCAlPSBzdG9yZS0+c2l6ZTsKLSt9Ci0rCi0gc3RhdGljIE5UU1RBVFVTIGFjY2VwdF9nc3NfdGlj
a2V0KFRBTExPQ19DVFggKm1lbV9jdHgsCi0gCQkJCSAgc3RydWN0IGRuc19zZXJ2ZXIgKmRucywK
LSAJCQkJICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5LAotQEAgLTg2Myw2ICs4NjgsNyBA
QCBzdGF0aWMgV0VSUk9SIGhhbmRsZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQlz
dHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5OwotIAkJREFUQV9CTE9CIGtleTsKLSAJCURBVEFf
QkxPQiByZXBseTsKLSsJCWJvb2wgY3JlYXRlZCA9IGZhbHNlOwotIAotIAkJdGtleSA9IGRuc19m
aW5kX3RrZXkoZG5zLT50a2V5cywgaW4tPnF1ZXN0aW9uc1swXS5uYW1lKTsKLSAJCWlmICh0a2V5
ICE9IE5VTEwgJiYgdGtleS0+Y29tcGxldGUpIHsKLUBAIC04NzMsMTUgKzg3OSwxOSBAQCBzdGF0
aWMgV0VSUk9SIGhhbmRsZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQl9Ci0gCi0g
CQlpZiAodGtleSA9PSBOVUxMKSB7Ci0tCQkJc3RhdHVzICA9IGNyZWF0ZV90a2V5KGRucywgaW4t
PnF1ZXN0aW9uc1swXS5uYW1lLAotLQkJCQkJICAgICAgaW5fdGtleS0+cmRhdGEudGtleV9yZWNv
cmQuYWxnb3JpdGhtLAotLQkJCQkJICAgICAgc3RhdGUtPnJlbW90ZV9hZGRyZXNzLAotLQkJCQkJ
ICAgICAgc3RhdGUtPmxvY2FsX2FkZHJlc3MsCi0tCQkJCQkgICAgICAmdGtleSk7Ci0rCQkJc3Rh
dHVzID0gY3JlYXRlX3RrZXkoCi0rCQkJCW1lbV9jdHgsCi0rCQkJCWRucywKLSsJCQkJaW4tPnF1
ZXN0aW9uc1swXS5uYW1lLAotKwkJCQlpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5hbGdvcml0
aG0sCi0rCQkJCXN0YXRlLT5yZW1vdGVfYWRkcmVzcywKLSsJCQkJc3RhdGUtPmxvY2FsX2FkZHJl
c3MsCi0rCQkJCSZ0a2V5KTsKLSAJCQlpZiAoIU5UX1NUQVRVU19JU19PSyhzdGF0dXMpKSB7Ci0g
CQkJCXJldF90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5lcnJvciA9IEROU19SQ09ERV9CQURLRVk7
Ci0gCQkJCXJldHVybiBudHN0YXR1c190b193ZXJyb3Ioc3RhdHVzKTsKLSAJCQl9Ci0rCQkJY3Jl
YXRlZCA9IHRydWU7Ci0gCQl9Ci0gCi0gCQlrZXkuZGF0YSA9IGluX3RrZXktPnJkYXRhLnRrZXlf
cmVjb3JkLmtleV9kYXRhOwotQEAgLTkwNiw2ICs5MTYsOSBAQCBzdGF0aWMgV0VSUk9SIGhhbmRs
ZV90a2V5KHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCi0gCQkJaWYgKHN0YXRlLT5rZXlfbmFtZSA9
PSBOVUxMKSB7Ci0gCQkJCXJldHVybiBXRVJSX05PVF9FTk9VR0hfTUVNT1JZOwotIAkJCX0KLSsJ
CQlpZiAoY3JlYXRlZCkgewotKwkJCQlhZGRfdGtleShkbnMtPnRrZXlzLCAmdGtleSk7Ci0rCQkJ
fQotIAkJfSBlbHNlIHsKLSAJCQlERUJVRygxLCAoIkdTUyBrZXkgbmVnb3RpYXRpb24gcmV0dXJu
ZWQgJXNcbiIsIG50X2VycnN0cihzdGF0dXMpKSk7Ci0gCQkJcmV0X3RrZXktPnJkYXRhLnRrZXlf
cmVjb3JkLmVycm9yID0gRE5TX1JDT0RFX0JBREtFWTsKLS0tIAotMi40My4wCi0KLQotRnJvbSAy
NGY3ZWI1NzRkMmU5ZWE1Nzc0NmY5Njk2NDkxYjUwZGM0ZWY1MzUyIE1vbiBTZXAgMTcgMDA6MDA6
MDAgMjAwMQotRnJvbTogU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLURhdGU6
IE1vbiwgMjkgSnVuIDIwMjYgMTk6MDk6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yM10g
Q1ZFLTIwMjYtNTgyMjE6IHM0OmRzZGI6IHByb3ZpZGUKLSBkc2RiX2F1ZGl0X3tsb2dfYXR0cmli
dXRlcyxvcGVyYXRpb25faHVtYW5fcmVhZGFibGV9KCkgZnVuY3Rpb25zCi0KLVRoZXkgYXJlIHVz
ZWZ1bCBvdXRzaWRlIG9mIGF1ZGl0X2xvZy5jIHNvb24uCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxs
YS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTQ3Ci0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZh
biBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+Ci1SZXZpZXdlZC1ieTogVm9sa2VyIExlbmRl
Y2tlIDx2bEBzYW1iYS5vcmc+Ci1SZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFz
LmJhZ25hbGxAY2F0YWx5c3QubmV0Lm56PgotCi1bYmFja3BvcnQ6IG1vZGlmaWVkIGZvciB2NC4y
Miwgbm90IHJlbW92aW5nIHRoZSBzdGF0aWMgdmVyc2lvbnMgdXNlZAotIGluIGF1ZGl0X2xvZy5j
IG9yIGFkanVzdGluZyB0aGUgdGVzdHNdCi0tLS0KLSBzb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21v
ZHVsZXMvYXVkaXRfdXRpbC5jIHwgMTgwICsrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNo
YW5nZWQsIDE4MCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zb3VyY2U0L2RzZGIvc2Ft
ZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbC5jIGIvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1
bGVzL2F1ZGl0X3V0aWwuYwotaW5kZXggOGZlN2Q4MzMyZDIuLjI1ZjkwZWUzZGIzIDEwMDY0NAot
LS0tIGEvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotKysrIGIv
c291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotQEAgLTY5NCwzICs2
OTQsMTgzIEBAIGZhaWx1cmU6Ci0gCURCR19FUlIoIlVuYWJsZSB0byBjcmVhdGUgbGRiIGF0dHJp
YnV0ZXMgSlNPTiBhdWRpdCBtZXNzYWdlXG4iKTsKLSAJcmV0dXJuIGF0dHJpYnV0ZXM7Ci0gfQot
KwotKy8qCi0rICogQGJyaWVmIEdlbmVyYXRlIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nLCBkZXRh
aWxpbmcgYXR0cmlidXRlcyBpbiBhIG1lc3NhZ2UKLSsgKgotKyAqIEZvciBtb2RpZnkgb3BlcmF0
aW9ucyBlYWNoIGF0dHJpYnV0ZSBpcyBwcmVmaXhlZCB3aXRoIHRoZSBhY3Rpb24uCi0rICogTm9y
bWFsIHZhbHVlcyBhcmUgZW5jbG9zZWQgaW4gW10KLSsgKiBCYXNlNjQgdmFsdWVzIGFyZSBlbmNs
b3NlZCBpbiB7fQotKyAqIFRydW5jYXRlZCB2YWx1ZXMgYXJlIGluZGljYXRlZCBieSB0aHJlZSB0
cmFpbGluZyBkb3RzICIuLi4iCi0rICoKLSsgKiBAcGFyYW1baW5dICBsZGIgICAgICAgdGhlIGxk
Yl9jb250ZXh0Ci0rICogQHBhcmFtW291dF0gYnVmZmVyICAgIHRoZSBhdHRyaWJ1dGVzIHdpbGwg
YmUgYXBwZW5kZWQgdG8gdGhlIGJ1ZmZlci4KLSsgKiAgICAgICAgICAgICAgICAgICAgICAgYXNz
dW1lZCB0byBoYXZlIGJlZW4gYWxsb2NhdGVkIHZpYSB0YWxsb2MuCi0rICogQHBhcmFtW2luXSAg
b3BlcmF0aW9uIHRoZSBvcGVyYXRpb24gdHlwZQotKyAqIEBwYXJhbVtpbl0gIG1lc3NhZ2UgICB0
aGUgbWVzc2FnZSB0byBwcm9jZXNzCi0rICoKLSsgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBidWZm
ZXIKLSsgKgotKyAqLwotK2NoYXIgKmRzZGJfYXVkaXRfbG9nX2F0dHJpYnV0ZXMoCi0rCXN0cnVj
dCBsZGJfY29udGV4dCAqbGRiLAotKwljaGFyICpidWZmZXIsCi0rCWVudW0gbGRiX3JlcXVlc3Rf
dHlwZSBvcGVyYXRpb24sCi0rCWNvbnN0IHN0cnVjdCBsZGJfbWVzc2FnZSAqbWVzc2FnZSkKLSt7
Ci0rCXNpemVfdCBpLCBqOwotKwlmb3IgKGk9MDtpPG1lc3NhZ2UtPm51bV9lbGVtZW50cztpKysp
IHsKLSsJCWlmIChpID4gMCkgewotKwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRf
YnVmZmVyKGJ1ZmZlciwgIiAiKTsKLSsJCX0KLSsKLSsJCWlmIChtZXNzYWdlLT5lbGVtZW50c1tp
XS5uYW1lID09IE5VTEwpIHsKLSsJCQlsZGJfZGVidWcoCi0rCQkJCWxkYiwKLSsJCQkJTERCX0RF
QlVHX0VSUk9SLAotKwkJCQkiRXJyb3I6IEludmFsaWQgZWxlbWVudCBuYW1lIChOVUxMKSBhdCAi
Ci0rCQkJCSJwb3NpdGlvbiAlenUiLCBpKTsKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCX0KLSsKLSsJ
CWlmIChvcGVyYXRpb24gPT0gTERCX01PRElGWSkgewotKwkJCWNvbnN0IGNoYXIgKmFjdGlvbiA9
TlVMTDsKLSsJCQlhY3Rpb24gPSBkc2RiX2F1ZGl0X2dldF9tb2RpZmljYXRpb25fYWN0aW9uKAot
KwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5mbGFncyk7Ci0rCQkJYnVmZmVyID0gdGFsbG9jX2Fz
cHJpbnRmX2FwcGVuZF9idWZmZXIoCi0rCQkJCWJ1ZmZlciwKLSsJCQkJIiVzOiAlcyAiLAotKwkJ
CQlhY3Rpb24sCi0rCQkJCW1lc3NhZ2UtPmVsZW1lbnRzW2ldLm5hbWUpOwotKwkJfSBlbHNlIHsK
LSsJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJYnVmZmVy
LAotKwkJCQkiJXMgIiwKLSsJCQkJbWVzc2FnZS0+ZWxlbWVudHNbaV0ubmFtZSk7Ci0rCQl9Ci0r
Ci0rCQlpZiAoZHNkYl9hdWRpdF9yZWRhY3RfYXR0cmlidXRlKG1lc3NhZ2UtPmVsZW1lbnRzW2ld
Lm5hbWUpKSB7Ci0rCQkJLyoKLSsJCQkgKiBEbyBub3QgbG9nIHRoZSB2YWx1ZSBvZiBhbnkgc2Vj
cmV0IG9yIHBhc3N3b3JkCi0rCQkJICogYXR0cmlidXRlcwotKwkJCSAqLwotKwkJCWJ1ZmZlciA9
IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAotKwkJCQlidWZmZXIsCi0rCQkJCSJbUkVE
QUNURUQgU0VDUkVUIEFUVFJJQlVURV0iKTsKLSsJCQljb250aW51ZTsKLSsJCX0KLSsKLSsJCWZv
ciAoaj0wO2o8bWVzc2FnZS0+ZWxlbWVudHNbaV0ubnVtX3ZhbHVlcztqKyspIHsKLSsJCQlzdHJ1
Y3QgbGRiX3ZhbCB2OwotKwkJCWJvb2wgdXNlX2I2NF9lbmNvZGUgPSBmYWxzZTsKLSsJCQlzaXpl
X3QgbGVuZ3RoOwotKwkJCWlmIChqID4gMCkgewotKwkJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmlu
dGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJCWJ1ZmZlciwKLSsJCQkJCSIgIik7Ci0rCQkJfQotKwot
KwkJCXYgPSBtZXNzYWdlLT5lbGVtZW50c1tpXS52YWx1ZXNbal07Ci0rCQkJbGVuZ3RoID0gTUlO
KE1BWF9MRU5HVEgsIHYubGVuZ3RoKTsKLSsJCQl1c2VfYjY0X2VuY29kZSA9IGxkYl9zaG91bGRf
YjY0X2VuY29kZShsZGIsICZ2KTsKLSsJCQlpZiAodXNlX2I2NF9lbmNvZGUpIHsKLSsJCQkJY29u
c3QgY2hhciAqZW5jb2RlZCA9IGxkYl9iYXNlNjRfZW5jb2RlKAotKwkJCQkJYnVmZmVyLAotKwkJ
CQkJKGNoYXIgKil2LmRhdGEsCi0rCQkJCQlsZW5ndGgpOwotKwkJCQlidWZmZXIgPSB0YWxsb2Nf
YXNwcmludGZfYXBwZW5kX2J1ZmZlcigKLSsJCQkJCWJ1ZmZlciwKLSsJCQkJICAgICAgICAieyVz
JXN9IiwKLSsJCQkJCWVuY29kZWQsCi0rCQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4u
LiIgOiAiIikpOwotKwkJCX0gZWxzZSB7Ci0rCQkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9h
cHBlbmRfYnVmZmVyKAotKwkJCQkJYnVmZmVyLAotKwkJCQkJIlslKi4qcyVzXSIsCi0rCQkJCQko
aW50KWxlbmd0aCwKLSsJCQkJCShpbnQpbGVuZ3RoLAotKwkJCQkJKGNoYXIgKil2LmRhdGEsCi0r
CQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4uLiIgOiAiIikpOwotKwkJCX0KLSsJCX0K
LSsJfQotKwlyZXR1cm4gYnVmZmVyOwotK30KLSsKLSsvKgotKyAqIEBicmllZiBnZW5lcmF0ZSBh
IGh1bWFuIHJlYWRhYmxlIGxvZyBlbnRyeSBkZXRhaWxpbmcgYW4gbGRiIG9wZXJhdGlvbi4KLSsg
KgotKyAqIEdlbmVyYXRlIGEgaHVtYW4gcmVhZGFibGUgbG9nIGVudHJ5IGRldGFpbGluZyBhbiBs
ZGIgb3BlcmF0aW9uLgotKyAqCi0rICogQHBhcmFtW2luXSBtZW1fY3R4IHRoZSB0YWxsb2MgY29u
dGV4dCBvd25pbmcgdGhlIHJldHVybmVkIHN0cmluZy4KLSsgKiBAcGFyYW1baW5dIG1vZHVsZSAg
dGhlIGxkYiBtb2R1bGUKLSsgKiBAcGFyYW1baW5dIHJlcXVlc3QgdGhlIHJlcXVlc3QKLSsgKiBA
cGFyYW1baW5dIHJlcGx5ICAgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uCi0rICoKLSsgKiBA
cmV0dXJuIHRoZSBsb2cgZW50cnkuCi0rICoKLSsgKi8KLStjaGFyICpkc2RiX2F1ZGl0X29wZXJh
dGlvbl9odW1hbl9yZWFkYWJsZSgKLSsJVEFMTE9DX0NUWCAqbWVtX2N0eCwKLSsJc3RydWN0IGxk
Yl9tb2R1bGUgKm1vZHVsZSwKLSsJY29uc3Qgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXF1ZXN0LAot
Kwljb25zdCBzdHJ1Y3QgbGRiX3JlcGx5ICpyZXBseSkKLSt7Ci0rCXN0cnVjdCBsZGJfY29udGV4
dCAqbGRiID0gTlVMTDsKLSsJY29uc3QgY2hhciAqcmVtb3RlX2hvc3QgPSBOVUxMOwotKwljb25z
dCBzdHJ1Y3QgdHNvY2tldF9hZGRyZXNzICpyZW1vdGUgPSBOVUxMOwotKwljb25zdCBzdHJ1Y3Qg
ZG9tX3NpZCAqc2lkID0gTlVMTDsKLSsJc3RydWN0IGRvbV9zaWRfYnVmIHVzZXJfc2lkOwotKwlj
b25zdCBjaGFyICp0aW1lc3RhbXAgPSBOVUxMOwotKwljb25zdCBjaGFyICpvcF9uYW1lID0gTlVM
TDsKLSsJY2hhciAqbG9nX2VudHJ5ID0gTlVMTDsKLSsJY29uc3QgY2hhciAqZG4gPSBOVUxMOwot
Kwljb25zdCBjaGFyICpuZXdfZG4gPSBOVUxMOwotKwljb25zdCBzdHJ1Y3QgbGRiX21lc3NhZ2Ug
Km1lc3NhZ2UgPSBOVUxMOwotKwotKwlUQUxMT0NfQ1RYICpjdHggPSB0YWxsb2NfbmV3KE5VTEwp
OwotKwotKwlsZGIgPSBsZGJfbW9kdWxlX2dldF9jdHgobW9kdWxlKTsKLSsKLSsJcmVtb3RlX2hv
c3QgPSBkc2RiX2F1ZGl0X2dldF9yZW1vdGVfaG9zdChsZGIsIGN0eCk7Ci0rCXJlbW90ZSA9IGRz
ZGJfYXVkaXRfZ2V0X3JlbW90ZV9hZGRyZXNzKGxkYik7Ci0rCWlmIChyZW1vdGUgIT0gTlVMTCAm
JiBkc2RiX2F1ZGl0X2lzX3N5c3RlbV9zZXNzaW9uKG1vZHVsZSkpIHsKLSsJCXNpZCA9IGRzZGJf
YXVkaXRfZ2V0X2FjdHVhbF9zaWQobGRiKTsKLSsJfSBlbHNlIHsKLSsJCXNpZCA9IGRzZGJfYXVk
aXRfZ2V0X3VzZXJfc2lkKG1vZHVsZSk7Ci0rCX0KLSsJdGltZXN0YW1wID0gYXVkaXRfZ2V0X3Rp
bWVzdGFtcChjdHgpOwotKwlvcF9uYW1lID0gZHNkYl9hdWRpdF9nZXRfb3BlcmF0aW9uX25hbWUo
cmVxdWVzdCk7Ci0rCWRuID0gZHNkYl9hdWRpdF9nZXRfcHJpbWFyeV9kbihyZXF1ZXN0KTsKLSsJ
bmV3X2RuID0gZHNkYl9hdWRpdF9nZXRfc2Vjb25kYXJ5X2RuKHJlcXVlc3QpOwotKwotKwltZXNz
YWdlID0gZHNkYl9hdWRpdF9nZXRfbWVzc2FnZShyZXF1ZXN0KTsKLSsKLSsJbG9nX2VudHJ5ID0g
dGFsbG9jX2FzcHJpbnRmKAotKwkJbWVtX2N0eCwKLSsJCSJbJXNdIGF0IFslc10gc3RhdHVzIFsl
c10gIgotKwkJInJlbW90ZSBob3N0IFslc10gU0lEIFslc10gRE4gWyVzXSIsCi0rCQlvcF9uYW1l
LAotKwkJdGltZXN0YW1wLAotKwkJbGRiX3N0cmVycm9yKHJlcGx5LT5lcnJvciksCi0rCQlyZW1v
dGVfaG9zdCwKLSsJCWRvbV9zaWRfc3RyX2J1ZihzaWQsICZ1c2VyX3NpZCksCi0rCQlkbik7Ci0r
CWlmIChuZXdfZG4gIT0gTlVMTCkgewotKwkJbG9nX2VudHJ5ID0gdGFsbG9jX2FzcHJpbnRmX2Fw
cGVuZF9idWZmZXIoCi0rCQkJbG9nX2VudHJ5LAotKwkJCSIgTmV3IEROIFslc10iLAotKwkJCW5l
d19kbik7Ci0rCX0KLSsJaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotKwkJbG9nX2VudHJ5ID0gdGFs
bG9jX2FzcHJpbnRmX2FwcGVuZF9idWZmZXIobG9nX2VudHJ5LAotKwkJCQkJCQkgICIgYXR0cmli
dXRlcyBbIik7Ci0rCQlsb2dfZW50cnkgPSBkc2RiX2F1ZGl0X2xvZ19hdHRyaWJ1dGVzKGxkYiwK
LSsJCQkJCQkgICAgICBsb2dfZW50cnksCi0rCQkJCQkJICAgICAgcmVxdWVzdC0+b3BlcmF0aW9u
LAotKwkJCQkJCSAgICAgIG1lc3NhZ2UpOwotKwkJbG9nX2VudHJ5ID0gdGFsbG9jX2FzcHJpbnRm
X2FwcGVuZF9idWZmZXIobG9nX2VudHJ5LCAiXSIpOwotKwl9Ci0rCVRBTExPQ19GUkVFKGN0eCk7
Ci0rCXJldHVybiBsb2dfZW50cnk7Ci0rfQotLS0gCi0yLjQzLjAKLQotCi1Gcm9tIGI1Zjc4NDky
NjI4YTA2MDEzMzU0Zjc2NTIxY2IxNTNhYjdkOGUwZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx
Ci1Gcm9tOiBTdGVmYW4gTWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotRGF0ZTogV2VkLCAy
NCBKdW4gMjAyNiAxNDowMTozMiArMDIwMAotU3ViamVjdDogW1BBVENIIDIyLzIzXSBDVkUtMjAy
Ni01ODIyMTogczQ6ZHNkYjogbGV0IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMoKQotIHJlamVj
dCB1bnRydXN0ZWQgb3BlcmF0aW9ucyBvbiBzcGVjaWFsIEROcwotCi1XaXRob3V0IHRoaXMgYXV0
aGVudGljYXRlZCAoYWxzbyBub24tYWRtaW4pIHVzZXJzIHdyaXRlIGludGVybmFsIG1ldGEKLWRh
dGEgbGVhZGluZyB0byBhZG1pbiBwcml2aWxlZ2VzLgotCi1CVUc6IGh0dHBzOi8vYnVnemlsbGEu
c2FtYmEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE0NwotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4g
TWV0em1hY2hlciA8bWV0emVAc2FtYmEub3JnPgotUmV2aWV3ZWQtYnk6IFZvbGtlciBMZW5kZWNr
ZSA8dmxAc2FtYmEub3JnPgotUmV2aWV3ZWQtYnk6IERvdWdsYXMgQmFnbmFsbCA8ZG91Z2xhcy5i
YWduYWxsQGNhdGFseXN0Lm5ldC5uej4KLS0tLQotIHNvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9k
dWxlcy9yb290ZHNlLmMgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKy0KLSAuLi4vc2FtZGIv
bGRiX21vZHVsZXMvd3NjcmlwdF9idWlsZF9zZXJ2ZXIgICAgfCAgMiArLQotIDIgZmlsZXMgY2hh
bmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Nv
dXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9yb290ZHNlLmMgYi9zb3VyY2U0L2RzZGIvc2Ft
ZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi1pbmRleCA3NTQxYTJjZjM3Ni4uOWNjODQ3N2I4Zjgg
MTAwNjQ0Ci0tLS0gYS9zb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi0r
KysgYi9zb3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi1AQCAtMjgsNiAr
MjgsNyBAQAotICNpbmNsdWRlICJkc2RiL3NhbWRiL3NhbWRiLmgiCi0gI2luY2x1ZGUgInZlcnNp
b24uaCIKLSAjaW5jbHVkZSAiZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy91dGlsLmgiCi0rI2luY2x1
ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbF9wcm90by5oIgotICNpbmNsdWRl
ICJsaWJjbGkvc2VjdXJpdHkvc2VjdXJpdHkuaCIKLSAjaW5jbHVkZSAibGlicnBjL25kci9saWJu
ZHIuaCIKLSAjaW5jbHVkZSAiYXV0aC9hdXRoLmgiCi1AQCAtNzQ2LDE4ICs3NDcsNjggQEAgc3Rh
dGljIGludCByb290ZHNlX2ZpbHRlcl9jb250cm9scyhzdHJ1Y3QgbGRiX21vZHVsZSAqbW9kdWxl
LCBzdHJ1Y3QgbGRiX3JlcXVlc3QKLSAJcmV0dXJuIExEQl9TVUNDRVNTOwotIH0KLSAKLS0vKiBF
bnN1cmUgdGhhdCBhbm9ueW1vdXMgdXNlcnMgYXJlIG5vdCBhbGxvd2VkIHRvIG1ha2UgYW55dGhp
bmcgb3RoZXIgdGhhbiByb290RFNFIHNlYXJjaCBvcGVyYXRpb25zICovCi0tCi0rLyoKLSsgKiBF
bnN1cmUgdGhhdCBhbm9ueW1vdXMgdXNlcnMgYXJlIG5vdCBhbGxvd2VkIHRvIG1ha2UgYW55dGhp
bmcgb3RoZXIgdGhhbgotKyAqIHJvb3REU0Ugc2VhcmNoIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwg
ZG5zIGxpa2UgQE1PRFVMRVMgYXJlIG5vdCBhbGxvd2VkCi0rICogb3ZlciBhbiB1bnRydXN0ZWQg
Y29ubmVjdGlvbi4KLSsgKi8KLSBzdGF0aWMgaW50IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMo
c3RydWN0IGxkYl9tb2R1bGUgKm1vZHVsZSwgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXEpCi0gewot
IAlzdHJ1Y3QgYXV0aF9zZXNzaW9uX2luZm8gKnNlc3Npb25faW5mbzsKLSAJc3RydWN0IHJvb3Rk
c2VfcHJpdmF0ZV9kYXRhICpwcml2ID0gdGFsbG9jX2dldF90eXBlKGxkYl9tb2R1bGVfZ2V0X3By
aXZhdGUobW9kdWxlKSwgc3RydWN0IHJvb3Rkc2VfcHJpdmF0ZV9kYXRhKTsKLSAJYm9vbCBpc191
bnRydXN0ZWQgPSBsZGJfcmVxX2lzX3VudHJ1c3RlZChyZXEpOwotIAlib29sIGlzX2Fub255bW91
cyA9IHRydWU7Ci0rCXN0cnVjdCBsZGJfZG4gKmRuID0gTlVMTDsKLSsJc3RydWN0IGxkYl9kbiAq
ZG4yID0gTlVMTDsKLSsKLSAJaWYgKGlzX3VudHJ1c3RlZCA9PSBmYWxzZSkgewotIAkJcmV0dXJu
IExEQl9TVUNDRVNTOwotIAl9Ci0gCi0rCXN3aXRjaCAocmVxLT5vcGVyYXRpb24pIHsKLSsJY2Fz
ZSBMREJfU0VBUkNIOgotKwkJZG4gPSByZXEtPm9wLnNlYXJjaC5iYXNlOwotKwkJYnJlYWs7Ci0r
CWNhc2UgTERCX0FERDoKLSsJCWRuID0gcmVxLT5vcC5hZGQubWVzc2FnZS0+ZG47Ci0rCQlicmVh
azsKLSsJY2FzZSBMREJfTU9ESUZZOgotKwkJZG4gPSByZXEtPm9wLm1vZC5tZXNzYWdlLT5kbjsK
LSsJCWJyZWFrOwotKwljYXNlIExEQl9ERUxFVEU6Ci0rCQlkbiA9IHJlcS0+b3AuZGVsLmRuOwot
KwkJYnJlYWs7Ci0rCWNhc2UgTERCX1JFTkFNRToKLSsJCWRuID0gcmVxLT5vcC5yZW5hbWUub2xk
ZG47Ci0rCQlkbjIgPSByZXEtPm9wLnJlbmFtZS5uZXdkbjsKLSsJCWJyZWFrOwotKwljYXNlIExE
Ql9FWFRFTkRFRDoKLSsJCWJyZWFrOwotKwljYXNlIExEQl9SRVFfUkVHSVNURVJfQ09OVFJPTDoK
LSsJY2FzZSBMREJfUkVRX1JFR0lTVEVSX1BBUlRJVElPTjoKLSsJCWxkYl9zZXRfZXJyc3RyaW5n
KGxkYl9tb2R1bGVfZ2V0X2N0eChtb2R1bGUpLCAiSW52YWxpZCBPUCIpOwotKwkJcmV0dXJuIExE
Ql9FUlJfT1BFUkFUSU9OU19FUlJPUjsKLSsJfQotKwotKwlpZiAobGRiX2RuX2lzX3NwZWNpYWwo
ZG4pKSB7Ci0rCQlzdHJ1Y3QgbGRiX3JlcGx5IHJlcGx5ID0geyAuZXJyb3IgPSBMREJfRVJSX09Q
RVJBVElPTlNfRVJST1IsIH07Ci0rCi0rCQlEX0VSUigiQ1ZFLTIwMjYtNTgyMjEtQVRUQUNLOiAl
c1xuIiwKLSsJCQlkc2RiX2F1ZGl0X29wZXJhdGlvbl9odW1hbl9yZWFkYWJsZShyZXEsIG1vZHVs
ZSwgcmVxLCAmcmVwbHkpKTsKLSsKLSsJCWxkYl9zZXRfZXJyc3RyaW5nKGxkYl9tb2R1bGVfZ2V0
X2N0eChtb2R1bGUpLCAiSW52YWxpZCBETiIpOwotKwkJcmV0dXJuIExEQl9FUlJfT1BFUkFUSU9O
U19FUlJPUjsKLSsJfQotKwlpZiAobGRiX2RuX2lzX3NwZWNpYWwoZG4yKSkgewotKwkJc3RydWN0
IGxkYl9yZXBseSByZXBseSA9IHsgLmVycm9yID0gTERCX0VSUl9PUEVSQVRJT05TX0VSUk9SLCB9
OwotKwotKwkJRF9FUlIoIkNWRS0yMDI2LTU4MjIxLUFUVEFDSzogJXNcbiIsCi0rCQkJZHNkYl9h
dWRpdF9vcGVyYXRpb25faHVtYW5fcmVhZGFibGUocmVxLCBtb2R1bGUsIHJlcSwgJnJlcGx5KSk7
Ci0rCi0rCQlsZGJfc2V0X2VycnN0cmluZyhsZGJfbW9kdWxlX2dldF9jdHgobW9kdWxlKSwgIklu
dmFsaWQgRE4iKTsKLSsJCXJldHVybiBMREJfRVJSX09QRVJBVElPTlNfRVJST1I7Ci0rCX0KLSsK
LSAJc2Vzc2lvbl9pbmZvID0gKHN0cnVjdCBhdXRoX3Nlc3Npb25faW5mbyAqKWxkYl9nZXRfb3Bh
cXVlKAotIAkJbGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksCi0gCQlEU0RCX1NFU1NJT05fSU5G
Tyk7Ci1kaWZmIC0tZ2l0IGEvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRf
YnVpbGRfc2VydmVyIGIvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVp
bGRfc2VydmVyCi1pbmRleCA4MDBlZDI5NTRjNC4uNzU4MmI2NGE5MzggMTAwNjQ0Ci0tLS0gYS9z
b3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvd3NjcmlwdF9idWlsZF9zZXJ2ZXIKLSsrKyBi
L3NvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy93c2NyaXB0X2J1aWxkX3NlcnZlcgotQEAg
LTE4NSw3ICsxODUsNyBAQCBibGQuU0FNQkFfTU9EVUxFKCdsZGJfcm9vdGRzZScsCi0gCWluaXRf
ZnVuY3Rpb249J2xkYl9yb290ZHNlX21vZHVsZV9pbml0JywKLSAJbW9kdWxlX2luaXRfbmFtZT0n
bGRiX2luaXRfbW9kdWxlJywKLSAJaW50ZXJuYWxfbW9kdWxlPUZhbHNlLAotLQlkZXBzPSd0YWxs
b2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5IERTREJfTU9EVUxFX0hFTFBFUlMgUlBD
X05EUl9JUlBDJwotKwlkZXBzPSd0YWxsb2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5
IERTREJfTU9EVUxFX0hFTFBFUlMgRFNEQl9NT0RVTEVfSEVMUEVSU19BVURJVCBSUENfTkRSX0lS
UEMnCi0gCSkKLSAKLSAKLS0tIAotMi40My4wCi0KLQotRnJvbSBlM2MxNWQ5MzY1ZmNlYzAzODlj
OWIzYWM3YmMzODg3MTg1NGM2NGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3Rl
ZmFuIE1ldHptYWNoZXIgPG1ldHplQHNhbWJhLm9yZz4KLURhdGU6IFdlZCwgMjQgSnVuIDIwMjYg
MTQ6NDI6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yM10gQ1ZFLTIwMjYtNTgyMjIgczQ6
bGRhcF9zZXJ2ZXI6IGRvbid0IGFsbG93IHVudHJ1c3RlZAotIGNvbXBhcmUgcmVxdWVzdHMgZm9y
IGNvbmZpZGVudGlhbCBhdHRyaWJ1dGVzCi0KLVRoaXMgbWVhbnMgd2UgYXBwbHkgYWNsIGNoZWNr
cyBhZ2FpbnN0IHRoZSBzZWFyY2ggZmlsdGVyIHNpbWlsYXIKLXRvIG5vcm1hbCBsZGIgc2VhcmNo
ZXMuCi0KLUJVRzogaHR0cHM6Ly9idWd6aWxsYS5zYW1iYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTQ4Ci0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBNZXR6bWFjaGVyIDxtZXR6ZUBzYW1iYS5vcmc+
Ci1SZXZpZXdlZC1ieTogRG91Z2xhcyBCYWduYWxsIDxkb3VnbGFzLmJhZ25hbGxAY2F0YWx5c3Qu
bmV0Lm56PgotLS0tCi0gc291cmNlNC9sZGFwX3NlcnZlci9sZGFwX2JhY2tlbmQuYyB8IDI3ICsr
KysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25z
KCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlNC9sZGFwX3NlcnZlci9s
ZGFwX2JhY2tlbmQuYyBiL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMKLWluZGV4
IDk4NmJjMWRiOTQxLi40NjAzOTM1ZjBiMCAxMDA2NDQKLS0tLSBhL3NvdXJjZTQvbGRhcF9zZXJ2
ZXIvbGRhcF9iYWNrZW5kLmMKLSsrKyBiL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5k
LmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgInNhbWJhL3NlcnZpY2Vfc3RyZWFtLmgi
Ci0gI2luY2x1ZGUgImRzZGIvZ21zYS91dGlsLmgiCi0gI2luY2x1ZGUgImRzZGIvc2FtZGIvc2Ft
ZGIuaCIKLSsjaW5jbHVkZSAiZHNkYi9jb21tb24vdXRpbC5oIgotICNpbmNsdWRlIDxsZGJfZXJy
b3JzLmg+Ci0gI2luY2x1ZGUgPGxkYl9tb2R1bGUuaD4KLSAjaW5jbHVkZSAibGRiX3dyYXAuaCIK
LUBAIC0xNDQ5LDYgKzE0NTAsNyBAQCBzdGF0aWMgTlRTVEFUVVMgbGRhcHNydl9Db21wYXJlUmVx
dWVzdChzdHJ1Y3QgbGRhcHNydl9jYWxsICpjYWxsKQotIAlzdHJ1Y3QgbGRiX2RuICpkbjsKLSAJ
Y29uc3QgY2hhciAqYXR0cnNbMV07Ci0gCWNvbnN0IGNoYXIgKmVycnN0ciA9IE5VTEw7Ci0rCWNv
bnN0IGNoYXIgKnZhbHVlID0gTlVMTDsKLSAJY29uc3QgY2hhciAqZmlsdGVyID0gTlVMTDsKLSAJ
aW50IHJlc3VsdCA9IExEQVBfU1VDQ0VTUzsKLSAJaW50IGxkYl9yZXQ7Ci1AQCAtMTQ2MSwyMSAr
MTQ2MywzMSBAQCBzdGF0aWMgTlRTVEFUVVMgbGRhcHNydl9Db21wYXJlUmVxdWVzdChzdHJ1Y3Qg
bGRhcHNydl9jYWxsICpjYWxsKQotIAlkbiA9IGxkYl9kbl9uZXcobG9jYWxfY3R4LCBzYW1kYiwg
cmVxLT5kbik7Ci0gCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShkbik7Ci0gCi0rCWNvbXBhcmVf
ciA9IGxkYXBzcnZfaW5pdF9yZXBseShjYWxsLCBMREFQX1RBR19Db21wYXJlUmVzcG9uc2UpOwot
KwlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkoY29tcGFyZV9yKTsKLSsKLSAJREJHX0RFQlVHKCJk
bjogWyVzXVxuIiwgcmVxLT5kbik7Ci0tCWZpbHRlciA9IHRhbGxvY19hc3ByaW50Zihsb2NhbF9j
dHgsICIoJXM9JSpzKSIsIHJlcS0+YXR0cmlidXRlLAotLQkJCQkgKGludClyZXEtPnZhbHVlLmxl
bmd0aCwgcmVxLT52YWx1ZS5kYXRhKTsKLSsKLSsJaWYgKCFsZGJfdmFsaWRfYXR0cl9uYW1lKHJl
cS0+YXR0cmlidXRlKSkgewotKwkJcmVzdWx0ID0gTERBUF9JTlZBTElEX0FUVFJJQlVURV9TWU5U
QVg7Ci0rCQllcnJzdHIgPSAiSW52YWxpZCBDb21wYXJlIGF0dHJpYnV0ZSBuYW1lIjsKLSsJCWdv
dG8gcmVwbHk7Ci0rCX0KLSsJdmFsdWUgPSBsZGJfYmluYXJ5X2VuY29kZShsb2NhbF9jdHgsIHJl
cS0+dmFsdWUpOwotKwlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkodmFsdWUpOwotKwotKwlmaWx0
ZXIgPSB0YWxsb2NfYXNwcmludGYobG9jYWxfY3R4LCAiJXM9JXMiLCByZXEtPmF0dHJpYnV0ZSwg
dmFsdWUpOwotIAlOVF9TVEFUVVNfSEFWRV9OT19NRU1PUlkoZmlsdGVyKTsKLSAKLSAJREJHX0RF
QlVHKCJhdHRyaWJ1dGU6IFslc11cbiIsIGZpbHRlcik7Ci0gCi0gCWF0dHJzWzBdID0gTlVMTDsK
LSAKLS0JY29tcGFyZV9yID0gbGRhcHNydl9pbml0X3JlcGx5KGNhbGwsIExEQVBfVEFHX0NvbXBh
cmVSZXNwb25zZSk7Ci0tCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShjb21wYXJlX3IpOwotLQot
IAlpZiAocmVzdWx0ID09IExEQVBfU1VDQ0VTUykgewotLQkJbGRiX3JldCA9IGxkYl9zZWFyY2go
c2FtZGIsIGxvY2FsX2N0eCwgJnJlcywKLS0JCQkJICAgICBkbiwgTERCX1NDT1BFX0JBU0UsIGF0
dHJzLCAiJXMiLCBmaWx0ZXIpOwotKwkJbGRiX3JldCA9IGRzZGJfc2VhcmNoKHNhbWRiLCBsb2Nh
bF9jdHgsICZyZXMsCi0rCQkJCSAgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMsCi0rCQkJ
CSAgICAgIERTREJfTUFSS19SRVFfVU5UUlVTVEVELAotKwkJCQkgICAgICAiJXMiLCBmaWx0ZXIp
OwotIAkJaWYgKGxkYl9yZXQgIT0gTERCX1NVQ0NFU1MpIHsKLSAJCQlyZXN1bHQgPSBtYXBfbGRi
X2Vycm9yKGxvY2FsX2N0eCwgbGRiX3JldCwKLSAJCQkJCSAgICAgICBsZGJfZXJyc3RyaW5nKHNh
bWRiKSwgJmVycnN0cik7Ci1AQCAtMTQ5Nyw2ICsxNTA5LDcgQEAgc3RhdGljIE5UU1RBVFVTIGxk
YXBzcnZfQ29tcGFyZVJlcXVlc3Qoc3RydWN0IGxkYXBzcnZfY2FsbCAqY2FsbCkKLSAJCX0KLSAJ
fQotIAotK3JlcGx5OgotIAljb21wYXJlID0gJmNvbXBhcmVfci0+bXNnLT5yLkNvbXBhcmVSZXNw
b25zZTsKLSAJY29tcGFyZS0+ZG4gPSBOVUxMOwotIAljb21wYXJlLT5yZXN1bHRjb2RlID0gcmVz
dWx0OwotLS0gCi0yLjQzLjAKLQpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2RlYmlhbi9w
YXRjaGVzL3NlcmllcyBzYW1iYS00LjIyLjExK2Rmc2cvZGViaWFuL3BhdGNoZXMvc2VyaWVzCi0t
LSBzYW1iYS00LjIyLjEwK2Rmc2cvZGViaWFuL3BhdGNoZXMvc2VyaWVzCTIwMjYtMDctMTkgMjA6
MzQ6MDAuMDAwMDAwMDAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvZGViaWFuL3BhdGNo
ZXMvc2VyaWVzCTIwMjYtMDctMjggMTU6MDA6MzMuMDAwMDAwMDAwICswMzAwCkBAIC0yMiw0ICsy
MiwzIEBACiBtZWFuaW5nZnVsLWVycm9yLWlmLW5vLXB5dGhvbjMtbWFya2Rvd24ucGF0Y2gKIGN0
ZGItdXNlLXJ1bi1pbnN0ZWFkLW9mLXZhci1ydW4ucGF0Y2gKIHJlcGxhY2UteHBnLXN0cmVycm9y
LnBhdGNoCi0yMDI2LWp1bC1zZWMtdXBkYXRlLWJ1Zy0xNjAzOS12NC0yMi1jb21iaW5lZC5wYXRj
aApkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL1ZFUlNJT04gc2FtYmEtNC4yMi4xMStkZnNn
L1ZFUlNJT04KLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9WRVJTSU9OCTIwMjYtMDUtMTUgMTY6NTE6
NDMuNDQzMDYwMjAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvVkVSU0lPTgkyMDI2LTA3
LTIxIDE4OjM3OjA0LjE3NTI3NTgwMCArMDMwMApAQCAtMjcsNyArMjcsNyBAQAogIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIFNBTUJBX1ZF
UlNJT05fTUFKT1I9NAogU0FNQkFfVkVSU0lPTl9NSU5PUj0yMgotU0FNQkFfVkVSU0lPTl9SRUxF
QVNFPTEwCitTQU1CQV9WRVJTSU9OX1JFTEVBU0U9MTEKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgSWYgYSBvZmZpY2lhbCByZWxl
YXNlIGhhcyBhIHNlcmlvdXMgYnVnICAgICAgICAgICAgICAjCmRpZmYgLU5ydSBzYW1iYS00LjIy
LjEwK2Rmc2cvV0hBVFNORVcudHh0IHNhbWJhLTQuMjIuMTErZGZzZy9XSEFUU05FVy50eHQKLS0t
IHNhbWJhLTQuMjIuMTArZGZzZy9XSEFUU05FVy50eHQJMjAyNi0wNS0xNSAxNjo1MTo0My40NDQw
NjAwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9XSEFUU05FVy50eHQJMjAyNi0wNy0y
MSAxODozNzowNC4xNzUyNzU4MDAgKzAzMDAKQEAgLTEsNCArMSwxMTIgQEAKICAgICAgICAgICAg
ICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAg
ICAgUmVsZWFzZSBOb3RlcyBmb3IgU2FtYmEgNC4yMi4xMQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSnVseSAyOCwgMjAyNgorICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKworCitUaGlzIGlzIGEgc2VjdXJpdHkgcmVsZWFzZSBpbiBvcmRlciB0
byBhZGRyZXNzIHRoZSBmb2xsb3dpbmcgZGVmZWN0czoKKworbyBDVkUtMjAyNi02OTQ5OiAgIFRT
SUcgcGFja2V0IHdpdGggbmFtZSBjb21wcmVzc2lvbiBjYW4gY3Jhc2ggRE5TCisKKyAgICAgICAg
ICAgICAgICAgICBJbmNvcnJlY3Qgc2l6ZSBjYWxjdWxhdGlvbnMgd2hlbiBhIFRTSUcgcmVjb3Jk
IGNvbnRhaW5zCisgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZCBuYW1lcyBjYW4gbGVhZCB0
byBhIGxhcmdlIG91dC1vZi1ib3VuZHMgd3JpdGUKKyAgICAgICAgICAgICAgICAgICBjYXVzaW5n
IHRoZSBzZXJ2ZXIgdG8gY3Jhc2guCisKKyAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy5z
YW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNjk0OS5odG1sCisKKworbyBDVkUtMjAy
Ni01ODIxNjogIEFuIGF1dGhlbnRpY2F0ZWQgdXNlciBjb3VsZCBwb3NzaWJseSBjcmFzaCBhIEtE
QyBwcm9jZXNzCisKKyAgICAgICAgICAgICAgICAgICBBIGtwYXNzd2QgcGFja2V0IHRoYXQgY29u
dGFpbnMgbWFsZm9ybWVkIEFTTi4xIG1pZ2h0IGNhdXNlCisgICAgICAgICAgICAgICAgICAgdGhl
IHNlcnZlciB0byBhY2Nlc3MgNiBieXRlcyBvZiB1bmFsbG9jYXRlZCBtZW1vcnkuIFRoaXMKKyAg
ICAgICAgICAgICAgICAgICBtZW1vcnkgaXMgbm90IGV4cG9zZWQgdG8gdGhlIHVzZXIsIGJ1dCBp
biBzb21lCisgICAgICAgICAgICAgICAgICAgY2lyY3Vtc3RhbmNlcyB0aGUgc2VydmVyIGNvdWxk
IGNyYXNoLgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cuc2FtYmEub3JnL3NhbWJh
L3NlY3VyaXR5L0NWRS0yMDI2LTU4MjE2Lmh0bWwKKworCitvIENWRS0yMDI2LTU4MjE4OiAgRE5T
IHNpZ25pbmcgRG9TIHZpYSBUS0VZIG5hbWUgY2FjaGUgZXhoYXVzdGlvbgorCisgICAgICAgICAg
ICAgICAgICAgQW4gdW5hdXRoZW50aWNhdGVkIHVzZXIgY2FuIHJlcGVhdGVkbHkgcmVnaXN0ZXIg
bmFtZXMgVEtFWQorICAgICAgICAgICAgICAgICAgIG5hbWVzLCB3aGljaCBmbG9vZHMgYSBjYWNo
ZSBjYXVzaW5nIGxlZ2l0aW1hdGUgVEtFWXMgdG8gYmUKKyAgICAgICAgICAgICAgICAgICBleHB1
bmdlZC4gVGhpcyBjYW4gcHJhY3RpY2FsbHkgYmxvY2sgdGhlIHVzZSBETlMgVFNJRworICAgICAg
ICAgICAgICAgICAgIHNpZ25pbmcuCisKKyAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy5z
YW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNTgyMTguaHRtbAorCisKK28gQ1ZFLTIw
MjYtNTgyMjE6ICBTYW1iYSBBRCBhdXRoZW50aWNhdGVkIExEQVAgYWNjZXNzIGRvbWFpbiB0YWtl
b3ZlcgorCisgICAgICAgICAgICAgICAgICAgU2FtYmEgQUQgbG93LXByaXZpbGVnZSBhdXRoZW50
aWNhdGVkIExEQVAgYWNjZXNzIGFsbG93cworICAgICAgICAgICAgICAgICAgIG1vZGlmaWNhdGlv
bnMgdG8gaW50ZXJuYWwgTERCIHNwZWNpYWwgRE5zLCB3aGljaCBwZXJtaXRzIGEKKyAgICAgICAg
ICAgICAgICAgICBkb21haW4gdGFrZW92ZXIuCisKKyAgICAgICAgICAgICAgICAgICBodHRwczov
L3d3dy5zYW1iYS5vcmcvc2FtYmEvc2VjdXJpdHkvQ1ZFLTIwMjYtNTgyMjEuaHRtbAorCisKK28g
Q1ZFLTIwMjYtNTgyMjI6ICBTYW1iYSBBRCBMREFQIENvbXBhcmUgZmlsdGVyIGluamVjdGlvbiBh
bmQgdHJ1c3RlZC1yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgY29uZnVzaW9uIGRpc2Nsb3Nl
IHByb3RlY3RlZCBhdHRyaWJ1dGVzCisKKyAgICAgICAgICAgICAgICAgICBBbiBvcmRpbmFyeSBh
dXRoZW50aWNhdGVkIGRvbWFpbiB1c2VyIGNhbiBieXBhc3MgYWNjZXNzCisgICAgICAgICAgICAg
ICAgICAgY2hlY2tzIGFuZCBxdWVyeSBjb25maWRlbnRpYWwgQWN0aXZlIERpcmVjdG9yeSBhdHRy
aWJ1dGVzCisgICAgICAgICAgICAgICAgICAgKHN1Y2ggYXMgS0RTIHJvb3Qga2V5cykgdmlhIExE
QVAgQ29tcGFyZSByZXF1ZXN0cy4gRHVlIHRvIGEKKyAgICAgICAgICAgICAgICAgICBmaWx0ZXIg
aW5qZWN0aW9uIGZsYXcgYW5kIHRydXN0ZWQgZXhlY3V0aW9uIGNvbnRleHQsIHRoZQorICAgICAg
ICAgICAgICAgICAgIExEQVAgQ29tcGFyZSBvcGVyYXRpb24gY2FuIGJlIHR1cm5lZCBpbnRvIGEK
KyAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQtYXR0cmlidXRlIGRpc2Nsb3N1cmUgb3JhY2xl
LgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cuc2FtYmEub3JnL3NhbWJhL3NlY3Vy
aXR5L0NWRS0yMDI2LTU4MjIyLmh0bWwKKworCitvIENWRS0yMDI2LTU4MjI0ICAgVGhlIENUREIg
cHJvdG9jb2wgaGFzIGJvdW5kcyBjaGVja2luZyBpc3N1ZXMKKworICAgICAgICAgICAgICAgICAg
IENUREIgZmFpbHMgdG8gZG8gaW50ZWdyaXR5IGNoZWNraW5nIG9mIHJlY2VpdmVkIHBhY2tldHMu
CisgICAgICAgICAgICAgICAgICAgVGhpcyBpbmNsdWRlcyBmYWlsdXJlIHRvIGNoZWNrIGZpZWxk
IGxlbmd0aHMgYWdhaW5zdCBwYWNrZXQKKyAgICAgICAgICAgICAgICAgICBsZW5ndGhzIHdoZW4g
dW5tYXJzaGFsbGluZyBwYWNrZXRzLgorCisgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly93d3cu
c2FtYmEub3JnL3NhbWJhL3NlY3VyaXR5L0NWRS0yMDI2LTU4MjI0Lmh0bWwKKworCitDaGFuZ2Vz
IHNpbmNlIDQuMjIuMTAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvICBEb3VnbGFzIEJhZ25h
bGwgPGRvdWdsYXMuYmFnbmFsbEBjYXRhbHlzdC5uZXQubno+CisgICAqIEJVRyAxNjA4NzogQ1ZF
LTIwMjYtNTgyMTYKKworbyAgVm9sa2VyIExlbmRlY2tlIDx2bEBzYW1iYS5vcmc+CisgICAqIEJV
RyAxNjExNTogQ1ZFLTIwMjYtNTgyMTgKKworbyAgU3RlZmFuIE1ldHptYWNoZXIgPG1ldHplQHNh
bWJhLm9yZz4KKyAgICogQlVHIDE2MDgzOiBDVkUtMjAyNi02OTQ5CisgICAqIEJVRyAxNjE0Nzog
Q1ZFLTIwMjYtNTgyMjEKKyAgICogQlVHIDE2MTQ4OiBDVkUtMjAyNi01ODIyMgorCitvICBNYXJ0
aW4gU2Nod2Vua2UgPG1zY2h3ZW5rZUBkZG4uY29tPgorICAgKiBCVUcgMTYwODU6IENWRS0yMDI2
LTU4MjI0CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworUmVwb3J0
aW5nIGJ1Z3MgJiBEZXZlbG9wbWVudCBEaXNjdXNzaW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworUGxlYXNlIGRpc2N1c3MgdGhpcyByZWxlYXNlIG9uIHRoZSBz
YW1iYS10ZWNobmljYWwgbWFpbGluZyBsaXN0IG9yIGJ5Citqb2luaW5nIHRoZSAjc2FtYmEtdGVj
aG5pY2FsOm1hdHJpeC5vcmcgbWF0cml4IHJvb20sIG9yCisjc2FtYmEtdGVjaG5pY2FsIElSQyBj
aGFubmVsIG9uIGlyYy5saWJlcmEuY2hhdC4KKworSWYgeW91IGRvIHJlcG9ydCBwcm9ibGVtcyB0
aGVuIHBsZWFzZSB0cnkgdG8gc2VuZCBoaWdoIHF1YWxpdHkKK2ZlZWRiYWNrLiBJZiB5b3UgZG9u
J3QgcHJvdmlkZSB2aXRhbCBpbmZvcm1hdGlvbiB0byBoZWxwIHVzIHRyYWNrIGRvd24KK3RoZSBw
cm9ibGVtIHRoZW4geW91IHdpbGwgcHJvYmFibHkgYmUgaWdub3JlZC4gIEFsbCBidWcgcmVwb3J0
cyBzaG91bGQKK2JlIGZpbGVkIHVuZGVyIHRoZSBTYW1iYSA0LjEgYW5kIG5ld2VyIHByb2R1Y3Qg
aW4gdGhlIHByb2plY3QncyBCdWd6aWxsYQorZGF0YWJhc2UgKGh0dHBzOi8vYnVnemlsbGEuc2Ft
YmEub3JnLykuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPT0gT3VyIENvZGUsIE91ciBCdWdzLCBPdXIg
UmVzcG9uc2liaWxpdHkuCis9PSBUaGUgU2FtYmEgVGVhbQorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1Jl
bGVhc2Ugbm90ZXMgZm9yIG9sZGVyIHJlbGVhc2VzIGZvbGxvdzoKKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcyBmb3Ig
U2FtYmEgNC4yMi4xMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heSAyNiwgMjAyNgog
ICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEy
MCw4ICsyMjgsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKLVJlbGVhc2Ugbm90ZXMgZm9yIG9sZGVy
IHJlbGVhc2VzIGZvbGxvdzoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciBTYW1iYSA0
LjIyLjkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcmlsIDA5LCAyMDI2CmRpZmYgLU5y
dSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9jb21tb24vY3RkYl9pby5jIHNhbWJhLTQuMjIuMTEr
ZGZzZy9jdGRiL2NvbW1vbi9jdGRiX2lvLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2Nv
bW1vbi9jdGRiX2lvLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My41ODczMTU4MDAgKzAzMDAKKysrIHNh
bWJhLTQuMjIuMTErZGZzZy9jdGRiL2NvbW1vbi9jdGRiX2lvLmMJMjAyNi0wNy0yMSAxODozNzow
NC4xNzUyNzU4MDAgKzAzMDAKQEAgLTExNSw3ICsxMTUsMjUgQEAKIAkJcmV0dXJuOwogCX0KIAot
CS8qIEV4dHJhY3QgY29tcGxldGUgcGFja2V0ICovCisJLyoKKwkgKiBFeHRyYWN0IGNvbXBsZXRl
IHBhY2tldAorCSAqCisJICogWWVzLCB0aGlzIGFsbG93cyBhbiBvdXQtb2YtbWVtb3J5IGRlbmlh
bCBvZiBzZXJ2aWNlIChEb1MpCisJICogYXR0YWNrIGlmIGEgbnVtYmVyIG9mIHBhY2tldHMgYXJl
IHJlY2VpdmVkIHdpdGgKKwkgKiB1bnJlYXNvbmFibGUgcGFja2V0IHNpemVzLCBub3RpbmcgdGhh
dCB0aGUgbWF4aW11bSBwYWNrZXQKKwkgKiBzaXplIGlzIH40R0IuICBUaGUgQ1REQiBwcm90b2Nv
bCB3YXMgbm90IGRlc2lnbmVkIHdpdGggYQorCSAqIG1heGltdW0gcGFja2V0IHNpemUgaW4gbWlu
ZCwgc28gQ1REQiBtYXkgc2VuZCB2ZXJ5IGxhcmdlCisJICogdmFsaWQgcGFja2V0cy4gIFRoaXMg
bWVhbnMgdGhhdCBpbXBvc2luZyBhbiBhcmJpdHJhcnkgbGltaXQKKwkgKiBvbiBpbmNvbWluZyBw
YWNrZXRzIGlzIG5vdCByZWFzb25hYmxlLiAgQXJndW1lbnRzIHRoYXQKKwkgKiBoZWFkZXIgZmll
bGRzLCBzdWNoIGFzIG1hZ2ljIGFuZC9vciB2ZXJzaW9uLCBzaG91bGQgYmUKKwkgKiB2YWxpZGF0
ZWQgYmVmb3JlIGFsbG9jYXRpbmcgYSBwYWNrZXQgYnVmZmVyIGFyZSBzcHVyaW91cworCSAqIGZy
b20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSBiZWNhdXNlIGFuIGF0dGFja2VyIGF0dGVtcHRpbmcK
KwkgKiBEb1MgY2FuIHNlbmQgcGFja2V0cyB3aXRoIHZhbGlkIGhlYWRlcnMuICBUaGUgcHJpdmF0
ZQorCSAqIG5ldHdvcmsgYW5kIGN0ZGJkIHNvY2tldCBzaG91bGQgYmUgc2VjdXJlZCBhZ2FpbnN0
CisJICogdW50cnVzdGVkIGFjY2Vzcywgc28gcmVwb3J0cyB0aGF0IHRoaXMgcG9zc2libGUgRG9T
IHZlY3RvcgorCSAqIHJlcHJlc2VudHMgYSBzZWN1cml0eSBpc3N1ZSB3aWxsIGJlIGlnbm9yZWQu
ICBTZWUgdGhlCisJICogIlByaXZhdGUgYWRkcmVzc2VzIiBzZWN0aW9uIGluIGN0ZGIoNykgZm9y
IG1vcmUgZGV0YWlscy4KKwkgKi8KIAlkYXRhID0gdGFsbG9jX21lbWR1cChxdWV1ZS0+ZGF0YV9w
b29sLAogCQkJICAgICBxdWV1ZS0+YnVmZmVyLmRhdGEgKyBxdWV1ZS0+YnVmZmVyLm9mZnNldCwK
IAkJCSAgICAgcGt0X3NpemUpOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvY29t
bW9uL3BrdF9yZWFkLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvY29tbW9uL3BrdF9yZWFkLmMK
LS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2NvbW1vbi9wa3RfcmVhZC5jCTIwMjUtMDEtMzAg
MTY6NTc6NDMuNTg4MzE1NzAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9jb21t
b24vcGt0X3JlYWQuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3NTI3NTgwMCArMDMwMApAQCAtMTQ2
LDYgKzE0NiwyNSBAQAogCQlyZXR1cm47CiAJfQogCisJLyoKKwkgKiBBbGxvY2F0ZSBidWZmZXIg
Zm9yIGVudGlyZSBwYWNrZXQKKwkgKgorCSAqIFllcywgdGhpcyBhbGxvd3MgYW4gb3V0LW9mLW1l
bW9yeSBkZW5pYWwgb2Ygc2VydmljZSAoRG9TKQorCSAqIGF0dGFjayBpZiBhIG51bWJlciBvZiBw
YWNrZXRzIGFyZSByZWNlaXZlZCB3aXRoCisJICogdW5yZWFzb25hYmxlIHBhY2tldCBzaXplcywg
bm90aW5nIHRoYXQgdGhlIG1heGltdW0gcGFja2V0CisJICogc2l6ZSBpcyB+NEdCLiAgVGhlIENU
REIgcHJvdG9jb2wgd2FzIG5vdCBkZXNpZ25lZCB3aXRoIGEKKwkgKiBtYXhpbXVtIHBhY2tldCBz
aXplIGluIG1pbmQsIHNvIENUREIgbWF5IHNlbmQgdmVyeSBsYXJnZQorCSAqIHZhbGlkIHBhY2tl
dHMuICBUaGlzIG1lYW5zIHRoYXQgaW1wb3NpbmcgYW4gYXJiaXRyYXJ5IGxpbWl0CisJICogb24g
aW5jb21pbmcgcGFja2V0cyBpcyBub3QgcmVhc29uYWJsZS4gIEFyZ3VtZW50cyB0aGF0CisJICog
aGVhZGVyIGZpZWxkcywgc3VjaCBhcyBtYWdpYyBhbmQvb3IgdmVyc2lvbiwgc2hvdWxkIGJlCisJ
ICogdmFsaWRhdGVkIGJlZm9yZSBhbGxvY2F0aW5nIGEgcGFja2V0IGJ1ZmZlciBhcmUgc3B1cmlv
dXMKKwkgKiBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUgYmVjYXVzZSBhbiBhdHRhY2tlciBh
dHRlbXB0aW5nCisJICogRG9TIGNhbiBzZW5kIHBhY2tldHMgd2l0aCB2YWxpZCBoZWFkZXJzLiAg
VGhlIHByaXZhdGUKKwkgKiBuZXR3b3JrIGFuZCBjdGRiZCBzb2NrZXQgc2hvdWxkIGJlIHNlY3Vy
ZWQgYWdhaW5zdAorCSAqIHVudHJ1c3RlZCBhY2Nlc3MsIHNvIHJlcG9ydHMgdGhhdCB0aGlzIHBv
c3NpYmxlIERvUyB2ZWN0b3IKKwkgKiByZXByZXNlbnRzIGEgc2VjdXJpdHkgaXNzdWUgd2lsbCBi
ZSBpZ25vcmVkLiAgU2VlIHRoZQorCSAqICJQcml2YXRlIGFkZHJlc3NlcyIgc2VjdGlvbiBpbiBj
dGRiKDcpIGZvciBtb3JlIGRldGFpbHMuCisJICovCiAJaWYgKHN0YXRlLT51c2VfZml4ZWQpIHsK
IAkJLyogc3dpdGNoIHRvIGR5bmFtaWMgYnVmZmVyICovCiAJCXRtcCA9IHRhbGxvY19hcnJheShz
dGF0ZSwgdWludDhfdCwgc3RhdGUtPnRvdGFsICsgbW9yZSk7CmRpZmYgLU5ydSBzYW1iYS00LjIy
LjEwK2Rmc2cvY3RkYi9jb21tb24vc29ja19kYWVtb24uYyBzYW1iYS00LjIyLjExK2Rmc2cvY3Rk
Yi9jb21tb24vc29ja19kYWVtb24uYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvY29tbW9u
L3NvY2tfZGFlbW9uLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My41OTAzMTU4MDAgKzAzMDAKKysrIHNh
bWJhLTQuMjIuMTErZGZzZy9jdGRiL2NvbW1vbi9zb2NrX2RhZW1vbi5jCTIwMjYtMDctMjEgMTg6
Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC0yMDQsNiArMjA0LDggQEAKIHN0YXRpYyBpbnQgc29j
a2V0X3NldHVwKGNvbnN0IGNoYXIgKnNvY2twYXRoLCBib29sIHJlbW92ZV9iZWZvcmVfdXNlKQog
ewogCXN0cnVjdCBzb2NrYWRkcl91biBhZGRyOworCWNvbnN0IGNoYXIgKnQ7CisJYm9vbCB0ZXN0
X21vZGVfZW5hYmxlZCA9IGZhbHNlOwogCXNpemVfdCBsZW47CiAJaW50IHJldCwgZmQ7CiAKQEAg
LTIzOSw2ICsyNDEsMzAgQEAKIAkJY2xvc2UoZmQpOwogCQlyZXR1cm4gLTE7CiAJfQorCisJdCA9
IGdldGVudigiQ1REQl9URVNUX01PREUiKTsKKwlpZiAodCAhPSBOVUxMKSB7CisJCXRlc3RfbW9k
ZV9lbmFibGVkID0gdHJ1ZTsKKwl9CisKKwlpZiAoIXRlc3RfbW9kZV9lbmFibGVkKSB7CisJCS8q
IEJlaGF2aW91ciBvZiBmY2hvd24oMikgaXMgdW5kZWZpbmVkIG9uIHNvY2tldHMgKi8KKwkJcmV0
ID0gY2hvd24oc29ja3BhdGgsIGdldGV1aWQoKSwgZ2V0ZWdpZCgpKTsKKwkJaWYgKHJldCAhPSAw
KSB7CisJCQlEX0VSUigiVW5hYmxlIHRvIHNlY3VyZSAoY2hvd24pIHNvY2tldCAnJXMnXG4iLAor
CQkJICAgICAgc29ja3BhdGgpOworCQkJY2xvc2UoZmQpOworCQkJcmV0dXJuIC0xOworCQl9CisJ
fQorCisJLyogQmVoYXZpb3VyIG9mIGZjaG1vZCgyKSBpcyB1bmRlZmluZWQgb24gc29ja2V0cyAq
LworCXJldCA9IGNobW9kKHNvY2twYXRoLCAwNzAwKTsKKwlpZiAocmV0ICE9IDApIHsKKwkJRF9F
UlIoIlVuYWJsZSB0byBzZWN1cmUgKGNobW9kKSBzb2NrZXQgJyVzJ1xuIiwgc29ja3BhdGgpOwor
CQljbG9zZShmZCk7CisJCXJldHVybiAtMTsKKwl9CiAKIAlyZXQgPSBsaXN0ZW4oZmQsIDEwKTsK
IAlpZiAocmV0ICE9IDApIHsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL2RvYy9j
dGRiLjcueG1sIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL2RvYy9jdGRiLjcueG1sCi0tLSBzYW1i
YS00LjIyLjEwK2Rmc2cvY3RkYi9kb2MvY3RkYi43LnhtbAkyMDI1LTAyLTEyIDE2OjI0OjIwLjM0
MzE0MzUwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvZG9jL2N0ZGIuNy54bWwJ
MjAyNi0wNy0yMSAxODozNzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTI0MiwxNCArMjQyLDI1IEBA
CiAJc2VydmljZXMgcHJvdmlkZWQgYnkgdGhlIGNsdXN0ZXIuCiAgICAgICA8L3BhcmE+CiAgICAg
ICA8cGFyYT4KLSAgICAgICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB0aGUgcHJp
dmF0ZSBhZGRyZXNzZXMgYXJlCi0gICAgICAgIGNvbmZpZ3VyZWQgb24gYSBwcml2YXRlIG5ldHdv
cmsgdGhhdCBpcyBzZXBhcmF0ZSBmcm9tIGNsaWVudAotICAgICAgICBuZXR3b3Jrcy4gIFRoaXMg
aXMgYmVjYXVzZSB0aGUgQ1REQiBwcm90b2NvbCBpcyBib3RoCi0gICAgICAgIHVuYXV0aGVudGlj
YXRlZCBhbmQgdW5lbmNyeXB0ZWQuICBJZiBjbGllbnRzIHNoYXJlIHRoZSBwcml2YXRlCi0gICAg
ICAgIG5ldHdvcmsgdGhlbiBzdGVwcyBuZWVkIHRvIGJlIHRha2VuIHRvIHN0b3AgaW5qZWN0aW9u
IG9mCi0gICAgICAgIHBhY2tldHMgdG8gcmVsZXZhbnQgcG9ydHMgb24gdGhlIHByaXZhdGUgYWRk
cmVzc2VzLiAgSXQgaXMKLSAgICAgICAgYWxzbyBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRy
YWZmaWMgYmV0d2VlbiBub2RlcyBjb3VsZAotICAgICAgICBsZWFrIHNlbnNpdGl2ZSBpbmZvcm1h
dGlvbiBpZiBpdCBjYW4gYmUgaW50ZXJjZXB0ZWQuCisJSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5k
ZWQgdGhhdCB0aGUgcHJpdmF0ZSBhZGRyZXNzZXMgYXJlCisJY29uZmlndXJlZCBvbiBhIHByaXZh
dGUgbmV0d29yayB0aGF0IGlzIHNlcGFyYXRlIGZyb20gY2xpZW50CisJbmV0d29ya3MuICBUaGlz
IGlzIGJlY2F1c2UgPGVtcGhhc2lzPnRoZSBDVERCIHByb3RvY29sIGlzIGJvdGgKKwl1bmF1dGhl
bnRpY2F0ZWQgYW5kIHVuZW5jcnlwdGVkPC9lbXBoYXNpcz4uICBJZiBjbGllbnRzIHNoYXJlCisJ
dGhlIHByaXZhdGUgbmV0d29yayB0aGVuIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW4gdG8gc3RvcAor
CWluamVjdGlvbiBvZiBwYWNrZXRzIHRvIHJlbGV2YW50IHBvcnRzIG9uIHRoZSBwcml2YXRlCisJ
YWRkcmVzc2VzLiAgSXQgaXMgYWxzbyBsaWtlbHkgdGhhdCBDVERCIHByb3RvY29sIHRyYWZmaWMK
KwliZXR3ZWVuIG5vZGVzIGNvdWxkIGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGlmIGl0IGNh
biBiZQorCWludGVyY2VwdGVkIG9yIG1hbmlwdWxhdGVkLgorICAgICAgPC9wYXJhPgorICAgICAg
PHBhcmE+CisJSW4gc3VtbWFyeSwgdGhlIHByaXZhdGUgbmV0d29yayBzaG91bGQgbm90IGJlIGFj
Y2Vzc2libGUgYnkKKwl1bnRydXN0ZWQgc291cmNlcy4gIFdlIGNhbid0IHNheSAibXVzdCBub3Qi
IGJlY2F1c2UgdGhpcyBjYW4ndAorCWJlIGVuZm9yY2VkIGJ5IENUREIsIHNvIHdlIGNhbiBvbmx5
IG1ha2UgYSBzdHJvbmcKKwlyZWNvbW1lbmRhdGlvbi4gSG93ZXZlciwgZm9yIHRoaXMgcmVhc29u
LCBmdXR1cmUgYnVncyBpbiB0aGUKKwlDVERCIHByb3RvY29sIHVzZWQgb3ZlciB0aGUgcHJpdmF0
ZSBuZXR3b3JrIHdpbGwgYmUgZml4ZWQgYXMKKwlyZWd1bGFyIGJ1Z3Mgd2l0aG91dCBmb2xsb3dp
bmcgdGhlIFNhbWJhIHNlY3VyaXR5IHByb2Nlc3MuCisJVGhlIHNhbWUgaXMgdHJ1ZSBvZiBsb2Nh
bCBDVERCIHByb3RvY29scyB1c2VkIGZvciBVbml4IGRvbWFpbgorCXNvY2tldCBhbmQgb3RoZXIg
Y29tbXVuaWNhdGlvbi4KICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+CmRpZmYgLU5ydSBz
YW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9wcm90b2NvbC9wcm90b2NvbF9iYXNpYy5jIHNhbWJhLTQu
MjIuMTErZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMKLS0tIHNhbWJhLTQuMjIu
MTArZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX2Jhc2ljLmMJMjAyNS0wMS0zMCAxNjo1Nzo0
My42MDMzMTU4MDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL3Byb3RvY29sL3By
b3RvY29sX2Jhc2ljLmMJMjAyNi0wNy0yMSAxODozNzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTI0
Nyw3ICsyNDcsOCBAQAogaW50IGN0ZGJfc3RyaW5nX3B1bGwodWludDhfdCAqYnVmLCBzaXplX3Qg
YnVmbGVuLCBUQUxMT0NfQ1RYICptZW1fY3R4LAogCQkgICAgIGNvbnN0IGNoYXIgKipvdXQsIHNp
emVfdCAqbnB1bGwpCiB7Ci0JY29uc3QgY2hhciAqc3RyOworCWNvbnN0IGNoYXIgKnN0ciA9IE5V
TEw7CisJc2l6ZV90IGxlbiA9IDA7CiAKIAlpZiAoYnVmbGVuID4gVUlOVDMyX01BWCkgewogCQly
ZXR1cm4gRU1TR1NJWkU7CkBAIC0yNjUsNyArMjY2LDE0IEBACiAJfQogCiAJKm91dCA9IHN0cjsK
LQkqbnB1bGwgPSBjdGRiX3N0cmluZ19sZW4oJnN0cik7CisJLyoKKwkgKiBBdm9pZCBjbGFpbWlu
ZyB0byBoYXZlIGNvbnN1bWVkIG1vcmUgdGhhbiBidWZsZW4uCisJICogY3RkYl9zdHJpbmdfbGVu
KCkgcmV0dXJucyBidWZsZW4gKyAxIGlmIHRoZXJlIGlzIG5vCisJICogTlVMLXRlcm1pbmF0b3Ig
d2l0aGluIGJ1Zmxlbiwgc28gbm8gTlVMIHdhcyBhY3R1YWxseQorCSAqIGNvbnN1bWVkIChzbyBu
byArMSBuZWVkZWQpLgorCSAqLworCWxlbiA9IGN0ZGJfc3RyaW5nX2xlbigmc3RyKTsKKwkqbnB1
bGwgPSBNSU4oYnVmbGVuLCBsZW4pOwogCXJldHVybiAwOwogfQogCkBAIC0zMTEsNyArMzE5LDgg
QEAKIAlpZiAocmV0ICE9IDApIHsKIAkJcmV0dXJuIHJldDsKIAl9Ci0Jb2Zmc2V0ICs9IG5wOwor
CS8qIEFsd2F5cyBjb25zdW1lIHRoZSBzcGVjaWZpZWQgbnVtYmVyIGJ5dGVzICovCisJb2Zmc2V0
ICs9IHUzMjsKIAogCSpucHVsbCA9IG9mZnNldDsKIAlyZXR1cm4gMDsKZGlmZiAtTnJ1IHNhbWJh
LTQuMjIuMTArZGZzZy9jdGRiL3Byb3RvY29sL3Byb3RvY29sX3R5cGVzLmMgc2FtYmEtNC4yMi4x
MStkZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwotLS0gc2FtYmEtNC4yMi4xMCtk
ZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9jb2xfdHlwZXMuYwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYw
NTMxNjAwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvcHJvdG9jb2wvcHJvdG9j
b2xfdHlwZXMuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtODM4LDYg
KzgzOCw3IEBACiAJCQkgICAgICBzaXplX3QgKm5wdWxsKQogewogCXN0cnVjdCBjdGRiX3N0YXRp
c3RpY3NfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRiX3N0YXRpc3RpY3MgZHVtbXkgPSB7fTsKIAlz
aXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJaW50IHJldCwgaTsKIApAQCAtODYzLDYgKzg2NCwxMSBA
QAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJfc3Rh
dGlzdGljc19sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0la
RTsKKwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+c3RhdHMgPSB0YWxsb2NfYXJyYXkodmFsLCBz
dHJ1Y3QgY3RkYl9zdGF0aXN0aWNzLCB2YWwtPm51bSk7CiAJaWYgKHZhbC0+c3RhdHMgPT0gTlVM
TCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC05MjUsNiArOTMxLDcgQEAKIAlzdHJ1Y3QgY3RkYl92
bm5fbWFwICp2YWw7CiAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CisJdWlu
dDMyX3QgZHVtbXkgPSAwOwogCWludCByZXQ7CiAKIAl2YWwgPSB0YWxsb2MobWVtX2N0eCwgc3Ry
dWN0IGN0ZGJfdm5uX21hcCk7CkBAIC05NTAsNiArOTU3LDExIEBACiAJCWdvdG8gZG9uZTsKIAl9
CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+c2l6ZSAqIGN0ZGJfdWludDMyX2xlbigmZHVtbXkpID4g
YnVmbGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJfQor
CiAJdmFsLT5tYXAgPSB0YWxsb2NfYXJyYXkodmFsLCB1aW50MzJfdCwgdmFsLT5zaXplKTsKIAlp
ZiAodmFsLT5tYXAgPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC0xMDgyLDYgKzEwOTQs
NyBAQAogCQkgICAgICAgc3RydWN0IGN0ZGJfZGJpZF9tYXAgKipvdXQsIHNpemVfdCAqbnB1bGwp
CiB7CiAJc3RydWN0IGN0ZGJfZGJpZF9tYXAgKnZhbDsKKwlzdHJ1Y3QgY3RkYl9kYmlkIGR1bW15
ID0ge307CiAJc2l6ZV90IG9mZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CiAJaW50IHJldDsK
QEAgLTExMDIsNiArMTExNSwxMSBAQAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRf
dCl2YWwtPm51bSAqIGN0ZGJfZGJpZF9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgewor
CQlyZXQgPSBFTVNHU0laRTsKKwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+ZGJzID0gdGFsbG9j
X2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfZGJpZCwgdmFsLT5udW0pOwogCWlmICh2YWwtPmRicyA9
PSBOVUxMKSB7CiAJCXJldCA9IEVOT01FTTsKQEAgLTIzNjIsNiArMjM4MCw3IEBACiAJCQkgICAg
ICBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uX2xpc3QgKipvdXQsIHNpemVfdCAqbnB1bGwpCiB7CiAJ
c3RydWN0IGN0ZGJfY29ubmVjdGlvbl9saXN0ICp2YWw7CisJc3RydWN0IGN0ZGJfY29ubmVjdGlv
biBkdW1teSA9IHt9OwogCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWlu
dCByZXQ7CkBAIC0yMzgyLDYgKzI0MDEsMTEgQEAKIAkJZ290byBkb25lOwogCX0KIAorCWlmICgo
dWludDY0X3QpdmFsLT5udW0gKiBjdGRiX2Nvbm5lY3Rpb25fbGVuKCZkdW1teSkgPiBidWZsZW4g
LSBvZmZzZXQpIHsKKwkJcmV0ID0gRU1TR1NJWkU7CisJCWdvdG8gZmFpbDsKKwl9CisKIAl2YWwt
PmNvbm4gPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9jb25uZWN0aW9uLCB2YWwtPm51
bSk7CiAJaWYgKHZhbC0+Y29ubiA9PSBOVUxMKSB7CiAJCXJldCA9IEVOT01FTTsKQEAgLTMzOTks
NiArMzQyMyw3IEBACiAJCQkgICBzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAqKm91dCwgc2l6ZV90
ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl90aWNrbGVfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRi
X2Nvbm5lY3Rpb24gZHVtbXkgPSB7fTsKIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJdWludDMy
X3QgaTsKIAlpbnQgcmV0OwpAQCAtMzQyNiw2ICszNDUxLDExIEBACiAJCWdvdG8gZG9uZTsKIAl9
CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9jb25uZWN0aW9uX2xlbigmZHVtbXkp
ID4gYnVmbGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJ
fQorCiAJdmFsLT5jb25uID0gdGFsbG9jX2FycmF5KHZhbCwgc3RydWN0IGN0ZGJfY29ubmVjdGlv
biwgdmFsLT5udW0pOwogCWlmICh2YWwtPmNvbm4gPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07
CkBAIC0zNzQ0LDYgKzM3NzQsNyBAQAogCQkJICAgICBzdHJ1Y3QgY3RkYl9wdWJsaWNfaXBfbGlz
dCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9wdWJsaWNfaXBfbGlzdCAq
dmFsOworCXN0cnVjdCBjdGRiX3B1YmxpY19pcCBkdW1teSA9IHt9OwogCXNpemVfdCBvZmZzZXQg
PSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWludCByZXQ7CkBAIC0zNzY0LDYgKzM3OTUsMTEgQEAK
IAkJZ290byBkb25lOwogCX0KIAorCWlmICgodWludDY0X3QpdmFsLT5udW0gKiBjdGRiX3B1Ymxp
Y19pcF9sZW4oJmR1bW15KSA+IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0laRTsK
KwkJZ290byBmYWlsOworCX0KKwogCXZhbC0+aXAgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3Qg
Y3RkYl9wdWJsaWNfaXAsIHZhbC0+bnVtKTsKIAlpZiAodmFsLT5pcCA9PSBOVUxMKSB7CiAJCXJl
dCA9IEVOT01FTTsKQEAgLTM4OTksNiArMzkzNSw3IEBACiAJCSAgICAgICBzdHJ1Y3QgY3RkYl9u
b2RlX21hcCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9ub2RlX21hcCAq
dmFsOworCXN0cnVjdCBjdGRiX25vZGVfYW5kX2ZsYWdzIGR1bW15ID0ge307CiAJc2l6ZV90IG9m
ZnNldCA9IDAsIG5wOwogCXVpbnQzMl90IGk7CiAJaW50IHJldDsKQEAgLTM5MTksNiArMzk1Niwx
MiBAQAogCQlnb3RvIGRvbmU7CiAJfQogCisJaWYgKCh1aW50NjRfdCl2YWwtPm51bSAqIGN0ZGJf
bm9kZV9hbmRfZmxhZ3NfbGVuKCZkdW1teSkgPgorCSAgICBidWZsZW4gLSBvZmZzZXQpIHsKKwkJ
cmV0ID0gRU1TR1NJWkU7CisJCWdvdG8gZmFpbDsKKwl9CisKIAl2YWwtPm5vZGUgPSB0YWxsb2Nf
YXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9ub2RlX2FuZF9mbGFncywgdmFsLT5udW0pOwogCWlmICh2
YWwtPm5vZGUgPT0gTlVMTCkgewogCQlyZXQgPSBFTk9NRU07CkBAIC00MDk5LDYgKzQxNDIsNyBA
QAogCQkJICBzdHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqKm91dCwgc2l6ZV90ICpucHVsbCkKIHsK
IAlzdHJ1Y3QgY3RkYl9zY3JpcHRfbGlzdCAqdmFsOworCXN0cnVjdCBjdGRiX3NjcmlwdCBkdW1t
eSA9IHt9OwogCXNpemVfdCBvZmZzZXQgPSAwLCBucDsKIAl1aW50MzJfdCBpOwogCWludCByZXQ7
CkBAIC00MTMyLDYgKzQxNzYsMTIgQEAKIAkJZ290byBkb25lOwogCX0KIAorCWlmICgodWludDY0
X3QpdmFsLT5udW1fc2NyaXB0cyAqIGN0ZGJfc2NyaXB0X2xlbigmZHVtbXkpCisJICAgID4gYnVm
bGVuIC0gb2Zmc2V0KSB7CisJCXJldCA9IEVNU0dTSVpFOworCQlnb3RvIGZhaWw7CisJfQorCiAJ
dmFsLT5zY3JpcHQgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9zY3JpcHQsIHZhbC0+
bnVtX3NjcmlwdHMpOwogCWlmICh2YWwtPnNjcmlwdCA9PSBOVUxMKSB7CiAJCXJldCA9IEVOT01F
TTsKQEAgLTQzNzUsNiArNDQyNSw3IEBACiAJCQkgc3RydWN0IGN0ZGJfaWZhY2VfbGlzdCAqKm91
dCwgc2l6ZV90ICpucHVsbCkKIHsKIAlzdHJ1Y3QgY3RkYl9pZmFjZV9saXN0ICp2YWw7CisJc3Ry
dWN0IGN0ZGJfaWZhY2UgZHVtbXkgPSB7fTsKIAlzaXplX3Qgb2Zmc2V0ID0gMCwgbnA7CiAJdWlu
dDMyX3QgaTsKIAlpbnQgcmV0OwpAQCAtNDM5NSw2ICs0NDQ2LDExIEBACiAJCWdvdG8gZG9uZTsK
IAl9CiAKKwlpZiAoKHVpbnQ2NF90KXZhbC0+bnVtICogY3RkYl9pZmFjZV9sZW4oJmR1bW15KSA+
IGJ1ZmxlbiAtIG9mZnNldCkgeworCQlyZXQgPSBFTVNHU0laRTsKKwkJZ290byBmYWlsOworCX0K
KwogCXZhbC0+aWZhY2UgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9pZmFjZSwgdmFs
LT5udW0pOwogCWlmICh2YWwtPmlmYWNlID09IE5VTEwpIHsKIAkJcmV0ID0gRU5PTUVNOwpAQCAt
NTMyMiw2ICs1Mzc4LDEwIEBACiAKIAl2YWwtPm51bSA9IGJ1ZmxlbiAvIGN0ZGJfZ19sb2NrX2xl
bigmbG9jayk7CiAKKwkvKgorCSAqIE5vIGFycmF5IGNvdW50IHByZS1jaGVjayBuZWVkZWQgYmVj
YXVzZSB2YWwtPm51bSBpcworCSAqIGNhbGN1bGF0ZWQgZnJvbSBidWZsZW4KKwkgKi8KIAl2YWwt
PmxvY2sgPSB0YWxsb2NfYXJyYXkodmFsLCBzdHJ1Y3QgY3RkYl9nX2xvY2ssIHZhbC0+bnVtKTsK
IAlpZiAodmFsLT5sb2NrID09IE5VTEwpIHsKIAkJcmV0ID0gRU5PTUVNOwpkaWZmIC1OcnUgc2Ft
YmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY2FsbC5jIHNhbWJhLTQuMjIuMTErZGZz
Zy9jdGRiL3NlcnZlci9jdGRiX2NhbGwuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2Vy
dmVyL2N0ZGJfY2FsbC5jCTIwMjUtMDEtMzAgMTY6NTc6NDMuNjA2MzE1OTAwICswMzAwCisrKyBz
YW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9jYWxsLmMJMjAyNi0wNy0yMSAxODoz
NzowNC4xNzkyNzYwMDAgKzAzMDAKQEAgLTU4Myw2ICs1ODMsOSBAQAogdm9pZCBjdGRiX3JlcXVl
c3RfZG1hc3RlcihzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3QgY3RkYl9yZXFfaGVh
ZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX2RtYXN0ZXJfb2xkICpjID0gKHN0cnVjdCBj
dGRiX3JlcV9kbWFzdGVyX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX2RtYXN0ZXJfaGVhZGVyX2xl
biA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9kbWFzdGVyX29sZCwKKwkJCQkJCSBkYXRhKTsK
KwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGtleSwgZGF0YSwgZGF0
YTI7CiAJc3RydWN0IGN0ZGJfbHRkYl9oZWFkZXIgaGVhZGVyOwogCXN0cnVjdCBjdGRiX2RiX2Nv
bnRleHQgKmN0ZGJfZGI7CkBAIC01OTAsNiArNTkzLDEzIEBACiAJc2l6ZV90IGxlbjsKIAlpbnQg
cmV0OwogCisJaWYgKGJ1Zl9sZW4gPCByZXFfZG1hc3Rlcl9oZWFkZXJfbGVuIHx8CisJICAgIGMt
PmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFfZG1hc3Rlcl9oZWFkZXJfbGVuIHx8CisJICAgIGMtPmRh
dGFsZW4gPiBidWZfbGVuIC0gcmVxX2RtYXN0ZXJfaGVhZGVyX2xlbiAtIGMtPmtleWxlbikgewor
CQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm47CisJfQorCiAJa2V5
LmRwdHIgPSBjLT5kYXRhOwogCWtleS5kc2l6ZSA9IGMtPmtleWxlbjsKIAlkYXRhLmRwdHIgPSBj
LT5kYXRhICsgYy0+a2V5bGVuOwpAQCAtOTE3LDYgKzkyNyw4IEBACiB2b2lkIGN0ZGJfcmVxdWVz
dF9jYWxsKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIg
KmhkcikKIHsKIAlzdHJ1Y3QgY3RkYl9yZXFfY2FsbF9vbGQgKmMgPSAoc3RydWN0IGN0ZGJfcmVx
X2NhbGxfb2xkICopaGRyOworCXNpemVfdCByZXFfY2FsbF9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yo
c3RydWN0IGN0ZGJfcmVxX2NhbGxfb2xkLCBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+
bGVuZ3RoOwogCVREQl9EQVRBIGRhdGE7CiAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKnI7
CiAJaW50IHJldCwgbGVuOwpAQCAtOTI1LDYgKzkzNywxMyBAQAogCXN0cnVjdCBjdGRiX2RiX2Nv
bnRleHQgKmN0ZGJfZGI7CiAJaW50IHRtcF9jb3VudCwgYnVja2V0OwogCisJaWYgKGJ1Zl9sZW4g
PCByZXFfY2FsbF9oZWFkZXJfbGVuIHx8CisJICAgIGMtPmtleWxlbiA+IGJ1Zl9sZW4gLSByZXFf
Y2FsbF9oZWFkZXJfbGVuICB8fAorCSAgICBjLT5jYWxsZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFf
Y2FsbF9oZWFkZXJfbGVuIC0gYy0+a2V5bGVuKSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBh
Y2tldFxuIik7CisJCXJldHVybjsKKwl9CisKIAlpZiAoY3RkYi0+bWV0aG9kcyA9PSBOVUxMKSB7
CiAJCURFQlVHKERFQlVHX0lORk8sKF9fbG9jYXRpb25fXyAiIEZhaWxlZCBjdGRiX3JlcXVlc3Rf
Y2FsbC4gVHJhbnNwb3J0IGlzIERPV05cbiIpKTsKIAkJcmV0dXJuOwpAQCAtMTE5OSw4ICsxMjE4
LDE3IEBACiB2b2lkIGN0ZGJfcmVwbHlfY2FsbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBz
dHJ1Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9v
bGQgKmMgPSAoc3RydWN0IGN0ZGJfcmVwbHlfY2FsbF9vbGQgKiloZHI7CisJc2l6ZV90IHJlcGx5
X2NhbGxfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcGx5X2NhbGxfb2xkLAor
CQkJCQkJZGF0YSk7CisJc2l6ZV90IGJ1Zl9sZW4gPSBoZHItPmxlbmd0aDsKIAlzdHJ1Y3QgY3Rk
Yl9jYWxsX3N0YXRlICpzdGF0ZTsKIAorCWlmIChidWZfbGVuIDwgcmVwbHlfY2FsbF9oZWFkZXJf
bGVuIHx8CisJICAgIGMtPmRhdGFsZW4gPiBidWZfbGVuIC0gcmVwbHlfY2FsbF9oZWFkZXJfbGVu
KSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybjsKKwl9CisK
IAlzdGF0ZSA9IHJlcWlkX2ZpbmQoY3RkYi0+aWRyLCBoZHItPnJlcWlkLCBzdHJ1Y3QgY3RkYl9j
YWxsX3N0YXRlKTsKIAlpZiAoc3RhdGUgPT0gTlVMTCkgewogCQlERUJVRyhERUJVR19FUlIsIChf
X2xvY2F0aW9uX18gIiByZXFpZCAldSBub3QgZm91bmRcbiIsIGhkci0+cmVxaWQpKTsKQEAgLTEy
OTYsMTIgKzEzMjQsMjIgQEAKIHZvaWQgY3RkYl9yZXBseV9kbWFzdGVyKHN0cnVjdCBjdGRiX2Nv
bnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhkcikKIHsKIAlzdHJ1Y3QgY3Rk
Yl9yZXBseV9kbWFzdGVyX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9yZXBseV9kbWFzdGVyX29sZCAq
KWhkcjsKKwlzaXplX3QgcmVwbHlfZG1hc3Rlcl9oZWFkZXJfbGVuID0gb2Zmc2V0b2Yoc3RydWN0
IGN0ZGJfcmVwbHlfZG1hc3Rlcl9vbGQsCisJCQkJCQkgICBkYXRhKTsKKwlzaXplX3QgYnVmX2xl
biA9IGhkci0+bGVuZ3RoOwogCXN0cnVjdCBjdGRiX2RiX2NvbnRleHQgKmN0ZGJfZGI7CiAJVERC
X0RBVEEga2V5LCBkYXRhOwogCXVpbnQzMl90IHJlY29yZF9mbGFncyA9IDA7CiAJc2l6ZV90IGxl
bjsKIAlpbnQgcmV0OwogCisJaWYgKGJ1Zl9sZW4gPCByZXBseV9kbWFzdGVyX2hlYWRlcl9sZW4g
fHwKKwkgICAgYy0+a2V5bGVuID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiB8
fAorCSAgICBjLT5kYXRhbGVuID4gYnVmX2xlbiAtIHJlcGx5X2RtYXN0ZXJfaGVhZGVyX2xlbiAt
IGMtPmtleWxlbikgeworCQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1
cm47CisJfQorCiAJY3RkYl9kYiA9IGZpbmRfY3RkYl9kYihjdGRiLCBjLT5kYl9pZCk7CiAJaWYg
KGN0ZGJfZGIgPT0gTlVMTCkgewogCQlERUJVRyhERUJVR19FUlIsKCJVbmtub3duIGRiX2lkIDB4
JXggaW4gY3RkYl9yZXBseV9kbWFzdGVyXG4iLCBjLT5kYl9pZCkpOwpkaWZmIC1OcnUgc2FtYmEt
NC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMgc2FtYmEtNC4yMi4xMStkZnNn
L2N0ZGIvc2VydmVyL2N0ZGJfY2xpZW50LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3Nl
cnZlci9jdGRiX2NsaWVudC5jCTIwMjUtMDEtMzAgMTY6NTc6NDMuNjA3MzE1ODAwICswMzAwCisr
KyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9jbGllbnQuYwkyMDI2LTA3LTIx
IDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtMTkzLDggKzE5MywxNyBAQAogCQkJICBzdHJ1
Y3QgY3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX21lc3NhZ2Vfb2xk
ICpjID0gKHN0cnVjdCBjdGRiX3JlcV9tZXNzYWdlX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX21l
c3NhZ2VfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9tZXNzYWdlX29sZCwK
KwkJCQkJCSBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRB
IGRhdGE7CiAKKwlpZiAoYnVmX2xlbiA8IHJlcV9tZXNzYWdlX2hlYWRlcl9sZW4gfHwKKwkgICAg
Yy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFfbWVzc2FnZV9oZWFkZXJfbGVuKSB7CisJCURCR19X
QVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybjsKKwl9CisKIAlkYXRhLmRzaXpl
ID0gYy0+ZGF0YWxlbjsKIAlkYXRhLmRwdHIgPSB0YWxsb2NfbWVtZHVwKGMsICZjLT5kYXRhWzBd
LCBjLT5kYXRhbGVuKTsKIAlpZiAoZGF0YS5kcHRyID09IE5VTEwpIHsKZGlmZiAtTnJ1IHNhbWJh
LTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX2NvbnRyb2wuYyBzYW1iYS00LjIyLjExK2Rm
c2cvY3RkYi9zZXJ2ZXIvY3RkYl9jb250cm9sLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRi
L3NlcnZlci9jdGRiX2NvbnRyb2wuYwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYwODMxNjAwMCArMDMw
MAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfY29udHJvbC5jCTIwMjYt
MDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC05MzMsMTEgKzkzMywyMCBAQAogdm9p
ZCBjdGRiX3JlcXVlc3RfY29udHJvbChzdHJ1Y3QgY3RkYl9jb250ZXh0ICpjdGRiLCBzdHJ1Y3Qg
Y3RkYl9yZXFfaGVhZGVyICpoZHIpCiB7CiAJc3RydWN0IGN0ZGJfcmVxX2NvbnRyb2xfb2xkICpj
ID0gKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCAqKWhkcjsKKwlzaXplX3QgcmVxX2NvbnRy
b2xfaGVhZGVyX2xlbiA9IG9mZnNldG9mKHN0cnVjdCBjdGRiX3JlcV9jb250cm9sX29sZCwKKwkJ
CQkJCSBkYXRhKTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGRh
dGEsICpvdXRkYXRhOwogCWludDMyX3Qgc3RhdHVzOwogCWJvb2wgYXN5bmNfcmVwbHkgPSBmYWxz
ZTsKIAljb25zdCBjaGFyICplcnJvcm1zZyA9IE5VTEw7CiAKKwlpZiAoYnVmX2xlbiA8IHJlcV9j
b250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAgYy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXFfY29u
dHJvbF9oZWFkZXJfbGVuKSB7CisJCURCR19XQVJOSU5HKCJJbnZhbGlkIHBhY2tldFxuIik7CisJ
CXJldHVybjsKKwl9CisKIAlkYXRhLmRwdHIgPSAmYy0+ZGF0YVswXTsKIAlkYXRhLmRzaXplID0g
Yy0+ZGF0YWxlbjsKIApAQCAtOTU3LDEwICs5NjYsMjAgQEAKIHZvaWQgY3RkYl9yZXBseV9jb250
cm9sKHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHN0cnVjdCBjdGRiX3JlcV9oZWFkZXIgKmhk
cikKIHsKIAlzdHJ1Y3QgY3RkYl9yZXBseV9jb250cm9sX29sZCAqYyA9IChzdHJ1Y3QgY3RkYl9y
ZXBseV9jb250cm9sX29sZCAqKWhkcjsKKwlzaXplX3QgcmVwbHlfY29udHJvbF9oZWFkZXJfbGVu
ID0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfcmVwbHlfY29udHJvbF9vbGQsCisJCQkJCQkgICBkYXRh
KTsKKwlzaXplX3QgYnVmX2xlbiA9IGhkci0+bGVuZ3RoOwogCVREQl9EQVRBIGRhdGE7CiAJc3Ry
dWN0IGN0ZGJfY29udHJvbF9zdGF0ZSAqc3RhdGU7CiAJY29uc3QgY2hhciAqZXJyb3Jtc2cgPSBO
VUxMOwogCisJaWYgKGJ1Zl9sZW4gPCByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAg
Yy0+ZGF0YWxlbiA+IGJ1Zl9sZW4gLSByZXBseV9jb250cm9sX2hlYWRlcl9sZW4gfHwKKwkgICAg
Yy0+ZXJyb3JsZW4gPiBidWZfbGVuIC0gcmVwbHlfY29udHJvbF9oZWFkZXJfbGVuIC0gYy0+ZGF0
YWxlbikgeworCQlEQkdfV0FSTklORygiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm47CisJ
fQorCiAJc3RhdGUgPSByZXFpZF9maW5kKGN0ZGItPmlkciwgaGRyLT5yZXFpZCwgc3RydWN0IGN0
ZGJfY29udHJvbF9zdGF0ZSk7CiAJaWYgKHN0YXRlID09IE5VTEwpIHsKIAkJREVCVUcoREVCVUdf
RVJSLCgicG5uICV1IEludmFsaWQgcmVxaWQgJXUgaW4gY3RkYl9yZXBseV9jb250cm9sXG4iLApk
aWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfbHRkYl9zZXJ2ZXIu
YyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCi0tLSBz
YW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCTIwMjUtMDEt
MzAgMTY6NTc6NDMuNjA5MzE1OTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9z
ZXJ2ZXIvY3RkYl9sdGRiX3NlcnZlci5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICsw
MzAwCkBAIC0xMTA5LDggKzExMDksMTUgQEAKIAlzdHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpkYjsK
IAlzdHJ1Y3QgY3RkYl9ub2RlICpub2RlID0gY3RkYi0+bm9kZXNbY3RkYi0+cG5uXTsKIAlzdHJ1
Y3QgY3RkYl9jbGllbnQgKmNsaWVudCA9IE5VTEw7CisJY2hhciAqdCA9IE5VTEw7CiAJdWludDMy
X3Qgb3Bjb2RlOwogCisJdCA9IG1lbWNocihpbmRhdGEuZHB0ciwgJ1wwJywgaW5kYXRhLmRzaXpl
KTsKKwlpZiAodCA9PSBOVUxMKSB7CisJCURCR19FUlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJ
cmV0dXJuIC0xOworCX0KKwogCWlmIChjdGRiLT50dW5hYmxlLmFsbG93X2NsaWVudF9kYl9hdHRh
Y2ggPT0gMCkgewogCQlERUJVRyhERUJVR19FUlIsICgiREIgQXR0YWNoIHRvIGRhdGFiYXNlICVz
IGRlbmllZCBieSB0dW5hYmxlICIKIAkJCQkgICJBbGxvd0NsaWVudERCQWNjZXNzID09IDBcbiIs
IGRiX25hbWUpKTsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRi
X3BlcnNpc3RlbnQuYyBzYW1iYS00LjIyLjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9wZXJzaXN0
ZW50LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3BlcnNpc3RlbnQu
YwkyMDI1LTAxLTMwIDE2OjU3OjQzLjYxMDMxNTgwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStk
ZnNnL2N0ZGIvc2VydmVyL2N0ZGJfcGVyc2lzdGVudC5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5
Mjc2MDAwICswMzAwCkBAIC0xODIsNiArMTgyLDE2IEBACiAJc3RydWN0IGN0ZGJfbWFyc2hhbGxf
YnVmZmVyICptID0gKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciAqKXJlY2RhdGEuZHB0cjsK
IAlzdHJ1Y3QgY3RkYl9kYl9jb250ZXh0ICpjdGRiX2RiOwogCisJaWYgKHJlY2RhdGEuZHNpemUg
PCBvZmZzZXRvZihzdHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIsIGRhdGEpKSB7CisJCURCR19F
UlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAobS0+Y291bnQg
PgorCSAgICByZWNkYXRhLmRzaXplIC0gb2Zmc2V0b2Yoc3RydWN0IGN0ZGJfbWFyc2hhbGxfYnVm
ZmVyLCBkYXRhKSkgeworCQlEQkdfRVJSKCJJbnZhbGlkIHBhY2tldFxuIik7CisJCXJldHVybiAt
MTsKKwl9CisKIAlpZiAoY3RkYi0+cmVjb3ZlcnlfbW9kZSAhPSBDVERCX1JFQ09WRVJZX05PUk1B
TCkgewogCQlERUJVRyhERUJVR19JTkZPLCgicmVqZWN0aW5nIGN0ZGJfY29udHJvbF90cmFuczNf
Y29tbWl0IHdoZW4gcmVjb3ZlcnkgYWN0aXZlXG4iKSk7CiAJCXJldHVybiAtMTsKZGlmZiAtTnJ1
IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYyBzYW1iYS00LjIy
LjExK2Rmc2cvY3RkYi9zZXJ2ZXIvY3RkYl9yZWNvdmVyLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZz
Zy9jdGRiL3NlcnZlci9jdGRiX3JlY292ZXIuYwkyMDI2LTA1LTE1IDE2OjUxOjQzLjQ0OTA2MDIw
MCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfcmVjb3Zlci5j
CTIwMjYtMDctMjEgMTg6Mzc6MDQuMTc5Mjc2MDAwICswMzAwCkBAIC0zNiw2ICszNiw4IEBACiAj
aW5jbHVkZSAiY3RkYl9wcml2YXRlLmgiCiAjaW5jbHVkZSAiY3RkYl9jbGllbnQuaCIKIAorI2lu
Y2x1ZGUgInByb3RvY29sL3Byb3RvY29sX3ByaXZhdGUuaCIKKwogI2luY2x1ZGUgImNvbW1vbi9z
eXN0ZW0uaCIKICNpbmNsdWRlICJjb21tb24vY29tbW9uLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xv
Z2dpbmcuaCIKQEAgLTY3LDI0ICs2OSwzMiBAQAogaW50CiBjdGRiX2NvbnRyb2xfc2V0dm5ubWFw
KHN0cnVjdCBjdGRiX2NvbnRleHQgKmN0ZGIsIHVpbnQzMl90IG9wY29kZSwgVERCX0RBVEEgaW5k
YXRhLCBUREJfREFUQSAqb3V0ZGF0YSkKIHsKLQlzdHJ1Y3QgY3RkYl92bm5fbWFwX3dpcmUgKm1h
cCA9IChzdHJ1Y3QgY3RkYl92bm5fbWFwX3dpcmUgKilpbmRhdGEuZHB0cjsKKwlzdHJ1Y3QgY3Rk
Yl92bm5fbWFwICpuZXcgPSBOVUxMOworCXNpemVfdCBucHVsbCA9IDA7CisJaW50IHJldCA9IDA7
CiAKIAlpZiAoY3RkYi0+cmVjb3ZlcnlfbW9kZSAhPSBDVERCX1JFQ09WRVJZX0FDVElWRSkgewog
CQlERUJVRyhERUJVR19FUlIsICgiQXR0ZW1wdCB0byBzZXQgdm5ubWFwIHdoZW4gbm90IGluIHJl
Y292ZXJ5XG4iKSk7CiAJCXJldHVybiAtMTsKIAl9CiAKLQl0YWxsb2NfZnJlZShjdGRiLT52bm5f
bWFwKTsKLQotCWN0ZGItPnZubl9tYXAgPSB0YWxsb2MoY3RkYiwgc3RydWN0IGN0ZGJfdm5uX21h
cCk7Ci0JQ1REQl9OT19NRU1PUlkoY3RkYiwgY3RkYi0+dm5uX21hcCk7Ci0KLQljdGRiLT52bm5f
bWFwLT5nZW5lcmF0aW9uID0gbWFwLT5nZW5lcmF0aW9uOwotCWN0ZGItPnZubl9tYXAtPnNpemUg
ICAgICAgPSBtYXAtPnNpemU7Ci0JY3RkYi0+dm5uX21hcC0+bWFwID0gdGFsbG9jX2FycmF5KGN0
ZGItPnZubl9tYXAsIHVpbnQzMl90LCBtYXAtPnNpemUpOwotCUNUREJfTk9fTUVNT1JZKGN0ZGIs
IGN0ZGItPnZubl9tYXAtPm1hcCk7CisJcmV0ID0gY3RkYl92bm5fbWFwX3B1bGwoaW5kYXRhLmRw
dHIsIGluZGF0YS5kc2l6ZSwgY3RkYiwgJm5ldywgJm5wdWxsKTsKKwlpZiAocmV0ICE9IDApIHsK
KwkJc3dpdGNoIChyZXQpIHsKKwkJY2FzZSBFTk9NRU06CisJCQlEQkdfRVJSKCJNZW1vcnkgYWxs
b2NhdGlvbiBlcnJvclxuIik7CisJCQlicmVhazsKKwkJY2FzZSBFTVNHU0laRToKKwkJCURCR19F
UlIoIkludmFsaWQgcGFja2V0XG4iKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJREJHX0VS
UigiVW5leHBlY3RlZCBlcnJvciAoJWQpXG4iLCByZXQpOworCQl9CisJCXJldHVybiAtMTsKKwl9
CiAKLQltZW1jcHkoY3RkYi0+dm5uX21hcC0+bWFwLCBtYXAtPm1hcCwgc2l6ZW9mKHVpbnQzMl90
KSptYXAtPnNpemUpOworCXRhbGxvY19mcmVlKGN0ZGItPnZubl9tYXApOworCWN0ZGItPnZubl9t
YXAgPSBuZXc7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEwNTIsNiArMTA2MiwxMiBAQAogCQlyZXR1
cm4gLTE7CiAJfQogCisJaWYgKHJlcGx5LT5jb3VudCA+CisJICAgIGluZGF0YS5kc2l6ZSAtIG9m
ZnNldG9mKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1ZmZlciwgZGF0YSkpIHsKKwkJREJHX0VSUigi
SW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCiAJY3RkYl9kYiA9IGZpbmRf
Y3RkYl9kYihjdGRiLCByZXBseS0+ZGJfaWQpOwogCWlmICghY3RkYl9kYikgewogCQlERUJVRyhE
RUJVR19FUlIsKF9fbG9jYXRpb25fXyAiIFVua25vd24gZGIgMHglMDh4XG4iLCByZXBseS0+ZGJf
aWQpKTsKZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9jdGRiL3NlcnZlci9jdGRiX3RyYXZl
cnNlLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfdHJhdmVyc2UuYwotLS0g
c2FtYmEtNC4yMi4xMCtkZnNnL2N0ZGIvc2VydmVyL2N0ZGJfdHJhdmVyc2UuYwkyMDI1LTAxLTMw
IDE2OjU3OjQzLjYxMzMxNTgwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2Vy
dmVyL2N0ZGJfdHJhdmVyc2UuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApA
QCAtNTYxLDEzICs1NjEsMTcgQEAKIGludDMyX3QgY3RkYl9jb250cm9sX3RyYXZlcnNlX2RhdGEo
c3RydWN0IGN0ZGJfY29udGV4dCAqY3RkYiwgVERCX0RBVEEgZGF0YSwgVERCX0RBVEEgKm91dGRh
dGEpCiB7CiAJc3RydWN0IGN0ZGJfcmVjX2RhdGFfb2xkICpkID0gKHN0cnVjdCBjdGRiX3JlY19k
YXRhX29sZCAqKWRhdGEuZHB0cjsKKwlzaXplX3QgcmVjX2RhdGFfaGVhZGVyX2xlbiA9IG9mZnNl
dG9mKHN0cnVjdCBjdGRiX3JlY19kYXRhX29sZCwgZGF0YSk7CiAJc3RydWN0IGN0ZGJfdHJhdmVy
c2VfYWxsX2hhbmRsZSAqc3RhdGU7CiAJVERCX0RBVEEga2V5OwogCWN0ZGJfdHJhdmVyc2VfZm5f
dCBjYWxsYmFjazsKIAl2b2lkICpwcml2YXRlX2RhdGE7CiAKLQlpZiAoZGF0YS5kc2l6ZSA8IHNp
emVvZih1aW50MzJfdCkgfHwgZGF0YS5kc2l6ZSAhPSBkLT5sZW5ndGgpIHsKLQkJREVCVUcoREVC
VUdfRVJSLCgiQmFkIHJlY29yZCBzaXplIGluIGN0ZGJfY29udHJvbF90cmF2ZXJzZV9kYXRhXG4i
KSk7CisJaWYgKGRhdGEuZHNpemUgPCByZWNfZGF0YV9oZWFkZXJfbGVuIHx8CisJICAgIGRhdGEu
ZHNpemUgIT0gZC0+bGVuZ3RoIHx8CisJICAgIGQtPmtleWxlbiA+IGQtPmxlbmd0aCAtIHJlY19k
YXRhX2hlYWRlcl9sZW4gfHwKKwkgICAgZC0+ZGF0YWxlbiA+IGQtPmxlbmd0aCAtIHJlY19kYXRh
X2hlYWRlcl9sZW4gLSBkLT5rZXlsZW4pIHsKKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIp
OwogCQlyZXR1cm4gLTE7CiAJfQogCmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9z
ZXJ2ZXIvY3RkYl91cGRhdGVfcmVjb3JkLmMgc2FtYmEtNC4yMi4xMStkZnNnL2N0ZGIvc2VydmVy
L2N0ZGJfdXBkYXRlX3JlY29yZC5jCi0tLSBzYW1iYS00LjIyLjEwK2Rmc2cvY3RkYi9zZXJ2ZXIv
Y3RkYl91cGRhdGVfcmVjb3JkLmMJMjAyNS0wMS0zMCAxNjo1Nzo0My42MTQzMTU3MDAgKzAzMDAK
KysrIHNhbWJhLTQuMjIuMTErZGZzZy9jdGRiL3NlcnZlci9jdGRiX3VwZGF0ZV9yZWNvcmQuYwky
MDI2LTA3LTIxIDE4OjM3OjA0LjE3OTI3NjAwMCArMDMwMApAQCAtMzE4LDYgKzMxOCwxNiBAQAog
CXN0cnVjdCBjaGlsZHdyaXRlX2hhbmRsZSAqaGFuZGxlOwogCXN0cnVjdCBjdGRiX21hcnNoYWxs
X2J1ZmZlciAqbSA9IChzdHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIgKilyZWNkYXRhLmRwdHI7
CiAKKwlpZiAocmVjZGF0YS5kc2l6ZSA8IG9mZnNldG9mKHN0cnVjdCBjdGRiX21hcnNoYWxsX2J1
ZmZlciwgZGF0YSkpIHsKKwkJREJHX0VSUigiSW52YWxpZCBwYWNrZXRcbiIpOworCQlyZXR1cm4g
LTE7CisJfQorCWlmIChtLT5jb3VudCA+CisJICAgIHJlY2RhdGEuZHNpemUgLSBvZmZzZXRvZihz
dHJ1Y3QgY3RkYl9tYXJzaGFsbF9idWZmZXIsIGRhdGEpKSB7CisJCURCR19FUlIoIkludmFsaWQg
cGFja2V0XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwogCWlmIChjdGRiLT5yZWNvdmVyeV9tb2Rl
ICE9IENUREJfUkVDT1ZFUllfTk9STUFMKSB7CiAJCURFQlVHKERFQlVHX0lORk8sKCJyZWplY3Rp
bmcgY3RkYl9jb250cm9sX3VwZGF0ZV9yZWNvcmQgd2hlbiByZWNvdmVyeSBhY3RpdmVcbiIpKTsK
IAkJcmV0dXJuIC0xOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2xpYmNsaS9zZWN1cml0
eS9zZWN1cml0eV9kZXNjcmlwdG9yLmMgc2FtYmEtNC4yMi4xMStkZnNnL2xpYmNsaS9zZWN1cml0
eS9zZWN1cml0eV9kZXNjcmlwdG9yLmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9saWJjbGkvc2Vj
dXJpdHkvc2VjdXJpdHlfZGVzY3JpcHRvci5jCTIwMjUtMDItMTIgMTY6MjQ6MjAuMzcwMTQzNDAw
ICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGliY2xpL3NlY3VyaXR5L3NlY3VyaXR5X2Rl
c2NyaXB0b3IuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE4MzI3NjIwMCArMDMwMApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgInJlcGxhY2UuaCIKICNpbmNsdWRlICJsaWJjbGkvc2VjdXJpdHkv
c2VjdXJpdHkuaCIKICNpbmNsdWRlICJsaWJycGMvbmRyL2xpYm5kci5oIgorI2luY2x1ZGUgImxp
YnJwYy9nZW5fbmRyL25kcl9zZWN1cml0eS5oIgogCiAvKgogICByZXR1cm4gYSBibGFuayBzZWN1
cml0eSBkZXNjcmlwdG9yIChubyBvd25lcnMsIGRhY2wgb3Igc2FjbCkKQEAgLTUzLDYgKzU0LDcg
QEAKIAkJCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2VjdXJpdHlfYWNsICpvYWNsKQogewogCXN0cnVj
dCBzZWN1cml0eV9hY2wgKm5hY2w7CisJZW51bSBuZHJfZXJyX2NvZGUgbmRyX2VycjsKIAogCWlm
IChvYWNsID09IE5VTEwpIHsKIAkJcmV0dXJuIE5VTEw7CkBAIC02NywxNyArNjksOCBAQAogCQly
ZXR1cm4gTlVMTDsKIAl9CiAKLQkqbmFjbCA9IChzdHJ1Y3Qgc2VjdXJpdHlfYWNsKSB7Ci0JCS5y
ZXZpc2lvbiA9IG9hY2wtPnJldmlzaW9uLAotCQkuc2l6ZSAgICAgPSBvYWNsLT5zaXplLAotCQku
bnVtX2FjZXMgPSBvYWNsLT5udW1fYWNlcywKLQl9OwotCWlmIChuYWNsLT5udW1fYWNlcyA9PSAw
KSB7Ci0JCXJldHVybiBuYWNsOwotCX0KLQotCW5hY2wtPmFjZXMgPSAoc3RydWN0IHNlY3VyaXR5
X2FjZSAqKXRhbGxvY19tZW1kdXAgKG5hY2wsIG9hY2wtPmFjZXMsIHNpemVvZihzdHJ1Y3Qgc2Vj
dXJpdHlfYWNlKSAqIG9hY2wtPm51bV9hY2VzKTsKLQlpZiAobmFjbC0+YWNlcyA9PSBOVUxMKSB7
CisJbmRyX2VyciA9IG5kcl9kZWVwY29weV9zdHJ1Y3Qoc2VjdXJpdHlfYWNsLCBvYWNsLCBuYWNs
LCBuYWNsKTsKKwlpZiAoIU5EUl9FUlJfQ09ERV9JU19TVUNDRVNTKG5kcl9lcnIpKSB7CiAJCWdv
dG8gZmFpbGVkOwogCX0KIApkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtkZnNnL2xpYnJwYy9pZGwv
ZG5zLmlkbCBzYW1iYS00LjIyLjExK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCi0tLSBzYW1iYS00
LjIyLjEwK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCTIwMjUtMDEtMzAgMTY6NTc6NDMuODIzMzE1
OTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGlicnBjL2lkbC9kbnMuaWRsCTIwMjYt
MDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0yNTEsNiArMjUxLDEyIEBACiAJfSBk
bnNfcmRhdGE7CiAKIAl0eXBlZGVmIFtmbGFnKExJQk5EUl9QUklOVF9BUlJBWV9IRVh8TkRSX05P
QUxJR04pLG5vcHVzaCxub3B1bGxdIHN0cnVjdCB7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIHN0
YXJ0IG9mZnNldCBvZiB0aGlzCisJCSAqIGRuc19yZXNfcmVjIHJlbGF0aXZlIHRvIHRoZSBzdGFy
dCBvZgorCQkgKiBkbnNfbmFtZV9wYWNrZXQgYnVmZmVyLgorCQkgKi8KKwkJW2lnbm9yZV0gdWlu
dDMyIHN0YXJ0X25kcl9vZmZzZXQ7CiAJCWRuc19zdHJpbmcgbmFtZTsKIAkJZG5zX3F0eXBlICBy
cl90eXBlOwogCQlkbnNfcWNsYXNzIHJyX2NsYXNzOwpkaWZmIC1OcnUgc2FtYmEtNC4yMi4xMCtk
ZnNnL2xpYnJwYy9uZHIvbmRyX2Rucy5jIHNhbWJhLTQuMjIuMTErZGZzZy9saWJycGMvbmRyL25k
cl9kbnMuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL2xpYnJwYy9uZHIvbmRyX2Rucy5jCTIwMjUt
MDEtMzAgMTY6NTc6NDMuODM0MzE1ODAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvbGli
cnBjL25kci9uZHJfZG5zLmMJMjAyNi0wNy0yMSAxODozNzowNC4xODMyNzYyMDAgKzAzMDAKQEAg
LTI3Niw2ICsyNzYsMTcgQEAKIAluZHJfc2V0X2ZsYWdzKCZuZHItPmZsYWdzLCBMSUJORFJfUFJJ
TlRfQVJSQVlfSEVYIHwKIAkJCQkgICBMSUJORFJfRkxBR19OT0FMSUdOKTsKIAlpZiAobmRyX2Zs
YWdzICYgTkRSX1NDQUxBUlMpIHsKKwkJLyoKKwkJICogUmVtZW1iZXIgdGhlIHN0YXJ0IG9mZnNl
dCBpbiBvcmRlcgorCQkgKiB0byBrbm93IGhvdyB0byB0cnVuY2F0ZSBiZWZvcmUgdGhlCisJCSAq
IGxhc3QgZG5zX3Jlc19yZWMgaW4gb3JkZXIgdG8gZG8KKwkJICogdGhlIGNvcnJlY3QgVFNJRyBj
YWxjdWxhdGlvbi4KKwkJICoKKwkJICogTm90ZSB0aGF0IHdlIGp1c3Qgc2V0IExJQk5EUl9GTEFH
X05PQUxJR04KKwkJICogYWJvdmUsIHNvIG5kcl9wdWxsX2FsaWduIGlzIGEgbm8tb3AuCisJCSAq
LworCQlyLT5zdGFydF9uZHJfb2Zmc2V0ID0gbmRyLT5vZmZzZXQ7CisKIAkJTkRSX0NIRUNLKG5k
cl9wdWxsX2FsaWduKG5kciwgNCkpOwogCQlORFJfQ0hFQ0sobmRyX3B1bGxfZG5zX3N0cmluZyhu
ZHIsIE5EUl9TQ0FMQVJTLCAmci0+bmFtZSkpOwogCQlORFJfQ0hFQ0sobmRyX3B1bGxfZG5zX3F0
eXBlKG5kciwgTkRSX1NDQUxBUlMsICZyLT5ycl90eXBlKSk7CmRpZmYgLU5ydSBzYW1iYS00LjIy
LjEwK2Rmc2cvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYyBzYW1iYS00LjIyLjExK2Rm
c2cvc291cmNlNC9kbnNfc2VydmVyL2Ruc19jcnlwdG8uYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNn
L3NvdXJjZTQvZG5zX3NlcnZlci9kbnNfY3J5cHRvLmMJMjAyNS0wMS0zMCAxNjo1Nzo0NC4xNDQz
MTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5z
X2NyeXB0by5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0zNiw2ICsz
Niw4IEBACiAJCQkgICAgc3RydWN0IGRuc19yZXNfcmVjICpvbGQsCiAJCQkgICAgc3RydWN0IGRu
c19yZXNfcmVjICpuZXdfcmVjKQogeworCW5ld19yZWMtPnN0YXJ0X25kcl9vZmZzZXQgPSAwOwor
CiAJbmV3X3JlYy0+bmFtZSA9IHRhbGxvY19zdHJkdXAobWVtX2N0eCwgb2xkLT5uYW1lKTsKIAlX
X0VSUk9SX0hBVkVfTk9fTUVNT1JZKG5ld19yZWMtPm5hbWUpOwogCkBAIC0xMDEsNyArMTAzLDcg
QEAKIAlOVFNUQVRVUyBzdGF0dXM7CiAJZW51bSBuZHJfZXJyX2NvZGUgbmRyX2VycjsKIAl1aW50
MTZfdCBpLCBhcmNvdW50ID0gMDsKLQlEQVRBX0JMT0IgdHNpZ19ibG9iLCBmYWtlX3RzaWdfYmxv
Yiwgc2lnOworCURBVEFfQkxPQiBmYWtlX3RzaWdfYmxvYiwgc2lnOwogCXVpbnQ4X3QgKmJ1ZmZl
ciA9IE5VTEw7CiAJc2l6ZV90IGJ1ZmZlcl9sZW4gPSAwLCBwYWNrZXRfbGVuID0gMDsKIAlzdHJ1
Y3QgZG5zX3NlcnZlcl90a2V5ICp0a2V5ID0gTlVMTDsKQEAgLTEzMSw2ICsxMzMsMjIgQEAKIAlz
dGF0ZS0+c2lnbiA9IHRydWU7CiAJREJHX0RFQlVHKCJHb3QgVFNJR1xuIik7CiAKKwkvKgorCSAq
IFdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0IGV4YWN0bHkgbGlrZSB3ZSBnb3QgaXQs
CisJICogYnV0IHdlIG5lZWQgdG8gY3V0IG9mZiB0aGUgdHNpZyByZWNvcmQuCisJICoKKwkgKiBE
TlMgcGFja2V0cyBjYW4gbm90IGJlIGxhcmdlciB0aGFuIFVJTlQxNl9NQVgsCisJICogdGhlIHNp
emUgb2YgdGhlIFVEUCBwYXlsb2FkIGlzIHVpbnQxNl90IGFuZAorCSAqIHRoZXJlJ3MgYSB1aW50
MTZfdCBsZW5ndGggaGVhZGVyIGZvciBUQ1AuCisJICoKKwkgKiBBbmQgdGhlIHN0YXJ0IG9mZnNl
dCBvZiB0aGUgbGFzdAorCSAqIGFkZGl0aW9uYWwgcmVjb3JkIGNhbid0IGJlIGxhcmdlciB0aGFu
CisJICogdGhlIHdob2xlIHBhY2tldC4KKwkgKi8KKwlwYWNrZXRfbGVuID0gcGFja2V0LT5hZGRp
dGlvbmFsW2ldLnN0YXJ0X25kcl9vZmZzZXQ7CisJU01CX0FTU0VSVChpbi0+bGVuZ3RoIDw9IFVJ
TlQxNl9NQVgpOworCVNNQl9BU1NFUlQoaW4tPmxlbmd0aCA+IHBhY2tldF9sZW4pOworCiAJc3Rh
dGUtPnRzaWcgPSB0YWxsb2NfemVybyhzdGF0ZS0+bWVtX2N0eCwgc3RydWN0IGRuc19yZXNfcmVj
KTsKIAlpZiAoc3RhdGUtPnRzaWcgPT0gTlVMTCkgewogCQlyZXR1cm4gV0VSUl9OT1RfRU5PVUdI
X01FTU9SWTsKQEAgLTIwNSwxNCArMjIzLDYgQEAKIAljaGVja19yZWMtPm90aGVyX3NpemUgPSAw
OwogCWNoZWNrX3JlYy0+b3RoZXJfZGF0YSA9IE5VTEw7CiAKLQluZHJfZXJyID0gbmRyX3B1c2hf
c3RydWN0X2Jsb2IoJnRzaWdfYmxvYiwgbWVtX2N0eCwgc3RhdGUtPnRzaWcsCi0JCShuZHJfcHVz
aF9mbGFnc19mbl90KW5kcl9wdXNoX2Ruc19yZXNfcmVjKTsKLQlpZiAoIU5EUl9FUlJfQ09ERV9J
U19TVUNDRVNTKG5kcl9lcnIpKSB7Ci0JCURFQlVHKDEsICgiRmFpbGVkIHRvIHB1c2ggcGFja2V0
OiAlcyFcbiIsCi0JCQkgIG5kcl9lcnJzdHIobmRyX2VycikpKTsKLQkJcmV0dXJuIEROU19FUlIo
U0VSVkVSX0ZBSUxVUkUpOwotCX0KLQogCW5kcl9lcnIgPSBuZHJfcHVzaF9zdHJ1Y3RfYmxvYigm
ZmFrZV90c2lnX2Jsb2IsIG1lbV9jdHgsIGNoZWNrX3JlYywKIAkJKG5kcl9wdXNoX2ZsYWdzX2Zu
X3QpbmRyX3B1c2hfZG5zX2Zha2VfdHNpZ19yZWMpOwogCWlmICghTkRSX0VSUl9DT0RFX0lTX1NV
Q0NFU1MobmRyX2VycikpIHsKQEAgLTIyMSw5ICsyMzEsMTkgQEAKIAkJcmV0dXJuIEROU19FUlIo
U0VSVkVSX0ZBSUxVUkUpOwogCX0KIAotCS8qIHdlIG5lZWQgdG8gd29yayBzb21lIG1hZ2ljIGhl
cmUuIHdlIG5lZWQgdG8ga2VlcCB0aGUgaW5wdXQgcGFja2V0Ci0JICogZXhhY3RseSBsaWtlIHdl
IGdvdCBpdCwgYnV0IHdlIG5lZWQgdG8gY3V0IG9mZiB0aGUgdHNpZyByZWNvcmQgKi8KLQlwYWNr
ZXRfbGVuID0gaW4tPmxlbmd0aCAtIHRzaWdfYmxvYi5sZW5ndGg7CisJLyoKKwkgKiBXZSBhbHJl
YWR5IGFzc2VydGVkIHBhY2tldF9sZW4gPCBVSU5UMTZfTUFYCisJICogYWJvdmUsIGFuZCBzdHJ1
Y3QgbmRyX3B1c2ggaGFzIGFsbG9jX3NpemUgYW5kCisJICogb2Zmc2V0IGFzIHVpbnQzMl90LCBz
byBpdCdzIHJlYWxseSB1bmxpa2VseQorCSAqIHRvIG92ZXJmbG93IGJ1ZmZlcl9sZW4uIEZvciBT
SVpFX01BWCA9PSBVSU5UMzJfTUFYLAorCSAqIHRoZSBmb2xsb3dpbmcgY2hlY2sgbWlnaHQgYmUg
aW1wb3J0YW50LCBidXQKKwkgKiBqdXN0IGxldHMgZG8gaXQgYWx3YXlzLgorCSAqLworCWlmIChm
YWtlX3RzaWdfYmxvYi5sZW5ndGggPiAoU0laRV9NQVggLSBVSU5UMTZfTUFYKSkgeworCQlEQkdf
V0FSTklORygiZmFrZV90c2lnX2Jsb2IubGVuZ3RoPSV6dSB0b28gbGFyZ2UhXG4iLAorCQkJICAg
IGZha2VfdHNpZ19ibG9iLmxlbmd0aCk7CisJCXJldHVybiBETlNfRVJSKFNFUlZFUl9GQUlMVVJF
KTsKKwl9CiAJYnVmZmVyX2xlbiA9IHBhY2tldF9sZW4gKyBmYWtlX3RzaWdfYmxvYi5sZW5ndGg7
CiAJYnVmZmVyID0gdGFsbG9jX3plcm9fYXJyYXkobWVtX2N0eCwgdWludDhfdCwgYnVmZmVyX2xl
bik7CiAJaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cv
c291cmNlNC9kbnNfc2VydmVyL2Ruc19xdWVyeS5jIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0
L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMKLS0tIHNhbWJhLTQuMjIuMTArZGZzZy9zb3VyY2U0L2Ru
c19zZXJ2ZXIvZG5zX3F1ZXJ5LmMJMjAyNS0wMS0zMCAxNjo1Nzo0NC4xNDQzMTYwMDAgKzAzMDAK
KysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2Ruc19zZXJ2ZXIvZG5zX3F1ZXJ5LmMJMjAy
Ni0wNy0yMSAxODozNzowNC4xODMyNzYyMDAgKzAzMDAKQEAgLTY1NCw3ICs2NTQsOCBAQAogCXJl
dHVybiBXRVJSX09LOwogfQogCi1zdGF0aWMgTlRTVEFUVVMgY3JlYXRlX3RrZXkoc3RydWN0IGRu
c19zZXJ2ZXIgKmRucywKK3N0YXRpYyBOVFNUQVRVUyBjcmVhdGVfdGtleShUQUxMT0NfQ1RYICpt
ZW1fY3R4LAorCQkJICAgIHN0cnVjdCBkbnNfc2VydmVyICpkbnMsCiAJCQkgICAgY29uc3QgY2hh
ciogbmFtZSwKIAkJCSAgICBjb25zdCBjaGFyKiBhbGdvcml0aG0sCiAJCQkgICAgY29uc3Qgc3Ry
dWN0IHRzb2NrZXRfYWRkcmVzcyAqcmVtb3RlX2FkZHJlc3MsCkBAIC02NjIsNyArNjYzLDYgQEAK
IAkJCSAgICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICoqdGtleSkKIHsKIAlOVFNUQVRVUyBzdGF0
dXM7Ci0Jc3RydWN0IGRuc19zZXJ2ZXJfdGtleV9zdG9yZSAqc3RvcmUgPSBkbnMtPnRrZXlzOwog
CXN0cnVjdCBkbnNfc2VydmVyX3RrZXkgKmsgPSBOVUxMOwogCiAJaWYgKHN0cmNtcChhbGdvcml0
aG0sICJnc3MtdHNpZyIpID09IDApIHsKQEAgLTY3MywyMCArNjczLDIwIEBACiAJCXJldHVybiBO
VF9TVEFUVVNfQUNDRVNTX0RFTklFRDsKIAl9CiAKLQlrID0gdGFsbG9jX3plcm8oc3RvcmUsIHN0
cnVjdCBkbnNfc2VydmVyX3RrZXkpOworCWsgPSB0YWxsb2NfemVybyhtZW1fY3R4LCBzdHJ1Y3Qg
ZG5zX3NlcnZlcl90a2V5KTsKIAlpZiAoayA9PSBOVUxMKSB7Ci0JCXJldHVybiBOVF9TVEFUVVNf
Tk9fTUVNT1JZOworCQlnb3RvIG5vbWVtOwogCX0KIAogCWstPm5hbWUgPSB0YWxsb2Nfc3RyZHVw
KGssIG5hbWUpOwogCiAJaWYgKGstPm5hbWUgID09IE5VTEwpIHsKLQkJcmV0dXJuIE5UX1NUQVRV
U19OT19NRU1PUlk7CisJCWdvdG8gbm9tZW07CiAJfQogCiAJay0+YWxnb3JpdGhtID0gdGFsbG9j
X3N0cmR1cChrLCBhbGdvcml0aG0pOwogCWlmIChrLT5hbGdvcml0aG0gPT0gTlVMTCkgewotCQly
ZXR1cm4gTlRfU1RBVFVTX05PX01FTU9SWTsKKwkJZ290byBub21lbTsKIAl9CiAKIAkvKgpAQCAt
NzA0LDggKzcwNCw3IEBACiAJCQkJCQkmay0+Z2Vuc2VjKTsKIAlpZiAoIU5UX1NUQVRVU19JU19P
SyhzdGF0dXMpKSB7CiAJCURFQlVHKDEsICgiRmFpbGVkIHRvIHN0YXJ0IEdFTlNFQyBzZXJ2ZXIg
Y29kZTogJXNcbiIsIG50X2VycnN0cihzdGF0dXMpKSk7Ci0JCSp0a2V5ID0gTlVMTDsKLQkJcmV0
dXJuIHN0YXR1czsKKwkJZ290byBmYWlsOwogCX0KIAogCWdlbnNlY193YW50X2ZlYXR1cmUoay0+
Z2Vuc2VjLCBHRU5TRUNfRkVBVFVSRV9TSUdOKTsKQEAgLTcxNSw4ICs3MTQsNyBAQAogCWlmICgh
TlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwgKCJGYWlsZWQgdG8gc2V0IHJl
bW90ZSBhZGRyZXNzIGludG8gR0VOU0VDOiAlc1xuIiwKIAkJCSAgbnRfZXJyc3RyKHN0YXR1cykp
KTsKLQkJKnRrZXkgPSBOVUxMOwotCQlyZXR1cm4gc3RhdHVzOworCQlnb3RvIGZhaWw7CiAJfQog
CiAJc3RhdHVzID0gZ2Vuc2VjX3NldF9sb2NhbF9hZGRyZXNzKGstPmdlbnNlYywKQEAgLTcyNCw4
ICs3MjIsNyBAQAogCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwg
KCJGYWlsZWQgdG8gc2V0IGxvY2FsIGFkZHJlc3MgaW50byBHRU5TRUM6ICVzXG4iLAogCQkJICBu
dF9lcnJzdHIoc3RhdHVzKSkpOwotCQkqdGtleSA9IE5VTEw7Ci0JCXJldHVybiBzdGF0dXM7CisJ
CWdvdG8gZmFpbDsKIAl9CiAKIAlzdGF0dXMgPSBnZW5zZWNfc3RhcnRfbWVjaF9ieV9vaWQoay0+
Z2Vuc2VjLCBHRU5TRUNfT0lEX1NQTkVHTyk7CkBAIC03MzMsMTggKzczMCwyOSBAQAogCWlmICgh
TlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJREVCVUcoMSwgKCJGYWlsZWQgdG8gc3RhcnQg
R0VOU0VDIHNlcnZlciBjb2RlOiAlc1xuIiwKIAkJCSAgbnRfZXJyc3RyKHN0YXR1cykpKTsKLQkJ
KnRrZXkgPSBOVUxMOwotCQlyZXR1cm4gc3RhdHVzOworCQlnb3RvIGZhaWw7CiAJfQogCisJKnRr
ZXkgPSBrOworCXJldHVybiBOVF9TVEFUVVNfT0s7CisKK25vbWVtOgorCXN0YXR1cyA9IE5UX1NU
QVRVU19OT19NRU1PUlk7CitmYWlsOgorCVRBTExPQ19GUkVFKGspOworCSp0a2V5ID0gTlVMTDsK
KwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgdm9pZCBhZGRfdGtleShzdHJ1Y3QgZG5zX3Nl
cnZlcl90a2V5X3N0b3JlICpzdG9yZSwKKwkJICAgICBzdHJ1Y3QgZG5zX3NlcnZlcl90a2V5ICoq
dGtleSkKK3sKIAlUQUxMT0NfRlJFRShzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSk7CiAK
LQlzdG9yZS0+dGtleXNbc3RvcmUtPm5leHRfaWR4XSA9IGs7CisJc3RvcmUtPnRrZXlzW3N0b3Jl
LT5uZXh0X2lkeF0gPSB0YWxsb2NfbW92ZShzdG9yZS0+dGtleXMsIHRrZXkpOworCiAJKHN0b3Jl
LT5uZXh0X2lkeCkrKzsKIAlzdG9yZS0+bmV4dF9pZHggJT0gc3RvcmUtPnNpemU7Ci0KLQkqdGtl
eSA9IGs7Ci0JcmV0dXJuIE5UX1NUQVRVU19PSzsKIH0KIAogc3RhdGljIE5UU1RBVFVTIGFjY2Vw
dF9nc3NfdGlja2V0KFRBTExPQ19DVFggKm1lbV9jdHgsCkBAIC04NjAsNiArODY4LDcgQEAKIAkJ
c3RydWN0IGRuc19zZXJ2ZXJfdGtleSAqdGtleTsKIAkJREFUQV9CTE9CIGtleTsKIAkJREFUQV9C
TE9CIHJlcGx5OworCQlib29sIGNyZWF0ZWQgPSBmYWxzZTsKIAogCQl0a2V5ID0gZG5zX2ZpbmRf
dGtleShkbnMtPnRrZXlzLCBpbi0+cXVlc3Rpb25zWzBdLm5hbWUpOwogCQlpZiAodGtleSAhPSBO
VUxMICYmIHRrZXktPmNvbXBsZXRlKSB7CkBAIC04NzAsMTUgKzg3OSwxOSBAQAogCQl9CiAKIAkJ
aWYgKHRrZXkgPT0gTlVMTCkgewotCQkJc3RhdHVzICA9IGNyZWF0ZV90a2V5KGRucywgaW4tPnF1
ZXN0aW9uc1swXS5uYW1lLAotCQkJCQkgICAgICBpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5h
bGdvcml0aG0sCi0JCQkJCSAgICAgIHN0YXRlLT5yZW1vdGVfYWRkcmVzcywKLQkJCQkJICAgICAg
c3RhdGUtPmxvY2FsX2FkZHJlc3MsCi0JCQkJCSAgICAgICZ0a2V5KTsKKwkJCXN0YXR1cyA9IGNy
ZWF0ZV90a2V5KAorCQkJCW1lbV9jdHgsCisJCQkJZG5zLAorCQkJCWluLT5xdWVzdGlvbnNbMF0u
bmFtZSwKKwkJCQlpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5hbGdvcml0aG0sCisJCQkJc3Rh
dGUtPnJlbW90ZV9hZGRyZXNzLAorCQkJCXN0YXRlLT5sb2NhbF9hZGRyZXNzLAorCQkJCSZ0a2V5
KTsKIAkJCWlmICghTlRfU1RBVFVTX0lTX09LKHN0YXR1cykpIHsKIAkJCQlyZXRfdGtleS0+cmRh
dGEudGtleV9yZWNvcmQuZXJyb3IgPSBETlNfUkNPREVfQkFES0VZOwogCQkJCXJldHVybiBudHN0
YXR1c190b193ZXJyb3Ioc3RhdHVzKTsKIAkJCX0KKwkJCWNyZWF0ZWQgPSB0cnVlOwogCQl9CiAK
IAkJa2V5LmRhdGEgPSBpbl90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5rZXlfZGF0YTsKQEAgLTkw
Myw2ICs5MTYsOSBAQAogCQkJaWYgKHN0YXRlLT5rZXlfbmFtZSA9PSBOVUxMKSB7CiAJCQkJcmV0
dXJuIFdFUlJfTk9UX0VOT1VHSF9NRU1PUlk7CiAJCQl9CisJCQlpZiAoY3JlYXRlZCkgeworCQkJ
CWFkZF90a2V5KGRucy0+dGtleXMsICZ0a2V5KTsKKwkJCX0KIAkJfSBlbHNlIHsKIAkJCURFQlVH
KDEsICgiR1NTIGtleSBuZWdvdGlhdGlvbiByZXR1cm5lZCAlc1xuIiwgbnRfZXJyc3RyKHN0YXR1
cykpKTsKIAkJCXJldF90a2V5LT5yZGF0YS50a2V5X3JlY29yZC5lcnJvciA9IEROU19SQ09ERV9C
QURLRVk7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEwK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xk
Yl9tb2R1bGVzL2F1ZGl0X3V0aWwuYyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3Nh
bWRiL2xkYl9tb2R1bGVzL2F1ZGl0X3V0aWwuYwotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL3NvdXJj
ZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9hdWRpdF91dGlsLmMJMjAyNS0wMS0zMCAxNjo1Nzo0
NC4xNTQzMTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2RzZGIvc2Ft
ZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbC5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAw
ICswMzAwCkBAIC02OTQsMyArNjk0LDE4MyBAQAogCURCR19FUlIoIlVuYWJsZSB0byBjcmVhdGUg
bGRiIGF0dHJpYnV0ZXMgSlNPTiBhdWRpdCBtZXNzYWdlXG4iKTsKIAlyZXR1cm4gYXR0cmlidXRl
czsKIH0KKworLyoKKyAqIEBicmllZiBHZW5lcmF0ZSBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZywg
ZGV0YWlsaW5nIGF0dHJpYnV0ZXMgaW4gYSBtZXNzYWdlCisgKgorICogRm9yIG1vZGlmeSBvcGVy
YXRpb25zIGVhY2ggYXR0cmlidXRlIGlzIHByZWZpeGVkIHdpdGggdGhlIGFjdGlvbi4KKyAqIE5v
cm1hbCB2YWx1ZXMgYXJlIGVuY2xvc2VkIGluIFtdCisgKiBCYXNlNjQgdmFsdWVzIGFyZSBlbmNs
b3NlZCBpbiB7fQorICogVHJ1bmNhdGVkIHZhbHVlcyBhcmUgaW5kaWNhdGVkIGJ5IHRocmVlIHRy
YWlsaW5nIGRvdHMgIi4uLiIKKyAqCisgKiBAcGFyYW1baW5dICBsZGIgICAgICAgdGhlIGxkYl9j
b250ZXh0CisgKiBAcGFyYW1bb3V0XSBidWZmZXIgICAgdGhlIGF0dHJpYnV0ZXMgd2lsbCBiZSBh
cHBlbmRlZCB0byB0aGUgYnVmZmVyLgorICogICAgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQg
dG8gaGF2ZSBiZWVuIGFsbG9jYXRlZCB2aWEgdGFsbG9jLgorICogQHBhcmFtW2luXSAgb3BlcmF0
aW9uIHRoZSBvcGVyYXRpb24gdHlwZQorICogQHBhcmFtW2luXSAgbWVzc2FnZSAgIHRoZSBtZXNz
YWdlIHRvIHByb2Nlc3MKKyAqCisgKiBAcmV0dXJuIGEgcG9pbnRlciB0byBidWZmZXIKKyAqCisg
Ki8KK2NoYXIgKmRzZGJfYXVkaXRfbG9nX2F0dHJpYnV0ZXMoCisJc3RydWN0IGxkYl9jb250ZXh0
ICpsZGIsCisJY2hhciAqYnVmZmVyLAorCWVudW0gbGRiX3JlcXVlc3RfdHlwZSBvcGVyYXRpb24s
CisJY29uc3Qgc3RydWN0IGxkYl9tZXNzYWdlICptZXNzYWdlKQoreworCXNpemVfdCBpLCBqOwor
CWZvciAoaT0wO2k8bWVzc2FnZS0+bnVtX2VsZW1lbnRzO2krKykgeworCQlpZiAoaSA+IDApIHsK
KwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKGJ1ZmZlciwgIiAiKTsK
KwkJfQorCisJCWlmIChtZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1lID09IE5VTEwpIHsKKwkJCWxk
Yl9kZWJ1ZygKKwkJCQlsZGIsCisJCQkJTERCX0RFQlVHX0VSUk9SLAorCQkJCSJFcnJvcjogSW52
YWxpZCBlbGVtZW50IG5hbWUgKE5VTEwpIGF0ICIKKwkJCQkicG9zaXRpb24gJXp1IiwgaSk7CisJ
CQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCWlmIChvcGVyYXRpb24gPT0gTERCX01PRElGWSkgewor
CQkJY29uc3QgY2hhciAqYWN0aW9uID1OVUxMOworCQkJYWN0aW9uID0gZHNkYl9hdWRpdF9nZXRf
bW9kaWZpY2F0aW9uX2FjdGlvbigKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5mbGFncyk7CisJ
CQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKKwkJCQlidWZmZXIsCisJ
CQkJIiVzOiAlcyAiLAorCQkJCWFjdGlvbiwKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1l
KTsKKwkJfSBlbHNlIHsKKwkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVy
KAorCQkJCWJ1ZmZlciwKKwkJCQkiJXMgIiwKKwkJCQltZXNzYWdlLT5lbGVtZW50c1tpXS5uYW1l
KTsKKwkJfQorCisJCWlmIChkc2RiX2F1ZGl0X3JlZGFjdF9hdHRyaWJ1dGUobWVzc2FnZS0+ZWxl
bWVudHNbaV0ubmFtZSkpIHsKKwkJCS8qCisJCQkgKiBEbyBub3QgbG9nIHRoZSB2YWx1ZSBvZiBh
bnkgc2VjcmV0IG9yIHBhc3N3b3JkCisJCQkgKiBhdHRyaWJ1dGVzCisJCQkgKi8KKwkJCWJ1ZmZl
ciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAorCQkJCWJ1ZmZlciwKKwkJCQkiW1JF
REFDVEVEIFNFQ1JFVCBBVFRSSUJVVEVdIik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZvciAo
aj0wO2o8bWVzc2FnZS0+ZWxlbWVudHNbaV0ubnVtX3ZhbHVlcztqKyspIHsKKwkJCXN0cnVjdCBs
ZGJfdmFsIHY7CisJCQlib29sIHVzZV9iNjRfZW5jb2RlID0gZmFsc2U7CisJCQlzaXplX3QgbGVu
Z3RoOworCQkJaWYgKGogPiAwKSB7CisJCQkJYnVmZmVyID0gdGFsbG9jX2FzcHJpbnRmX2FwcGVu
ZF9idWZmZXIoCisJCQkJCWJ1ZmZlciwKKwkJCQkJIiAiKTsKKwkJCX0KKworCQkJdiA9IG1lc3Nh
Z2UtPmVsZW1lbnRzW2ldLnZhbHVlc1tqXTsKKwkJCWxlbmd0aCA9IE1JTihNQVhfTEVOR1RILCB2
Lmxlbmd0aCk7CisJCQl1c2VfYjY0X2VuY29kZSA9IGxkYl9zaG91bGRfYjY0X2VuY29kZShsZGIs
ICZ2KTsKKwkJCWlmICh1c2VfYjY0X2VuY29kZSkgeworCQkJCWNvbnN0IGNoYXIgKmVuY29kZWQg
PSBsZGJfYmFzZTY0X2VuY29kZSgKKwkJCQkJYnVmZmVyLAorCQkJCQkoY2hhciAqKXYuZGF0YSwK
KwkJCQkJbGVuZ3RoKTsKKwkJCQlidWZmZXIgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZl
cigKKwkJCQkJYnVmZmVyLAorCQkJCSAgICAgICAgInslcyVzfSIsCisJCQkJCWVuY29kZWQsCisJ
CQkJCSh2Lmxlbmd0aCA+IE1BWF9MRU5HVEggPyAiLi4uIiA6ICIiKSk7CisJCQl9IGVsc2Ugewor
CQkJCWJ1ZmZlciA9IHRhbGxvY19hc3ByaW50Zl9hcHBlbmRfYnVmZmVyKAorCQkJCQlidWZmZXIs
CisJCQkJCSJbJSouKnMlc10iLAorCQkJCQkoaW50KWxlbmd0aCwKKwkJCQkJKGludClsZW5ndGgs
CisJCQkJCShjaGFyICopdi5kYXRhLAorCQkJCQkodi5sZW5ndGggPiBNQVhfTEVOR1RIID8gIi4u
LiIgOiAiIikpOworCQkJfQorCQl9CisJfQorCXJldHVybiBidWZmZXI7Cit9CisKKy8qCisgKiBA
YnJpZWYgZ2VuZXJhdGUgYSBodW1hbiByZWFkYWJsZSBsb2cgZW50cnkgZGV0YWlsaW5nIGFuIGxk
YiBvcGVyYXRpb24uCisgKgorICogR2VuZXJhdGUgYSBodW1hbiByZWFkYWJsZSBsb2cgZW50cnkg
ZGV0YWlsaW5nIGFuIGxkYiBvcGVyYXRpb24uCisgKgorICogQHBhcmFtW2luXSBtZW1fY3R4IHRo
ZSB0YWxsb2MgY29udGV4dCBvd25pbmcgdGhlIHJldHVybmVkIHN0cmluZy4KKyAqIEBwYXJhbVtp
bl0gbW9kdWxlICB0aGUgbGRiIG1vZHVsZQorICogQHBhcmFtW2luXSByZXF1ZXN0IHRoZSByZXF1
ZXN0CisgKiBAcGFyYW1baW5dIHJlcGx5ICAgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uCisg
KgorICogQHJldHVybiB0aGUgbG9nIGVudHJ5LgorICoKKyAqLworY2hhciAqZHNkYl9hdWRpdF9v
cGVyYXRpb25faHVtYW5fcmVhZGFibGUoCisJVEFMTE9DX0NUWCAqbWVtX2N0eCwKKwlzdHJ1Y3Qg
bGRiX21vZHVsZSAqbW9kdWxlLAorCWNvbnN0IHN0cnVjdCBsZGJfcmVxdWVzdCAqcmVxdWVzdCwK
Kwljb25zdCBzdHJ1Y3QgbGRiX3JlcGx5ICpyZXBseSkKK3sKKwlzdHJ1Y3QgbGRiX2NvbnRleHQg
KmxkYiA9IE5VTEw7CisJY29uc3QgY2hhciAqcmVtb3RlX2hvc3QgPSBOVUxMOworCWNvbnN0IHN0
cnVjdCB0c29ja2V0X2FkZHJlc3MgKnJlbW90ZSA9IE5VTEw7CisJY29uc3Qgc3RydWN0IGRvbV9z
aWQgKnNpZCA9IE5VTEw7CisJc3RydWN0IGRvbV9zaWRfYnVmIHVzZXJfc2lkOworCWNvbnN0IGNo
YXIgKnRpbWVzdGFtcCA9IE5VTEw7CisJY29uc3QgY2hhciAqb3BfbmFtZSA9IE5VTEw7CisJY2hh
ciAqbG9nX2VudHJ5ID0gTlVMTDsKKwljb25zdCBjaGFyICpkbiA9IE5VTEw7CisJY29uc3QgY2hh
ciAqbmV3X2RuID0gTlVMTDsKKwljb25zdCBzdHJ1Y3QgbGRiX21lc3NhZ2UgKm1lc3NhZ2UgPSBO
VUxMOworCisJVEFMTE9DX0NUWCAqY3R4ID0gdGFsbG9jX25ldyhOVUxMKTsKKworCWxkYiA9IGxk
Yl9tb2R1bGVfZ2V0X2N0eChtb2R1bGUpOworCisJcmVtb3RlX2hvc3QgPSBkc2RiX2F1ZGl0X2dl
dF9yZW1vdGVfaG9zdChsZGIsIGN0eCk7CisJcmVtb3RlID0gZHNkYl9hdWRpdF9nZXRfcmVtb3Rl
X2FkZHJlc3MobGRiKTsKKwlpZiAocmVtb3RlICE9IE5VTEwgJiYgZHNkYl9hdWRpdF9pc19zeXN0
ZW1fc2Vzc2lvbihtb2R1bGUpKSB7CisJCXNpZCA9IGRzZGJfYXVkaXRfZ2V0X2FjdHVhbF9zaWQo
bGRiKTsKKwl9IGVsc2UgeworCQlzaWQgPSBkc2RiX2F1ZGl0X2dldF91c2VyX3NpZChtb2R1bGUp
OworCX0KKwl0aW1lc3RhbXAgPSBhdWRpdF9nZXRfdGltZXN0YW1wKGN0eCk7CisJb3BfbmFtZSA9
IGRzZGJfYXVkaXRfZ2V0X29wZXJhdGlvbl9uYW1lKHJlcXVlc3QpOworCWRuID0gZHNkYl9hdWRp
dF9nZXRfcHJpbWFyeV9kbihyZXF1ZXN0KTsKKwluZXdfZG4gPSBkc2RiX2F1ZGl0X2dldF9zZWNv
bmRhcnlfZG4ocmVxdWVzdCk7CisKKwltZXNzYWdlID0gZHNkYl9hdWRpdF9nZXRfbWVzc2FnZShy
ZXF1ZXN0KTsKKworCWxvZ19lbnRyeSA9IHRhbGxvY19hc3ByaW50ZigKKwkJbWVtX2N0eCwKKwkJ
Ilslc10gYXQgWyVzXSBzdGF0dXMgWyVzXSAiCisJCSJyZW1vdGUgaG9zdCBbJXNdIFNJRCBbJXNd
IEROIFslc10iLAorCQlvcF9uYW1lLAorCQl0aW1lc3RhbXAsCisJCWxkYl9zdHJlcnJvcihyZXBs
eS0+ZXJyb3IpLAorCQlyZW1vdGVfaG9zdCwKKwkJZG9tX3NpZF9zdHJfYnVmKHNpZCwgJnVzZXJf
c2lkKSwKKwkJZG4pOworCWlmIChuZXdfZG4gIT0gTlVMTCkgeworCQlsb2dfZW50cnkgPSB0YWxs
b2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcigKKwkJCWxvZ19lbnRyeSwKKwkJCSIgTmV3IEROIFsl
c10iLAorCQkJbmV3X2RuKTsKKwl9CisJaWYgKG1lc3NhZ2UgIT0gTlVMTCkgeworCQlsb2dfZW50
cnkgPSB0YWxsb2NfYXNwcmludGZfYXBwZW5kX2J1ZmZlcihsb2dfZW50cnksCisJCQkJCQkJICAi
IGF0dHJpYnV0ZXMgWyIpOworCQlsb2dfZW50cnkgPSBkc2RiX2F1ZGl0X2xvZ19hdHRyaWJ1dGVz
KGxkYiwKKwkJCQkJCSAgICAgIGxvZ19lbnRyeSwKKwkJCQkJCSAgICAgIHJlcXVlc3QtPm9wZXJh
dGlvbiwKKwkJCQkJCSAgICAgIG1lc3NhZ2UpOworCQlsb2dfZW50cnkgPSB0YWxsb2NfYXNwcmlu
dGZfYXBwZW5kX2J1ZmZlcihsb2dfZW50cnksICJdIik7CisJfQorCVRBTExPQ19GUkVFKGN0eCk7
CisJcmV0dXJuIGxvZ19lbnRyeTsKK30KZGlmZiAtTnJ1IHNhbWJhLTQuMjIuMTArZGZzZy9zb3Vy
Y2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jIHNhbWJhLTQuMjIuMTErZGZzZy9z
b3VyY2U0L2RzZGIvc2FtZGIvbGRiX21vZHVsZXMvcm9vdGRzZS5jCi0tLSBzYW1iYS00LjIyLjEw
K2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3Jvb3Rkc2UuYwkyMDI1LTAxLTMw
IDE2OjU3OjQ0LjE2MTMxNjAwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL3NvdXJjZTQv
ZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy9yb290ZHNlLmMJMjAyNi0wNy0yMSAxODozNzowNC4xODMy
NzYyMDAgKzAzMDAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJkc2RiL3NhbWRiL3NhbWRi
LmgiCiAjaW5jbHVkZSAidmVyc2lvbi5oIgogI2luY2x1ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVs
ZXMvdXRpbC5oIgorI2luY2x1ZGUgImRzZGIvc2FtZGIvbGRiX21vZHVsZXMvYXVkaXRfdXRpbF9w
cm90by5oIgogI2luY2x1ZGUgImxpYmNsaS9zZWN1cml0eS9zZWN1cml0eS5oIgogI2luY2x1ZGUg
ImxpYnJwYy9uZHIvbGlibmRyLmgiCiAjaW5jbHVkZSAiYXV0aC9hdXRoLmgiCkBAIC03NDYsMTgg
Kzc0Nyw2OCBAQAogCXJldHVybiBMREJfU1VDQ0VTUzsKIH0KIAotLyogRW5zdXJlIHRoYXQgYW5v
bnltb3VzIHVzZXJzIGFyZSBub3QgYWxsb3dlZCB0byBtYWtlIGFueXRoaW5nIG90aGVyIHRoYW4g
cm9vdERTRSBzZWFyY2ggb3BlcmF0aW9ucyAqLwotCisvKgorICogRW5zdXJlIHRoYXQgYW5vbnlt
b3VzIHVzZXJzIGFyZSBub3QgYWxsb3dlZCB0byBtYWtlIGFueXRoaW5nIG90aGVyIHRoYW4KKyAq
IHJvb3REU0Ugc2VhcmNoIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwgZG5zIGxpa2UgQE1PRFVMRVMg
YXJlIG5vdCBhbGxvd2VkCisgKiBvdmVyIGFuIHVudHJ1c3RlZCBjb25uZWN0aW9uLgorICovCiBz
dGF0aWMgaW50IHJvb3Rkc2VfZmlsdGVyX29wZXJhdGlvbnMoc3RydWN0IGxkYl9tb2R1bGUgKm1v
ZHVsZSwgc3RydWN0IGxkYl9yZXF1ZXN0ICpyZXEpCiB7CiAJc3RydWN0IGF1dGhfc2Vzc2lvbl9p
bmZvICpzZXNzaW9uX2luZm87CiAJc3RydWN0IHJvb3Rkc2VfcHJpdmF0ZV9kYXRhICpwcml2ID0g
dGFsbG9jX2dldF90eXBlKGxkYl9tb2R1bGVfZ2V0X3ByaXZhdGUobW9kdWxlKSwgc3RydWN0IHJv
b3Rkc2VfcHJpdmF0ZV9kYXRhKTsKIAlib29sIGlzX3VudHJ1c3RlZCA9IGxkYl9yZXFfaXNfdW50
cnVzdGVkKHJlcSk7CiAJYm9vbCBpc19hbm9ueW1vdXMgPSB0cnVlOworCXN0cnVjdCBsZGJfZG4g
KmRuID0gTlVMTDsKKwlzdHJ1Y3QgbGRiX2RuICpkbjIgPSBOVUxMOworCiAJaWYgKGlzX3VudHJ1
c3RlZCA9PSBmYWxzZSkgewogCQlyZXR1cm4gTERCX1NVQ0NFU1M7CiAJfQogCisJc3dpdGNoIChy
ZXEtPm9wZXJhdGlvbikgeworCWNhc2UgTERCX1NFQVJDSDoKKwkJZG4gPSByZXEtPm9wLnNlYXJj
aC5iYXNlOworCQlicmVhazsKKwljYXNlIExEQl9BREQ6CisJCWRuID0gcmVxLT5vcC5hZGQubWVz
c2FnZS0+ZG47CisJCWJyZWFrOworCWNhc2UgTERCX01PRElGWToKKwkJZG4gPSByZXEtPm9wLm1v
ZC5tZXNzYWdlLT5kbjsKKwkJYnJlYWs7CisJY2FzZSBMREJfREVMRVRFOgorCQlkbiA9IHJlcS0+
b3AuZGVsLmRuOworCQlicmVhazsKKwljYXNlIExEQl9SRU5BTUU6CisJCWRuID0gcmVxLT5vcC5y
ZW5hbWUub2xkZG47CisJCWRuMiA9IHJlcS0+b3AucmVuYW1lLm5ld2RuOworCQlicmVhazsKKwlj
YXNlIExEQl9FWFRFTkRFRDoKKwkJYnJlYWs7CisJY2FzZSBMREJfUkVRX1JFR0lTVEVSX0NPTlRS
T0w6CisJY2FzZSBMREJfUkVRX1JFR0lTVEVSX1BBUlRJVElPTjoKKwkJbGRiX3NldF9lcnJzdHJp
bmcobGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksICJJbnZhbGlkIE9QIik7CisJCXJldHVybiBM
REJfRVJSX09QRVJBVElPTlNfRVJST1I7CisJfQorCisJaWYgKGxkYl9kbl9pc19zcGVjaWFsKGRu
KSkgeworCQlzdHJ1Y3QgbGRiX3JlcGx5IHJlcGx5ID0geyAuZXJyb3IgPSBMREJfRVJSX09QRVJB
VElPTlNfRVJST1IsIH07CisKKwkJRF9FUlIoIkNWRS0yMDI2LTU4MjIxLUFUVEFDSzogJXNcbiIs
CisJCQlkc2RiX2F1ZGl0X29wZXJhdGlvbl9odW1hbl9yZWFkYWJsZShyZXEsIG1vZHVsZSwgcmVx
LCAmcmVwbHkpKTsKKworCQlsZGJfc2V0X2VycnN0cmluZyhsZGJfbW9kdWxlX2dldF9jdHgobW9k
dWxlKSwgIkludmFsaWQgRE4iKTsKKwkJcmV0dXJuIExEQl9FUlJfT1BFUkFUSU9OU19FUlJPUjsK
Kwl9CisJaWYgKGxkYl9kbl9pc19zcGVjaWFsKGRuMikpIHsKKwkJc3RydWN0IGxkYl9yZXBseSBy
ZXBseSA9IHsgLmVycm9yID0gTERCX0VSUl9PUEVSQVRJT05TX0VSUk9SLCB9OworCisJCURfRVJS
KCJDVkUtMjAyNi01ODIyMS1BVFRBQ0s6ICVzXG4iLAorCQkJZHNkYl9hdWRpdF9vcGVyYXRpb25f
aHVtYW5fcmVhZGFibGUocmVxLCBtb2R1bGUsIHJlcSwgJnJlcGx5KSk7CisKKwkJbGRiX3NldF9l
cnJzdHJpbmcobGRiX21vZHVsZV9nZXRfY3R4KG1vZHVsZSksICJJbnZhbGlkIEROIik7CisJCXJl
dHVybiBMREJfRVJSX09QRVJBVElPTlNfRVJST1I7CisJfQorCiAJc2Vzc2lvbl9pbmZvID0gKHN0
cnVjdCBhdXRoX3Nlc3Npb25faW5mbyAqKWxkYl9nZXRfb3BhcXVlKAogCQlsZGJfbW9kdWxlX2dl
dF9jdHgobW9kdWxlKSwKIAkJRFNEQl9TRVNTSU9OX0lORk8pOwpkaWZmIC1OcnUgc2FtYmEtNC4y
Mi4xMCtkZnNnL3NvdXJjZTQvZHNkYi9zYW1kYi9sZGJfbW9kdWxlcy93c2NyaXB0X2J1aWxkX3Nl
cnZlciBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRiL2xkYl9tb2R1bGVzL3dz
Y3JpcHRfYnVpbGRfc2VydmVyCi0tLSBzYW1iYS00LjIyLjEwK2Rmc2cvc291cmNlNC9kc2RiL3Nh
bWRiL2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVpbGRfc2VydmVyCTIwMjUtMDYtMDQgMTI6MDg6NDYu
NDM4MTExNTAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9kc2RiL3NhbWRi
L2xkYl9tb2R1bGVzL3dzY3JpcHRfYnVpbGRfc2VydmVyCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgz
Mjc2MjAwICswMzAwCkBAIC0xODUsNyArMTg1LDcgQEAKIAlpbml0X2Z1bmN0aW9uPSdsZGJfcm9v
dGRzZV9tb2R1bGVfaW5pdCcsCiAJbW9kdWxlX2luaXRfbmFtZT0nbGRiX2luaXRfbW9kdWxlJywK
IAlpbnRlcm5hbF9tb2R1bGU9RmFsc2UsCi0JZGVwcz0ndGFsbG9jIHNhbWRiIE1FU1NBR0lORyBz
YW1iYS1zZWN1cml0eSBEU0RCX01PRFVMRV9IRUxQRVJTIFJQQ19ORFJfSVJQQycKKwlkZXBzPSd0
YWxsb2Mgc2FtZGIgTUVTU0FHSU5HIHNhbWJhLXNlY3VyaXR5IERTREJfTU9EVUxFX0hFTFBFUlMg
RFNEQl9NT0RVTEVfSEVMUEVSU19BVURJVCBSUENfTkRSX0lSUEMnCiAJKQogCiAKZGlmZiAtTnJ1
IHNhbWJhLTQuMjIuMTArZGZzZy9zb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYyBzYW1iYS00
LjIyLjExK2Rmc2cvc291cmNlNC9rZGMva3Bhc3N3ZC1zZXJ2aWNlLmMKLS0tIHNhbWJhLTQuMjIu
MTArZGZzZy9zb3VyY2U0L2tkYy9rcGFzc3dkLXNlcnZpY2UuYwkyMDI1LTAxLTMwIDE2OjU3OjQ0
LjE3ODMxNTkwMCArMDMwMAorKysgc2FtYmEtNC4yMi4xMStkZnNnL3NvdXJjZTQva2RjL2twYXNz
d2Qtc2VydmljZS5jCTIwMjYtMDctMjEgMTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0xMzcs
NyArMTM3LDcgQEAKIAogCWFwX3JlcV9ibG9iID0gZGF0YV9ibG9iX2NvbnN0KCZyZXF1ZXN0LT5k
YXRhW0hFQURFUl9MRU5dLCBhcF9yZXFfbGVuKTsKIAotCWVuY19kYXRhX2xlbiA9IGxlbiAtIGFw
X3JlcV9sZW47CisJZW5jX2RhdGFfbGVuID0gbGVuIC0gKGFwX3JlcV9sZW4gKyBIRUFERVJfTEVO
KTsKIAllbmNfZGF0YV9ibG9iID0gZGF0YV9ibG9iX2NvbnN0KCZyZXF1ZXN0LT5kYXRhW0hFQURF
Ul9MRU4gKyBhcF9yZXFfbGVuXSwKIAkJCQkJZW5jX2RhdGFfbGVuKTsKIApkaWZmIC1OcnUgc2Ft
YmEtNC4yMi4xMCtkZnNnL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMgc2FtYmEt
NC4yMi4xMStkZnNnL3NvdXJjZTQvbGRhcF9zZXJ2ZXIvbGRhcF9iYWNrZW5kLmMKLS0tIHNhbWJh
LTQuMjIuMTArZGZzZy9zb3VyY2U0L2xkYXBfc2VydmVyL2xkYXBfYmFja2VuZC5jCTIwMjUtMDEt
MzAgMTY6NTc6NDQuMTg3MzE2MDAwICswMzAwCisrKyBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNl
NC9sZGFwX3NlcnZlci9sZGFwX2JhY2tlbmQuYwkyMDI2LTA3LTIxIDE4OjM3OjA0LjE4MzI3NjIw
MCArMDMwMApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInNhbWJhL3NlcnZpY2Vfc3RyZWFt
LmgiCiAjaW5jbHVkZSAiZHNkYi9nbXNhL3V0aWwuaCIKICNpbmNsdWRlICJkc2RiL3NhbWRiL3Nh
bWRiLmgiCisjaW5jbHVkZSAiZHNkYi9jb21tb24vdXRpbC5oIgogI2luY2x1ZGUgPGxkYl9lcnJv
cnMuaD4KICNpbmNsdWRlIDxsZGJfbW9kdWxlLmg+CiAjaW5jbHVkZSAibGRiX3dyYXAuaCIKQEAg
LTE0NDksNiArMTQ1MCw3IEBACiAJc3RydWN0IGxkYl9kbiAqZG47CiAJY29uc3QgY2hhciAqYXR0
cnNbMV07CiAJY29uc3QgY2hhciAqZXJyc3RyID0gTlVMTDsKKwljb25zdCBjaGFyICp2YWx1ZSA9
IE5VTEw7CiAJY29uc3QgY2hhciAqZmlsdGVyID0gTlVMTDsKIAlpbnQgcmVzdWx0ID0gTERBUF9T
VUNDRVNTOwogCWludCBsZGJfcmV0OwpAQCAtMTQ2MSwyMSArMTQ2MywzMSBAQAogCWRuID0gbGRi
X2RuX25ldyhsb2NhbF9jdHgsIHNhbWRiLCByZXEtPmRuKTsKIAlOVF9TVEFUVVNfSEFWRV9OT19N
RU1PUlkoZG4pOwogCisJY29tcGFyZV9yID0gbGRhcHNydl9pbml0X3JlcGx5KGNhbGwsIExEQVBf
VEFHX0NvbXBhcmVSZXNwb25zZSk7CisJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKGNvbXBhcmVf
cik7CisKIAlEQkdfREVCVUcoImRuOiBbJXNdXG4iLCByZXEtPmRuKTsKLQlmaWx0ZXIgPSB0YWxs
b2NfYXNwcmludGYobG9jYWxfY3R4LCAiKCVzPSUqcykiLCByZXEtPmF0dHJpYnV0ZSwKLQkJCQkg
KGludClyZXEtPnZhbHVlLmxlbmd0aCwgcmVxLT52YWx1ZS5kYXRhKTsKKworCWlmICghbGRiX3Zh
bGlkX2F0dHJfbmFtZShyZXEtPmF0dHJpYnV0ZSkpIHsKKwkJcmVzdWx0ID0gTERBUF9JTlZBTElE
X0FUVFJJQlVURV9TWU5UQVg7CisJCWVycnN0ciA9ICJJbnZhbGlkIENvbXBhcmUgYXR0cmlidXRl
IG5hbWUiOworCQlnb3RvIHJlcGx5OworCX0KKwl2YWx1ZSA9IGxkYl9iaW5hcnlfZW5jb2RlKGxv
Y2FsX2N0eCwgcmVxLT52YWx1ZSk7CisJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKHZhbHVlKTsK
KworCWZpbHRlciA9IHRhbGxvY19hc3ByaW50Zihsb2NhbF9jdHgsICIlcz0lcyIsIHJlcS0+YXR0
cmlidXRlLCB2YWx1ZSk7CiAJTlRfU1RBVFVTX0hBVkVfTk9fTUVNT1JZKGZpbHRlcik7CiAKIAlE
QkdfREVCVUcoImF0dHJpYnV0ZTogWyVzXVxuIiwgZmlsdGVyKTsKIAogCWF0dHJzWzBdID0gTlVM
TDsKIAotCWNvbXBhcmVfciA9IGxkYXBzcnZfaW5pdF9yZXBseShjYWxsLCBMREFQX1RBR19Db21w
YXJlUmVzcG9uc2UpOwotCU5UX1NUQVRVU19IQVZFX05PX01FTU9SWShjb21wYXJlX3IpOwotCiAJ
aWYgKHJlc3VsdCA9PSBMREFQX1NVQ0NFU1MpIHsKLQkJbGRiX3JldCA9IGxkYl9zZWFyY2goc2Ft
ZGIsIGxvY2FsX2N0eCwgJnJlcywKLQkJCQkgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMs
ICIlcyIsIGZpbHRlcik7CisJCWxkYl9yZXQgPSBkc2RiX3NlYXJjaChzYW1kYiwgbG9jYWxfY3R4
LCAmcmVzLAorCQkJCSAgICAgIGRuLCBMREJfU0NPUEVfQkFTRSwgYXR0cnMsCisJCQkJICAgICAg
RFNEQl9NQVJLX1JFUV9VTlRSVVNURUQsCisJCQkJICAgICAgIiVzIiwgZmlsdGVyKTsKIAkJaWYg
KGxkYl9yZXQgIT0gTERCX1NVQ0NFU1MpIHsKIAkJCXJlc3VsdCA9IG1hcF9sZGJfZXJyb3IobG9j
YWxfY3R4LCBsZGJfcmV0LAogCQkJCQkgICAgICAgbGRiX2VycnN0cmluZyhzYW1kYiksICZlcnJz
dHIpOwpAQCAtMTQ5Nyw2ICsxNTA5LDcgQEAKIAkJfQogCX0KIAorcmVwbHk6CiAJY29tcGFyZSA9
ICZjb21wYXJlX3ItPm1zZy0+ci5Db21wYXJlUmVzcG9uc2U7CiAJY29tcGFyZS0+ZG4gPSBOVUxM
OwogCWNvbXBhcmUtPnJlc3VsdGNvZGUgPSByZXN1bHQ7CmRpZmYgLU5ydSBzYW1iYS00LjIyLjEw
K2Rmc2cvc291cmNlNC9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9kbnNfbmFtZV9wYWNrZXQtaGV4
LnR4dCBzYW1iYS00LjIyLjExK2Rmc2cvc291cmNlNC9saWJycGMvdGVzdHMvZG5zLWRlY29kZV9k
bnNfbmFtZV9wYWNrZXQtaGV4LnR4dAotLS0gc2FtYmEtNC4yMi4xMCtkZnNnL3NvdXJjZTQvbGli
cnBjL3Rlc3RzL2Rucy1kZWNvZGVfZG5zX25hbWVfcGFja2V0LWhleC50eHQJMjAyNS0wMS0zMCAx
Njo1Nzo0NC4yMTAzMTYwMDAgKzAzMDAKKysrIHNhbWJhLTQuMjIuMTErZGZzZy9zb3VyY2U0L2xp
YnJwYy90ZXN0cy9kbnMtZGVjb2RlX2Ruc19uYW1lX3BhY2tldC1oZXgudHh0CTIwMjYtMDctMjEg
MTg6Mzc6MDQuMTgzMjc2MjAwICswMzAwCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgICAgIGFuc3dl
cnM6IEFSUkFZKDApCiAgICAgICAgIG5zcmVjczogQVJSQVkoMSkKICAgICAgICAgICAgIG5zcmVj
czogc3RydWN0IGRuc19yZXNfcmVjCisgICAgICAgICAgICAgICAgc3RhcnRfbmRyX29mZnNldCAg
ICAgICAgIDogMHgwMDAwMDAyNyAoMzkpCiAgICAgICAgICAgICAgICAgbmFtZSAgICAgICAgICAg
ICAgICAgICAgIDogJ2NuYW1lZG90cHJlZml4MC5zYW1iYTIwMDMuZXhhbXBsZS5jb20nCiAgICAg
ICAgICAgICAgICAgcnJfdHlwZSAgICAgICAgICAgICAgICAgIDogRE5TX1FUWVBFX0NOQU1FICgw
eDUpCiAgICAgICAgICAgICAgICAgcnJfY2xhc3MgICAgICAgICAgICAgICAgIDogRE5TX1FDTEFT
U19JTiAoMHgxKQo=