ports/130174: New port: net/igmpproxy multicast proxy
gm at ipfw.ru
gm at ipfw.ru
Tue Jan 6 21:10:04 UTC 2009
The following reply was made to PR ports/130174; it has been noted by GNATS.
From: gm at ipfw.ru
To: bug-followup at FreeBSD.org, melifaro at ipfw.ru
Cc:
Subject: Re: ports/130174: New port: net/igmpproxy multicast proxy
Date: Tue, 6 Jan 2009 23:43:43 +0300
------------DD1D5D193AB3E2
Content-Type: text/plain; charset=windows-1251
Content-Transfer-Encoding: quoted-printable
Fixed build in 6.X and portlint -t warning
------------DD1D5D193AB3E2
Content-Type: text/plain;
name="newport.txt"
Content-transfer-encoding: base64
Content-Disposition: attachment;
filename="newport.txt"
IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUg
YW55dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50
ZXJpbmcgInNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBm
aWxlcyBhbmQgZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBk
ZWZhdWx0IHBlcm1pc3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJaWdt
cHByb3h5CiMJaWdtcHByb3h5L01ha2VmaWxlCiMJaWdtcHByb3h5L3BrZy1kZXNjcgojCWln
bXBwcm94eS9kaXN0aW5mbwojCWlnbXBwcm94eS9maWxlcwojCWlnbXBwcm94eS9maWxlcy9w
YXRjaC1mYnNkCiMJaWdtcHByb3h5L2ZpbGVzL2lnbXBwcm94eQojCmVjaG8gYyAtIGlnbXBw
cm94eQpta2RpciAtcCBpZ21wcHJveHkgPiAvZGV2L251bGwgMj4mMQplY2hvIHggLSBpZ21w
cHJveHkvTWFrZWZpbGUKc2VkICdzL15YLy8nID5pZ21wcHJveHkvTWFrZWZpbGUgPDwgJ0VO
RC1vZi1pZ21wcHJveHkvTWFrZWZpbGUnClgjIE5ldyBwb3J0cyBjb2xsZWN0aW9uIG1ha2Vm
aWxlIGZvcjogIGlnbXBwcm94eQpYIyBEYXRlIGNyZWF0ZWQ6ICAgICAgICA1IEphbnVhcnkg
MjAwOQpYIyBXaG9tOiAgICAgICAgICAgICAgICBhc2FtaQpYIwpYIyAkRnJlZUJTRCQKWCMK
WApYUE9SVE5BTUU9CWlnbXBwcm94eQpYUE9SVFZFUlNJT049CTAuMQpYI1BPUlRSRVZJU0lP
Tj0JMgpYQ0FURUdPUklFUz0JbmV0ClhNQVNURVJfU0lURVM9CSR7TUFTVEVSX1NJVEVfU09V
UkNFRk9SR0V9ClhNQVNURVJfU0lURV9TVUJESVI9CSR7UE9SVE5BTUV9ClhESVNUTkFNRT0J
JHtQT1JUTkFNRX0tc3JjLSR7UE9SVFZFUlNJT059LWJldGEyClgKWE1BSU5UQUlORVI9CW1l
bGlmYXJvQGlwZncucnUKWENPTU1FTlQ9CU11bHRpY2FzdCByb3V0ZXIgdXRpbGl6aW5nIElH
TVAgZm9yd2FyZGluZwpYClhIT01FUEFHRT0JaHR0cDovL2lnbXBwcm94eS5zb3VyY2Vmb3Jn
ZS5uZXQvClhXUktTUkM9CQkke1dSS0RJUn0vaWdtcHByb3h5L3NyYwpYClhNQU41PQkJaWdt
cHByb3h5LmNvbmYuNQpYTUFOOD0JCWlnbXBwcm94eS44ClgKWFBMSVNUX0ZJTEVTPQlzYmlu
L2lnbXBwcm94eSBcClgJCWV0Yy9pZ21wcHJveHkuY29uZi5zYW1wbGUgXApYCQlldGMvcmMu
ZC9pZ21wcHJveHkKWApYZG8taW5zdGFsbDoKWAkke0lOU1RBTExfUFJPR1JBTX0gJHtXUktT
UkN9L2lnbXBwcm94eSAke1BSRUZJWH0vc2JpbgpYCSR7SU5TVEFMTF9NQU59ICR7V1JLU1JD
fS8uLi9kb2MvaWdtcHByb3h5LjggJHtQUkVGSVh9L21hbi9tYW44ClgJJHtJTlNUQUxMX01B
Tn0gJHtXUktTUkN9Ly4uL2RvYy9pZ21wcHJveHkuY29uZi41ICR7UFJFRklYfS9tYW4vbWFu
NQpYCSR7SU5TVEFMTF9EQVRBfSAke1dSS1NSQ30vaWdtcHByb3h5LmNvbmYgJHtQUkVGSVh9
L2V0Yy9pZ21wcHJveHkuY29uZi5zYW1wbGUKWAkke0lOU1RBTExfU0NSSVBUfSAke0ZJTEVT
RElSfS9pZ21wcHJveHkgJHtQUkVGSVh9L2V0Yy9yYy5kClgKWC5pbmNsdWRlIDxic2QucG9y
dC5taz4KRU5ELW9mLWlnbXBwcm94eS9NYWtlZmlsZQplY2hvIHggLSBpZ21wcHJveHkvcGtn
LWRlc2NyCnNlZCAncy9eWC8vJyA+aWdtcHByb3h5L3BrZy1kZXNjciA8PCAnRU5ELW9mLWln
bXBwcm94eS9wa2ctZGVzY3InClhpZ21wcHJveHkgaXMgYSBzaW1wbGUgbXVsdGljYXN0IHJv
dXRpbmcgZGFlbW9uIGJhc2VkIG9uIG1yb3V0ZWQuIEl0IHVzZXMgSUdNUApYZm9yd2FyZGlu
ZyB0byBkeW5hbWljYWxseSByb3V0ZSBtdWx0aWNhc3QgdHJhZmZpYy4gClhSZXFpdXJlcyBt
dWx0aWNhc3QgZm9yd2FyZGluZyBlbmFibGVkClgKWFdXVzogaHR0cDovL2lnbXBwcm94eS5z
b3VyY2Vmb3JnZS5uZXQvCkVORC1vZi1pZ21wcHJveHkvcGtnLWRlc2NyCmVjaG8geCAtIGln
bXBwcm94eS9kaXN0aW5mbwpzZWQgJ3MvXlgvLycgPmlnbXBwcm94eS9kaXN0aW5mbyA8PCAn
RU5ELW9mLWlnbXBwcm94eS9kaXN0aW5mbycKWE1ENSAoaWdtcHByb3h5LXNyYy0wLjEtYmV0
YTIudGFyLmd6KSA9IDJhNWE1OTQ4MGY0NGQ0YjE0MDc3YTZiNTMxOWU5OTQwClhTSEEyNTYg
KGlnbXBwcm94eS1zcmMtMC4xLWJldGEyLnRhci5neikgPSA3ZjZlNTQ4NmU4NDgyNzE1MGM4
Y2E0MDI5NjdjOTYzMzRiYmQ2MmI5Zjc4NTE5NWM0ZWU4NGRhMTIxOGFiYjQwClhTSVpFIChp
Z21wcHJveHktc3JjLTAuMS1iZXRhMi50YXIuZ3opID0gMzUxMDMKRU5ELW9mLWlnbXBwcm94
eS9kaXN0aW5mbwplY2hvIGMgLSBpZ21wcHJveHkvZmlsZXMKbWtkaXIgLXAgaWdtcHByb3h5
L2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4IC0gaWdtcHByb3h5L2ZpbGVzL3BhdGNo
LWZic2QKc2VkICdzL15YLy8nID5pZ21wcHJveHkvZmlsZXMvcGF0Y2gtZmJzZCA8PCAnRU5E
LW9mLWlnbXBwcm94eS9maWxlcy9wYXRjaC1mYnNkJwpYZGlmZiAtdXJOIE1ha2VmaWxlIGln
bXBwcm94eS5uZXcvc3JjL01ha2VmaWxlClgtLS0gTWFrZWZpbGUJMjAwNS0wOC0yMCAxNjoz
NDoxOC4wMDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJveHkubmV3L3NyYy9NYWtlZmlsZQky
MDA5LTAxLTA1IDAyOjM1OjU2LjAwMDAwMDAwMCArMDMwMApYQEAgLTEsMTIgKzEsMTIgQEAK
WCAKWCAjQklORElSPS4uL2JpbgpYIEJJTkRJUj0vdXNyL2xvY2FsL2JpbgpYLUVUQ0RJUj0v
ZXRjClgtTUFORElSPS91c3Ivc2hhcmUvbWFuClgrRVRDRElSPS91c3IvbG9jYWwvZXRjClgr
TUFORElSPS91c3IvbG9jYWwvbWFuClggClggClggIyBDRkxBR1M9LWcKWC1DRkxBR1M9LU8K
WCtDRkxBR1MrPS1PMiAtV2FsbCAtV2V4dHJhIC1mbm8tYnVpbHRpbi1sb2cKWCAKWCBkZWZh
dWx0IDogYnVpbGQuaCBpZ21wcHJveHkKWCAKWEBAIC0yMSw4ICsyMSwxMSBAQApYIAljcCAu
Li9kb2MvaWdtcHByb3h5LmNvbmYuNSAke01BTkRJUn0vbWFuNQpYIAlpZiBbICEgLWUgJHtF
VENESVJ9L2lnbXBwcm94eS5jb25mIF07IHRoZW4gY3AgaWdtcHByb3h5LmNvbmYgJHtFVENE
SVJ9OyBmaQpYIApYLWlnbXBwcm94eSA6IGlnbXBwcm94eS5vIGNvbmZpZy5vIGNvbmZyZWFk
Lm8gcmVxdWVzdC5vIHVkcHNvY2subyBtY2dyb3VwLm8gcnR0YWJsZS5vIFwKWC0JCQlpZ21w
Lm8gaWZ2Yy5vIGNhbGxvdXQubyBrZXJuLm8gc3lzbG9nLm8gbGliLm8gbXJvdXRlLWFwaS5v
ClgrU1JDID0gaWdtcHByb3h5LmMgY29uZmlnLmMgY29uZnJlYWQuYyByZXF1ZXN0LmMgbWNn
cm91cC5jIHJ0dGFibGUuYyBcClgrCQkJaWdtcC5jIGlmdmMuYyBjYWxsb3V0LmMga2Vybi5j
IHN5c2xvZy5jIGxpYi5jIG1yb3V0ZS1hcGkuYwpYK09CSlMgPSAke1NSQzouYz0ub30KWCtp
Z21wcHJveHk6IGJ1aWxkLmggJHtPQkpTfQpYKwljYyAke0NGTEFHU30gJHtPQkpTfSAtbyBp
Z21wcHJveHkKWCAKWCBidWlsZC5oCTogIApYIAllY2hvICcjZGVmaW5lIEJVSUxEICInIGBk
YXRlICsleSVtJWRgICciJyA+YnVpbGQuaApYZGlmZiAtdXJOIGNvbmZpZy5jIGlnbXBwcm94
eS5uZXcvc3JjL2NvbmZpZy5jClgtLS0gY29uZmlnLmMJMjAwNS0wNS0yNCAxOTo0OToyOS4w
MDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJveHkubmV3L3NyYy9jb25maWcuYwkyMDA5LTAx
LTA1IDAxOjU4OjI3LjAwMDAwMDAwMCArMDMwMApYQEAgLTE3Nyw3ICsxNzcsNyBAQApYICAg
ICB9ClggClggICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgVklGcy4uLgpYLSAgICBmb3IgKCBJ
eCA9IDA7IERwID0gZ2V0SWZCeUl4KCBJeCApOyBJeCsrICkgewpYKyAgICBmb3IgKCBJeCA9
IDA7IChEcCA9IGdldElmQnlJeCggSXggKSk7IEl4KysgKSB7ClggICAgICAgICBpZiAoIERw
LT5JbkFkci5zX2FkZHIgJiYgISAoRHAtPkZsYWdzICYgSUZGX0xPT1BCQUNLKSApIHsKWCAK
WCAgICAgICAgICAgICAvLyBOb3cgdHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBjb25maWcuLi4K
WEBAIC0yNTUsNyArMjU1LDcgQEAKWCAgICAgd2hpbGUodG9rZW4gIT0gTlVMTCkgewpYICAg
ICAgICAgaWYoc3RyY21wKCJhbHRuZXQiLCB0b2tlbik9PTApIHsKWCAgICAgICAgICAgICAv
LyBBbHRuZXQuLi4KWC0gICAgICAgICAgICBzdHJ1Y3QgaW5fYWRkciAgbmV0d29ya0FkZHI7
ClgrICAgICAgICAgICAgLy9zdHJ1Y3QgaW5fYWRkciAgbmV0d29ya0FkZHI7ClggClggICAg
ICAgICAgICAgdG9rZW4gPSBuZXh0Q29uZmlnVG9rZW4oKTsKWCAgICAgICAgICAgICBJRl9E
RUJVRyBsb2coTE9HX0RFQlVHLCAwLCAiQ29uZmlnOiBJRjogR290IGFsdG5ldCB0b2tlbiAl
cy4iLHRva2VuKTsKWEBAIC0zNDcsNyArMzQ3LDcgQEAKWCAgICAgICAgIG1hc2sgPDw9ICgz
MiAtIGJpdGNudCk7ClggICAgIH0KWCAKWC0gICAgaWYoYWRkciA9PSAtMSB8fCBhZGRyID09
IDApIHsKWCsgICAgaWYoYWRkciA9PSAodWludDMyKSAtMSB8fCBhZGRyID09IDApIHsKWCAg
ICAgICAgIGxvZyhMT0dfV0FSTklORywgMCwgIlVuYWJsZSB0byBwYXJzZSBhZGRyZXNzIHRv
a2VuICclcycuIiwgYWRkcnN0cik7ClggICAgICAgICByZXR1cm4gTlVMTDsKWCAgICAgfQpY
ZGlmZiAtdXJOIGRlZnMuaCBpZ21wcHJveHkubmV3L3NyYy9kZWZzLmgKWC0tLSBkZWZzLmgJ
MjAwNS0wOC0yMCAxNjo0NDo0Ny4wMDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJveHkubmV3
L3NyYy9kZWZzLmgJMjAwOS0wMS0wNSAwMjoxMDoxMS4wMDAwMDAwMDAgKzAzMDAKWEBAIC00
MCwxMCArNDAsMTggQEAKWCAjaW5jbHVkZSA8c3RkbGliLmg+ClggI2luY2x1ZGUgPHN5c2xv
Zy5oPgpYICNpbmNsdWRlIDxzaWduYWwuaD4KWC0KWCAjaW5jbHVkZSA8c3lzL3NvY2tldC5o
PgpYKwpYKyNpZmRlZiBfX0ZyZWVCU0RfXwpYKyNpbmNsdWRlIDxzdHJpbmcuaD4KWCsjaW5j
bHVkZSA8dW5pc3RkLmg+ClgrI2luY2x1ZGUgPGZjbnRsLmg+ClgrI2luY2x1ZGUgPHN5cy9p
b2N0bC5oPgpYKwpYKyNlbHNlClggI2luY2x1ZGUgPHN5cy91bi5oPgpYICNpbmNsdWRlIDxz
eXMvdGltZS5oPgpYKyNlbmRpZgpYIApYICNpbmNsdWRlIDxuZXQvaWYuaD4KWCAKWEBAIC01
MiwxNSArNjAsMjUgQEAKWCAgICAgI2luY2x1ZGUgPGxpbnV4L2luLmg+ClggICAgICNpbmNs
dWRlIDxsaW51eC9tcm91dGUuaD4KWCAjZWxzZQpYKyNpZmRlZiBfX0ZyZWVCU0RfXwpYKyAg
ICAjaW5jbHVkZSA8YWxpYXMuaD4KWCsgICAgI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgpYICAg
ICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpYKyAgICAjaW5jbHVkZSA8bmV0aW5ldC9pcF9t
cm91dGUuaD4KWCsjZW5kaWYKWCsgICAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KWCsgICAg
I2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KWCAgICAgI2luY2x1ZGUgPG5ldGluZXQv
aXAuaD4KWCAgICAgI2luY2x1ZGUgPG5ldGluZXQvaWdtcC5oPgpYICAgICAjaW5jbHVkZSA8
YXJwYS9pbmV0Lmg+ClggI2VuZGlmClggClgtClggLy8gVGhlIGRlZmF1bHQgcGF0aCBmb3Ig
dGhlIGNvbmZpZyBmaWxlLi4uClgrI2lmZGVmIF9fRnJlZUJTRF9fClgrI2RlZmluZSAgICAg
SUdNUFBST1hZX0NPTkZJR19GSUxFUEFUSCAgICAgIi91c3IvbG9jYWwvZXRjL2lnbXBwcm94
eS5jb25mIgpYKyNlbHNlClggI2RlZmluZSAgICAgSUdNUFBST1hZX0NPTkZJR19GSUxFUEFU
SCAgICAgIi9ldGMvaWdtcHByb3h5LmNvbmYiClgrI2VuZGlmClggI2RlZmluZSAgICAgRU5B
QkxFX0RFQlVHICAgIDEKWCAKWCAvKgpYQEAgLTcyLDkgKzkwLDMxIEBAClggClggI2RlZmlu
ZSBNQVhfTUNfVklGUyAgICAzMiAgICAgLy8gISEhIGNoZWNrIHRoaXMgY29uc3QgaW4gdGhl
IHNwZWNpZmljIGluY2x1ZGVzClggClgrI2lmbmRlZiBJR01QX01FTUJFUlNISVBfUVVFUlkK
WCsjZGVmaW5lIElHTVBfTUVNQkVSU0hJUF9RVUVSWSBJR01QX0hPU1RfTUVNQkVSU0hJUF9R
VUVSWQpYKyNlbmRpZgpYKyNpZm5kZWYgSUdNUF9WMV9NRU1CRVJTSElQX1JFUE9SVApYKyNk
ZWZpbmUgSUdNUF9WMV9NRU1CRVJTSElQX1JFUE9SVCBJR01QX3YxX0hPU1RfTUVNQkVSU0hJ
UF9SRVBPUlQKWCsjZW5kaWYKWCsjaWZuZGVmIElHTVBfVjJfTUVNQkVSU0hJUF9SRVBPUlQK
WCsjZGVmaW5lIElHTVBfVjJfTUVNQkVSU0hJUF9SRVBPUlQgSUdNUF92Ml9IT1NUX01FTUJF
UlNISVBfUkVQT1JUClgrI2VuZGlmClgrI2lmbmRlZiBJR01QX1YyX0xFQVZFX0dST1VQClgr
I2RlZmluZSBJR01QX1YyX0xFQVZFX0dST1VQIElHTVBfSE9TVF9MRUFWRV9NRVNTQUdFClgr
I2VuZGlmClgrClgrI2lmbmRlZiBJTkFERFJfQUxMUlRSU19HUk9VUApYKy8qIGFkZHJlc3Mg
Zm9yIG11bHRpY2FzdCBtdHJhY2UgbXNnICovClgrI2RlZmluZSBJTkFERFJfQUxMUlRSU19H
Uk9VUCAgICAodV9pbnQzMl90KTB4ZTAwMDAwMDIgICAvKiAyMjQuMC4wLjIgKi8KWCsjZW5k
aWYKWCsKWCAvLyBVc2VmdWwgbWFjcm9zLi4gICAgICAgICAgClgrI2lmbmRlZiBNSU4KWCAj
ZGVmaW5lIE1JTiggYSwgYiApICgoYSkgPCAoYikgPyAoYSkgOiAoYikpClgrI2VuZGlmClgr
I2lmbmRlZiBNQVgKWCAjZGVmaW5lIE1BWCggYSwgYiApICgoYSkgPCAoYikgPyAoYikgOiAo
YSkpClgrI2VuZGlmClggI2RlZmluZSBWQ01DKCBWYyApICAoc2l6ZW9mKCBWYyApIC8gc2l6
ZW9mKCAoVmMpWyAwIF0gKSkKWCAjZGVmaW5lIFZDRVAoIFZjICkgICgmKFZjKVsgVkNNQygg
VmMgKSBdKQpYIApYQEAgLTEyNiw3ICsxNjYsMTIgQEAKWCAKWCAjZGVmaW5lCSAgICBJRl9E
RUJVRwlpZihMb2cyU3RkZXJyICYgTE9HX0RFQlVHKQpYIApYLXZvaWQgbG9nKCBpbnQgU2Vy
dmVyaXR5LCBpbnQgRXJybm8sIGNvbnN0IGNoYXIgKkZtdFN0LCAuLi4gKTsKWCsjaWZkZWYg
REVWRUxfTE9HR0lORwpYKyNkZWZpbmUgbG9nKFNldmVyaXR5LCBFcnJubywgRm10LCBhcmdz
Li4uKQlfbG9nKChTZXZlcml0eSksIChFcnJubyksIF9fRlVOQ1RJT05fXywgX19MSU5FX18s
IChGbXQpLCAjI2FyZ3MpClgrdm9pZCBfbG9nKCBpbnQgU2VydmVyaXR5LCBpbnQgRXJybm8s
IGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsaW5lLCBjb25zdCBjaGFyICpGbXRTdCwgLi4uKTsK
WCsjZWxzZQpYK3ZvaWQgbG9nKCBpbnQgU2VydmVyaXR5LCBpbnQgRXJybm8sIGNvbnN0IGNo
YXIgKkZtdFN0LCAuLi4pOwpYKyNlbmRpZgpYIApYIC8qIGlmdmMuYwpYICAqLwpYQEAgLTE5
Niw2ICsyNDEsNyBAQApYIHN0cnVjdCBJZkRlc2MgKmdldElmQnlOYW1lKCBjb25zdCBjaGFy
ICpJZk5hbWUgKTsKWCBzdHJ1Y3QgSWZEZXNjICpnZXRJZkJ5SXgoIHVuc2lnbmVkIEl4ICk7
Clggc3RydWN0IElmRGVzYyAqZ2V0SWZCeUFkZHJlc3MoIHVpbnQzMiBJeCApOwpYK2ludCBp
c0FkcmVzc1ZhbGlkRm9ySWYoIHN0cnVjdCBJZkRlc2MqIGludHJmYWNlLCB1aW50MzIgaXBh
ZGRyICk7ClggClggLyogbXJvdXRlLWFwaS5jClggICovClhAQCAtMjM1LDcgKzI4MSw3IEBA
ClggY2hhciAgICpmbXRJbkFkciggY2hhciAqU3QsIHN0cnVjdCBpbl9hZGRyIEluQWRyICk7
ClggY2hhciAgICppbmV0Rm10KHVpbnQzMiBhZGRyLCBjaGFyICpzKTsKWCBjaGFyICAgKmlu
ZXRGbXRzKHVpbnQzMiBhZGRyLCB1aW50MzIgbWFzaywgY2hhciAqcyk7ClgtaW50ICAgICBp
bmV0Q2tzdW0odV9zaG9ydCAqYWRkciwgdV9pbnQgbGVuKTsKWCtpbnQgICAgIGluZXRDaGtz
dW0odV9zaG9ydCAqYWRkciwgdV9pbnQgbGVuKTsKWCAKWCAvKiBrZXJuLmMKWCAgKi8KWEBA
IC0yNjQsNyArMzEwLDcgQEAKWCB2b2lkIGluaXRSb3V0ZVRhYmxlKCk7Clggdm9pZCBjbGVh
ckFsbFJvdXRlcygpOwpYIGludCBpbnNlcnRSb3V0ZSh1aW50MzIgZ3JvdXAsIGludCBpZngp
OwpYLWludCBhY3RpdmF0ZVJvdXRlKHVpbnQzMiBncm91cCwgdWludDMyIG9yaWdpbkFkZHIp
OwpYK2ludCBhY3RpdmF0ZVJvdXRlKHVpbnQzMiBncm91cCwgdWludDMyIG9yaWdpbkFkZHIs
IGludCBkb3duSWYpOwpYIHZvaWQgYWdlQWN0aXZlUm91dGVzKCk7Clggdm9pZCBzZXRSb3V0
ZUxhc3RNZW1iZXJNb2RlKHVpbnQzMiBncm91cCk7ClggaW50IGxhc3RNZW1iZXJHcm91cEFn
ZSh1aW50MzIgZ3JvdXApOwpYZGlmZiAtdXJOIGlmdmMuYyBpZ21wcHJveHkubmV3L3NyYy9p
ZnZjLmMKWC0tLSBpZnZjLmMJMjAwNS0wNS0yNCAxOTo0OToxOC4wMDAwMDAwMDAgKzA0MDAK
WCsrKyBpZ21wcHJveHkubmV3L3NyYy9pZnZjLmMJMjAwOS0wMS0wNSAwMjoyNDowMi4wMDAw
MDAwMDAgKzAzMDAKWEBAIC0zMiw3ICszMiwxMSBAQApYICovClggClggI2luY2x1ZGUgImRl
ZnMuaCIKWCsjaWZkZWYgX19GcmVlQlNEX18KWCsjaW5jbHVkZSA8aWZhZGRycy5oPgpYKyNl
bHNlClggI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KWCsjZW5kaWYKWCAKWCBzdHJ1Y3Qg
SWZEZXNjIElmRGVzY1ZjWyBNQVhfSUYgXSwgKklmRGVzY0VwID0gSWZEZXNjVmM7ClggClhA
QCAtNDIsMTE5ICs0Niw5MSBAQApYICoqICAgICAgICAgIApYICovClggdm9pZCBidWlsZElm
VmMoKSB7ClgtICAgIHN0cnVjdCBpZnJlcSBJZlZjWyBzaXplb2YoIElmRGVzY1ZjICkgLyBz
aXplb2YoIElmRGVzY1ZjWyAwIF0gKSAgXTsKWC0gICAgc3RydWN0IGlmcmVxICpJZkVwOwpY
KyAgICBzdHJ1Y3QgaWZhZGRycyAqaWZhcCwgKmlmYTsKWCsgICAgc3RydWN0IElmRGVzYyAq
aWZwOwpYKyAgICBzdHJ1Y3QgU3VibmV0TGlzdCAqbmV0OwpYIApYLSAgICBpbnQgU29jazsK
WC0KWC0gICAgaWYgKCAoU29jayA9IHNvY2tldCggQUZfSU5FVCwgU09DS19ER1JBTSwgMCAp
KSA8IDAgKQpYLSAgICAgICAgbG9nKCBMT0dfRVJSLCBlcnJubywgIlJBVyBzb2NrZXQgb3Bl
biIgKTsKWC0KWC0gICAgLyogZ2V0IElmIHZlY3RvcgpYLSAgICAgKi8KWC0gICAgewpYLSAg
ICAgICAgc3RydWN0IGlmY29uZiBJb0N0bFJlcTsKWC0KWC0gICAgICAgIElvQ3RsUmVxLmlm
Y19idWYgPSAodm9pZCAqKUlmVmM7ClgtICAgICAgICBJb0N0bFJlcS5pZmNfbGVuID0gc2l6
ZW9mKCBJZlZjICk7ClgtClgtICAgICAgICBpZiAoIGlvY3RsKCBTb2NrLCBTSU9DR0lGQ09O
RiwgJklvQ3RsUmVxICkgPCAwICkKWC0gICAgICAgICAgICBsb2coIExPR19FUlIsIGVycm5v
LCAiaW9jdGwgU0lPQ0dJRkNPTkYiICk7ClgtClgtICAgICAgICBJZkVwID0gKHZvaWQgKiko
KGNoYXIgKilJZlZjICsgSW9DdGxSZXEuaWZjX2xlbik7ClgtICAgIH0KWCsgICAgaWYgKGdl
dGlmYWRkcnMoJmlmYXApIDwgMCkKWCsJbG9nKCBMT0dfRVJSLCBlcnJubywgImdldGlmYWRk
cnMiICk7ClggClggICAgIC8qIGxvb3Agb3ZlciBpbnRlcmZhY2VzIGFuZCBjb3B5IGludGVy
ZmFjZSBpbmZvIHRvIElmRGVzY1ZjClggICAgICAqLwpYICAgICB7ClgtICAgICAgICBzdHJ1
Y3QgaWZyZXEgICpJZlB0OwpYLSAgICAgICAgc3RydWN0IElmRGVzYyAqSWZEcDsKWC0KWCAg
ICAgICAgIC8vIFRlbXAga2VlcGVycyBvZiBpbnRlcmZhY2UgcGFyYW1zLi4uClggICAgICAg
ICB1aW50MzIgYWRkciwgc3VibmV0LCBtYXNrOwpYIApYLSAgICAgICAgZm9yICggSWZQdCA9
IElmVmM7IElmUHQgPCBJZkVwOyBJZlB0KysgKSB7ClgtICAgICAgICAgICAgc3RydWN0IGlm
cmVxIElmUmVxOwpYKyAgICAgICAgZm9yIChpZmEgPSBpZmFwOyBpZmE7IGlmYSA9IGlmYS0+
aWZhX25leHQpIHsKWCAgICAgICAgICAgICBjaGFyIEZtdEJ1WyAzMiBdOwpYIApYLSAgICAg
ICAgICAgIHN0cm5jcHkoIElmRGVzY0VwLT5OYW1lLCBJZlB0LT5pZnJfbmFtZSwgc2l6ZW9m
KCBJZkRlc2NFcC0+TmFtZSApICk7ClgtClgtICAgICAgICAgICAgLy8gQ3VycmVudGx5IGRv
bid0IHNldCBhbnkgYWxsb3dlZCBuZXRzLi4uClgtICAgICAgICAgICAgLy9JZkRlc2NFcC0+
YWxsb3dlZG5ldHMgPSBOVUxMOwpYLQpYLSAgICAgICAgICAgIC8vIFNldCB0aGUgaW5kZXgg
dG8gLTEgYnkgZGVmYXVsdC4KWC0gICAgICAgICAgICBJZkRlc2NFcC0+aW5kZXggPSAtMTsK
WCsJICAgIGlmIChJZkRlc2NFcCA+PSAmSWZEZXNjVmNbIE1BWF9JRiBdKSB7ClgrCQlsb2co
TE9HX1dBUk5JTkcsIDAsICJUb28gbWFueSBpbnRlcmZhY2VzLCBza2lwcGluZyAlZCIsIGlm
YS0+aWZhX25hbWUpOwpYKyAgICAgICAgICAgICAgICBjb250aW51ZTsKWCsJICAgIH0KWCAK
WC0gICAgICAgICAgICAvKiBkb24ndCByZXRyaWV2ZSBtb3JlIGluZm8gZm9yIG5vbi1JUCBp
bnRlcmZhY2VzClgrICAgICAgICAgICAgLyogaWdub3JlIG5vbi1JUCBpbnRlcmZhY2VzClgg
ICAgICAgICAgICAgICovClgtICAgICAgICAgICAgaWYgKCBJZlB0LT5pZnJfYWRkci5zYV9m
YW1pbHkgIT0gQUZfSU5FVCApIHsKWC0gICAgICAgICAgICAgICAgSWZEZXNjRXAtPkluQWRy
LnNfYWRkciA9IDA7ICAvKiBtYXJrIGFzIG5vbi1JUCBpbnRlcmZhY2UgKi8KWC0gICAgICAg
ICAgICAgICAgSWZEZXNjRXArKzsKWCsgICAgICAgICAgICBpZiAoIGlmYS0+aWZhX2FkZHIt
PnNhX2ZhbWlseSAhPSBBRl9JTkVUICkKWCAgICAgICAgICAgICAgICAgY29udGludWU7Clgt
ICAgICAgICAgICAgfQpYLQpYLSAgICAgICAgICAgIC8vIEdldCB0aGUgaW50ZXJmYWNlIGFk
cmVzcy4uLgpYLSAgICAgICAgICAgIElmRGVzY0VwLT5JbkFkciA9ICgoc3RydWN0IHNvY2th
ZGRyX2luICopJklmUHQtPmlmcl9hZGRyKS0+c2luX2FkZHI7ClgtICAgICAgICAgICAgYWRk
ciA9IElmRGVzY0VwLT5JbkFkci5zX2FkZHI7ClgtClgtICAgICAgICAgICAgbWVtY3B5KCBJ
ZlJlcS5pZnJfbmFtZSwgSWZEZXNjRXAtPk5hbWUsIHNpemVvZiggSWZSZXEuaWZyX25hbWUg
KSApOwpYLQpYLSAgICAgICAgICAgIC8vIEdldCB0aGUgc3VibmV0IG1hc2suLi4KWC0gICAg
ICAgICAgICBpZiAoaW9jdGwoU29jaywgU0lPQ0dJRk5FVE1BU0ssICZJZlJlcSApIDwgMCkK
WC0gICAgICAgICAgICAgICAgbG9nKExPR19FUlIsIGVycm5vLCAiaW9jdGwgU0lPQ0dJRk5F
VE1BU0sgZm9yICVzIiwgSWZSZXEuaWZyX25hbWUpOwpYLSAgICAgICAgICAgIG1hc2sgPSAo
KHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZJZlJlcS5pZnJfYWRkciktPnNpbl9hZGRyLnNfYWRk
cjsKWC0gICAgICAgICAgICBzdWJuZXQgPSBhZGRyICYgbWFzazsKWCAKWC0gICAgICAgICAg
ICAvLyBHZXQgdGhlIHBoeXNpY2FsIGluZGV4IG9mIHRoZSBJbnRlcmZhY2UKWC0gICAgICAg
ICAgICBpZiAoaW9jdGwoU29jaywgU0lPQ0dJRklOREVYLCAmSWZSZXEgKSA8IDApClgtICAg
ICAgICAgICAgICAgIGxvZyhMT0dfRVJSLCBlcnJubywgImlvY3RsIFNJT0NHSUZJTkRFWCBm
b3IgJXMiLCBJZlJlcS5pZnJfbmFtZSk7ClgtICAgICAgICAgICAgClgtICAgICAgICAgICAg
bG9nKExPR19ERUJVRywgMCwgIlBoeXNpY2FsIEluZGV4IHZhbHVlIG9mIElGICclcycgaXMg
JWQiLApYLSAgICAgICAgICAgICAgICBJZkRlc2NFcC0+TmFtZSwgSWZSZXEuaWZyX2lmaW5k
ZXgpOwpYKwkgICAgaWYgKChpZnAgPSBnZXRJZkJ5TmFtZShpZmEtPmlmYV9uYW1lKSkgPT0g
TlVMTCkgewpYIApYKwkJc3RybGNweSggSWZEZXNjRXAtPk5hbWUsIGlmYS0+aWZhX25hbWUs
IHNpemVvZiggSWZEZXNjRXAtPk5hbWUgKSApOwpYIApYLSAgICAgICAgICAgIC8qIGdldCBp
ZiBmbGFncwpYLSAgICAgICAgICAgICoqClgtICAgICAgICAgICAgKiogdHlwaWNhbCBmbGFn
czoKWC0gICAgICAgICAgICAqKiBsbyAgICAweDAwNDkgLT4gUnVubmluZywgTG9vcGJhY2ss
IFVwClgtICAgICAgICAgICAgKiogZXRoeCAgMHgxMDQzIC0+IE11bHRpY2FzdCwgUnVubmlu
ZywgQnJvYWRjYXN0LCBVcApYLSAgICAgICAgICAgICoqIGlwcHB4IDB4MDA5MSAtPiBOb0Fy
cCwgUG9pbnRUb1BvaW50LCBVcCAKWC0gICAgICAgICAgICAqKiBncmV4ICAweDAwQzEgLT4g
Tm9BcnAsIFJ1bm5pbmcsIFVwClgtICAgICAgICAgICAgKiogaXBpcHggMHgwMEMxIC0+IE5v
QXJwLCBSdW5uaW5nLCBVcApYLSAgICAgICAgICAgICovClgtICAgICAgICAgICAgaWYgKCBp
b2N0bCggU29jaywgU0lPQ0dJRkZMQUdTLCAmSWZSZXEgKSA8IDAgKQpYLSAgICAgICAgICAg
ICAgICBsb2coIExPR19FUlIsIGVycm5vLCAiaW9jdGwgU0lPQ0dJRkZMQUdTIiApOwpYKwkJ
bG9nKExPR19ERUJVRywgMCwgIkFkZGluZyBQaHlzaWNhbCBJbmRleCB2YWx1ZSBvZiBJRiAn
JXMnIGlzICVkIiwKWCsJCSAgICBJZkRlc2NFcC0+TmFtZSwgaWZfbmFtZXRvaW5kZXgoSWZE
ZXNjRXAtPk5hbWUpKTsKWCAKWC0gICAgICAgICAgICBJZkRlc2NFcC0+RmxhZ3MgPSBJZlJl
cS5pZnJfZmxhZ3M7ClgrCQkvLyBTZXQgdGhlIGluZGV4IHRvIC0xIGJ5IGRlZmF1bHQuClgr
CQlJZkRlc2NFcC0+aW5kZXggPSAtMTsKWCsKWCsJCS8vIEdldCB0aGUgaW50ZXJmYWNlIGFk
cmVzcy4uLgpYKwkJSWZEZXNjRXAtPkluQWRyID0gKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilp
ZmEtPmlmYV9hZGRyKS0+c2luX2FkZHI7ClgrClgrCQkvKiBnZXQgaWYgZmxhZ3MKWCsJCSoq
ClgrCQkqKiB0eXBpY2FsIGZsYWdzOgpYKwkJKiogbG8gICAgMHgwMDQ5IC0+IFJ1bm5pbmcs
IExvb3BiYWNrLCBVcApYKwkJKiogZXRoeCAgMHgxMDQzIC0+IE11bHRpY2FzdCwgUnVubmlu
ZywgQnJvYWRjYXN0LCBVcApYKwkJKiogaXBwcHggMHgwMDkxIC0+IE5vQXJwLCBQb2ludFRv
UG9pbnQsIFVwIApYKwkJKiogZ3JleCAgMHgwMEMxIC0+IE5vQXJwLCBSdW5uaW5nLCBVcApY
KwkJKiogaXBpcHggMHgwMEMxIC0+IE5vQXJwLCBSdW5uaW5nLCBVcApYKwkJKi8KWCsKWCsJ
CUlmRGVzY0VwLT5GbGFncyA9IGlmYS0+aWZhX2ZsYWdzOwpYKwpYKwkJLy8gU2V0IHRoZSBk
ZWZhdWx0IHBhcmFtcyBmb3IgdGhlIElGLi4uClgrCQlJZkRlc2NFcC0+c3RhdGUgICAgICAg
ICA9IElGX1NUQVRFX0RPV05TVFJFQU07ClgrCQlJZkRlc2NFcC0+cm9idXN0bmVzcyAgICA9
IERFRkFVTFRfUk9CVVNUTkVTUzsKWCsJCUlmRGVzY0VwLT50aHJlc2hvbGQgICAgID0gREVG
QVVMVF9USFJFU0hPTEQ7ICAgLyogdHRsIGxpbWl0ICovClgrCQlJZkRlc2NFcC0+cmF0ZWxp
bWl0ICAgICA9IERFRkFVTFRfUkFURUxJTUlUOyAKWCsJCUlmRGVzY0VwLT5hbGxvd2VkbmV0
cyAgID0gTlVMTDsKWCsJCWlmcCA9IElmRGVzY0VwKys7ClgrCSAgICB9ClggClggICAgICAg
ICAgICAgLy8gSW5zZXJ0IHRoZSB2ZXJpZmllZCBzdWJuZXQgYXMgYW4gYWxsb3dlZCBuZXQu
Li4KWC0gICAgICAgICAgICBJZkRlc2NFcC0+YWxsb3dlZG5ldHMgPSAoc3RydWN0IFN1Ym5l
dExpc3QgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBTdWJuZXRMaXN0KSk7ClgtICAgICAgICAg
ICAgaWYoSWZEZXNjRXAtPmFsbG93ZWRuZXRzID09IE5VTEwpIGxvZyhMT0dfRVJSLCAwLCAi
T3V0IG9mIG1lbW9yeSAhIik7ClgrICAgICAgICAgICAgYWRkciA9ICgoc3RydWN0IHNvY2th
ZGRyX2luICopaWZhLT5pZmFfYWRkciktPnNpbl9hZGRyLnNfYWRkcjsKWCsgICAgICAgICAg
ICBtYXNrID0gKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpZmEtPmlmYV9uZXRtYXNrKS0+c2lu
X2FkZHIuc19hZGRyOwpYKyAgICAgICAgICAgIHN1Ym5ldCA9IGFkZHIgJiBtYXNrOwpYKwpY
KyAgICAgICAgICAgIG5ldCA9IChzdHJ1Y3QgU3VibmV0TGlzdCAqKW1hbGxvYyhzaXplb2Yo
c3RydWN0IFN1Ym5ldExpc3QpKTsKWCsgICAgICAgICAgICBpZihuZXQgPT0gTlVMTCkgbG9n
KExPR19FUlIsIDAsICJPdXQgb2YgbWVtb3J5ICEiKTsKWCAgICAgICAgICAgICAKWCAgICAg
ICAgICAgICAvLyBDcmVhdGUgdGhlIG5ldHdvcmsgYWRkcmVzcyBmb3IgdGhlIElGLi4KWC0g
ICAgICAgICAgICBJZkRlc2NFcC0+YWxsb3dlZG5ldHMtPm5leHQgPSBOVUxMOwpYLSAgICAg
ICAgICAgIElmRGVzY0VwLT5hbGxvd2VkbmV0cy0+c3VibmV0X21hc2sgPSBtYXNrOwpYLSAg
ICAgICAgICAgIElmRGVzY0VwLT5hbGxvd2VkbmV0cy0+c3VibmV0X2FkZHIgPSBzdWJuZXQ7
ClgtClgtICAgICAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHBhcmFtcyBmb3IgdGhlIElG
Li4uClgtICAgICAgICAgICAgSWZEZXNjRXAtPnN0YXRlICAgICAgICAgPSBJRl9TVEFURV9E
T1dOU1RSRUFNOwpYLSAgICAgICAgICAgIElmRGVzY0VwLT5yb2J1c3RuZXNzICAgID0gREVG
QVVMVF9ST0JVU1RORVNTOwpYLSAgICAgICAgICAgIElmRGVzY0VwLT50aHJlc2hvbGQgICAg
ID0gREVGQVVMVF9USFJFU0hPTEQ7ICAgLyogdHRsIGxpbWl0ICovClgtICAgICAgICAgICAg
SWZEZXNjRXAtPnJhdGVsaW1pdCAgICAgPSBERUZBVUxUX1JBVEVMSU1JVDsgClgrICAgICAg
ICAgICAgbmV0LT5uZXh0ID0gaWZwLT5hbGxvd2VkbmV0czsKWCsgICAgICAgICAgICBuZXQt
PnN1Ym5ldF9tYXNrID0gbWFzazsKWCsgICAgICAgICAgICBuZXQtPnN1Ym5ldF9hZGRyID0g
c3VibmV0OwpYKyAgICAgICAgICAgIGlmcC0+YWxsb3dlZG5ldHMgPSBuZXQ7ClggICAgICAg
ICAgICAgClgtClggICAgICAgICAgICAgLy8gRGVidWcgbG9nIHRoZSByZXN1bHQuLi4KWCAg
ICAgICAgICAgICBJRl9ERUJVRyBsb2coIExPR19ERUJVRywgMCwgImJ1aWxkSWZWYzogSW50
ZXJmYWNlICVzIEFkZHI6ICVzLCBGbGFnczogMHglMDR4LCBOZXR3b3JrOiAlcyIsClgtICAg
ICAgICAgICAgICAgICBJZkRlc2NFcC0+TmFtZSwKWC0gICAgICAgICAgICAgICAgIGZtdElu
QWRyKCBGbXRCdSwgSWZEZXNjRXAtPkluQWRyICksClgtICAgICAgICAgICAgICAgICBJZkRl
c2NFcC0+RmxhZ3MsClgrICAgICAgICAgICAgICAgICBpZnAtPk5hbWUsClgrICAgICAgICAg
ICAgICAgICBmbXRJbkFkciggRm10QnUsIGlmcC0+SW5BZHIgKSwKWCsgICAgICAgICAgICAg
ICAgIGlmcC0+RmxhZ3MsClggICAgICAgICAgICAgICAgICBpbmV0Rm10cyhzdWJuZXQsbWFz
aywgczEpKTsKWCAKWC0gICAgICAgICAgICBJZkRlc2NFcCsrOwpYICAgICAgICAgfSAKWC0g
ICAgfQpYIApYLSAgICBjbG9zZSggU29jayApOwpYKyAgICB9ClgrICAgIGZyZWVpZmFkZHJz
KGlmYXApOwpYIH0KWCAKWCAvKgpYZGlmZiAtdXJOIGlnbXAuYyBpZ21wcHJveHkubmV3L3Ny
Yy9pZ21wLmMKWC0tLSBpZ21wLmMJMjAwNS0wNS0yNCAxOTo0OToxNi4wMDAwMDAwMDAgKzA0
MDAKWCsrKyBpZ21wcHJveHkubmV3L3NyYy9pZ21wLmMJMjAwOS0wMS0wNSAwMjowODoxOS4w
MDAwMDAwMDAgKzAzMDAKWEBAIC0xMDUsNyArMTA1LDcgQEAKWCAgICAgc3RydWN0IGlnbXAg
KmlnbXA7ClggICAgIGludCBpcGRhdGFsZW4sIGlwaGRybGVuLCBpZ21wZGF0YWxlbjsKWCAK
WC0gICAgaWYgKHJlY3ZsZW4gPCBzaXplb2Yoc3RydWN0IGlwKSkgewpYKyAgICBpZiAocmVj
dmxlbiA8IChpbnQpIHNpemVvZihzdHJ1Y3QgaXApKSB7ClggICAgICAgICBsb2coTE9HX1dB
Uk5JTkcsIDAsClggICAgICAgICAgICAgInJlY2VpdmVkIHBhY2tldCB0b28gc2hvcnQgKCV1
IGJ5dGVzKSBmb3IgSVAgaGVhZGVyIiwgcmVjdmxlbik7ClggICAgICAgICByZXR1cm47ClhA
QCAtMTI4LDYgKzEyOCw3IEBAClggICAgICAgICB9ClggICAgICAgICBlbHNlIHsKWCAgICAg
ICAgICAgICBzdHJ1Y3QgSWZEZXNjICpjaGVja1ZJRjsKWCsJICAgIGludCBkb3duSWYgPSAt
MTsKWCAgICAgICAgICAgICAKWCAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc291cmNl
IGFkZHJlc3MgbWF0Y2hlcyBhIHZhbGlkIGFkZHJlc3Mgb24gdXBzdHJlYW0gdmlmLgpYICAg
ICAgICAgICAgIGNoZWNrVklGID0gZ2V0SWZCeUl4KCB1cFN0cmVhbVZpZiApOwpYQEAgLTE0
MSwyMyArMTQyLDQ0IEBAClggICAgICAgICAgICAgICAgIHJldHVybjsKWCAgICAgICAgICAg
ICB9ClggICAgICAgICAgICAgZWxzZSBpZighaXNBZHJlc3NWYWxpZEZvcklmKGNoZWNrVklG
LCBzcmMpKSB7ClgtICAgICAgICAgICAgICAgIGxvZyhMT0dfV0FSTklORywgMCwgIlRoZSBz
b3VyY2UgYWRkcmVzcyAlcyBmb3IgZ3JvdXAgJXMsIGlzIG5vdCBpbiBhbnkgdmFsaWQgbmV0
IGZvciB1cHN0cmVhbSBWSUYuIiwKWC0gICAgICAgICAgICAgICAgICAgIGluZXRGbXQoc3Jj
LCBzMSksIGluZXRGbXQoZHN0LCBzMikpOwpYLSAgICAgICAgICAgICAgICByZXR1cm47Clgr
CQl1bnNpZ25lZCBJeDsKWCsJCXN0cnVjdCBJZkRlc2MgKkRwOwpYKwkJZm9yICggSXggPSAw
OyAoRHAgPSBnZXRJZkJ5SXgoIEl4ICkpOyBJeCsrICkgewpYKwkJICAgIGlmICgoRHAtPnN0
YXRlID09IElGX1NUQVRFX0RPV05TVFJFQU0pICYmaXNBZHJlc3NWYWxpZEZvcklmKERwLCBz
cmMpKSB7ClgrCQkJZG93bklmID0gSXg7ClgrCQkJYnJlYWs7ClgrCQkgICAgfQpYKwkJfQpY
KwkJClgrCQlpZiAoZG93bklmID09IC0xKSB7ClgrICAgICAgICAgICAgICAgICAgICBsb2co
TE9HX1dBUk5JTkcsIDAsICJUaGUgc291cmNlIGFkZHJlc3MgJXMgZm9yIGdyb3VwICVzLCBp
cyBub3QgaW4gYW55IHZhbGlkIG5ldCBmb3IgdXBzdHJlYW0gVklGLiIsClgrICAgICAgICAg
ICAgICAgICAgICAgICAgaW5ldEZtdChzcmMsIHMxKSwgaW5ldEZtdChkc3QsIHMyKSk7Clgr
ICAgICAgICAgICAgICAgICAgICByZXR1cm47ClgrCQl9IGVsc2UgewpYKwkJICAgIGxvZyhM
T0dfTk9USUNFLCAwLCAiVGhlIHNvdXJjZSBhZGRyZXNzICVzIGZvciBncm91cCAlcywgaXMg
dmFsaWQgRE9XTlNUUkVBTSBWSUYgIyVkLiIsClgrCQkgICAgICAgIGluZXRGbXQoc3JjLCBz
MSksIGluZXRGbXQoZHN0LCBzMiksIGRvd25JZik7ClgrCQl9ClggICAgICAgICAgICAgfQpY
ICAgICAgICAgICAgIApYICAgICAgICAgICAgIC8vIEFjdGl2YXRlIHRoZSByb3V0ZS4KWC0g
ICAgICAgICAgICBJRl9ERUJVRyBsb2coTE9HX0RFQlVHLCAwLCAiUm91dGUgYWN0aXZhdGUg
cmVxdWVzdCBmcm9tICVzIHRvICVzIiwKWC0gICAgICAgICAgICAgICAgICAgICAgICAgaW5l
dEZtdChzcmMsczEpLCBpbmV0Rm10KGRzdCxzMikpOwpYLSAgICAgICAgICAgIGFjdGl2YXRl
Um91dGUoZHN0LCBzcmMpOwpYKyAgICAgICAgICAgIElGX0RFQlVHIGxvZyhMT0dfREVCVUcs
IDAsICJSb3V0ZSBhY3RpdmF0ZSByZXF1ZXN0IGZyb20gJXMgdG8gJXMsIGRvd25JZiAlZCIs
ClgrICAgICAgICAgICAgICAgICAgICAgICAgIGluZXRGbXQoc3JjLHMxKSwgaW5ldEZtdChk
c3QsczIpLCBkb3duSWYpOwpYKyAgICAgICAgICAgIGFjdGl2YXRlUm91dGUoZHN0LCBzcmMs
IGRvd25JZik7ClggICAgICAgICAgICAgClggClggICAgICAgICB9ClggICAgICAgICByZXR1
cm47ClggICAgIH0KWCAKWCsgICAgbG9nKExPR19ERUJVRywgMCwgIlBhY2tldCBmcm9tICVz
OiBwcm90bzogJWQgaGRybGVuOiAlZCBpcGxlbjogJWQgb3IgJWQiLCAKWCsJCSAgICBpbmV0
Rm10KHNyYywgczEpLCBpcC0+aXBfcCwgaXAtPmlwX2hsIDw8IDIsIGlwLT5pcF9sZW4sIG50
b2hzKGlwLT5pcF9sZW4pKTsKWCsKWCAgICAgaXBoZHJsZW4gID0gaXAtPmlwX2hsIDw8IDI7
ClgrI2lmZGVmIFJBV19JTlBVVF9JU19SQVcKWCAgICAgaXBkYXRhbGVuID0gbnRvaHMoaXAt
PmlwX2xlbikgLSBpcGhkcmxlbjsKWCsjZWxzZQpYKyAgICBpcGRhdGFsZW4gPSBpcC0+aXBf
bGVuOwpYKyNlbmRpZiAgICAKWCAKWCAgICAgaWYgKGlwaGRybGVuICsgaXBkYXRhbGVuICE9
IHJlY3ZsZW4pIHsKWCAgICAgICAgIGxvZyhMT0dfV0FSTklORywgMCwKWEBAIC0xNzYsOSAr
MTk4LDkgQEAKWCAgICAgICAgIHJldHVybjsKWCAgICAgfQpYIApYLSAgICBsb2coTE9HX05P
VElDRSwgMCwgIlJFQ1YgJXMgZnJvbSAlLTE1cyB0byAlcyIsClgrICAgIGxvZyhMT0dfTk9U
SUNFLCAwLCAiUkVDViAlcyBmcm9tICUtMTVzIHRvICVzIChpcF9obCAlZCwgZGF0YSAlZCki
LApYICAgICAgICAgaWdtcFBhY2tldEtpbmQoaWdtcC0+aWdtcF90eXBlLCBpZ21wLT5pZ21w
X2NvZGUpLApYLSAgICAgICAgaW5ldEZtdChzcmMsIHMxKSwgaW5ldEZtdChkc3QsIHMyKSAp
OwpYKyAgICAgICAgaW5ldEZtdChzcmMsIHMxKSwgaW5ldEZtdChkc3QsIHMyKSwgaXBoZHJs
ZW4sIGlwZGF0YWxlbik7ClggClggICAgIHN3aXRjaCAoaWdtcC0+aWdtcF90eXBlKSB7Clgg
ICAgIGNhc2UgSUdNUF9WMV9NRU1CRVJTSElQX1JFUE9SVDoKWEBAIC0xOTAsMTMgKzIxMiwx
MCBAQApYICAgICAgICAgYWNjZXB0TGVhdmVNZXNzYWdlKHNyYywgZ3JvdXApOwpYICAgICAg
ICAgcmV0dXJuOwpYICAgICAKWC0gICAgICAgIC8qClggICAgIGNhc2UgSUdNUF9NRU1CRVJT
SElQX1FVRVJZOgpYICAgICAgICAgLy9hY2NlcHRfbWVtYmVyc2hpcF9xdWVyeShzcmMsIGRz
dCwgZ3JvdXAsIGlnbXAtPmlnbXBfY29kZSk7ClggICAgICAgICByZXR1cm47ClggClgtICAg
ICovClgtClggICAgIGRlZmF1bHQ6ClggICAgICAgICBsb2coTE9HX0lORk8sIDAsClggICAg
ICAgICAgICAgImlnbm9yaW5nIHVua25vd24gSUdNUCBtZXNzYWdlIHR5cGUgJXggZnJvbSAl
cyB0byAlcyIsClhAQCAtMjIwLDggKzIzOSw5IEBAClggICAgIGlwLT5pcF9zcmMuc19hZGRy
ICAgICAgID0gc3JjOwpYICAgICBpcC0+aXBfZHN0LnNfYWRkciAgICAgICA9IGRzdDsKWCAg
ICAgaXAtPmlwX2xlbiAgICAgICAgICAgICAgPSBNSU5fSVBfSEVBREVSX0xFTiArIElHTVBf
TUlOTEVOICsgZGF0YWxlbjsKWCsjaWZkZWYgUkFXX09VVFBVVF9JU19SQVcKWCAgICAgaXAt
PmlwX2xlbiAgICAgICAgICAgICAgPSBodG9ucyhpcC0+aXBfbGVuKTsKWC0KWCsjZW5kaWYK
WCAgICAgaWYgKElOX01VTFRJQ0FTVChudG9obChkc3QpKSkgewpYICAgICAgICAgaXAtPmlw
X3R0bCA9IGN1cnR0bDsKWCAgICAgfSBlbHNlIHsKWGRpZmYgLXVyTiBpZ21wcHJveHkuYyBp
Z21wcHJveHkubmV3L3NyYy9pZ21wcHJveHkuYwpYLS0tIGlnbXBwcm94eS5jCTIwMDUtMDgt
MjAgMTY6NTY6MzIuMDAwMDAwMDAwICswNDAwClgrKysgaWdtcHByb3h5Lm5ldy9zcmMvaWdt
cHByb3h5LmMJMjAwOS0wMS0wNSAwMjo0MDoxMS4wMDAwMDAwMDAgKzAzMDAKWEBAIC04MCw3
ICs4MCw3IEBAClggKiAgIG9uIGNvbW1hbmRsaW5lLiBUaGUgbnVtYmVyIG9mIGNvbW1hbmRs
aW5lIGFyZ3VtZW50cywgYW5kIGEKWCAqICAgcG9pbnRlciB0byB0aGUgYXJndW1lbnRzIGFy
ZSByZWNpZXZlZCBvbiB0aGUgbGluZS4uLgpYICovICAgIApYLWludCBtYWluKCBpbnQgQXJn
Q24sIGNvbnN0IGNoYXIgKkFyZ1ZjW10gKSB7ClgraW50IG1haW4oIGludCBBcmdDbiwgY2hh
ciAqQXJnVmNbXSApIHsKWCAKWCAgICAgaW50IGRlYnVnTW9kZSA9IDA7ClggClhAQCAtMTU1
LDE3ICsxNTUsOCBAQApYICAgICAgICAgaWYgKCAhIGRlYnVnTW9kZSApIHsKWCAgICAgClgg
ICAgICAgICAgICAgSUZfREVCVUcgbG9nKCBMT0dfREVCVUcsIDAsICJTdGFydGluZyBkYWVt
b24gbW9kZS4iKTsKWC0gICAgClgtICAgICAgICAgICAgLy8gT25seSBkYWVtb24gZ29lcyBw
YXN0IHRoaXMgbGluZS4uLgpYLSAgICAgICAgICAgIGlmIChmb3JrKCkpIGV4aXQoMCk7Clgt
ICAgIApYLSAgICAgICAgICAgIC8vIERldGFjaCBkZWFtb24gZnJvbSB0ZXJtaW5hbApYLSAg
ICAgICAgICAgIGlmICggY2xvc2UoIDAgKSA8IDAgfHwgY2xvc2UoIDEgKSA8IDAgfHwgY2xv
c2UoIDIgKSA8IDAgClgtICAgICAgICAgICAgICAgICB8fCBvcGVuKCAiL2Rldi9udWxsIiwg
MCApICE9IDAgfHwgZHVwMiggMCwgMSApIDwgMCB8fCBkdXAyKCAwLCAyICkgPCAwClgtICAg
ICAgICAgICAgICAgICB8fCBzZXRwZ3JwKCkgPCAwClgtICAgICAgICAgICAgICAgKSB7Clgr
CSAgICBpZiAoZGFlbW9uKDEsIDApICE9IDApClggICAgICAgICAgICAgICAgIGxvZyggTE9H
X0VSUiwgZXJybm8sICJmYWlsZWQgdG8gZGV0YWNoIGRlYW1vbiIgKTsKWC0gICAgICAgICAg
ICB9ClggICAgICAgICB9ClggICAgICAgICAKWCAgICAgICAgIC8vIEdvIHRvIHRoZSBtYWlu
IGxvb3AuClhAQCAtMjE4LDcgKzIwOSw3IEBAClggICAgICAgICBpbnQgICAgIHZpZmNvdW50
ID0gMDsKWCAgICAgICAgIHVwU3RyZWFtVmlmID0gLTE7ClggClgtICAgICAgICBmb3IgKCBJ
eCA9IDA7IERwID0gZ2V0SWZCeUl4KCBJeCApOyBJeCsrICkgewpYKyAgICAgICAgZm9yICgg
SXggPSAwOyAoRHAgPSBnZXRJZkJ5SXgoIEl4ICkpOyBJeCsrICkgewpYIApYICAgICAgICAg
ICAgIGlmICggRHAtPkluQWRyLnNfYWRkciAmJiAhIChEcC0+RmxhZ3MgJiBJRkZfTE9PUEJB
Q0spICkgewpYICAgICAgICAgICAgICAgICBpZihEcC0+c3RhdGUgPT0gSUZfU1RBVEVfVVBT
VFJFQU0pIHsKWEBAIC0yMzcsNyArMjI4LDcgQEAKWCAKWCAgICAgICAgIC8vIElmIHRoZXJl
IGlzIG9ubHkgb25lIFZJRiwgb3Igbm8gZGVmaW5lZCB1cHN0cmVhbSBWSUYsIHdlIHNlbmQg
YW4gZXJyb3IuClggICAgICAgICBpZih2aWZjb3VudCA8IDIgfHwgdXBTdHJlYW1WaWYgPCAw
KSB7ClgtICAgICAgICAgICAgbG9nKExPR19FUlIsIDAsICJUaGVyZSBtdXN0IGJlIGF0IGxl
YXN0IDIgVmlmJ3Mgd2hlcmUgb25lIGlzIHVwc3RyZWFtLiIpOwpYKyAgICAgICAgICAgIGxv
ZyhMT0dfRVJSLCAwLCAiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCAyIFZpZidzIHdoZXJlIG9u
ZSBpcyB1cHN0cmVhbS4gKHZpZmNvdW50ICVkLCB1cFN0cmVhbVZpZiAlZCkiLCB2aWZjb3Vu
dCwgdXBTdHJlYW1WaWYpOwpYICAgICAgICAgfQpYICAgICB9ICAKWCAgICAgClhAQCAtMjc1
LDcgKzI2Niw3IEBAClggICAgIHJlZ2lzdGVyIGludCByZWN2bGVuOwpYICAgICBpbnQgICAg
IE1heEZELCBSdCwgc2VjczsKWCAgICAgZmRfc2V0ICBSZWFkRkRTOwpYLSAgICBpbnQgICAg
IGR1bW15ID0gMDsKWCsgICAgc29ja2xlbl90CWR1bW15ID0gMDsKWCAgICAgc3RydWN0ICB0
aW1ldmFsICBjdXJ0aW1lLCBsYXN0dGltZSwgZGlmZnRpbWUsIHR2OyAKWCAgICAgLy8gVGhl
IHRpbWVvdXQgaXMgYSBwb2ludGVyIGluIG9yZGVyIHRvIHNldCBpdCB0byBOVUxMIGlmIG5l
c3NlY2FyeS4KWCAgICAgc3RydWN0ICB0aW1ldmFsICAqdGltZW91dCA9ICZ0djsKWGRpZmYg
LXVyTiBpZ21wcHJveHkuY29uZiBpZ21wcHJveHkubmV3L3NyYy9pZ21wcHJveHkuY29uZgpY
LS0tIGlnbXBwcm94eS5jb25mCTIwMDUtMDQtMjkgMjM6Mjc6NTAuMDAwMDAwMDAwICswNDAw
ClgrKysgaWdtcHByb3h5Lm5ldy9zcmMvaWdtcHByb3h5LmNvbmYJMjAwOS0wMS0wNSAwMjox
MTowOC4wMDAwMDAwMDAgKzAzMDAKWEBAIC0yNSwyMiArMjUsMjIgQEAKWCAKWCAKWCAjIy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpY
LSMjIENvbmZpZ3VyYXRpb24gZm9yIGV0aDAgKFVwc3RyZWFtIEludGVyZmFjZSkKWCsjIyBD
b25maWd1cmF0aW9uIGZvciBlbTAgKFVwc3RyZWFtIEludGVyZmFjZSkKWCAjIy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpYLXBoeWlu
dCBldGgwIHVwc3RyZWFtICByYXRlbGltaXQgMCAgdGhyZXNob2xkIDEKWCtwaHlpbnQgZW0w
IHVwc3RyZWFtICByYXRlbGltaXQgMCAgdGhyZXNob2xkIDEKWCAgICAgICAgIGFsdG5ldCAx
MC4wLjAuMC84IApYICAgICAgICAgYWx0bmV0IDE5Mi4xNjguMC4wLzI0ClggClggClggIyMt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
WC0jIyBDb25maWd1cmF0aW9uIGZvciBldGgxIChEb3duc3RyZWFtIEludGVyZmFjZSkKWCsj
IyBDb25maWd1cmF0aW9uIGZvciBlbTEgKERvd25zdHJlYW0gSW50ZXJmYWNlKQpYICMjLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClgt
cGh5aW50IGV0aDEgZG93bnN0cmVhbSAgcmF0ZWxpbWl0IDAgIHRocmVzaG9sZCAxClgrcGh5
aW50IGVtMSBkb3duc3RyZWFtICByYXRlbGltaXQgMCAgdGhyZXNob2xkIDEKWCAKWCAKWCAj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpYLSMjIENvbmZpZ3VyYXRpb24gZm9yIGV0aDIgKERpc2FibGVkIEludGVyZmFjZSkKWCsj
IyBDb25maWd1cmF0aW9uIGZvciB4bDAgKERpc2FibGVkIEludGVyZmFjZSkKWCAjIy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpYLXBo
eWludCBldGgyIGRpc2FibGVkClgrcGh5aW50IHhsMCBkaXNhYmxlZApYIApYIApYZGlmZiAt
dXJOIG1jZ3JvdXAuYyBpZ21wcHJveHkubmV3L3NyYy9tY2dyb3VwLmMKWC0tLSBtY2dyb3Vw
LmMJMjAwNS0wOC0yMCAxNjo1NDozNy4wMDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJveHku
bmV3L3NyYy9tY2dyb3VwLmMJMjAwOS0wMS0wNSAwMTo1ODoyNy4wMDAwMDAwMDAgKzAzMDAK
WEBAIC00OSw3ICs0OSw2IEBAClggICAgIEN0bFJlcS5pbXJfaW50ZXJmYWNlLnNfYWRkciA9
IElmRHAtPkluQWRyLnNfYWRkcjsKWCAgICAgClggICAgIHsKWC0gICAgICAgIGNoYXIgRm10
QnVbIDMyIF07ClggICAgICAgICBsb2coIExPR19OT1RJQ0UsIDAsICIlc01jR3JvdXA6ICVz
IG9uICVzIiwgQ21kU3QsIApYICAgICAgICAgICAgIGluZXRGbXQoIG1jYXN0YWRkciwgczEg
KSwgSWZEcCA/IElmRHAtPk5hbWUgOiAiPGFueT4iICk7ClggICAgIH0KWGRpZmYgLXVyTiBt
cm91dGUtYXBpLmMgaWdtcHByb3h5Lm5ldy9zcmMvbXJvdXRlLWFwaS5jClgtLS0gbXJvdXRl
LWFwaS5jCTIwMDUtMDUtMjQgMTk6NDg6MzMuMDAwMDAwMDAwICswNDAwClgrKysgaWdtcHBy
b3h5Lm5ldy9zcmMvbXJvdXRlLWFwaS5jCTIwMDktMDEtMDUgMDE6NTg6MjcuMDAwMDAwMDAw
ICswMzAwClhAQCAtMzcsNyArMzcsOSBAQApYICovClggClggClgrI2lmbmRlZiBfX0ZyZWVC
U0RfXwpYICNkZWZpbmUgVVNFX0xJTlVYX0lOX0gKWCsjZW5kaWYKWCAjaW5jbHVkZSAiZGVm
cy5oIgpYIApYIC8vIE1BWF9NQ19WSUZTIGZyb20gbWNsYWIuaCBtdXN0IGhhdmUgc2FtZSB2
YWx1ZSBhcyBNQVhWSUZTIGZyb20gbXJvdXRlLmgKWEBAIC00Nyw3ICs0OSw3IEBAClggICAg
ICAKWCAvLyBuZWVkIGFuIElHTVAgc29ja2V0IGFzIGludGVyZmFjZSBmb3IgdGhlIG1yb3V0
ZWQgQVBJClggLy8gLSByZWNlaXZlcyB0aGUgSUdNUCBtZXNzYWdlcwpYLWludCAgICAgICAg
IE1Sb3V0ZXJGRDsgICAgICAgIC8qIHNvY2tldCBmb3IgYWxsIG5ldHdvcmsgSS9PICAqLwpY
K2ludCAgICAgICAgIE1Sb3V0ZXJGRCA9IC0xOyAgICAgICAgLyogc29ja2V0IGZvciBhbGwg
bmV0d29yayBJL08gICovClggY2hhciAgICAgICAgKnJlY3ZfYnVmOyAgICAgICAgICAgLyog
aW5wdXQgcGFja2V0IGJ1ZmZlciAgICAgICAgICovClggY2hhciAgICAgICAgKnNlbmRfYnVm
OyAgICAgICAgICAgLyogb3V0cHV0IHBhY2tldCBidWZmZXIgICAgICAgICovClggClhAQCAt
MTc3LDEzICsxNzksMTUgQEAKWCAgICAgICAgIGxvZyggTE9HX05PVElDRSwgMCwgIkFkZGlu
ZyBNRkM6ICVzIC0+ICVzLCBJbnBWSWY6ICVkIiwgClggICAgICAgICAgICAgIGZtdEluQWRy
KCBGbXRCdU8sIEN0bFJlcS5tZmNjX29yaWdpbiApLCAKWCAgICAgICAgICAgICAgZm10SW5B
ZHIoIEZtdEJ1TSwgQ3RsUmVxLm1mY2NfbWNhc3RncnAgKSwKWC0gICAgICAgICAgICAgQ3Rs
UmVxLm1mY2NfcGFyZW50ID09IEFMTF9WSUZTID8gLTEgOiBDdGxSZXEubWZjY19wYXJlbnQK
WCsgICAgICAgICAgICAgQ3RsUmVxLm1mY2NfcGFyZW50ClggICAgICAgICAgICApOwpYICAg
ICB9ClggClggICAgIGlmICggc2V0c29ja29wdCggTVJvdXRlckZELCBJUFBST1RPX0lQLCBN
UlRfQUREX01GQywKWCAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSZDdGxSZXEsIHNp
emVvZiggQ3RsUmVxICkgKSApClggICAgICAgICBsb2coIExPR19XQVJOSU5HLCBlcnJubywg
Ik1SVF9BRERfTUZDIiApOwpYKwpYKyAgICByZXR1cm4gMDsKWCB9ClggClggLyoKWEBAIC0y
MTAsMTMgKzIxNCwxNSBAQApYICAgICAgICAgbG9nKCBMT0dfTk9USUNFLCAwLCAiUmVtb3Zp
bmcgTUZDOiAlcyAtPiAlcywgSW5wVklmOiAlZCIsIApYICAgICAgICAgICAgICBmbXRJbkFk
ciggRm10QnVPLCBDdGxSZXEubWZjY19vcmlnaW4gKSwgClggICAgICAgICAgICAgIGZtdElu
QWRyKCBGbXRCdU0sIEN0bFJlcS5tZmNjX21jYXN0Z3JwICksClgtICAgICAgICAgICAgIEN0
bFJlcS5tZmNjX3BhcmVudCA9PSBBTExfVklGUyA/IC0xIDogQ3RsUmVxLm1mY2NfcGFyZW50
ClgrICAgICAgICAgICAgIEN0bFJlcS5tZmNjX3BhcmVudApYICAgICAgICAgICAgKTsKWCAg
ICAgfQpYIApYICAgICBpZiAoIHNldHNvY2tvcHQoIE1Sb3V0ZXJGRCwgSVBQUk9UT19JUCwg
TVJUX0RFTF9NRkMsClggICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikmQ3RsUmVxLCBz
aXplb2YoIEN0bFJlcSApICkgKQpYICAgICAgICAgbG9nKCBMT0dfV0FSTklORywgZXJybm8s
ICJNUlRfREVMX01GQyIgKTsKWCsKWCsgICAgcmV0dXJuIDA7ClggfQpYIApYIC8qClhkaWZm
IC11ck4gcmVxdWVzdC5jIGlnbXBwcm94eS5uZXcvc3JjL3JlcXVlc3QuYwpYLS0tIHJlcXVl
c3QuYwkyMDA1LTA1LTI0IDE5OjQ4OjI5LjAwMDAwMDAwMCArMDQwMApYKysrIGlnbXBwcm94
eS5uZXcvc3JjL3JlcXVlc3QuYwkyMDA5LTAxLTA1IDAyOjI2OjU0LjAwMDAwMDAwMCArMDMw
MApYQEAgLTg4LDEwICs4OCwxMSBAQApYIApYICAgICB9IGVsc2UgewpYICAgICAgICAgLy8g
TG9nIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJmYWNlIHRoZSByZXBvcnQgd2FzIHJlY2lldmVk
IG9uLgpYLSAgICAgICAgbG9nKExPR19JTkZPLCAwLCAiTWViZXJzaGlwIHJlcG9ydCB3YXMg
cmVjaWV2ZWQgb24gJXMuIElnbm9yaW5nLiIsClgrICAgICAgICBsb2coTE9HX0lORk8sIDAs
ICJNZW1iZXJzaGlwIHJlcG9ydCB3YXMgcmVjZWl2ZWQgb24gJXMuIElnbm9yaW5nLiIsClgg
ICAgICAgICAgICAgc291cmNlVmlmLT5zdGF0ZT09SUZfU1RBVEVfVVBTVFJFQU0/InRoZSB1
cHN0cmVhbSBpbnRlcmZhY2UiOiJhIGRpc2FibGVkIGludGVyZmFjZSIpOwpYICAgICB9Clgg
ClgrICAgIGxvZyhMT0dfREVCVUcsIDAsICJFbGltaW5hdGUgY29tcGlsZXIgd2FybmluZyBm
b3IgZmllbGQgdHlwZSA9ICV1IiwgdHlwZSk7ClggfQpYIApYIC8qKgpYQEAgLTEzNiw3ICsx
MzcsNyBAQApYIApYICAgICB9IGVsc2UgewpYICAgICAgICAgLy8ganVzdCBpZ25vcmUgdGhl
IGxlYXZlIHJlcXVlc3QuLi4KWC0gICAgICAgIElGX0RFQlVHIGxvZyhMT0dfREVCVUcsIDAs
ICJUaGUgZm91bmQgaWYgZm9yICVzIHdhcyBub3QgZG93bnN0cmVhbS4gSWdub3JpbmcgbGVh
dmUgcmVxdWVzdC4iKTsKWCsgICAgICAgIElGX0RFQlVHIGxvZyhMT0dfREVCVUcsIDAsICJU
aGUgZm91bmQgaWYgZm9yICVzIHdhcyBub3QgZG93bnN0cmVhbS4gSWdub3JpbmcgbGVhdmUg
cmVxdWVzdC4iLCAgaW5ldEZtdChzcmMsIHMxKSk7ClggICAgIH0KWCB9ClggClhAQCAtMTg0
LDcgKzE4NSw3IEBAClggICAgIGludCAgICAgICAgICAgICBJeDsKWCAKWCAgICAgLy8gTG9v
cCB0aHJvdWdoIGFsbCBkb3duc3RyZWFtIHZpZnMuLi4KWC0gICAgZm9yICggSXggPSAwOyBE
cCA9IGdldElmQnlJeCggSXggKTsgSXgrKyApIHsKWCsgICAgZm9yICggSXggPSAwOyAoRHAg
PSBnZXRJZkJ5SXgoIEl4ICkpOyBJeCsrICkgewpYICAgICAgICAgaWYgKCBEcC0+SW5BZHIu
c19hZGRyICYmICEgKERwLT5GbGFncyAmIElGRl9MT09QQkFDSykgKSB7ClggICAgICAgICAg
ICAgaWYoRHAtPnN0YXRlID09IElGX1NUQVRFX0RPV05TVFJFQU0pIHsKWCAgICAgICAgICAg
ICAgICAgLy8gU2VuZCB0aGUgbWVtYmVyc2hpcCBxdWVyeS4uLgpYZGlmZiAtdXJOIHJ0dGFi
bGUuYyBpZ21wcHJveHkubmV3L3NyYy9ydHRhYmxlLmMKWC0tLSBydHRhYmxlLmMJMjAwNS0w
OC0yMCAxNjo0NjoyMC4wMDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJveHkubmV3L3NyYy9y
dHRhYmxlLmMJMjAwOS0wMS0wNSAwMTo1ODoyNy4wMDAwMDAwMDAgKzAzMDAKWEBAIC0zOCwx
NSArMzgsMjIgQEAKWCAqLwpYIApYICNpbmNsdWRlICJkZWZzLmgiClgrI2luY2x1ZGUgPHN5
cy9xdWV1ZS5oPgpYICAgICAKWCAvKioKWCAqICAgUm91dGluZyB0YWJsZSBzdHJ1Y3R1cmUg
ZGVmaW5pdGlvbi4gRG91YmxlIGxpbmtlZCBsaXN0Li4uClggKi8KWCtzdHJ1Y3QgT3JpZ2lu
IHsKWCsgICAgVEFJTFFfRU5UUlkoT3JpZ2luKSBuZXh0OwpYKyAgICB1aW50MzIJCW9yaWdp
bkFkZHI7ClgrICAgIGludAkJCWZsb29kOwpYKyAgICB1aW50MzIJCXBrdGNudDsKWCt9OwpY
KwpYIHN0cnVjdCBSb3V0ZVRhYmxlIHsKWCAgICAgc3RydWN0IFJvdXRlVGFibGUgICAqbmV4
dHJvdXRlOyAgICAgLy8gUG9pbnRlciB0byB0aGUgbmV4dCBncm91cCBpbiBsaW5lLgpYICAg
ICBzdHJ1Y3QgUm91dGVUYWJsZSAgICpwcmV2cm91dGU7ICAgICAvLyBQb2ludGVyIHRvIHRo
ZSBwcmV2aW91cyBncm91cCBpbiBsaW5lLgpYICAgICB1aW50MzIgICAgICAgICAgICAgIGdy
b3VwOyAgICAgICAgICAvLyBUaGUgZ3JvdXAgdG8gcm91dGUKWC0gICAgdWludDMyICAgICAg
ICAgICAgICBvcmlnaW5BZGRyOyAgICAgLy8gVGhlIG9yaWdpbiBhZHJlc3MgKG9ubHkgc2V0
IG9uIGFjdGl2YXRlZCByb3V0ZXMpClggICAgIHVpbnQzMiAgICAgICAgICAgICAgdmlmQml0
czsgICAgICAgIC8vIEJpdHMgcmVwcmVzZW50aW5nIHJlY2lldmluZyBWSUZzLgpYIApYICAg
ICAvLyBLZWVwcyB0aGUgdXBzdHJlYW0gbWVtYmVyc2hpcCBzdGF0ZS4uLgpYQEAgLTU2LDYg
KzYzLDcgQEAKWCAgICAgdWludDMyICAgICAgICAgICAgICBhZ2VWaWZCaXRzOyAgICAgLy8g
Qml0cyByZXByZXNlbnRpbmcgYWdpbmcgVklGcy4KWCAgICAgaW50ICAgICAgICAgICAgICAg
ICBhZ2VWYWx1ZTsgICAgICAgLy8gRG93bmNvdW50ZXIgZm9yIGRlYXRoLiAgICAgICAgICAK
WCAgICAgaW50ICAgICAgICAgICAgICAgICBhZ2VBY3Rpdml0eTsgICAgLy8gUmVjb3JkcyBh
bnkgYWNpdGl2aXR5IHRoYXQgbm90ZXMgdGhlcmUgYXJlIHN0aWxsIGxpc3RlbmVycy4KWCsg
ICAgVEFJTFFfSEVBRChvcmlnaW5oZWFkLCBPcmlnaW4pIG9yaWdpbkxpc3Q7IC8vIFRoZSBv
cmlnaW4gYWRyZXNzZXMgKG5vbi1lbXB0eSBvbiBhY3RpdmF0ZWQgcm91dGVzKQpYIH07Clgg
ClggICAgICAgICAgICAgICAgICAKWEBAIC02NSwxOSArNzMsMTcgQEAKWCAvLyBQcm90b3R5
cGVzClggdm9pZCBsb2dSb3V0ZVRhYmxlKGNoYXIgKmhlYWRlcik7ClggaW50ICBpbnRlcm5B
Z2VSb3V0ZShzdHJ1Y3QgUm91dGVUYWJsZSogIGNyb3V0ZSk7ClgtClgtLy8gU29ja2V0IGZv
ciBzZW5kaW5nIGpvaW4gb3IgbGVhdmUgcmVxdWVzdHMuClgtaW50IG1jR3JvdXBTb2NrID0g
MDsKWCtpbnQgaW50ZXJuVXBkYXRlS2VybmVsUm91dGUoc3RydWN0IFJvdXRlVGFibGUgKnJv
dXRlLCBpbnQgYWN0aXZhdGUsIHN0cnVjdCBPcmlnaW4gKm8pOwpYIApYIApYIC8qKgpYICog
ICBGdW5jdGlvbiBmb3IgcmV0cmlldmluZyB0aGUgTXVsdGljYXN0IEdyb3VwIHNvY2tldC4K
WCAqLwpYIGludCBnZXRNY0dyb3VwU29jaygpIHsKWC0gICAgaWYoICEgbWNHcm91cFNvY2sg
KSB7ClgtICAgICAgICBtY0dyb3VwU29jayA9IG9wZW5VZHBTb2NrZXQoIElOQUREUl9BTlks
IDAgKTs7ClgrICAgIGlmIChNUm91dGVyRkQgPCAwKSB7ClgrCSAgICBsb2coTE9HX0VSUiwg
ZXJybm8sICJubyBNUm91dGVyRkQuIik7ClggICAgIH0KWC0gICAgcmV0dXJuIG1jR3JvdXBT
b2NrOwpYKyAgICByZXR1cm4gTVJvdXRlckZEOwpYIH0KWCAgClggLyoqClhAQCAtOTEsNyAr
OTcsNyBAQApYICAgICByb3V0aW5nX3RhYmxlID0gTlVMTDsKWCAKWCAgICAgLy8gSm9pbiB0
aGUgYWxsIHJvdXRlcnMgZ3JvdXAgb24gZG93bnN0cmVhbSB2aWZzLi4uClgtICAgIGZvciAo
IEl4ID0gMDsgRHAgPSBnZXRJZkJ5SXgoIEl4ICk7IEl4KysgKSB7ClgrICAgIGZvciAoIEl4
ID0gMDsgKERwID0gZ2V0SWZCeUl4KCBJeCApKTsgSXgrKyApIHsKWCAgICAgICAgIC8vIElm
IHRoaXMgaXMgYSBkb3duc3RyZWFtIHZpZiwgd2Ugc2hvdWxkIGpvaW4gdGhlIEFsbCByb3V0
ZXJzIGdyb3VwLi4uClggICAgICAgICBpZiggRHAtPkluQWRyLnNfYWRkciAmJiAhIChEcC0+
RmxhZ3MgJiBJRkZfTE9PUEJBQ0spICYmIERwLT5zdGF0ZSA9PSBJRl9TVEFURV9ET1dOU1RS
RUFNKSB7ClggICAgICAgICAgICAgSUZfREVCVUcgbG9nKExPR19ERUJVRywgMCwgIkpvaW5p
bmcgYWxsLXJvdXRlcnMgZ3JvdXAgJXMgb24gdmlmICVzIiwKWEBAIC0xNjAsNiArMTY2LDcg
QEAKWCAqLwpYIHZvaWQgY2xlYXJBbGxSb3V0ZXMoKSB7ClggICAgIHN0cnVjdCBSb3V0ZVRh
YmxlICAgKmNyb3V0ZSwgKnJlbWFpbnJvdXRlOwpYKyAgICBzdHJ1Y3QgT3JpZ2luICpvOwpY
IApYICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHJvdXRlcy4uLgpYICAgICBmb3IoY3JvdXRl
ID0gcm91dGluZ190YWJsZTsgY3JvdXRlOyBjcm91dGUgPSByZW1haW5yb3V0ZSkgewpYQEAg
LTE3MSw3ICsxNzgsNyBAQApYICAgICAgICAgICAgICAgICAgICAgIGluZXRGbXQoY3JvdXRl
LT5ncm91cCwgczEpKTsKWCAKWCAgICAgICAgIC8vIFVuaW5zdGFsbCBjdXJyZW50IHJvdXRl
ClgtICAgICAgICBpZighaW50ZXJuVXBkYXRlS2VybmVsUm91dGUoY3JvdXRlLCAwKSkgewpY
KyAgICAgICAgaWYoIWludGVyblVwZGF0ZUtlcm5lbFJvdXRlKGNyb3V0ZSwgMCwgTlVMTCkp
IHsKWCAgICAgICAgICAgICBsb2coTE9HX1dBUk5JTkcsIDAsICJUaGUgcmVtb3ZhbCBmcm9t
IEtlcm5lbCBmYWlsZWQuIik7ClggICAgICAgICB9ClggClhAQCAtMTc5LDYgKzE4NiwxMCBA
QApYICAgICAgICAgc2VuZEpvaW5MZWF2ZVVwc3RyZWFtKGNyb3V0ZSwgMCk7ClggClggICAg
ICAgICAvLyBDbGVhciBtZW1vcnksIGFuZCBzZXQgcG9pbnRlciB0byBuZXh0IHJvdXRlLi4u
ClgrICAgICAgICB3aGlsZSAoKG8gPSBUQUlMUV9GSVJTVCgmY3JvdXRlLT5vcmlnaW5MaXN0
KSkpIHsKWCsgICAgICAgICAgICBUQUlMUV9SRU1PVkUoJmNyb3V0ZS0+b3JpZ2luTGlzdCwg
bywgbmV4dCk7ClgrICAgICAgICAgICAgZnJlZShvKTsKWCsgICAgICAgIH0KWCAgICAgICAg
IGZyZWUoY3JvdXRlKTsKWCAgICAgfQpYICAgICByb3V0aW5nX3RhYmxlID0gTlVMTDsKWEBA
IC0yMTIsNyArMjIzLDYgQEAKWCAgICAgClggICAgIHN0cnVjdCBDb25maWcgKmNvbmYgPSBn
ZXRDb21tb25Db25maWcoKTsKWCAgICAgc3RydWN0IFJvdXRlVGFibGUqICBjcm91dGU7Clgt
ICAgIGludCByZXN1bHQgPSAxOwpYIApYICAgICAvLyBTYW5pdHljaGVjayB0aGUgZ3JvdXAg
YWRyZXNzLi4uClggICAgIGlmKCAhIElOX01VTFRJQ0FTVCggbnRvaGwoZ3JvdXApICkpIHsK
WEBAIC0yNDEsNyArMjUxLDggQEAKWCAgICAgICAgIG5ld3JvdXRlID0gKHN0cnVjdCBSb3V0
ZVRhYmxlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBSb3V0ZVRhYmxlKSk7ClggICAgICAgICAv
LyBJbnNlcnQgdGhlIHJvdXRlIGRlc2MgYW5kIGNsZWFyIGFsbCBwb2ludGVycy4uLgpYICAg
ICAgICAgbmV3cm91dGUtPmdyb3VwICAgICAgPSBncm91cDsKWC0gICAgICAgIG5ld3JvdXRl
LT5vcmlnaW5BZGRyID0gMDsKWCsgICAgICAgIFRBSUxRX0lOSVQoJm5ld3JvdXRlLT5vcmln
aW5MaXN0KTsKWCsKWCAgICAgICAgIG5ld3JvdXRlLT5uZXh0cm91dGUgID0gTlVMTDsKWCAg
ICAgICAgIG5ld3JvdXRlLT5wcmV2cm91dGUgID0gTlVMTDsKWCAKWEBAIC0zMjUsMTAgKzMz
NiwxMCBAQApYICAgICAgICAgICAgIGluZXRGbXQoY3JvdXRlLT5ncm91cCwgczEpLCBpZngp
OwpYIApYICAgICAgICAgLy8gSWYgdGhlIHJvdXRlIGlzIGFjdGl2ZSwgaXQgbXVzdCBiZSBy
ZWxvYWRlZCBpbnRvIHRoZSBLZXJuZWwuLgpYLSAgICAgICAgaWYoY3JvdXRlLT5vcmlnaW5B
ZGRyICE9IDApIHsKWCsgICAgICAgIGlmKCFUQUlMUV9FTVBUWSgmY3JvdXRlLT5vcmlnaW5M
aXN0KSkgewpYIApYICAgICAgICAgICAgIC8vIFVwZGF0ZSByb3V0ZSBpbiBrZXJuZWwuLi4K
WC0gICAgICAgICAgICBpZighaW50ZXJuVXBkYXRlS2VybmVsUm91dGUoY3JvdXRlLCAxKSkg
ewpYKyAgICAgICAgICAgIGlmKCFpbnRlcm5VcGRhdGVLZXJuZWxSb3V0ZShjcm91dGUsIDEs
IE5VTEwpKSB7ClggICAgICAgICAgICAgICAgIGxvZyhMT0dfV0FSTklORywgMCwgIlRoZSBp
bnNlcnRpb24gaW50byBLZXJuZWwgZmFpbGVkLiIpOwpYICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKWCAgICAgICAgICAgICB9ClhAQCAtMzUxLDcgKzM2Miw3IEBAClggKiAgIGFjdGl2
YXRlZCwgaXQncyByZWluc3RhbGxlZCBpbiB0aGUga2VybmVsLiBJZgpYICogICB0aGUgcm91
dGUgaXMgYWN0aXZhdGVkLCBubyBvcmlnaW5BZGRyIGlzIG5lZWRlZC4KWCAqLwpYLWludCBh
Y3RpdmF0ZVJvdXRlKHVpbnQzMiBncm91cCwgdWludDMyIG9yaWdpbkFkZHIpIHsKWCtpbnQg
YWN0aXZhdGVSb3V0ZSh1aW50MzIgZ3JvdXAsIHVpbnQzMiBvcmlnaW5BZGRyLCBpbnQgZG93
bklmKSB7ClggICAgIHN0cnVjdCBSb3V0ZVRhYmxlKiAgY3JvdXRlOwpYICAgICBpbnQgcmVz
dWx0ID0gMDsKWCAKWEBAIC0zNjksMjEgKzM4MCw0MiBAQApYICAgICB9ClggClggICAgIGlm
KGNyb3V0ZSAhPSBOVUxMKSB7ClgrCXN0cnVjdCBPcmlnaW4gKm8gPSBOVUxMOwpYKwlpbnQg
Zm91bmQgPSAwOwpYKwpYICAgICAgICAgLy8gSWYgdGhlIG9yaWdpbiBhZGRyZXNzIGlzIHNl
dCwgdXBkYXRlIHRoZSByb3V0ZSBkYXRhLgpYLSAgICAgICAgaWYob3JpZ2luQWRkciA+IDAp
IHsKWC0gICAgICAgICAgICBpZihjcm91dGUtPm9yaWdpbkFkZHIgPiAwICYmIGNyb3V0ZS0+
b3JpZ2luQWRkciE9b3JpZ2luQWRkcikgewpYLSAgICAgICAgICAgICAgICBsb2coTE9HX1dB
Uk5JTkcsIDAsICJUaGUgb3JpZ2luIGZvciByb3V0ZSAlcyBjaGFuZ2VkIGZyb20gJXMgdG8g
JXMiLApYLSAgICAgICAgICAgICAgICAgICAgaW5ldEZtdChjcm91dGUtPmdyb3VwLCBzMSks
ClgtICAgICAgICAgICAgICAgICAgICBpbmV0Rm10KGNyb3V0ZS0+b3JpZ2luQWRkciwgczIp
LApYLSAgICAgICAgICAgICAgICAgICAgaW5ldEZtdChvcmlnaW5BZGRyLCBzMykpOwpYLSAg
ICAgICAgICAgIH0KWC0gICAgICAgICAgICBjcm91dGUtPm9yaWdpbkFkZHIgPSBvcmlnaW5B
ZGRyOwpYLSAgICAgICAgfQpYKwlpZihvcmlnaW5BZGRyID4gMCkgewpYIApYLSAgICAgICAg
Ly8gT25seSB1cGRhdGUga2VybmVsIHRhYmxlIGlmIHRoZXJlIGFyZSBsaXN0ZW5lcnMgIQpY
LSAgICAgICAgaWYoY3JvdXRlLT52aWZCaXRzID4gMCkgewpYLSAgICAgICAgICAgIHJlc3Vs
dCA9IGludGVyblVwZGF0ZUtlcm5lbFJvdXRlKGNyb3V0ZSwgMSk7ClgtICAgICAgICB9Clgr
CSAgICBUQUlMUV9GT1JFQUNIKG8sICZjcm91dGUtPm9yaWdpbkxpc3QsIG5leHQpIHsKWCsJ
CWxvZyhMT0dfSU5GTywgMCwgIk9yaWdpbiBmb3Igcm91dGUgJXMgaGF2ZSAlcywgbmV3ICVz
IiwKWCsJCSAgICBpbmV0Rm10KGNyb3V0ZS0+Z3JvdXAsIHMxKSwKWCsJCSAgICBpbmV0Rm10
KG8tPm9yaWdpbkFkZHIsIHMyKSwKWCsJCSAgICBpbmV0Rm10KG9yaWdpbkFkZHIsIHMzKSk7
ClgrCQlpZiAoby0+b3JpZ2luQWRkcj09b3JpZ2luQWRkcikgewpYKwkJICAgIGZvdW5kKys7
ClgrCQkgICAgYnJlYWs7ClgrCQl9ClgrCSAgICB9ClgrCSAgICBpZiAoIWZvdW5kKSB7Clgr
CQlsb2coTE9HX05PVElDRSwgMCwgIk5ldyBvcmlnaW4gZm9yIHJvdXRlICVzIGlzICVzLCBm
bG9vZCAlZCIsClgrCQkgICAgaW5ldEZtdChjcm91dGUtPmdyb3VwLCBzMSksClgrCQkgICAg
aW5ldEZtdChvcmlnaW5BZGRyLCBzMyksIGRvd25JZik7ClgrCQlvID0gbWFsbG9jKHNpemVv
ZigqbykpOwpYKwkJby0+b3JpZ2luQWRkciA9IG9yaWdpbkFkZHI7ClgrCQlvLT5mbG9vZCA9
IGRvd25JZjsKWCsJCW8tPnBrdGNudCA9IDA7ClgrCQlUQUlMUV9JTlNFUlRfVEFJTCgmY3Jv
dXRlLT5vcmlnaW5MaXN0LCBvLCBuZXh0KTsKWCsJICAgIH0gZWxzZSB7ClgrCQlsb2coTE9H
X0lORk8sIDAsICJIYXZlIG9yaWdpbiBmb3Igcm91dGUgJXMgYXQgJXMsIHBrdGNudCAlZCIs
ClgrCQkgICAgaW5ldEZtdChjcm91dGUtPmdyb3VwLCBzMSksClgrCQkgICAgaW5ldEZtdChv
LT5vcmlnaW5BZGRyLCBzMyksClgrCQkgICAgby0+cGt0Y250KTsKWCsJICAgIH0KWCsJfQpY
KwpYKyAgICAgICAgLy8gT25seSB1cGRhdGUga2VybmVsIHRhYmxlIGlmIHRoZXJlIGFyZSBs
aXN0ZW5lcnMsIGJ1dCBmbG9vZCB1cHN0cmVhbSEKWCsgICAgICAgIGlmKGNyb3V0ZS0+dmlm
Qml0cyA+IDAgfHwgZG93bklmID49IDApClgrICAgICAgICAgICAgcmVzdWx0ID0gaW50ZXJu
VXBkYXRlS2VybmVsUm91dGUoY3JvdXRlLCAxLCBvKTsKWCAgICAgfQpYICAgICBJRl9ERUJV
RyBsb2dSb3V0ZVRhYmxlKCJBY3RpdmF0ZSBSb3V0ZSIpOwpYIApYQEAgLTQ0Myw3ICs0NzUs
NiBAQApYICogICByb3V0ZSBpcyBub3QgZm91bmQsIG9yIG5vdCBpbiB0aGlzIHN0YXRlLCAw
IGlzIHJldHVybmVkLgpYICovClggaW50IGxhc3RNZW1iZXJHcm91cEFnZSh1aW50MzIgZ3Jv
dXApIHsKWC0gICAgc3RydWN0IENvbmZpZyAgICAgICAqY29uZiA9IGdldENvbW1vbkNvbmZp
ZygpOwpYICAgICBzdHJ1Y3QgUm91dGVUYWJsZSAgICpjcm91dGU7ClggClggICAgIGNyb3V0
ZSA9IGZpbmRSb3V0ZShncm91cCk7ClhAQCAtNDYzLDYgKzQ5NCw3IEBAClggKi8KWCBpbnQg
cmVtb3ZlUm91dGUoc3RydWN0IFJvdXRlVGFibGUqICBjcm91dGUpIHsKWCAgICAgc3RydWN0
IENvbmZpZyAgICAgICAqY29uZiA9IGdldENvbW1vbkNvbmZpZygpOwpYKyAgICBzdHJ1Y3Qg
T3JpZ2luICpvOwpYICAgICBpbnQgcmVzdWx0ID0gMTsKWCAgICAgClggICAgIC8vIElmIGNy
b3V0ZSBpcyBudWxsLCBubyByb3V0ZXMgd2FzIGZvdW5kLgpYQEAgLTQ3Nyw3ICs1MDksNyBA
QApYICAgICAvL0JJVF9aRVJPKGNyb3V0ZS0+dmlmQml0cyk7ClggClggICAgIC8vIFVuaW5z
dGFsbCBjdXJyZW50IHJvdXRlIGZyb20ga2VybmVsClgtICAgIGlmKCFpbnRlcm5VcGRhdGVL
ZXJuZWxSb3V0ZShjcm91dGUsIDApKSB7ClgrICAgIGlmKCFpbnRlcm5VcGRhdGVLZXJuZWxS
b3V0ZShjcm91dGUsIDAsIE5VTEwpKSB7ClggICAgICAgICBsb2coTE9HX1dBUk5JTkcsIDAs
ICJUaGUgcmVtb3ZhbCBmcm9tIEtlcm5lbCBmYWlsZWQuIik7ClggICAgICAgICByZXN1bHQg
PSAwOwpYICAgICB9ClhAQCAtNTAzLDcgKzUzNSwxMiBAQApYICAgICAgICAgICAgIGNyb3V0
ZS0+bmV4dHJvdXRlLT5wcmV2cm91dGUgPSBjcm91dGUtPnByZXZyb3V0ZTsKWCAgICAgICAg
IH0KWCAgICAgfQpYKwpYICAgICAvLyBGcmVlIHRoZSBtZW1vcnksIGFuZCBzZXQgdGhlIHJv
dXRlIHRvIE5VTEwuLi4KWCsgICAgd2hpbGUgKChvID0gVEFJTFFfRklSU1QoJmNyb3V0ZS0+
b3JpZ2luTGlzdCkpKSB7ClgrCVRBSUxRX1JFTU9WRSgmY3JvdXRlLT5vcmlnaW5MaXN0LCBv
LCBuZXh0KTsKWCsJZnJlZShvKTsKWCsgICAgfQpYICAgICBmcmVlKGNyb3V0ZSk7ClggICAg
IGNyb3V0ZSA9IE5VTEw7ClggClhAQCAtNTUxLDYgKzU4OCwzNiBAQApYICAgICAgICAgfQpY
ICAgICB9ClggClgrICAgIHsKWCsJc3RydWN0IE9yaWdpbiAqbywgKm54dDsKWCsJc3RydWN0
IHNpb2Nfc2dfcmVxIHNnX3JlcTsKWCsKWCsJc2dfcmVxLmdycC5zX2FkZHIgPSBjcm91dGUt
Pmdyb3VwOwpYKwlmb3IgKG8gPSBUQUlMUV9GSVJTVCgmY3JvdXRlLT5vcmlnaW5MaXN0KTsg
bzsgbyA9IG54dCkgewpYKwkgICAgbnh0ID0gVEFJTFFfTkVYVChvLCBuZXh0KTsKWCsJICAg
IHNnX3JlcS5zcmMuc19hZGRyID0gby0+b3JpZ2luQWRkcjsKWCsJICAgIGlmIChpb2N0bChN
Um91dGVyRkQsIFNJT0NHRVRTR0NOVCwgKGNoYXIgKikmc2dfcmVxKSA8IDApIHsKWCsJCWxv
ZyhMT0dfV0FSTklORywgZXJybm8sICIlcyAoJXMgJXMpIiwKWCsJCSAgICAiYWdlX3RhYmxl
X2VudHJ5OiBTSU9DR0VUU0dDTlQgZmFpbGluZyBmb3IiLApYKwkJICAgIGluZXRGbXQoby0+
b3JpZ2luQWRkciwgczEpLApYKwkJICAgIGluZXRGbXQoY3JvdXRlLT5ncm91cCwgczIpKTsK
WCsJCS8qIE1ha2Ugc3VyZSBpdCBnZXRzIGRlbGV0ZWQgYmVsb3cgKi8KWCsJCXNnX3JlcS5w
a3RjbnQgPSBvLT5wa3RjbnQ7ClgrCSAgICB9ClgrCSAgICBsb2coTE9HX0RFQlVHLCAwLCAi
QWdpbmcgT3JpZ2luICVzIERzdCAlcyBQa3RDbnQgJWQgLT4gJWQiLApYKwkJaW5ldEZtdChv
LT5vcmlnaW5BZGRyLCBzMSksIGluZXRGbXQoY3JvdXRlLT5ncm91cCwgczIpLApYKwkJby0+
cGt0Y250LCBzZ19yZXEucGt0Y250KTsKWCsJICAgIGlmIChzZ19yZXEucGt0Y250ID09IG8t
PnBrdGNudCkgewpYKwkJLyogbm8gdHJhZmZpYywgcmVtb3ZlIGZyb20ga2VybmVsIGNhY2hl
ICovClgrCQlpbnRlcm5VcGRhdGVLZXJuZWxSb3V0ZShjcm91dGUsIDAsIG8pOwpYKwkJVEFJ
TFFfUkVNT1ZFKCZjcm91dGUtPm9yaWdpbkxpc3QsIG8sIG5leHQpOwpYKwkJZnJlZShvKTsK
WCsJICAgIH0gZWxzZSB7ClgrCQlvLT5wa3RjbnQgPSBzZ19yZXEucGt0Y250OwpYKwkgICAg
fQpYKwl9ClgrICAgIH0KWCsKWCAgICAgLy8gSWYgdGhlIGFnaW5nIGNvdW50ZXIgaGFzIHJl
YWNoZWQgemVybywgaXRzIHRpbWUgZm9yIHVwZGF0aW5nLi4uClggICAgIGlmKGNyb3V0ZS0+
YWdlVmFsdWUgPT0gMCkgewpYICAgICAgICAgLy8gQ2hlY2sgZm9yIGFjdGl2aXR5IGluIHRo
ZSBhZ2luZyBwcm9jZXNzLApYQEAgLTU2MCw3ICs2MjcsNyBAQApYICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmV0Rm10KGNyb3V0ZS0+Z3JvdXAsczEpKTsKWCAgICAgICAgICAgICAK
WCAgICAgICAgICAgICAvLyBKdXN0IHVwZGF0ZSB0aGUgcm91dGluZyBzZXR0aW5ncyBpbiBr
ZXJuZWwuLi4KWC0gICAgICAgICAgICBpbnRlcm5VcGRhdGVLZXJuZWxSb3V0ZShjcm91dGUs
IDEpOwpYKyAgICAgICAgICAgIGludGVyblVwZGF0ZUtlcm5lbFJvdXRlKGNyb3V0ZSwgMSwg
TlVMTCk7ClggICAgIApYICAgICAgICAgICAgIC8vIFdlIGFwcGVuZCB0aGUgYWN0aXZpdHkg
Y291bnRlciB0byB0aGUgYWdlLCBhbmQgY29udGludWUuLi4KWCAgICAgICAgICAgICBjcm91
dGUtPmFnZVZhbHVlID0gY3JvdXRlLT5hZ2VBY3Rpdml0eTsKWEBAIC01ODYsMzQgKzY1Myw1
NyBAQApYIC8qKgpYICogICBVcGRhdGVzIHRoZSBLZXJuZWwgcm91dGluZyB0YWJsZS4gSWYg
YWN0aXZhdGUgaXMgMSwgdGhlIHJvdXRlClggKiAgIGlzIChyZS0pYWN0aXZhdGVkLiBJZiBh
Y3RpdmF0ZSBpcyBmYWxzZSwgdGhlIHJvdXRlIGlzIHJlbW92ZWQuClgrKiAgIGlmICdvcmln
aW4nIGlzIGdpdmVuLCBvbmx5IHRoZSByb3V0ZSB3aXRoICdvcmlnaW4nIHdpbGwgYmUKWCsq
ICAgdXBkYXRlZCwgb3RoZXJ3aXNlIGFsbCBNRkMgcm91dGVzIGZvciB0aGUgZ3JvdXAgd2ls
bCB1cGRhdGVkLgpYICovClgtaW50IGludGVyblVwZGF0ZUtlcm5lbFJvdXRlKHN0cnVjdCBS
b3V0ZVRhYmxlICpyb3V0ZSwgaW50IGFjdGl2YXRlKSB7ClgraW50IGludGVyblVwZGF0ZUtl
cm5lbFJvdXRlKHN0cnVjdCBSb3V0ZVRhYmxlICpyb3V0ZSwgaW50IGFjdGl2YXRlLCBzdHJ1
Y3QgT3JpZ2luICpvcmlnaW4pIHsKWCAgICAgc3RydWN0ICAgTVJvdXRlRGVzYyAgICAgbXJE
ZXNjOwpYICAgICBzdHJ1Y3QgICBJZkRlc2MgICAgICAgICAqRHA7ClggICAgIHVuc2lnbmVk
ICAgICAgICAgICAgICAgIEl4OwpYLSAgICAKWC0gICAgaWYocm91dGUtPm9yaWdpbkFkZHI+
MCkgewpYKyAgICBzdHJ1Y3QgT3JpZ2luICpvOwpYKwpYKyAgICBpZiAoVEFJTFFfRU1QVFko
JnJvdXRlLT5vcmlnaW5MaXN0KSkgewpYKyAgICAgICAgbG9nKExPR19OT1RJQ0UsIDAsICJS
b3V0ZSBpcyBub3QgYWN0aXZlLiBObyBrZXJuZWwgdXBkYXRlcyBkb25lLiIpOwpYKyAgICAg
ICAgcmV0dXJuIDE7ClgrICAgIH0KWCsgICAgVEFJTFFfRk9SRUFDSChvLCAmcm91dGUtPm9y
aWdpbkxpc3QsIG5leHQpIHsKWCsJaWYgKG9yaWdpbiAmJiBvcmlnaW4gIT0gbykKWCsgCWNv
bnRpbnVlOwpYIApYICAgICAgICAgLy8gQnVpbGQgcm91dGUgZGVzY3JpcHRvciBmcm9tIHRh
YmxlIGVudHJ5Li4uClggICAgICAgICAvLyBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGFuZCBn
cm91cCBhZGRyZXNzLi4uClggICAgICAgICBtckRlc2MuTWNBZHIuc19hZGRyICAgICA9IHJv
dXRlLT5ncm91cDsKWC0gICAgICAgIG1yRGVzYy5PcmlnaW5BZHIuc19hZGRyID0gcm91dGUt
Pm9yaWdpbkFkZHI7ClgrICAgICAgICBtckRlc2MuT3JpZ2luQWRyLnNfYWRkciA9IG8tPm9y
aWdpbkFkZHI7ClggICAgIApYICAgICAgICAgLy8gY2xlYXIgb3V0cHV0IGludGVyZmFjZXMg
ClggICAgICAgICBtZW1zZXQoIG1yRGVzYy5UdGxWYywgMCwgc2l6ZW9mKCBtckRlc2MuVHRs
VmMgKSApOwpYICAgICAKWC0gICAgICAgIElGX0RFQlVHIGxvZyhMT0dfREVCVUcsIDAsICJW
aWYgYml0cyA6IDB4JTA4eCIsIHJvdXRlLT52aWZCaXRzKTsKWC0KWCsgICAgICAgIElGX0RF
QlVHIGxvZyhMT0dfREVCVUcsIDAsICJPcmlnaW4gJXMgVmlmIGJpdHMgOiAweCUwOHgiLCBp
bmV0Rm10KG8tPm9yaWdpbkFkZHIsIHMxKSwgcm91dGUtPnZpZkJpdHMpOwpYICAgICAgICAg
Ly8gU2V0IHRoZSBUVEwncyBmb3IgdGhlIHJvdXRlIGRlc2NyaXB0b3IuLi4KWC0gICAgICAg
IGZvciAoIEl4ID0gMDsgRHAgPSBnZXRJZkJ5SXgoIEl4ICk7IEl4KysgKSB7ClgtICAgICAg
ICAgICAgaWYoRHAtPnN0YXRlID09IElGX1NUQVRFX1VQU1RSRUFNKSB7ClgtICAgICAgICAg
ICAgICAgIC8vSUZfREVCVUcgbG9nKExPR19ERUJVRywgMCwgIklkZW50aWZpZWQgVklGICMl
ZCBhcyB1cHN0cmVhbS4iLCBEcC0+aW5kZXgpOwpYLSAgICAgICAgICAgICAgICBtckRlc2Mu
SW5WaWYgPSBEcC0+aW5kZXg7ClgtICAgICAgICAgICAgfQpYLSAgICAgICAgICAgIGVsc2Ug
aWYoQklUX1RTVChyb3V0ZS0+dmlmQml0cywgRHAtPmluZGV4KSkgewpYLSAgICAgICAgICAg
ICAgICBJRl9ERUJVRyBsb2coTE9HX0RFQlVHLCAwLCAiU2V0dGluZyBUVEwgZm9yIFZpZiAl
ZCB0byAlZCIsIERwLT5pbmRleCwgRHAtPnRocmVzaG9sZCk7ClgtICAgICAgICAgICAgICAg
IG1yRGVzYy5UdGxWY1sgRHAtPmluZGV4IF0gPSBEcC0+dGhyZXNob2xkOwpYLSAgICAgICAg
ICAgIH0KWCsgICAgICAgIGZvciAoIEl4ID0gMDsgKERwID0gZ2V0SWZCeUl4KCBJeCApKTsg
SXgrKyApIHsKWCsJICAgIGlmIChvLT5mbG9vZCA+PSAwKSB7ClgrCQlpZihJeCA9PSAodW5z
aWduZWQpIG8tPmZsb29kKSB7ClgrCQkgICAgSUZfREVCVUcgbG9nKExPR19ERUJVRywgMCwg
IklkZW50aWZpZWQgSW5wdXQgVklGICMlZCBhcyBET1dOU1RSRUFNLiIsIERwLT5pbmRleCk7
ClgrCQkgICAgbXJEZXNjLkluVmlmID0gRHAtPmluZGV4OwpYKwkJfQpYKwkJZWxzZSBpZihE
cC0+c3RhdGUgPT0gSUZfU1RBVEVfVVBTVFJFQU0pIHsKWCsJCSAgICBJRl9ERUJVRyBsb2co
TE9HX0RFQlVHLCAwLCAiU2V0dGluZyBUVEwgZm9yIFVQU1RSRUFNIFZpZiAlZCB0byAlZCIs
IERwLT5pbmRleCwgRHAtPnRocmVzaG9sZCk7ClgrCQkgICAgbXJEZXNjLlR0bFZjWyBEcC0+
aW5kZXggXSA9IERwLT50aHJlc2hvbGQ7ClgrCQl9ClgrCQllbHNlIGlmKEJJVF9UU1Qocm91
dGUtPnZpZkJpdHMsIERwLT5pbmRleCkpIHsKWCsJCSAgICBJRl9ERUJVRyBsb2coTE9HX0RF
QlVHLCAwLCAiU2V0dGluZyBUVEwgZm9yIERPV05TVFJFQU0gVmlmICVkIHRvICVkIiwgRHAt
PmluZGV4LCBEcC0+dGhyZXNob2xkKTsKWCsJCSAgICBtckRlc2MuVHRsVmNbIERwLT5pbmRl
eCBdID0gRHAtPnRocmVzaG9sZDsKWCsJCX0KWCsJICAgIH0gZWxzZSB7ClgrCQlpZihEcC0+
c3RhdGUgPT0gSUZfU1RBVEVfVVBTVFJFQU0pIHsKWCsJCSAgICBJRl9ERUJVRyBsb2coTE9H
X0RFQlVHLCAwLCAiSWRlbnRpZmllZCBWSUYgIyVkIGFzIHVwc3RyZWFtLiIsIERwLT5pbmRl
eCk7ClgrCQkgICAgbXJEZXNjLkluVmlmID0gRHAtPmluZGV4OwpYKwkJfQpYKwkJZWxzZSBp
ZihCSVRfVFNUKHJvdXRlLT52aWZCaXRzLCBEcC0+aW5kZXgpKSB7ClgrCQkgICAgSUZfREVC
VUcgbG9nKExPR19ERUJVRywgMCwgIlNldHRpbmcgVFRMIGZvciBWaWYgJWQgdG8gJWQiLCBE
cC0+aW5kZXgsIERwLT50aHJlc2hvbGQpOwpYKwkJICAgIG1yRGVzYy5UdGxWY1sgRHAtPmlu
ZGV4IF0gPSBEcC0+dGhyZXNob2xkOwpYKwkJfQpYKwkgICAgfQpYICAgICAgICAgfQpYICAg
ICAKWCAgICAgICAgIC8vIERvIHRoZSBhY3R1YWwgS2VybmVsIHJvdXRlIHVwZGF0ZS4uLgpY
QEAgLTYyNSw5ICs3MTUsNiBAQApYICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgcm91dGUg
ZnJvbSBLZXJuZWwuLi4KWCAgICAgICAgICAgICBkZWxNUm91dGUoICZtckRlc2MgKTsKWCAg
ICAgICAgIH0KWC0KWC0gICAgfSBlbHNlIHsKWC0gICAgICAgIGxvZyhMT0dfTk9USUNFLCAw
LCAiUm91dGUgaXMgbm90IGFjdGl2ZS4gTm8ga2VybmVsIHVwZGF0ZXMgZG9uZS4iKTsKWCAg
ICAgfQpYIApYICAgICByZXR1cm4gMTsKWEBAIC02NDcsMTYgKzczNCwxNyBAQApYICAgICAg
ICAgICAgIGxvZyhMT0dfREVCVUcsIDAsICJObyByb3V0ZXMgaW4gdGFibGUuLi4iKTsKWCAg
ICAgICAgIH0gZWxzZSB7ClggICAgICAgICAgICAgZG8gewpYLSAgICAgICAgICAgICAgICAv
KgpYLSAgICAgICAgICAgICAgICBsb2coTE9HX0RFQlVHLCAwLCAiIyVkOiBTcmM6ICVzLCBE
c3Q6ICVzLCBBZ2U6JWQsIFN0OiAlcywgUHJldjogMHglMDh4LCBUOiAweCUwOHgsIE5leHQ6
IDB4JTA4eCIsClgtICAgICAgICAgICAgICAgICAgICByY291bnQsIGluZXRGbXQoY3JvdXRl
LT5vcmlnaW5BZGRyLCBzMSksIGluZXRGbXQoY3JvdXRlLT5ncm91cCwgczIpLApYLSAgICAg
ICAgICAgICAgICAgICAgY3JvdXRlLT5hZ2VWYWx1ZSwoY3JvdXRlLT5vcmlnaW5BZGRyPjA/
IkEiOiJJIiksClgtICAgICAgICAgICAgICAgICAgICBjcm91dGUtPnByZXZyb3V0ZSwgY3Jv
dXRlLCBjcm91dGUtPm5leHRyb3V0ZSk7ClgtICAgICAgICAgICAgICAgICovClgtICAgICAg
ICAgICAgICAgIGxvZyhMT0dfREVCVUcsIDAsICIjJWQ6IFNyYzogJXMsIERzdDogJXMsIEFn
ZTolZCwgU3Q6ICVzLCBPdXRWaWZzOiAweCUwOHgiLApYLSAgICAgICAgICAgICAgICAgICAg
cmNvdW50LCBpbmV0Rm10KGNyb3V0ZS0+b3JpZ2luQWRkciwgczEpLCBpbmV0Rm10KGNyb3V0
ZS0+Z3JvdXAsIHMyKSwKWC0gICAgICAgICAgICAgICAgICAgIGNyb3V0ZS0+YWdlVmFsdWUs
KGNyb3V0ZS0+b3JpZ2luQWRkcj4wPyJBIjoiSSIpLApYLSAgICAgICAgICAgICAgICAgICAg
Y3JvdXRlLT52aWZCaXRzKTsKWCsJCWxvZyhMT0dfREVCVUcsIDAsICIjJWQ6IERzdDogJXMs
IEFnZTolZCwgU3Q6ICVzLCBPdXRWaWZzOiAweCUwOHgiLApYKwkJICAgIHJjb3VudCwgaW5l
dEZtdChjcm91dGUtPmdyb3VwLCBzMiksClgrCQkgICAgY3JvdXRlLT5hZ2VWYWx1ZSwoVEFJ
TFFfRU1QVFkoJmNyb3V0ZS0+b3JpZ2luTGlzdCk/IkkiOiJBIiksClgrCQkgICAgY3JvdXRl
LT52aWZCaXRzKTsKWCsJCXsKWCsJCSAgICBzdHJ1Y3QgT3JpZ2luICpvOwpYKwkJICAgIFRB
SUxRX0ZPUkVBQ0gobywgJmNyb3V0ZS0+b3JpZ2luTGlzdCwgbmV4dCkgewpYKwkJCWxvZyhM
T0dfREVCVUcsIDAsICIjJWQ6IE9yaWdpbjogJXMgZmxvb2RJZiAlZCBwa3RjbnQgJWQiLApY
KwkJCSAgICByY291bnQsIGluZXRGbXQoby0+b3JpZ2luQWRkciwgczEpLCBvLT5mbG9vZCwg
by0+cGt0Y250KTsKWCsJCSAgICB9ClgrCQl9ClggICAgICAgICAgICAgICAgICAgClggICAg
ICAgICAgICAgICAgIGNyb3V0ZSA9IGNyb3V0ZS0+bmV4dHJvdXRlOyAKWCAgICAgICAgIApY
ZGlmZiAtdXJOIHN5c2xvZy5jIGlnbXBwcm94eS5uZXcvc3JjL3N5c2xvZy5jClgtLS0gc3lz
bG9nLmMJMjAwNS0wNS0yNCAxOTo0ODoxOS4wMDAwMDAwMDAgKzA0MDAKWCsrKyBpZ21wcHJv
eHkubmV3L3NyYy9zeXNsb2cuYwkyMDA5LTAxLTA1IDAyOjA3OjUwLjAwMDAwMDAwMCArMDMw
MApYQEAgLTUzLDEyICs1MywxNiBAQApYICoqIGlzIGxvZ2dlZCB0byAnc3RkZXJyJy4KWCAq
KiAgICAgICAgICAKWCAqLwpYKyNpZmRlZiBERVZFTF9MT0dHSU5HClgrdm9pZCBfbG9nKCBp
bnQgU2VydmVyaXR5LCBpbnQgRXJybm8sIGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsaW5lLCBj
b25zdCBjaGFyICpGbXRTdCwgLi4uICkKWCsjZWxzZQkKWCB2b2lkIGxvZyggaW50IFNlcnZl
cml0eSwgaW50IEVycm5vLCBjb25zdCBjaGFyICpGbXRTdCwgLi4uICkKWCsjZW5kaWYKWCB7
ClggICBjb25zdCBjaGFyIFNlcnZWY1tdWyA1IF0gPSB7ICJFTUVSIiwgIkFMRVIiLCAiQ1JJ
VCIsICJFUlJPIiwgClggCQkJICAgICAgICJXYXJuIiwgIk5vdGUiLCAiSW5mbyIsICJEZWJ1
IiB9OwpYIApYLSAgY29uc3QgY2hhciAqU2VydlB0ID0gU2VydmVyaXR5IDwgMCB8fCBTZXJ2
ZXJpdHkgPj0gVkNNQyggU2VydlZjICkgPyAKWCsgIGNvbnN0IGNoYXIgKlNlcnZQdCA9IFNl
cnZlcml0eSA8IDAgfHwgU2VydmVyaXR5ID49IChpbnQpIFZDTUMoIFNlcnZWYyApID8gClgg
ICAgICAgICAgICAgICAgICAgICAgICAiIXVua25vd24gc2VydmVyaXR5ISIgOiBTZXJ2VmNb
IFNlcnZlcml0eSBdOwpYICAKWCAgIGNvbnN0IGNoYXIgKkVyclN0ID0gKEVycm5vIDw9IDAp
ID8gTlVMTCA6IChjb25zdCBjaGFyICopc3RyZXJyb3IoIEVycm5vICk7IApYQEAgLTY5LDYg
KzczLDkgQEAKWCAKWCAgICAgdmFfc3RhcnQoIEFyZ1B0LCBGbXRTdCApOwpYICAgICBMbiAg
PSBzbnByaW50ZiggTG9nTGFzdE1zZywgc2l6ZW9mKCBMb2dMYXN0TXNnICksICIlczogIiwg
U2VydlB0ICk7ClgrI2lmZGVmIERFVkVMX0xPR0dJTkcKWCsgICAgTG4gKz0gc25wcmludGYo
IExvZ0xhc3RNc2cgKyBMbiwgc2l6ZW9mKCBMb2dMYXN0TXNnICkgLSBMbiwgIiVzKCk6JWQ6
ICIsIGZ1bmMsIGxpbmUpOwpYKyNlbmRpZiAgICAKWCAgICAgTG4gKz0gdnNucHJpbnRmKCBM
b2dMYXN0TXNnICsgTG4sIHNpemVvZiggTG9nTGFzdE1zZyApIC0gTG4sIEZtdFN0LCBBcmdQ
dCApOwpYICAgICBpZiggRXJyU3QgKQpYICAgICAgIHNucHJpbnRmKCBMb2dMYXN0TXNnICsg
TG4sIHNpemVvZiggTG9nTGFzdE1zZyApIC0gTG4sICI7IEVycm5vKCVkKTogJXMiLCBFcnJu
bywgRXJyU3QgKTsKRU5ELW9mLWlnbXBwcm94eS9maWxlcy9wYXRjaC1mYnNkCmVjaG8geCAt
IGlnbXBwcm94eS9maWxlcy9pZ21wcHJveHkKc2VkICdzL15YLy8nID5pZ21wcHJveHkvZmls
ZXMvaWdtcHByb3h5IDw8ICdFTkQtb2YtaWdtcHByb3h5L2ZpbGVzL2lnbXBwcm94eScKWCMh
L2Jpbi9zaApYIwpYIyAkRnJlZUJTRDogc3JjL2V0Yy9yYy5kL2xwZCx2IDEuOC40LjEgMjAw
OC8wMS8yOCAwNzo1ODozMSBkb3VnYiBFeHAgJApYIwpYClgjIFBST1ZJREU6IGlnbXBwcm94
eQpYIyBSRVFVSVJFOiBORVRXT1JLSU5HClgKWC4gL2V0Yy9yYy5zdWJyClgKWG5hbWU9Imln
bXBwcm94eSIKWHJjdmFyPWBzZXRfcmN2YXJgClhjb21tYW5kPSIvdXNyL2xvY2FsL3NiaW4v
JHtuYW1lfSIKWHJlcXVpcmVkX2ZpbGVzPSIvdXNyL2xvY2FsL2V0Yy9pZ21wcHJveHkuY29u
ZiIKWGlnbXBwcm94eV9lbmFibGU9JHtpZ21wcHJveHlfZW5hYmxlLSJOTyJ9ClgKWGxvYWRf
cmNfY29uZmlnICRuYW1lClhydW5fcmNfY29tbWFuZCAiJDEiCkVORC1vZi1pZ21wcHJveHkv
ZmlsZXMvaWdtcHByb3h5CmV4aXQKCg==
------------DD1D5D193AB3E2--
More information about the freebsd-ports-bugs
mailing list