fontconfig: Branch 'master'

[email protected] (GitLab Mirror) Wed, 7 Aug 2019 13:21:49 +0000 (UTC)
Newsgroups gmane.comp.fonts.fontconfig
Message-ID <[email protected]>
IHNyYy9mY2ZyZWV0eXBlLmMgfCAgIDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9mY25hbWUuYyAgICAgfCAgICA0ICstCiBzcmMv
ZmNwYXQuYyAgICAgIHwgICAyMCArKysrKysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCA1NyBp
bnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCk5ldyBjb21taXRzOgpjb21taXQgNTA1Yzdj
NDZhNTQ5NzU0YTNjNjg2MGU1MDhmMTNhZjVjZjQzNjllMApBdXRob3I6IEFraXJhIFRBR09IIDxh
a2lyYUB0YWdvaC5vcmc+CkRhdGU6ICAgV2VkIEF1ZyA3IDEyOjM5OjE0IDIwMTkgKzAwMDAKCiAg
ICBJbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBhIGJpdAogICAgCiAgICBUaGlzIGNoYW5nZSByZWR1
Y2VzIHRoZSBjYWxsIGNvc3Qgb2Ygc3RyY21wIDEuNSAlIGxlc3MuCgpkaWZmIC0tZ2l0IGEvc3Jj
L2ZjZnJlZXR5cGUuYyBiL3NyYy9mY2ZyZWV0eXBlLmMKaW5kZXggNjU2MzBjMy4uOTY5MWJhMyAx
MDA2NDQKLS0tIGEvc3JjL2ZjZnJlZXR5cGUuYworKysgYi9zcmMvZmNmcmVldHlwZS5jCkBAIC0x
MjkxLDE3ICsxMjkxLDE3IEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRf
RmFjZSAgZmFjZSwKIAlpbnQgaGFzX291dGxpbmUgPSAhIShmYWNlLT5mYWNlX2ZsYWdzICYgRlRf
RkFDRV9GTEFHX1NDQUxBQkxFKTsKIAlpbnQgaGFzX2NvbG9yID0gMDsKIAotCWlmICghRmNQYXR0
ZXJuQWRkQm9vbCAocGF0LCBGQ19PVVRMSU5FLCBoYXNfb3V0bGluZSkpCisJaWYgKCFGY1BhdHRl
cm5PYmplY3RBZGRCb29sIChwYXQsIEZDX09VVExJTkVfT0JKRUNULCBoYXNfb3V0bGluZSkpCiAJ
ICAgIGdvdG8gYmFpbDE7CiAKIAloYXNfY29sb3IgPSBGVF9IQVNfQ09MT1IgKGZhY2UpOwotCWlm
ICghRmNQYXR0ZXJuQWRkQm9vbCAocGF0LCBGQ19DT0xPUiwgaGFzX2NvbG9yKSkKKwlpZiAoIUZj
UGF0dGVybk9iamVjdEFkZEJvb2wgKHBhdCwgRkNfQ09MT1JfT0JKRUNULCBoYXNfY29sb3IpKQog
CSAgICBnb3RvIGJhaWwxOwogCiAJLyogQWxsIGNvbG9yIGZvbnRzIGFyZSBkZXNpZ25lZCB0byBi
ZSBzY2FsZWQsIGV2ZW4gaWYgdGhleSBvbmx5IGhhdmUKIAkgKiBiaXRtYXAgc3RyaWtlcy4gIENs
aWVudCBpcyByZXNwb25zaWJsZSB0byBzY2FsZSB0aGUgYml0bWFwcy4gIFRoaXMKIAkgKiBpcyBp
biBjb25zdHJhc3QgdG8gbm9uLWNvbG9yIHN0cmlrZXMuLi4gKi8KLQlpZiAoIUZjUGF0dGVybkFk
ZEJvb2wgKHBhdCwgRkNfU0NBTEFCTEUsIGhhc19vdXRsaW5lIHx8IGhhc19jb2xvcikpCisJaWYg
KCFGY1BhdHRlcm5PYmplY3RBZGRCb29sIChwYXQsIEZDX1NDQUxBQkxFX09CSkVDVCwgaGFzX291
dGxpbmUgfHwgaGFzX2NvbG9yKSkKIAkgICAgZ290byBiYWlsMTsKICAgICB9CiAKQEAgLTEzMjAs
NyArMTMyMCw3IEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRfRmFjZSAg
ZmFjZSwKIAkgICAgICBkb3VibGUgbWluX3ZhbHVlID0gbWFzdGVyLT5heGlzW2ldLm1pbmltdW0g
LyAoZG91YmxlKSAoMVUgPDwgMTYpOwogCSAgICAgIGRvdWJsZSBkZWZfdmFsdWUgPSBtYXN0ZXIt
PmF4aXNbaV0uZGVmIC8gKGRvdWJsZSkgKDFVIDw8IDE2KTsKIAkgICAgICBkb3VibGUgbWF4X3Zh
bHVlID0gbWFzdGVyLT5heGlzW2ldLm1heGltdW0gLyAoZG91YmxlKSAoMVUgPDwgMTYpOwotCSAg
ICAgIGNvbnN0IGNoYXIgKmVsdCA9IE5VTEw7CisJICAgICAgRmNPYmplY3Qgb2JqID0gRkNfSU5W
QUxJRF9PQkpFQ1Q7CiAKIAkgICAgICBpZiAobWluX3ZhbHVlID4gZGVmX3ZhbHVlIHx8IGRlZl92
YWx1ZSA+IG1heF92YWx1ZSB8fCBtaW5fdmFsdWUgPT0gbWF4X3ZhbHVlKQogCQkgIGNvbnRpbnVl
OwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgRmNGcmVlVHlwZVF1ZXJ5RmFjZUludGVybmFsIChjb25z
dCBGVF9GYWNlICBmYWNlLAogCSAgICAgIHN3aXRjaCAobWFzdGVyLT5heGlzW2ldLnRhZykKIAkg
ICAgICB7CiAJCWNhc2UgRlRfTUFLRV9UQUcgKCd3JywnZycsJ2gnLCd0Jyk6Ci0JCSAgZWx0ID0g
RkNfV0VJR0hUOworCQkgIG9iaiA9IEZDX1dFSUdIVF9PQkpFQ1Q7CiAJCSAgbWluX3ZhbHVlID0g
RmNXZWlnaHRGcm9tT3BlblR5cGVEb3VibGUgKG1pbl92YWx1ZSk7CiAJCSAgbWF4X3ZhbHVlID0g
RmNXZWlnaHRGcm9tT3BlblR5cGVEb3VibGUgKG1heF92YWx1ZSk7CiAJCSAgdmFyaWFibGVfd2Vp
Z2h0ID0gRmNUcnVlOwpAQCAtMTMzNiwyMyArMTMzNiwyMyBAQCBGY0ZyZWVUeXBlUXVlcnlGYWNl
SW50ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAJCSAgYnJlYWs7CiAKIAkJY2FzZSBGVF9N
QUtFX1RBRyAoJ3cnLCdkJywndCcsJ2gnKToKLQkJICBlbHQgPSBGQ19XSURUSDsKKwkJICBvYmog
PSBGQ19XSURUSF9PQkpFQ1Q7CiAJCSAgLyogVmFsdWVzIGluICd3ZHRoJyBtYXRjaCBGb250Y29u
ZmlnIEZDX1dJRFRIXyogc2NoZW1lIGRpcmVjdGx5LiAqLwogCQkgIHZhcmlhYmxlX3dpZHRoID0g
RmNUcnVlOwogCQkgIHdpZHRoID0gMDsgLyogVG8gc3RvcCBsb29raW5nIGZvciB3aWR0aC4gKi8K
IAkJICBicmVhazsKIAogCQljYXNlIEZUX01BS0VfVEFHICgnbycsJ3AnLCdzJywneicpOgotCQkg
IGVsdCA9IEZDX1NJWkU7CisJCSAgb2JqID0gRkNfU0laRV9PQkpFQ1Q7CiAJCSAgLyogVmFsdWVz
IGluICdvcHN6JyBtYXRjaCBGb250Y29uZmlnIEZDX1NJWkUsIGJvdGggYXJlIGluIHBvaW50cy4g
Ki8KIAkJICB2YXJpYWJsZV9zaXplID0gRmNUcnVlOwogCQkgIGJyZWFrOwogCSAgICAgIH0KIAot
CSAgICAgIGlmIChlbHQpCisJICAgICAgaWYgKG9iaiAhPSBGQ19JTlZBTElEX09CSkVDVCkKIAkg
ICAgICB7CiAJCSAgRmNSYW5nZSAqciA9IEZjUmFuZ2VDcmVhdGVEb3VibGUgKG1pbl92YWx1ZSwg
bWF4X3ZhbHVlKTsKLQkJICBpZiAoIUZjUGF0dGVybkFkZFJhbmdlIChwYXQsIGVsdCwgcikpCisJ
CSAgaWYgKCFGY1BhdHRlcm5PYmplY3RBZGRSYW5nZSAocGF0LCBvYmosIHIpKQogCQkgIHsKIAkJ
ICAgICAgRmNSYW5nZURlc3Ryb3kgKHIpOwogCQkgICAgICBnb3RvIGJhaWwxOwpAQCAtMTM5MSw3
ICsxMzkxLDcgQEAgRmNGcmVlVHlwZVF1ZXJ5RmFjZUludGVybmFsIChjb25zdCBGVF9GYWNlICBm
YWNlLAogCQkgIGJyZWFrOwogCiAJCWNhc2UgRlRfTUFLRV9UQUcgKCdvJywncCcsJ3MnLCd6Jyk6
Ci0JCSAgaWYgKCFGY1BhdHRlcm5BZGREb3VibGUgKHBhdCwgRkNfU0laRSwgdmFsdWUpKQorCQkg
IGlmICghRmNQYXR0ZXJuT2JqZWN0QWRkRG91YmxlIChwYXQsIEZDX1NJWkVfT0JKRUNULCB2YWx1
ZSkpCiAJCSAgICAgIGdvdG8gYmFpbDE7CiAJCSAgYnJlYWs7CiAJICAgIH0KQEAgLTE0MDAsNyAr
MTQwMCw3IEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRfRmFjZSAgZmFj
ZSwKICAgICAgICAgZWxzZQogCSAgICBnb3RvIGJhaWwxOwogICAgIH0KLSAgICBpZiAoIUZjUGF0
dGVybkFkZEJvb2wgKHBhdCwgRkNfVkFSSUFCTEUsIHZhcmlhYmxlKSkKKyAgICBpZiAoIUZjUGF0
dGVybk9iamVjdEFkZEJvb2wgKHBhdCwgRkNfVkFSSUFCTEVfT0JKRUNULCB2YXJpYWJsZSkpCiAJ
Z290byBiYWlsMTsKIAogICAgIC8qCkBAIC0xNjMxLDkgKzE2MzEsOSBAQCBGY0ZyZWVUeXBlUXVl
cnlGYWNlSW50ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAgICAgewogCWlmIChGY0RlYnVn
ICgpICYgRkNfREJHX1NDQU5WKQogCSAgICBwcmludGYgKCJ1c2luZyBGcmVlVHlwZSBmYW1pbHkg
XCIlc1wiXG4iLCBmYWNlLT5mYW1pbHlfbmFtZSk7Ci0JaWYgKCFGY1BhdHRlcm5BZGRTdHJpbmcg
KHBhdCwgRkNfRkFNSUxZLCAoRmNDaGFyOCAqKSBmYWNlLT5mYW1pbHlfbmFtZSkpCisJaWYgKCFG
Y1BhdHRlcm5PYmplY3RBZGRTdHJpbmcgKHBhdCwgRkNfRkFNSUxZX09CSkVDVCwgKEZjQ2hhcjgg
KikgZmFjZS0+ZmFtaWx5X25hbWUpKQogCSAgICBnb3RvIGJhaWwxOwotCWlmICghRmNQYXR0ZXJu
QWRkU3RyaW5nIChwYXQsIEZDX0ZBTUlMWUxBTkcsIChGY0NoYXI4ICopICJlbiIpKQorCWlmICgh
RmNQYXR0ZXJuT2JqZWN0QWRkU3RyaW5nIChwYXQsIEZDX0ZBTUlMWUxBTkdfT0JKRUNULCAoRmND
aGFyOCAqKSAiZW4iKSkKIAkgICAgZ290byBiYWlsMTsKIAkrK25mYW1pbHk7CiAgICAgfQpAQCAt
MTY0NCw5ICsxNjQ0LDkgQEAgRmNGcmVlVHlwZVF1ZXJ5RmFjZUludGVybmFsIChjb25zdCBGVF9G
YWNlICBmYWNlLAogCWlmIChGY0RlYnVnICgpICYgRkNfREJHX1NDQU5WKQogCSAgICBwcmludGYg
KCJ1c2luZyBGcmVlVHlwZSBzdHlsZSBcIiVzXCJcbiIsIGZhY2UtPnN0eWxlX25hbWUpOwogCi0J
aWYgKCFGY1BhdHRlcm5BZGRTdHJpbmcgKHBhdCwgRkNfU1RZTEUsIChGY0NoYXI4ICopIGZhY2Ut
PnN0eWxlX25hbWUpKQorCWlmICghRmNQYXR0ZXJuT2JqZWN0QWRkU3RyaW5nIChwYXQsIEZDX1NU
WUxFX09CSkVDVCwgKEZjQ2hhcjggKikgZmFjZS0+c3R5bGVfbmFtZSkpCiAJICAgIGdvdG8gYmFp
bDE7Ci0JaWYgKCFGY1BhdHRlcm5BZGRTdHJpbmcgKHBhdCwgRkNfU1RZTEVMQU5HLCAoRmNDaGFy
OCAqKSAiZW4iKSkKKwlpZiAoIUZjUGF0dGVybk9iamVjdEFkZFN0cmluZyAocGF0LCBGQ19TVFlM
RUxBTkdfT0JKRUNULCAoRmNDaGFyOCAqKSAiZW4iKSkKIAkgICAgZ290byBiYWlsMTsKIAkrK25z
dHlsZTsKICAgICB9CkBAIC0xNjcwLDcgKzE2NzAsNyBAQCBGY0ZyZWVUeXBlUXVlcnlGYWNlSW50
ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAJZmFtaWx5W2VuZCAtIHN0YXJ0XSA9ICdcMCc7
CiAJaWYgKEZjRGVidWcgKCkgJiBGQ19EQkdfU0NBTlYpCiAJICAgIHByaW50ZiAoInVzaW5nIGZp
bGVuYW1lIGZvciBmYW1pbHkgJXNcbiIsIGZhbWlseSk7Ci0JaWYgKCFGY1BhdHRlcm5BZGRTdHJp
bmcgKHBhdCwgRkNfRkFNSUxZLCBmYW1pbHkpKQorCWlmICghRmNQYXR0ZXJuT2JqZWN0QWRkU3Ry
aW5nIChwYXQsIEZDX0ZBTUlMWV9PQkpFQ1QsIGZhbWlseSkpCiAJewogCSAgICBmcmVlIChmYW1p
bHkpOwogCSAgICBnb3RvIGJhaWwxOwpAQCAtMTcyOCwxNCArMTcyOCwxNCBAQCBGY0ZyZWVUeXBl
UXVlcnlGYWNlSW50ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAJICAgIHN0cm5jcHkgKHBz
bmFtZSwgdG1wLCAyNTUpOwogCSAgICBwc25hbWVbMjU1XSA9IDA7CiAJfQotCWlmICghRmNQYXR0
ZXJuQWRkU3RyaW5nIChwYXQsIEZDX1BPU1RTQ1JJUFRfTkFNRSwgKGNvbnN0IEZjQ2hhcjggKilw
c25hbWUpKQorCWlmICghRmNQYXR0ZXJuT2JqZWN0QWRkU3RyaW5nIChwYXQsIEZDX1BPU1RTQ1JJ
UFRfTkFNRV9PQkpFQ1QsIChjb25zdCBGY0NoYXI4ICopcHNuYW1lKSkKIAkgICAgZ290byBiYWls
MTsKICAgICB9CiAKLSAgICBpZiAoZmlsZSAmJiAqZmlsZSAmJiAhRmNQYXR0ZXJuQWRkU3RyaW5n
IChwYXQsIEZDX0ZJTEUsIGZpbGUpKQorICAgIGlmIChmaWxlICYmICpmaWxlICYmICFGY1BhdHRl
cm5PYmplY3RBZGRTdHJpbmcgKHBhdCwgRkNfRklMRV9PQkpFQ1QsIGZpbGUpKQogCWdvdG8gYmFp
bDE7CiAKLSAgICBpZiAoIUZjUGF0dGVybkFkZEludGVnZXIgKHBhdCwgRkNfSU5ERVgsIGlkKSkK
KyAgICBpZiAoIUZjUGF0dGVybk9iamVjdEFkZEludGVnZXIgKHBhdCwgRkNfSU5ERVhfT0JKRUNU
LCBpZCkpCiAJZ290byBiYWlsMTsKIAogI2lmIDAKQEAgLTE3NDUsNyArMTc0NSw3IEBAIEZjRnJl
ZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRfRmFjZSAgZmFjZSwKICAgICAgKiB0aGUg
YXR0cmlidXRlLiAgU2lnaC4KICAgICAgKi8KICAgICBpZiAoKGZhY2UtPmZhY2VfZmxhZ3MgJiBG
VF9GQUNFX0ZMQUdfRklYRURfV0lEVEgpICE9IDApCi0JaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2Vy
IChwYXQsIEZDX1NQQUNJTkcsIEZDX01PTk8pKQorCWlmICghRmNQYXR0ZXJuT2JqZWN0QWRkSW50
ZWdlciAocGF0LCBGQ19TUEFDSU5HX09CSkVDVCwgRkNfTU9OTykpCiAJICAgIGdvdG8gYmFpbDE7
CiAjZW5kaWYKIApAQCAtMTc1NSwxMiArMTc1NSwxMiBAQCBGY0ZyZWVUeXBlUXVlcnlGYWNlSW50
ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAgICAgaGVhZCA9IChUVF9IZWFkZXIgKikgRlRf
R2V0X1NmbnRfVGFibGUgKGZhY2UsIGZ0X3NmbnRfaGVhZCk7CiAgICAgaWYgKGhlYWQpCiAgICAg
ewotCWlmICghRmNQYXR0ZXJuQWRkSW50ZWdlciAocGF0LCBGQ19GT05UVkVSU0lPTiwgaGVhZC0+
Rm9udF9SZXZpc2lvbikpCisJaWYgKCFGY1BhdHRlcm5PYmplY3RBZGRJbnRlZ2VyIChwYXQsIEZD
X0ZPTlRWRVJTSU9OX09CSkVDVCwgaGVhZC0+Rm9udF9SZXZpc2lvbikpCiAJICAgIGdvdG8gYmFp
bDE7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0JaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyIChw
YXQsIEZDX0ZPTlRWRVJTSU9OLCAwKSkKKwlpZiAoIUZjUGF0dGVybk9iamVjdEFkZEludGVnZXIg
KHBhdCwgRkNfRk9OVFZFUlNJT05fT0JKRUNULCAwKSkKIAkgICAgZ290byBiYWlsMTsKICAgICB9
CiAKQEAgLTE4MjQsNyArMTgyNCw3IEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29u
c3QgRlRfRmFjZSAgZmFjZSwKICAgICB9CiAgICAgaWYgKG9zMiAmJiAoY29tcGxleF8gPSBGY0Zv
bnRDYXBhYmlsaXRpZXMoZmFjZSkpKQogICAgIHsKLQlpZiAoIUZjUGF0dGVybkFkZFN0cmluZyAo
cGF0LCBGQ19DQVBBQklMSVRZLCBjb21wbGV4XykpCisJaWYgKCFGY1BhdHRlcm5PYmplY3RBZGRT
dHJpbmcgKHBhdCwgRkNfQ0FQQUJJTElUWV9PQkpFQ1QsIGNvbXBsZXhfKSkKIAl7CiAJICAgIGZy
ZWUgKGNvbXBsZXhfKTsKIAkgICAgZ290byBiYWlsMTsKQEAgLTE4MzIsNyArMTgzMiw3IEBAIEZj
RnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRfRmFjZSAgZmFjZSwKIAlmcmVlIChj
b21wbGV4Xyk7CiAgICAgfQogCi0gICAgaWYgKCFGY1BhdHRlcm5BZGRCb29sIChwYXQsIEZDX0ZP
TlRfSEFTX0hJTlQsIEZjRm9udEhhc0hpbnQgKGZhY2UpKSkKKyAgICBpZiAoIUZjUGF0dGVybk9i
amVjdEFkZEJvb2wgKHBhdCwgRkNfRk9OVF9IQVNfSElOVF9PQkpFQ1QsIEZjRm9udEhhc0hpbnQg
KGZhY2UpKSkKIAlnb3RvIGJhaWwxOwogCiAgICAgaWYgKCF2YXJpYWJsZV9zaXplICYmIG9zMiAm
JiBvczItPnZlcnNpb24gPj0gMHgwMDA1ICYmIG9zMi0+dmVyc2lvbiAhPSAweGZmZmYpCkBAIC0x
ODQ2LDEzICsxODQ2LDEzIEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRf
RmFjZSAgZmFjZSwKIAogCWlmIChsb3dlcl9zaXplID09IHVwcGVyX3NpemUpCiAJewotCSAgICBp
ZiAoIUZjUGF0dGVybkFkZERvdWJsZSAocGF0LCBGQ19TSVpFLCBsb3dlcl9zaXplKSkKKwkgICAg
aWYgKCFGY1BhdHRlcm5PYmplY3RBZGREb3VibGUgKHBhdCwgRkNfU0laRV9PQkpFQ1QsIGxvd2Vy
X3NpemUpKQogCQlnb3RvIGJhaWwxOwogCX0KIAllbHNlCiAJewogCSAgICByID0gRmNSYW5nZUNy
ZWF0ZURvdWJsZSAobG93ZXJfc2l6ZSwgdXBwZXJfc2l6ZSk7Ci0JICAgIGlmICghRmNQYXR0ZXJu
QWRkUmFuZ2UgKHBhdCwgRkNfU0laRSwgcikpCisJICAgIGlmICghRmNQYXR0ZXJuT2JqZWN0QWRk
UmFuZ2UgKHBhdCwgRkNfU0laRV9PQkpFQ1QsIHIpKQogCSAgICB7CiAJCUZjUmFuZ2VEZXN0cm95
IChyKTsKIAkJZ290byBiYWlsMTsKQEAgLTE5OTYsMTkgKzE5OTYsMTkgQEAgRmNGcmVlVHlwZVF1
ZXJ5RmFjZUludGVybmFsIChjb25zdCBGVF9GYWNlICBmYWNlLAogICAgIGlmIChmb3VuZHJ5ID09
IDApCiAJZm91bmRyeSA9IChGY0NoYXI4ICopICJ1bmtub3duIjsKIAotICAgIGlmICghRmNQYXR0
ZXJuQWRkSW50ZWdlciAocGF0LCBGQ19TTEFOVCwgc2xhbnQpKQorICAgIGlmICghRmNQYXR0ZXJu
T2JqZWN0QWRkSW50ZWdlciAocGF0LCBGQ19TTEFOVF9PQkpFQ1QsIHNsYW50KSkKIAlnb3RvIGJh
aWwxOwogCi0gICAgaWYgKCF2YXJpYWJsZV93ZWlnaHQgJiYgIUZjUGF0dGVybkFkZERvdWJsZSAo
cGF0LCBGQ19XRUlHSFQsIHdlaWdodCkpCisgICAgaWYgKCF2YXJpYWJsZV93ZWlnaHQgJiYgIUZj
UGF0dGVybk9iamVjdEFkZERvdWJsZSAocGF0LCBGQ19XRUlHSFRfT0JKRUNULCB3ZWlnaHQpKQog
CWdvdG8gYmFpbDE7CiAKLSAgICBpZiAoIXZhcmlhYmxlX3dpZHRoICYmICFGY1BhdHRlcm5BZGRE
b3VibGUgKHBhdCwgRkNfV0lEVEgsIHdpZHRoKSkKKyAgICBpZiAoIXZhcmlhYmxlX3dpZHRoICYm
ICFGY1BhdHRlcm5PYmplY3RBZGREb3VibGUgKHBhdCwgRkNfV0lEVEhfT0JKRUNULCB3aWR0aCkp
CiAJZ290byBiYWlsMTsKIAotICAgIGlmICghRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXQsIEZDX0ZP
VU5EUlksIGZvdW5kcnkpKQorICAgIGlmICghRmNQYXR0ZXJuT2JqZWN0QWRkU3RyaW5nIChwYXQs
IEZDX0ZPVU5EUllfT0JKRUNULCBmb3VuZHJ5KSkKIAlnb3RvIGJhaWwxOwogCi0gICAgaWYgKCFG
Y1BhdHRlcm5BZGRCb29sIChwYXQsIEZDX0RFQ09SQVRJVkUsIGRlY29yYXRpdmUpKQorICAgIGlm
ICghRmNQYXR0ZXJuT2JqZWN0QWRkQm9vbCAocGF0LCBGQ19ERUNPUkFUSVZFX09CSkVDVCwgZGVj
b3JhdGl2ZSkpCiAJZ290byBiYWlsMTsKIAogCkBAIC0yMDI4LDcgKzIwMjgsNyBAQCBGY0ZyZWVU
eXBlUXVlcnlGYWNlSW50ZXJuYWwgKGNvbnN0IEZUX0ZhY2UgIGZhY2UsCiAKICAgICAvKiBUaGUg
RmNGcmVlVHlwZUNoYXJTZXQoKSBjaG9zZSB0aGUgZW5jb2Rpbmc7IHRlc3QgaXQgZm9yIHN5bWJv
bC4gKi8KICAgICBzeW1ib2wgPSBmYWNlLT5jaGFybWFwICYmIGZhY2UtPmNoYXJtYXAtPmVuY29k
aW5nID09IEZUX0VOQ09ESU5HX01TX1NZTUJPTDsKLSAgICBpZiAoIUZjUGF0dGVybkFkZEJvb2wg
KHBhdCwgRkNfU1lNQk9MLCBzeW1ib2wpKQorICAgIGlmICghRmNQYXR0ZXJuT2JqZWN0QWRkQm9v
bCAocGF0LCBGQ19TWU1CT0xfT0JKRUNULCBzeW1ib2wpKQogCWdvdG8gYmFpbDE7CiAKICAgICBz
cGFjaW5nID0gRmNGcmVlVHlwZVNwYWNpbmcgKGZhY2UpOwpAQCAtMjA2MSw3ICsyMDYxLDcgQEAg
RmNGcmVlVHlwZVF1ZXJ5RmFjZUludGVybmFsIChjb25zdCBGVF9GYWNlICBmYWNlLAogI2VuZGlm
CiAgICAgfQogCi0gICAgaWYgKCFGY1BhdHRlcm5BZGRDaGFyU2V0IChwYXQsIEZDX0NIQVJTRVQs
IGNzKSkKKyAgICBpZiAoIUZjUGF0dGVybk9iamVjdEFkZENoYXJTZXQgKHBhdCwgRkNfQ0hBUlNF
VF9PQkpFQ1QsIGNzKSkKIAlnb3RvIGJhaWwyOwogCiAgICAgaWYgKCFzeW1ib2wpCkBAIC0yMDg0
LDcgKzIwODQsNyBAQCBGY0ZyZWVUeXBlUXVlcnlGYWNlSW50ZXJuYWwgKGNvbnN0IEZUX0ZhY2Ug
IGZhY2UsCiAJbHMgPSBGY0xhbmdTZXRDcmVhdGUgKCk7CiAgICAgfQogCi0gICAgaWYgKCFGY1Bh
dHRlcm5BZGRMYW5nU2V0IChwYXQsIEZDX0xBTkcsIGxzKSkKKyAgICBpZiAoIUZjUGF0dGVybk9i
amVjdEFkZExhbmdTZXQgKHBhdCwgRkNfTEFOR19PQkpFQ1QsIGxzKSkKICAgICB7CiAJRmNMYW5n
U2V0RGVzdHJveSAobHMpOwogCWdvdG8gYmFpbDI7CkBAIC0yMDkzLDE3ICsyMDkzLDE3IEBAIEZj
RnJlZVR5cGVRdWVyeUZhY2VJbnRlcm5hbCAoY29uc3QgRlRfRmFjZSAgZmFjZSwKICAgICBGY0xh
bmdTZXREZXN0cm95IChscyk7CiAKICAgICBpZiAoc3BhY2luZyAhPSBGQ19QUk9QT1JUSU9OQUwp
Ci0JaWYgKCFGY1BhdHRlcm5BZGRJbnRlZ2VyIChwYXQsIEZDX1NQQUNJTkcsIHNwYWNpbmcpKQor
CWlmICghRmNQYXR0ZXJuT2JqZWN0QWRkSW50ZWdlciAocGF0LCBGQ19TUEFDSU5HX09CSkVDVCwg
c3BhY2luZykpCiAJICAgIGdvdG8gYmFpbDI7CiAKICAgICBpZiAoIShmYWNlLT5mYWNlX2ZsYWdz
ICYgRlRfRkFDRV9GTEFHX1NDQUxBQkxFKSkKICAgICB7CiAJaW50IGk7CiAJZm9yIChpID0gMDsg
aSA8IGZhY2UtPm51bV9maXhlZF9zaXplczsgaSsrKQotCSAgICBpZiAoIUZjUGF0dGVybkFkZERv
dWJsZSAocGF0LCBGQ19QSVhFTF9TSVpFLAotCQkJCSAgICAgRmNHZXRQaXhlbFNpemUgKGZhY2Us
IGkpKSkKKwkgICAgaWYgKCFGY1BhdHRlcm5PYmplY3RBZGREb3VibGUgKHBhdCwgRkNfUElYRUxf
U0laRV9PQkpFQ1QsCisJCQkJCSAgIEZjR2V0UGl4ZWxTaXplIChmYWNlLCBpKSkpCiAJCWdvdG8g
YmFpbDI7Ci0JaWYgKCFGY1BhdHRlcm5BZGRCb29sIChwYXQsIEZDX0FOVElBTElBUywgRmNGYWxz
ZSkpCisJaWYgKCFGY1BhdHRlcm5PYmplY3RBZGRCb29sIChwYXQsIEZDX0FOVElBTElBU19PQkpF
Q1QsIEZjRmFsc2UpKQogCSAgICBnb3RvIGJhaWwyOwogICAgIH0KICNpZiBIQVZFX0ZUX0dFVF9Y
MTFfRk9OVF9GT1JNQVQKQEAgLTIxMTQsNyArMjExNCw3IEBAIEZjRnJlZVR5cGVRdWVyeUZhY2VJ
bnRlcm5hbCAoY29uc3QgRlRfRmFjZSAgZmFjZSwKICAgICB7CiAJY29uc3QgY2hhciAqZm9udF9m
b3JtYXQgPSBGVF9HZXRfWDExX0ZvbnRfRm9ybWF0IChmYWNlKTsKIAlpZiAoZm9udF9mb3JtYXQp
Ci0JICAgIGlmICghRmNQYXR0ZXJuQWRkU3RyaW5nIChwYXQsIEZDX0ZPTlRGT1JNQVQsIChGY0No
YXI4ICopIGZvbnRfZm9ybWF0KSkKKwkgICAgaWYgKCFGY1BhdHRlcm5PYmplY3RBZGRTdHJpbmcg
KHBhdCwgRkNfRk9OVEZPUk1BVF9PQkpFQ1QsIChGY0NoYXI4ICopIGZvbnRfZm9ybWF0KSkKIAkJ
Z290byBiYWlsMjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9mY25hbWUuYyBiL3Ny
Yy9mY25hbWUuYwppbmRleCAwNDFkNmQ2Li4zNTY3NjU2IDEwMDY0NAotLS0gYS9zcmMvZmNuYW1l
LmMKKysrIGIvc3JjL2ZjbmFtZS5jCkBAIC00NDUsNyArNDQ1LDcgQEAgRmNOYW1lUGFyc2UgKGNv
bnN0IEZjQ2hhcjggKm5hbWUpCiAJbmFtZSA9IEZjTmFtZUZpbmROZXh0IChuYW1lLCAiLSw6Iiwg
c2F2ZSwgJmRlbGltKTsKIAlpZiAoc2F2ZVswXSkKIAl7Ci0JICAgIGlmICghRmNQYXR0ZXJuQWRk
U3RyaW5nIChwYXQsIEZDX0ZBTUlMWSwgc2F2ZSkpCisJICAgIGlmICghRmNQYXR0ZXJuT2JqZWN0
QWRkU3RyaW5nIChwYXQsIEZDX0ZBTUlMWV9PQkpFQ1QsIHNhdmUpKQogCQlnb3RvIGJhaWwyOwog
CX0KIAlpZiAoZGVsaW0gIT0gJywnKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIEZjTmFtZVBhcnNlIChj
b25zdCBGY0NoYXI4ICpuYW1lKQogCSAgICBkID0gc3RydG9kICgoY2hhciAqKSBzYXZlLCAoY2hh
ciAqKikgJmUpOwogCSAgICBpZiAoZSAhPSBzYXZlKQogCSAgICB7Ci0JCWlmICghRmNQYXR0ZXJu
QWRkRG91YmxlIChwYXQsIEZDX1NJWkUsIGQpKQorCQlpZiAoIUZjUGF0dGVybk9iamVjdEFkZERv
dWJsZSAocGF0LCBGQ19TSVpFX09CSkVDVCwgZCkpCiAJCSAgICBnb3RvIGJhaWwyOwogCSAgICB9
CiAJICAgIGlmIChkZWxpbSAhPSAnLCcpCmRpZmYgLS1naXQgYS9zcmMvZmNwYXQuYyBiL3NyYy9m
Y3BhdC5jCmluZGV4IDA4NjFiOGYuLjJiMWE4MDggMTAwNjQ0Ci0tLSBhL3NyYy9mY3BhdC5jCisr
KyBiL3NyYy9mY3BhdC5jCkBAIC05MTQsMTMgKzkxNCwxOSBAQCBGY1BhdHRlcm5BZGRCb29sIChG
Y1BhdHRlcm4gKnAsIGNvbnN0IGNoYXIgKm9iamVjdCwgRmNCb29sIGIpCiB9CiAKIEZjQm9vbAot
RmNQYXR0ZXJuQWRkQ2hhclNldCAoRmNQYXR0ZXJuICpwLCBjb25zdCBjaGFyICpvYmplY3QsIGNv
bnN0IEZjQ2hhclNldCAqYykKK0ZjUGF0dGVybk9iamVjdEFkZENoYXJTZXQgKEZjUGF0dGVybiAq
cCwgRmNPYmplY3Qgb2JqZWN0LCBjb25zdCBGY0NoYXJTZXQgKmMpCiB7CiAgICAgRmNWYWx1ZQl2
OwogCiAgICAgdi50eXBlID0gRmNUeXBlQ2hhclNldDsKICAgICB2LnUuYyA9IChGY0NoYXJTZXQg
KiljOwotICAgIHJldHVybiBGY1BhdHRlcm5BZGQgKHAsIG9iamVjdCwgdiwgRmNUcnVlKTsKKyAg
ICByZXR1cm4gRmNQYXR0ZXJuT2JqZWN0QWRkIChwLCBvYmplY3QsIHYsIEZjVHJ1ZSk7Cit9CisK
K0ZjQm9vbAorRmNQYXR0ZXJuQWRkQ2hhclNldCAoRmNQYXR0ZXJuICpwLCBjb25zdCBjaGFyICpv
YmplY3QsIGNvbnN0IEZjQ2hhclNldCAqYykKK3sKKyAgICByZXR1cm4gRmNQYXR0ZXJuT2JqZWN0
QWRkQ2hhclNldCAocCwgRmNPYmplY3RGcm9tTmFtZSAob2JqZWN0KSwgYyk7CiB9CiAKIEZjQm9v
bApAQCAtOTM0LDEzICs5NDAsMTkgQEAgRmNQYXR0ZXJuQWRkRlRGYWNlIChGY1BhdHRlcm4gKnAs
IGNvbnN0IGNoYXIgKm9iamVjdCwgY29uc3QgRlRfRmFjZSBmKQogfQogCiBGY0Jvb2wKLUZjUGF0
dGVybkFkZExhbmdTZXQgKEZjUGF0dGVybiAqcCwgY29uc3QgY2hhciAqb2JqZWN0LCBjb25zdCBG
Y0xhbmdTZXQgKmxzKQorRmNQYXR0ZXJuT2JqZWN0QWRkTGFuZ1NldCAoRmNQYXR0ZXJuICpwLCBG
Y09iamVjdCBvYmplY3QsIGNvbnN0IEZjTGFuZ1NldCAqbHMpCiB7CiAgICAgRmNWYWx1ZQl2Owog
CiAgICAgdi50eXBlID0gRmNUeXBlTGFuZ1NldDsKICAgICB2LnUubCA9IChGY0xhbmdTZXQgKils
czsKLSAgICByZXR1cm4gRmNQYXR0ZXJuQWRkIChwLCBvYmplY3QsIHYsIEZjVHJ1ZSk7CisgICAg
cmV0dXJuIEZjUGF0dGVybk9iamVjdEFkZCAocCwgb2JqZWN0LCB2LCBGY1RydWUpOworfQorCitG
Y0Jvb2wKK0ZjUGF0dGVybkFkZExhbmdTZXQgKEZjUGF0dGVybiAqcCwgY29uc3QgY2hhciAqb2Jq
ZWN0LCBjb25zdCBGY0xhbmdTZXQgKmxzKQoreworICAgIHJldHVybiBGY1BhdHRlcm5PYmplY3RB
ZGRMYW5nU2V0IChwLCBGY09iamVjdEZyb21OYW1lIChvYmplY3QpLCBscyk7CiB9CiAKIEZjQm9v
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGb250Y29u
ZmlnIG1haWxpbmcgbGlzdApGb250Y29uZmlnQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov
L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZvbnRjb25maWc=