<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>6923</bug_id>
          
          <creation_ts>2006-01-29 17:38:58 -0800</creation_ts>
          <short_desc>remove more of KWQ, including the screen functions from QDesktopWidget</short_desc>
          <delta_ts>2006-01-29 22:07:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>30567</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-29 17:38:58 -0800</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30568</commentid>
    <comment_count>1</comment_count>
      <attachid>6088</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-29 17:39:26 -0800</bug_when>
    <thetext>Created attachment 6088
patch that removes a lot of KWQ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30573</commentid>
    <comment_count>2</comment_count>
      <attachid>6088</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-29 18:14:36 -0800</bug_when>
    <thetext>Comment on attachment 6088
patch that removes a lot of KWQ

r=me

Please consider using ASSERT() instead of assert() though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6088</attachid>
            <date>2006-01-29 17:39:26 -0800</date>
            <delta_ts>2006-01-29 18:14:36 -0800</delta_ts>
            <desc>patch that removes a lot of KWQ</desc>
            <filename>SmackKWQPatch.txt</filename>
            <type>text/plain</type>
            <size>84632</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2todG1sX2V2ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwva2h0bWxf
ZXZlbnRzLmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBraHRtbC9raHRtbF9ldmVudHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwyMCArMjUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50UHJpdmF0ZQotewotfTsKLQotTW91c2VFdmVu
dDo6TW91c2VFdmVudCggY29uc3QgY2hhciAqbmFtZSwgUU1vdXNlRXZlbnQgKnFtb3VzZUV2ZW50
LCBpbnQgeCwgaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE9N
OjpET01TdHJpbmcgJnVybCwgY29uc3QgRE9NOjpET01TdHJpbmcmIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW1wbCAqaW5uZXJOb2RlICkKLTogS1BhcnRzOjpF
dmVudCggbmFtZSApLCBtX3Ftb3VzZUV2ZW50KCBxbW91c2VFdmVudCApLCBtX3goIHggKSwgbV95
KCB5ICksCitNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KFFNb3VzZUV2ZW50ICpxbW91c2VFdmVudCwg
aW50IHgsIGludCB5LCBjb25zdCBET006OkRPTVN0cmluZyAmdXJsLCBjb25zdCBET006OkRPTVN0
cmluZyYgdGFyZ2V0LCBOb2RlSW1wbCAqaW5uZXJOb2RlICkKKzogbV9xbW91c2VFdmVudCggcW1v
dXNlRXZlbnQgKSwgbV94KCB4ICksIG1feSggeSApLAogICBtX3VybCggdXJsICksIG1fdGFyZ2V0
KHRhcmdldCksIG1faW5uZXJOb2RlKCBpbm5lck5vZGUgKQogewotICBkID0gMDsKICAgaWYgKGlu
bmVyTm9kZSAmJiBpbm5lck5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgIC8vIEZJWE1FOiBGb3Ig
dGV4dCBub2RlcywgZm9yIG5vdywgd2UgZ2V0IHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBmcm9tCi0g
ICAgICAvLyB0aGUgcGFyZW50LgorICAgICAgLy8gRklYTUU6IEZvciB0ZXh0IG5vZGVzLCBmb3Ig
bm93LCB3ZSBnZXQgdGhlIGFic29sdXRlIHBvc2l0aW9uIGZyb20gdGhlIHBhcmVudC4KICAgICAg
IE5vZGVJbXBsICpuID0gaW5uZXJOb2RlOwogICAgICAgaWYgKG4tPmlzVGV4dE5vZGUoKSkKICAg
ICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTQ2LDExICszOCw2IEBACiAgIH0KIH0KIAot
TW91c2VFdmVudDo6fk1vdXNlRXZlbnQoKQotewotICBkZWxldGUgZDsKLX0KLQogaW50IE1vdXNl
RXZlbnQ6Om9mZnNldCgpIGNvbnN0CiB7CiAgICAgUG9zaXRpb24gcG9zOwpAQCAtNjQsMjYgKzUx
LDEwIEBACiAgICAgcmV0dXJuIHBvcy5vZmZzZXQoKTsKIH0KIAotY29uc3QgY2hhciAqTW91c2VQ
cmVzc0V2ZW50OjpzX3N0ck1vdXNlUHJlc3NFdmVudCA9ICJraHRtbC9FdmVudHMvTW91c2VQcmVz
c0V2ZW50IjsKLWNvbnN0IGNoYXIgKk1vdXNlRG91YmxlQ2xpY2tFdmVudDo6c19zdHJNb3VzZURv
dWJsZUNsaWNrRXZlbnQgPSAia2h0bWwvRXZlbnRzL01vdXNlRG91YmxlQ2xpY2tFdmVudCI7Ci1j
b25zdCBjaGFyICpNb3VzZU1vdmVFdmVudDo6c19zdHJNb3VzZU1vdmVFdmVudCA9ICJraHRtbC9F
dmVudHMvTW91c2VNb3ZlRXZlbnQiOwotY29uc3QgY2hhciAqTW91c2VSZWxlYXNlRXZlbnQ6OnNf
c3RyTW91c2VSZWxlYXNlRXZlbnQgPSAia2h0bWwvRXZlbnRzL01vdXNlUmVsZWFzZUV2ZW50IjsK
LWNvbnN0IGNoYXIgKkRyYXdDb250ZW50c0V2ZW50OjpzX3N0ckRyYXdDb250ZW50c0V2ZW50ID0g
ImtodG1sL0V2ZW50cy9EcmF3Q29udGVudHNFdmVudCI7Ci0KLWNsYXNzIERyYXdDb250ZW50c0V2
ZW50OjpEcmF3Q29udGVudHNFdmVudFByaXZhdGUKLXsKLX07Ci0KIERyYXdDb250ZW50c0V2ZW50
OjpEcmF3Q29udGVudHNFdmVudCggUVBhaW50ZXIgKnBhaW50ZXIsIGludCBjbGlweCwgaW50IGNs
aXB5LCBpbnQgY2xpcHcsIGludCBjbGlwaCApCi0gIDogS1BhcnRzOjpFdmVudCggc19zdHJEcmF3
Q29udGVudHNFdmVudCApLCBtX3BhaW50ZXIoIHBhaW50ZXIgKSwgbV9jbGlweCggY2xpcHggKSwg
bV9jbGlweSggY2xpcHkgKSwKKyAgOiBtX3BhaW50ZXIoIHBhaW50ZXIgKSwgbV9jbGlweCggY2xp
cHggKSwgbV9jbGlweSggY2xpcHkgKSwKICAgICBtX2NsaXB3KCBjbGlwdyApLCBtX2NsaXBoKCBj
bGlwaCApCiB7Ci0gIGQgPSBuZXcgRHJhd0NvbnRlbnRzRXZlbnRQcml2YXRlOwogfQogCi1EcmF3
Q29udGVudHNFdmVudDo6fkRyYXdDb250ZW50c0V2ZW50KCkKLXsKLSAgZGVsZXRlIGQ7CiB9Ci0K
LX0KSW5kZXg6IGtodG1sL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBraHRtbC9odG1sL0hUTUxTZWxlY3RFbGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyNDY2
KQorKysga2h0bWwvaHRtbC9IVE1MU2VsZWN0RWxlbWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICBvKys7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgUV9BU1NFUlQobV9tdWx0aXBsZSk7CisgICAgYXNzZXJ0KG1fbXVsdGlwbGUpOwogICAgIHJl
dHVybiAtMTsKIH0KIApAQCAtMjAzLDcgKzIwMyw2IEBACiAKICAgICBRU3RyaW5nIHN0YXRlID0g
X3N0YXRlOwogICAgIGlmKCFzdGF0ZS5pc0VtcHR5KCkgJiYgIXN0YXRlLmNvbnRhaW5zKCdYJykg
JiYgIW1fbXVsdGlwbGUpIHsKLSAgICAgICAgcVdhcm5pbmcoInNob3VsZCBub3QgaGFwcGVuIGlu
IHJlc3RvcmVTdGF0ZSEiKTsKICAgICAgICAgLy8gS1dRU3RyaW5nIGRvZXNuJ3Qgc3VwcG9ydCB0
aGlzIG9wZXJhdGlvbi4gU2hvdWxkIG5ldmVyIGdldCBoZXJlIGFueXdheS4KICAgICAgICAgLy9z
dGF0ZVswXSA9ICdYJzsKICAgICB9CkluZGV4OiBraHRtbC9lY21hL2tqc193aW5kb3cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDEyNDY2KQor
Kysga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNTMgKzIy
LDUwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAia2pzX3dpbmRvdy5oIgogCi0j
aW5jbHVkZSA8cXRpbWVyLmg+Ci0jaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+Ci0jaW5jbHVkZSA8
a2RlYnVnLmg+Ci0jaW5jbHVkZSA8a2xvY2FsZS5oPgotI2luY2x1ZGUgPGt3aW5tb2R1bGUuaD4K
LSNpbmNsdWRlIDxrY29uZmlnLmg+Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaW5jbHVkZSA8cXN0
eWxlLmg+Ci0jaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuaCIKLQotI2luY2x1ZGUg
IktXUUxvZ2dpbmcuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuaCIK
KyNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiS1dRS0NvbmZpZ0Jhc2Uu
aCIKLSNpbmNsdWRlIDxranMvY29sbGVjdG9yLmg+Ci0jaW5jbHVkZSAia2pzX3Byb3h5LmgiCi0j
aW5jbHVkZSAia2pzX25hdmlnYXRvci5oIgorI2luY2x1ZGUgIktXUUxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJTY3JlZW4uaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkLmgiCisjaW5jbHVkZSAiY3NzX3J1bGVpbXBsLmgiCisjaW5jbHVkZSAiY3NzX3N0
eWxlc2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiZG9tMl9ldmVudHNpbXBsLmgiCisjaW5jbHVkZSAi
ZG9tMl9yYW5nZWltcGwuaCIKKyNpbmNsdWRlICJkb21fZWxlbWVudGltcGwuaCIKKyNpbmNsdWRl
ICJkb21fbm9kZS5oIgorI2luY2x1ZGUgImRvbV9wb3NpdGlvbi5oIgorI2luY2x1ZGUgImRvbV9z
dHJpbmcuaCIKKyNpbmNsdWRlICJkb21wYXJzZXIuaCIKKyNpbmNsdWRlICJodG1sX2RvY3VtZW50
aW1wbC5oIgorI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCisjaW5jbHVkZSAia2pzX2Nzcy5oIgor
I2luY2x1ZGUgImtqc19ldmVudHMuaCIKICNpbmNsdWRlICJranNfaHRtbC5oIgorI2luY2x1ZGUg
Imtqc19uYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJranNfcHJveHkuaCIKICNpbmNsdWRlICJranNf
cmFuZ2UuaCIKICNpbmNsdWRlICJranNfdHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAia2pzX2Nzcy5o
IgotI2luY2x1ZGUgImtqc19ldmVudHMuaCIKLSNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuaCIK
LSNpbmNsdWRlICJKU1hNTEh0dHBSZXF1ZXN0LmgiCisjaW5jbHVkZSAicmVuZGVyX2NhbnZhcy5o
IgogI2luY2x1ZGUgInhtbHNlcmlhbGl6ZXIuaCIKLSNpZmRlZiBLSFRNTF9YU0xUCisjaW5jbHVk
ZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8a2NvbmZpZy5oPgorI2luY2x1ZGUgPGtkZWJ1Zy5oPgor
I2luY2x1ZGUgPGtqcy9jb2xsZWN0b3IuaD4KKyNpbmNsdWRlIDxrbG9jYWxlLmg+CisjaW5jbHVk
ZSA8a3dpbm1vZHVsZS5oPgorI2luY2x1ZGUgPHF0aW1lci5oPgorCisjaWYgS0hUTUxfWFNMVAog
I2luY2x1ZGUgIlhTTFRQcm9jZXNzb3IuaCIKICNlbmRpZgotI2luY2x1ZGUgImRvbXBhcnNlci5o
IgogCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJkb20vZG9tX3N0cmluZy5oIgotI2luY2x1ZGUgImRvbS9kb21fbm9kZS5oIgotI2luY2x1ZGUg
ImVkaXRpbmcvaHRtbGVkaXRpbmcuaCIKLSNpbmNsdWRlICJlZGl0aW5nL1NlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJ4bWwvZG9tMl9ldmVudHNpbXBsLmgiCi0jaW5jbHVkZSAieG1s
L2RvbTJfcmFuZ2VpbXBsLmgiCi0jaW5jbHVkZSAieG1sL2RvbV9lbGVtZW50aW1wbC5oIgotI2lu
Y2x1ZGUgInhtbC9kb21fcG9zaXRpb24uaCIKLSNpbmNsdWRlICJ4bWwvRXZlbnROYW1lcy5oIgot
I2luY2x1ZGUgImh0bWwvaHRtbF9kb2N1bWVudGltcGwuaCIKLSNpbmNsdWRlICJjc3MvY3NzX3J1
bGVpbXBsLmgiCi0jaW5jbHVkZSAiY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIgotI2luY2x1ZGUg
IlNoYXJlZC5oIgotCi11c2luZyBuYW1lc3BhY2UgRE9NOwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBraHRtbDsK
IAogbmFtZXNwYWNlIEtKUyB7CiAKQEAgLTE0MCw0NSArMTM3LDM4IEBACiBjb25zdCBDbGFzc0lu
Zm8gU2NyZWVuOjppbmZvID0geyAiU2NyZWVuIiwgMCwgJlNjcmVlblRhYmxlLCAwIH07CiAKIC8v
IFdlIHNldCB0aGUgb2JqZWN0IHByb3RvdHlwZSBzbyB0aGF0IHRvU3RyaW5nIGlzIGltcGxlbWVu
dGVkCi1TY3JlZW46OlNjcmVlbihFeGVjU3RhdGUgKmV4ZWMpCi0gIDogSlNPYmplY3QoZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3RQcm90b3R5cGUoKSkge30KK1NjcmVl
bjo6U2NyZWVuKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGYpCisgIDogSlNPYmplY3QoZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3RQcm90b3R5cGUoKSksIG1fZnJhbWUo
ZikKK3sKK30KIAogYm9vbCBTY3JlZW46OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PFNjcmVlbiwgSlNPYmplY3Q+KGV4ZWMsICZT
Y3JlZW5UYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotSlNWYWx1ZSAqU2Ny
ZWVuOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdAor
SlNWYWx1ZSogU2NyZWVuOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikg
Y29uc3QKIHsKLSAgS1dpbk1vZHVsZSBpbmZvOwotICBRV2lkZ2V0ICp0aGlzV2lkZ2V0ID0gV2lu
ZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+ZnJhbWUoKS0+dmlldygpOwotICBJbnRSZWN0IHNn
ID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6
ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIodGhpc1dpZGdldCkpOworICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSB3aW5kb3cgd2UgZ290IHRoaXMgc2NyZWVuIG9iamVjdCBmcm9tLAorICAv
LyBub3QgdGhlIHdpbmRvdyBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dC4KKyAgUVdp
ZGdldCogd2lkZ2V0ID0gbV9mcmFtZSA/IG1fZnJhbWUtPnZpZXcoKSA6IDA7CiAKLSAgc3dpdGNo
KCB0b2tlbiApIHsKKyAgc3dpdGNoICh0b2tlbikgewogICBjYXNlIEhlaWdodDoKLSAgICByZXR1
cm4ganNOdW1iZXIoc2cuaGVpZ2h0KCkpOworICAgIHJldHVybiBqc051bWJlcihzY3JlZW5SZWN0
KHdpZGdldCkuaGVpZ2h0KCkpOwogICBjYXNlIFdpZHRoOgotICAgIHJldHVybiBqc051bWJlcihz
Zy53aWR0aCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoc2NyZWVuUmVjdCh3aWRnZXQpLndpZHRo
KCkpOwogICBjYXNlIENvbG9yRGVwdGg6Ci0gIGNhc2UgUGl4ZWxEZXB0aDogewotICAgIHJldHVy
biBqc051bWJlcihRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuRGVwdGgoKSk7Ci0gIH0K
LSAgY2FzZSBBdmFpbExlZnQ6IHsKLSAgICBJbnRSZWN0IGNsaXBwZWQgPSBpbmZvLndvcmtBcmVh
KCkuaW50ZXJzZWN0KHNnKTsKLSAgICByZXR1cm4ganNOdW1iZXIoY2xpcHBlZC54KCktc2cueCgp
KTsKLSAgfQotICBjYXNlIEF2YWlsVG9wOiB7Ci0gICAgSW50UmVjdCBjbGlwcGVkID0gaW5mby53
b3JrQXJlYSgpLmludGVyc2VjdChzZyk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGNsaXBwZWQueSgp
LXNnLnkoKSk7Ci0gIH0KLSAgY2FzZSBBdmFpbEhlaWdodDogewotICAgIEludFJlY3QgY2xpcHBl
ZCA9IGluZm8ud29ya0FyZWEoKS5pbnRlcnNlY3Qoc2cpOwotICAgIHJldHVybiBqc051bWJlcihj
bGlwcGVkLmhlaWdodCgpKTsKLSAgfQotICBjYXNlIEF2YWlsV2lkdGg6IHsKLSAgICBJbnRSZWN0
IGNsaXBwZWQgPSBpbmZvLndvcmtBcmVhKCkuaW50ZXJzZWN0KHNnKTsKLSAgICByZXR1cm4ganNO
dW1iZXIoY2xpcHBlZC53aWR0aCgpKTsKLSAgfQorICBjYXNlIFBpeGVsRGVwdGg6CisgICAgcmV0
dXJuIGpzTnVtYmVyKHNjcmVlbkRlcHRoKHdpZGdldCkpOworICBjYXNlIEF2YWlsTGVmdDoKKyAg
ICByZXR1cm4ganNOdW1iZXIodXNhYmxlU2NyZWVuUmVjdCh3aWRnZXQpLngoKSAtIHNjcmVlblJl
Y3Qod2lkZ2V0KS54KCkpOworICBjYXNlIEF2YWlsVG9wOgorICAgIHJldHVybiBqc051bWJlcih1
c2FibGVTY3JlZW5SZWN0KHdpZGdldCkueSgpIC0gc2NyZWVuUmVjdCh3aWRnZXQpLnkoKSk7Cisg
IGNhc2UgQXZhaWxIZWlnaHQ6CisgICAgcmV0dXJuIGpzTnVtYmVyKHVzYWJsZVNjcmVlblJlY3Qo
d2lkZ2V0KS5oZWlnaHQoKSk7CisgIGNhc2UgQXZhaWxXaWR0aDoKKyAgICByZXR1cm4ganNOdW1i
ZXIodXNhYmxlU2NyZWVuUmVjdCh3aWRnZXQpLndpZHRoKCkpOwogICBkZWZhdWx0OgogICAgIGtk
V2FybmluZygpIDw8ICJTY3JlZW46OmdldFZhbHVlUHJvcGVydHkgdW5oYW5kbGVkIHRva2VuICIg
PDwgdG9rZW4gPDwgZW5kbDsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTYxMSw3ICs2
MDEsNyBAQAogICAgIC8vIC0gaGVscDogYm9vbEZlYXR1cmUoZmVhdHVyZXMsICJoZWxwIiwgdHJ1
ZSksIG1ha2VzIGhlbHAgaWNvbiBhcHBlYXIgaW4gZGlhbG9nICh3aGF0IGRvZXMgaXQgZG8gb24g
V2luZG93cz8pCiAgICAgLy8gLSB1bmFkb3JuZWQ6IHRydXN0ZWQgJiYgYm9vbEZlYXR1cmUoZmVh
dHVyZXMsICJ1bmFkb3JuZWQiKTsKIAotICAgIEludFJlY3Qgc2NyZWVuUmVjdCA9IFFBcHBsaWNh
dGlvbjo6ZGVza3RvcCgpLT5hdmFpbGFibGVHZW9tZXRyeShvcGVuZXJXaW5kb3ctPmZyYW1lKCkt
PnZpZXcoKSk7CisgICAgSW50UmVjdCBzY3JlZW5SZWN0ID0gdXNhYmxlU2NyZWVuUmVjdChvcGVu
ZXJXaW5kb3ctPmZyYW1lKCktPnZpZXcoKSk7CiAKICAgICB3YXJncy53aWR0aCA9IGludEZlYXR1
cmUoZmVhdHVyZXMsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuUmVjdC53aWR0aCgpLCA2MjAp
OyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lF
CiAgICAgd2FyZ3Mud2lkdGhTZXQgPSB0cnVlOwpAQCAtNzk4LDcgKzc4OCw3IEBACiAgICAgfQog
ICAgIGNhc2UgX1NjcmVlbjoKICAgICAgIGlmICghc2NyZWVuKQotICAgICAgICBzY3JlZW4gPSBu
ZXcgU2NyZWVuKGV4ZWMpOworICAgICAgICBzY3JlZW4gPSBuZXcgU2NyZWVuKGV4ZWMsIG1fZnJh
bWUpOwogICAgICAgcmV0dXJuIHNjcmVlbjsKICAgICBjYXNlIEltYWdlOgogICAgICAgLy8gRklY
TUU6IHRoaXMgcHJvcGVydHkgKGFuZCB0aGUgZmV3IGJlbG93KSBwcm9iYWJseSBzaG91bGRuJ3Qg
Y3JlYXRlIGEgbmV3IG9iamVjdCBldmVyeQpAQCAtMTIwMiw3ICsxMTkyLDcgQEAKIHZvaWQgV2lu
ZG93OjpzY2hlZHVsZUNsb3NlKCkKIHsKICAga2REZWJ1Zyg2MDcwKSA8PCAiV2luZG93OjpzY2hl
ZHVsZUNsb3NlIHdpbmRvdy5jbG9zZSgpICIgPDwgbV9mcmFtZSA8PCBlbmRsOwotICBRX0FTU0VS
VCh3aW5xKTsKKyAgYXNzZXJ0KHdpbnEpOwogICBtX2ZyYW1lLT5zY2hlZHVsZUNsb3NlKCk7CiB9
CiAKQEAgLTE1OTcsOCArMTU4Nyw3IEBACiAgICAgICBRU3RyaW5nIGZlYXR1cmVzID0gYXJnc1sy
XS0+aXNVbmRlZmluZWRPck51bGwoKSA/IFFTdHJpbmcoKSA6IGFyZ3NbMl0tPnRvU3RyaW5nKGV4
ZWMpLnFzdHJpbmcoKTsKICAgICAgIHBhcnNlV2luZG93RmVhdHVyZXMoZmVhdHVyZXMsIHdpbmRv
d0FyZ3MpOwogICAgICAgCi0gICAgICBpbnQgc2NyZWVuTnVtYmVyID0gUUFwcGxpY2F0aW9uOjpk
ZXNrdG9wKCktPnNjcmVlbk51bWJlcih3aWRnZXQtPnRvcExldmVsV2lkZ2V0KCkpOwotICAgICAg
Y29uc3RyYWluVG9WaXNpYmxlKFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRy
eShzY3JlZW5OdW1iZXIpLCB3aW5kb3dBcmdzKTsKKyAgICAgIGNvbnN0cmFpblRvVmlzaWJsZShz
Y3JlZW5SZWN0KHdpZGdldCksIHdpbmRvd0FyZ3MpOwogICAgICAgCiAgICAgICAvLyBwcmVwYXJl
IGFyZ3VtZW50cwogICAgICAgS1VSTCB1cmw7CkBAIC0xNjgyLDcgKzE2NzEsNyBAQAogICAgIGlm
KGFyZ3Muc2l6ZSgpID49IDIgJiYgd2lkZ2V0KQogICAgIHsKICAgICAgIFFXaWRnZXQgKiB0bCA9
IHdpZGdldC0+dG9wTGV2ZWxXaWRnZXQoKTsKLSAgICAgICAgICBJbnRSZWN0IHNnID0gUUFwcGxp
Y2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgp
LT5zY3JlZW5OdW1iZXIodGwpKTsKKyAgICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KHdpZGdl
dCk7CiAgICAgICBJbnRQb2ludCBkZXN0ID0gdGwtPnBvcygpICsgSW50UG9pbnQoIGFyZ3NbMF0t
PnRvSW50MzIoZXhlYyksIGFyZ3NbMV0tPnRvSW50MzIoZXhlYykgKTsKICAgICAgIC8vIFNlY3Vy
aXR5IGNoZWNrICh0aGUgc3BlYyB0YWxrcyBhYm91dCBVbml2ZXJzYWxCcm93c2VyV3JpdGUgdG8g
ZGlzYWJsZSB0aGlzIGNoZWNrLi4uKQogICAgICAgaWYgKCBkZXN0LngoKSA+PSBzZy54KCkgJiYg
ZGVzdC55KCkgPj0gc2cueCgpICYmCkBAIC0xNjk1LDcgKzE2ODQsNyBAQAogICAgIGlmKGFyZ3Mu
c2l6ZSgpID49IDIgJiYgd2lkZ2V0KQogICAgIHsKICAgICAgIFFXaWRnZXQgKiB0bCA9IHdpZGdl
dC0+dG9wTGV2ZWxXaWRnZXQoKTsKLSAgICAgICAgICBJbnRSZWN0IHNnID0gUUFwcGxpY2F0aW9u
OjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3Jl
ZW5OdW1iZXIodGwpKTsKKyAgICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KHdpZGdldCk7CiAg
ICAgICBJbnRQb2ludCBkZXN0KCBhcmdzWzBdLT50b0ludDMyKGV4ZWMpK3NnLngoKSwgYXJnc1sx
XS0+dG9JbnQzMihleGVjKStzZy55KCkgKTsKICAgICAgIC8vIFNlY3VyaXR5IGNoZWNrICh0aGUg
c3BlYyB0YWxrcyBhYm91dCBVbml2ZXJzYWxCcm93c2VyV3JpdGUgdG8gZGlzYWJsZSB0aGlzIGNo
ZWNrLi4uKQogICAgICAgaWYgKCBkZXN0LngoKSA+PSBzZy54KCkgJiYgZGVzdC55KCkgPj0gc2cu
eSgpICYmCkBAIC0xNzA5LDcgKzE2OTgsNyBAQAogICAgIHsKICAgICAgIFFXaWRnZXQgKiB0bCA9
IHdpZGdldC0+dG9wTGV2ZWxXaWRnZXQoKTsKICAgICAgIEludFNpemUgZGVzdCA9IHRsLT5zaXpl
KCkgKyBJbnRTaXplKCBhcmdzWzBdLT50b0ludDMyKGV4ZWMpLCBhcmdzWzFdLT50b0ludDMyKGV4
ZWMpICk7Ci0gICAgICAgICAgSW50UmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5z
Y3JlZW5HZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKHRsKSk7
CisgICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVjdCh3aWRnZXQpOwogICAgICAgLy8gU2VjdXJp
dHkgY2hlY2s6IHdpdGhpbiBkZXNrdG9wIGxpbWl0cyBhbmQgYmlnZ2VyIHRoYW4gMTAweDEwMCAo
cGVyIHNwZWMpCiAgICAgICBpZiAoIHRsLT54KCkrZGVzdC53aWR0aCgpIDw9IHNnLngoKStzZy53
aWR0aCgpICYmCiAgICAgICAgICAgIHRsLT55KCkrZGVzdC5oZWlnaHQoKSA8PSBzZy55KCkrc2cu
aGVpZ2h0KCkgJiYKQEAgLTE3MjcsNyArMTcxNiw3IEBACiAgICAgewogICAgICAgUVdpZGdldCAq
IHRsID0gd2lkZ2V0LT50b3BMZXZlbFdpZGdldCgpOwogICAgICAgSW50U2l6ZSBkZXN0ID0gSW50
U2l6ZSggYXJnc1swXS0+dG9JbnQzMihleGVjKSwgYXJnc1sxXS0+dG9JbnQzMihleGVjKSApOwot
ICAgICAgICAgIEludFJlY3Qgc2cgPSBRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuR2Vv
bWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbk51bWJlcih0bCkpOworICAgICAg
SW50UmVjdCBzZyA9IHNjcmVlblJlY3Qod2lkZ2V0KTsKICAgICAgIC8vIFNlY3VyaXR5IGNoZWNr
OiB3aXRoaW4gZGVza3RvcCBsaW1pdHMgYW5kIGJpZ2dlciB0aGFuIDEwMHgxMDAgKHBlciBzcGVj
KQogICAgICAgaWYgKCB0bC0+eCgpK2Rlc3Qud2lkdGgoKSA8PSBzZy54KCkrc2cud2lkdGgoKSAm
JgogICAgICAgICAgICB0bC0+eSgpK2Rlc3QuaGVpZ2h0KCkgPD0gc2cueSgpK3NnLmhlaWdodCgp
ICYmCkluZGV4OiBraHRtbC9lY21hL2tqc193aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9l
Y21hL2tqc193aW5kb3cuaAkocmV2aXNpb24gMTI0NjYpCisrKyBraHRtbC9lY21hL2tqc193aW5k
b3cuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTcgKzkzLDE1IEBACiAKICAgY2xhc3MgU2NyZWVu
IDogcHVibGljIEpTT2JqZWN0IHsKICAgcHVibGljOgotICAgIFNjcmVlbihFeGVjU3RhdGUqKTsK
LSAgICBlbnVtIHsKLSAgICAgIEhlaWdodCwgV2lkdGgsIENvbG9yRGVwdGgsIFBpeGVsRGVwdGgs
IEF2YWlsTGVmdCwgQXZhaWxUb3AsIEF2YWlsSGVpZ2h0LAotICAgICAgQXZhaWxXaWR0aAotICAg
IH07CisgICAgZW51bSB7IEhlaWdodCwgV2lkdGgsIENvbG9yRGVwdGgsIFBpeGVsRGVwdGgsIEF2
YWlsTGVmdCwgQXZhaWxUb3AsIEF2YWlsSGVpZ2h0LCBBdmFpbFdpZHRoIH07CiAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKiwgY29uc3QgSWRlbnRpZmllciYs
IFByb3BlcnR5U2xvdCYpOwogICAgIEpTVmFsdWUgKmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRl
ICpleGVjLCBpbnQgdG9rZW4pIGNvbnN0OwotICBwcml2YXRlOgotICAgIEZyYW1lVmlldyAqdmll
dzsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CisgIHByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIFdpbmRvdzsKKyAgICBTY3JlZW4oRXhlY1N0YXRlKiwgRnJhbWUq
KTsKKyAgICBRR3VhcmRlZFB0cjxGcmFtZT4gbV9mcmFtZTsKICAgfTsKIAogICBjbGFzcyBXaW5k
b3cgOiBwdWJsaWMgSlNPYmplY3QgewpJbmRleDoga2h0bWwva2h0bWxfZXZlbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2h0bWwva2h0bWxfZXZlbnRzLmgJKHJldmlzaW9uIDEyNDY2KQorKysga2h0bWwv
a2h0bWxfZXZlbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDExOCArMTksNzggQEAKICNpZm5k
ZWYgX19raHRtbF9ldmVudHNfaF9fCiAjZGVmaW5lIF9fa2h0bWxfZXZlbnRzX2hfXwogCi0jaW5j
bHVkZSA8a3BhcnRzL2V2ZW50Lmg+Ci0KICNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5oIgogCi1u
YW1lc3BhY2UgRE9NIHsKLSAgICBjbGFzcyBOb2RlSW1wbDsKLX0KK2NsYXNzIFFNb3VzZUV2ZW50
OwogCi1uYW1lc3BhY2Uga2h0bWwKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTW91
c2VFdmVudCA6IHB1YmxpYyBLUGFydHM6OkV2ZW50Ci17CitjbGFzcyBOb2RlSW1wbDsKK2NsYXNz
IFFQYWludGVyOworCitjbGFzcyBNb3VzZUV2ZW50IHsKIHB1YmxpYzoKLSAgTW91c2VFdmVudCgg
Y29uc3QgY2hhciAqbmFtZSwgUU1vdXNlRXZlbnQgKnFtb3VzZUV2ZW50LCBpbnQgeCwgaW50IHks
Ci0gICAgICAgICAgICAgIGNvbnN0IERPTTo6RE9NU3RyaW5nICZ1cmwsIGNvbnN0IERPTTo6RE9N
U3RyaW5nJiB0YXJnZXQsCi0gICAgICAgICAgICAgIERPTTo6Tm9kZUltcGwgKmlubmVyTm9kZSk7
Ci0gIHZpcnR1YWwgfk1vdXNlRXZlbnQoKTsKKyAgTW91c2VFdmVudChRTW91c2VFdmVudCosIGlu
dCB4LCBpbnQgeSwgY29uc3QgRE9NU3RyaW5nJiB1cmwsIGNvbnN0IERPTVN0cmluZyYgdGFyZ2V0
LCBOb2RlSW1wbCogaW5uZXJOb2RlKTsKIAotICBRTW91c2VFdmVudCAqcW1vdXNlRXZlbnQoKSBj
b25zdCB7IHJldHVybiBtX3Ftb3VzZUV2ZW50OyB9CisgIFFNb3VzZUV2ZW50KiBxbW91c2VFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcW1vdXNlRXZlbnQ7IH0KICAgaW50IHgoKSBjb25zdCB7IHJl
dHVybiBtX3g7IH0KICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KICAgaW50IGFic1go
KSBjb25zdCB7IHJldHVybiBtX25vZGVBYnNYOyB9CiAgIGludCBhYnNZKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlQWJzWTsgfQogCi0gIERPTTo6RE9NU3RyaW5nIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9Ci0gIERPTTo6RE9NU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFy
Z2V0OyB9Ci0gIERPTTo6Tm9kZUltcGwgKmlubmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5u
ZXJOb2RlLmdldCgpOyB9CisgIERPTVN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICBET01TdHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgTm9k
ZUltcGwqIGlubmVyTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJOb2RlLmdldCgpOyB9CiAK
ICAgLy8gcmV0dXJuIHRoZSBvZmZzZXQgb2YgaW5uZXJOb2RlCiAgIGludCBvZmZzZXQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgUU1vdXNlRXZlbnQgKm1fcW1vdXNlRXZlbnQ7CisgIFFNb3VzZUV2
ZW50KiBtX3Ftb3VzZUV2ZW50OwogICBpbnQgbV94OwogICBpbnQgbV95OwogICBpbnQgbV9ub2Rl
QWJzWCwgbV9ub2RlQWJzWTsKLSAgRE9NOjpET01TdHJpbmcgbV91cmw7Ci0gIERPTTo6RE9NU3Ry
aW5nIG1fdGFyZ2V0OwotICBSZWZQdHI8RE9NOjpOb2RlSW1wbD4gbV9pbm5lck5vZGU7Ci0gIGNs
YXNzIE1vdXNlRXZlbnRQcml2YXRlOwotICBNb3VzZUV2ZW50UHJpdmF0ZSAqZDsKKyAgRE9NU3Ry
aW5nIG1fdXJsOworICBET01TdHJpbmcgbV90YXJnZXQ7CisgIFJlZlB0cjxOb2RlSW1wbD4gbV9p
bm5lck5vZGU7CiB9OwogCiBjbGFzcyBNb3VzZVByZXNzRXZlbnQgOiBwdWJsaWMgTW91c2VFdmVu
dAogewogcHVibGljOgotICBNb3VzZVByZXNzRXZlbnQoIFFNb3VzZUV2ZW50ICptb3VzZUV2ZW50
LCBpbnQgeCwgaW50IHksCi0gICAgICAgICAgICAgICAgICAgY29uc3QgRE9NOjpET01TdHJpbmcg
JnVybCwgY29uc3QgRE9NOjpET01TdHJpbmcmIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICBE
T006Ok5vZGVJbXBsICppbm5lck5vZGUpCi0gIDogTW91c2VFdmVudCggc19zdHJNb3VzZVByZXNz
RXZlbnQsIG1vdXNlRXZlbnQsIHgsIHksIHVybCwgdGFyZ2V0LCBpbm5lck5vZGUgKQotICB7fQot
Ci0gIHN0YXRpYyBib29sIHRlc3QoIGNvbnN0IFFFdmVudCAqZXZlbnQgKSB7IHJldHVybiBLUGFy
dHM6OkV2ZW50Ojp0ZXN0KCBldmVudCwgc19zdHJNb3VzZVByZXNzRXZlbnQgKTsgfQotCi0KLXBy
aXZhdGU6Ci0gIHN0YXRpYyBjb25zdCBjaGFyICpzX3N0ck1vdXNlUHJlc3NFdmVudDsKKyAgTW91
c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBlLCBpbnQgeCwgaW50IHksIGNvbnN0IERPTVN0cmlu
ZyYgdXJsLCBjb25zdCBET01TdHJpbmcmIHRhcmdldCwgTm9kZUltcGwqIGlubmVyTm9kZSkKKyAg
ICA6IE1vdXNlRXZlbnQoZSwgeCwgeSwgdXJsLCB0YXJnZXQsIGlubmVyTm9kZSkgeyB9CiB9Owog
CiBjbGFzcyBNb3VzZURvdWJsZUNsaWNrRXZlbnQgOiBwdWJsaWMgTW91c2VFdmVudAogewogcHVi
bGljOgotICBNb3VzZURvdWJsZUNsaWNrRXZlbnQoIFFNb3VzZUV2ZW50ICptb3VzZUV2ZW50LCBp
bnQgeCwgaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE9NOjpET01TdHJp
bmcgJnVybCwgY29uc3QgRE9NOjpET01TdHJpbmcmIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBET006Ok5vZGVJbXBsICppbm5lck5vZGUpCi0gIDogTW91c2VFdmVudCggc19zdHJN
b3VzZURvdWJsZUNsaWNrRXZlbnQsIG1vdXNlRXZlbnQsIHgsIHksIHVybCwgdGFyZ2V0LCBpbm5l
ck5vZGUgKQotICB7fQotCi0gIHN0YXRpYyBib29sIHRlc3QoIGNvbnN0IFFFdmVudCAqZXZlbnQg
KQotICB7IHJldHVybiBLUGFydHM6OkV2ZW50Ojp0ZXN0KCBldmVudCwgc19zdHJNb3VzZURvdWJs
ZUNsaWNrRXZlbnQgKTsgfQotCi1wcml2YXRlOgotICBzdGF0aWMgY29uc3QgY2hhciAqc19zdHJN
b3VzZURvdWJsZUNsaWNrRXZlbnQ7CisgIE1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVu
dCogZSwgaW50IHgsIGludCB5LCBjb25zdCBET01TdHJpbmcmIHVybCwgY29uc3QgRE9NU3RyaW5n
JiB0YXJnZXQsIE5vZGVJbXBsKiBpbm5lck5vZGUpCisgICAgOiBNb3VzZUV2ZW50KGUsIHgsIHks
IHVybCwgdGFyZ2V0LCBpbm5lck5vZGUpIHsgfQogfTsKIAogCiBjbGFzcyBNb3VzZU1vdmVFdmVu
dCA6IHB1YmxpYyBNb3VzZUV2ZW50CiB7CiBwdWJsaWM6Ci0gIE1vdXNlTW92ZUV2ZW50KCBRTW91
c2VFdmVudCAqbW91c2VFdmVudCwgaW50IHgsIGludCB5LAotICAgICAgICAgICAgICAgICAgY29u
c3QgRE9NOjpET01TdHJpbmcgJnVybCwgY29uc3QgRE9NOjpET01TdHJpbmcmIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgIERPTTo6Tm9kZUltcGwgKmlubmVyTm9kZSkKLSAgOiBNb3VzZUV2ZW50
KCBzX3N0ck1vdXNlTW92ZUV2ZW50LCBtb3VzZUV2ZW50LCB4LCB5LCB1cmwsIHRhcmdldCwgaW5u
ZXJOb2RlICkKLSAge30KLQotICBzdGF0aWMgYm9vbCB0ZXN0KCBjb25zdCBRRXZlbnQgKmV2ZW50
ICkgeyByZXR1cm4gS1BhcnRzOjpFdmVudDo6dGVzdCggZXZlbnQsIHNfc3RyTW91c2VNb3ZlRXZl
bnQgKTsgfQotCi1wcml2YXRlOgotICBzdGF0aWMgY29uc3QgY2hhciAqc19zdHJNb3VzZU1vdmVF
dmVudDsKKyAgTW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGUsIGludCB4LCBpbnQgeSwgY29u
c3QgRE9NU3RyaW5nJiB1cmwsIGNvbnN0IERPTVN0cmluZyYgdGFyZ2V0LCBOb2RlSW1wbCogaW5u
ZXJOb2RlKQorICAgOiBNb3VzZUV2ZW50KGUsIHgsIHksIHVybCwgdGFyZ2V0LCBpbm5lck5vZGUp
IHsgfQogfTsKIAogY2xhc3MgTW91c2VSZWxlYXNlRXZlbnQgOiBwdWJsaWMgTW91c2VFdmVudAog
ewogcHVibGljOgogICBNb3VzZVJlbGVhc2VFdmVudCggUU1vdXNlRXZlbnQgKm1vdXNlRXZlbnQs
IGludCB4LCBpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTTo6RE9NU3RyaW5n
ICZ1cmwsIGNvbnN0IERPTTo6RE9NU3RyaW5nJiB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICBET006Ok5vZGVJbXBsICppbm5lck5vZGUsIGludCA9IDAgKQotICA6IE1vdXNlRXZlbnQoIHNf
c3RyTW91c2VSZWxlYXNlRXZlbnQsIG1vdXNlRXZlbnQsIHgsIHksIHVybCwgdGFyZ2V0LCBpbm5l
ck5vZGUgKQotICB7fQotCi0gIHN0YXRpYyBib29sIHRlc3QoIGNvbnN0IFFFdmVudCAqZXZlbnQg
KSB7IHJldHVybiBLUGFydHM6OkV2ZW50Ojp0ZXN0KCBldmVudCwgc19zdHJNb3VzZVJlbGVhc2VF
dmVudCApOyB9Ci0KLXByaXZhdGU6Ci0gIHN0YXRpYyBjb25zdCBjaGFyICpzX3N0ck1vdXNlUmVs
ZWFzZUV2ZW50OworICAgICAgICAgICAgICAgICAgICAgY29uc3QgRE9NU3RyaW5nICZ1cmwsIGNv
bnN0IERPTVN0cmluZyYgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgTm9kZUltcGwgKmlu
bmVyTm9kZSwgaW50ID0gMCApCisgIDogTW91c2VFdmVudCggbW91c2VFdmVudCwgeCwgeSwgdXJs
LCB0YXJnZXQsIGlubmVyTm9kZSApCisgIHsgfQogfTsKIAotY2xhc3MgRHJhd0NvbnRlbnRzRXZl
bnQgOiBwdWJsaWMgS1BhcnRzOjpFdmVudAorY2xhc3MgRHJhd0NvbnRlbnRzRXZlbnQKIHsKIHB1
YmxpYzoKLSAgRHJhd0NvbnRlbnRzRXZlbnQoIFFQYWludGVyICpwYWludGVyLCBpbnQgY2xpcHgs
IGludCBjbGlweSwgaW50IGNsaXB3LCBpbnQgY2xpcGggKTsKLSAgdmlydHVhbCB+RHJhd0NvbnRl
bnRzRXZlbnQoKTsKKyAgRHJhd0NvbnRlbnRzRXZlbnQoUVBhaW50ZXIqLCBpbnQgY2xpcHgsIGlu
dCBjbGlweSwgaW50IGNsaXB3LCBpbnQgY2xpcGgpOwogCiAgIFFQYWludGVyICpwYWludGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWludGVyOyB9CiAgIGludCBjbGlweCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xpcHg7IH0KQEAgLTEzOCwxOSArOTgsMTQgQEAKICAgaW50IGNsaXB3KCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGlwdzsgfQogICBpbnQgY2xpcGgoKSBjb25zdCB7IHJldHVybiBtX2NsaXBoOyB9
CiAKLSAgc3RhdGljIGJvb2wgdGVzdCggY29uc3QgUUV2ZW50ICpldmVudCApIHsgcmV0dXJuIEtQ
YXJ0czo6RXZlbnQ6OnRlc3QoIGV2ZW50LCBzX3N0ckRyYXdDb250ZW50c0V2ZW50ICk7IH0KLQog
cHJpdmF0ZToKICAgUVBhaW50ZXIgKm1fcGFpbnRlcjsKICAgaW50IG1fY2xpcHg7CiAgIGludCBt
X2NsaXB5OwogICBpbnQgbV9jbGlwdzsKICAgaW50IG1fY2xpcGg7Ci0gIGNsYXNzIERyYXdDb250
ZW50c0V2ZW50UHJpdmF0ZTsKLSAgRHJhd0NvbnRlbnRzRXZlbnRQcml2YXRlICpkOwotICBzdGF0
aWMgY29uc3QgY2hhciAqc19zdHJEcmF3Q29udGVudHNFdmVudDsKIH07CiAKLX07Cit9CiAKICNl
bmRpZgpJbmRleDogcGxhdGZvcm0vbWFjL1NjcmVlbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9tYWMvU2NyZWVuLm1tCShyZXZpc2lvbiAwKQorKysgcGxhdGZvcm0vbWFjL1NjcmVlbi5tbQko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcmVlbi5oIgorCisjaW1wb3J0ICJJbnRSZWN0LmgiCisj
aW1wb3J0ICJLV1FXaWRnZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNT
Y3JlZW4qIHNjcmVlbihRV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgaWYgKHdpZGdldCkKKyAgICAg
ICAgaWYgKE5TU2NyZWVuKiBzY3JlZW4gPSBbW3dpZGdldC0+Z2V0VmlldygpIHdpbmRvd10gc2Ny
ZWVuXSkKKyAgICAgICAgICAgIHJldHVybiBzY3JlZW47CisgICAgcmV0dXJuIFtOU1NjcmVlbiBt
YWluU2NyZWVuXTsKK30KKworc3RhdGljIE5TUmVjdCBmbGlwR2xvYmFsUmVjdChOU1JlY3QgcmVj
dCkKK3sKKyAgICByZWN0Lm9yaWdpbi55ID0gTlNNYXhZKFtbW05TU2NyZWVuIHNjcmVlbnNdIG9i
amVjdEF0SW5kZXg6MF0gZnJhbWVdKSAtIE5TTWF4WShyZWN0KTsKKyAgICByZXR1cm4gcmVjdDsK
K30KKworaW50IHNjcmVlbkRlcHRoKFFXaWRnZXQqIHdpZGdldCkKK3sKKyAgICByZXR1cm4gW3Nj
cmVlbih3aWRnZXQpIGRlcHRoXTsKK30KKworSW50UmVjdCBzY3JlZW5SZWN0KFFXaWRnZXQqIHdp
ZGdldCkKK3sKKyAgICByZXR1cm4gSW50UmVjdChmbGlwR2xvYmFsUmVjdChbc2NyZWVuKHdpZGdl
dCkgZnJhbWVdKSk7Cit9CisKK0ludFJlY3QgdXNhYmxlU2NyZWVuUmVjdChRV2lkZ2V0KiB3aWRn
ZXQpCit7CisgICAgcmV0dXJuIEludFJlY3QoZmxpcEdsb2JhbFJlY3QoW3NjcmVlbih3aWRnZXQp
IHZpc2libGVGcmFtZV0pKTsKK30KKworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0v
bWFjL1NjcmVlbi5tbQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUK
CkluZGV4OiBwbGF0Zm9ybS9TY3JlZW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TY3JlZW4u
aAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL1NjcmVlbi5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU0NSRUVOX0gKKyNkZWZpbmUg
U0NSRUVOX0gKKworY2xhc3MgUVdpZGdldDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgSW50UmVjdDsKKworICAgIGludCBzY3JlZW5EZXB0aChRV2lkZ2V0Kik7CisgICAgSW50
UmVjdCBzY3JlZW5SZWN0KFFXaWRnZXQqKTsKKyAgICBJbnRSZWN0IHVzYWJsZVNjcmVlblJlY3Qo
UVdpZGdldCopOworCit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0v
U2NyZWVuLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRl
eDogcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuaAkocmV2aXNpb24gMTI0NjYpCisrKyByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDxxZm9udG1ldHJpY3Mu
aD4KICNpbmNsdWRlIDxxbGlzdC5oPgogI2luY2x1ZGUgPHFwYWxldHRlLmg+Ci0jaW5jbHVkZSA8
cWFwcGxpY2F0aW9uLmg+CiAKICNpbmNsdWRlICJraHRtbGxheW91dC5oIgogI2luY2x1ZGUgIlNo
YXJlZC5oIgpJbmRleDogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBy
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiAxMjQ2NikKKysrIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw3ICs0NjIsNiBAQAogICAgIGlu
dCBvbGRTaXplID0gY29sdW1ucy5zaXplKCk7CiAgICAgY29sdW1ucy5yZXNpemUob2xkU2l6ZSAr
IDEpOwogICAgIGludCBvbGRTcGFuID0gY29sdW1uc1twb3NdLnNwYW47Ci0vLyAgICAgcURlYnVn
KCJzcGxpdENvbHVtbiggJWQsJWQgKSwgb2xkU2l6ZT0lZCwgb2xkU3Bhbj0lZCIsIHBvcywgZmly
c3RTcGFuLCBvbGRTaXplLCBvbGRTcGFuICk7CiAgICAgS0hUTUxBc3NlcnQob2xkU3BhbiA+IGZp
cnN0U3Bhbik7CiAgICAgY29sdW1uc1twb3NdLnNwYW4gPSBmaXJzdFNwYW47CiAgICAgbWVtbW92
ZShjb2x1bW5zLmRhdGEoKSArIHBvcyArIDEsIGNvbHVtbnMuZGF0YSgpICsgcG9zLCAob2xkU2l6
ZS1wb3MpKnNpemVvZihDb2x1bW5TdHJ1Y3QpKTsKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfb2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaAkocmV2aXNpb24g
MTI0NjYpCisrKyByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSwxNSArNDEsMTcgQEAKIGNsYXNzIFFUZXh0U3RyZWFtOwogY2xhc3MgUmVuZGVyQXJlbmE7CiAK
LSNpZm5kZWYgTkRFQlVHCi0jZGVmaW5lIEtIVE1MQXNzZXJ0KCB4ICkgaWYoICEoeCkgKSB7IFwK
LSAgICBjb25zdCBSZW5kZXJPYmplY3QgKm8gPSB0aGlzOyB3aGlsZSggby0+cGFyZW50KCkgKSBv
ID0gby0+cGFyZW50KCk7IFwKLSAgICBvLT5wcmludFRyZWUoKTsgXAotICAgIHFEZWJ1ZygiIHRo
aXMgb2JqZWN0ID0gJXAiLCB0aGlzICk7IFwKLSAgICBhc3NlcnQoIGZhbHNlICk7IFwKLX0KKyNp
ZiAhTkRFQlVHCisgICAgI2RlZmluZSBLSFRNTEFzc2VydCh4KSBcCisgICAgICAgIGlmICghKHgp
KSB7IFwKKyAgICAgICAgICAgIGNvbnN0IFJlbmRlck9iamVjdCogbyA9IHRoaXM7IFwKKyAgICAg
ICAgICAgIHdoaWxlIChvLT5wYXJlbnQoKSkgXAorICAgICAgICAgICAgICAgIG8gPSBvLT5wYXJl
bnQoKTsgXAorICAgICAgICAgICAgby0+cHJpbnRUcmVlKCk7IFwKKyAgICAgICAgICAgIGFzc2Vy
dChmYWxzZSk7IFwKKyAgICAgICAgfQogI2Vsc2UKLSNkZWZpbmUgS0hUTUxBc3NlcnQoIHggKQor
ICAgICNkZWZpbmUgS0hUTUxBc3NlcnQoeCkKICNlbmRpZgogCiAvKgpAQCAtMjIwLDcgKzIyMiw3
IEBACiAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgKnJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyT2JqZWN0IjsgfQotI2lmbmRlZiBOREVCVUcKKyNpZiAhTkRFQlVH
CiAgICAgUVN0cmluZyBpbmZvcm1hdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwcmlu
dFRyZWUoaW50IGluZGVudD0wKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChRVGV4dFN0
cmVhbSAqc3RyZWFtLCBRU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKSW5kZXg6IHJlbmRlcmluZy90
YWJsZV9sYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy90YWJsZV9sYXlvdXQuY3Bw
CShyZXZpc2lvbiAxMjQ2NikKKysrIHJlbmRlcmluZy90YWJsZV9sYXlvdXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTIsNyArMTkyLDcgQEAKIAkJaW50IHVzZWRTcGFuID0gMDsKIAkJaW50IGkg
PSAwOwogCQl3aGlsZSAoIHVzZWRTcGFuIDwgc3BhbiApIHsKLQkJICAgIFFfQVNTRVJUKCBjQ29s
ICsgaSA8IG5FZmZDb2xzICk7CisJCSAgICBhc3NlcnQoIGNDb2wgKyBpIDwgbkVmZkNvbHMgKTsK
IAkJICAgIGludCBlU3BhbiA9IHRhYmxlLT5zcGFuT2ZFZmZDb2woIGNDb2wraSApOwogCQkgICAg
Ly8gb25seSBzZXQgaWYgbm8gY29sIGVsZW1lbnQgaGFzIGFscmVhZHkgc2V0IGl0LgogCQkgICAg
aWYgKCB3aWR0aFtjQ29sK2ldLnR5cGUgPT0gQXV0byAmJiB3LnR5cGUgIT0gQXV0byApIHsKQEAg
LTIxMyw3ICsyMTMsNyBAQAogCQl9CiAJCWNDb2wgKz0gaTsKIAkgICAgfSBlbHNlIHsKLQkJUV9B
U1NFUlQoIGZhbHNlICk7CisJCWFzc2VydCggZmFsc2UgKTsKIAkgICAgfQogCSAgICBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpOwogCX0KQEAgLTg0Nyw3ICs4NDcsNiBAQAogICAgIGludCBu
RWZmQ29scyA9IHRhYmxlLT5udW1FZmZDb2xzKCk7CiAKICAgICBpZiAoIG5FZmZDb2xzICE9IChp
bnQpbGF5b3V0U3RydWN0LnNpemUoKSApIHsKLQlxV2FybmluZygiV0FSTklORzogbkVmZkNvbHMg
aXMgbm90IGVxdWFsIHRvIGxheW91dHN0cnVjdCEiICk7CiAJZnVsbFJlY2FsYygpOwogCW5FZmZD
b2xzID0gdGFibGUtPm51bUVmZkNvbHMoKTsKICAgICB9CkluZGV4OiByZW5kZXJpbmcvcmVuZGVy
X2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfZm9ybS5jcHAJKHJldmlz
aW9uIDEyNDY2KQorKysgcmVuZGVyaW5nL3JlbmRlcl9mb3JtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsOCArMjgsNiBAQAogI2luY2x1ZGUgPGtsb2NhbGUuaD4KICNpbmNsdWRlIDxrY3Vyc29y
Lmg+CiAKLSNpbmNsdWRlIDxxc3R5bGUuaD4KLQogI2luY2x1ZGUgImhlbHBlci5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVu
dEltcGwuaCIKQEAgLTk2Miw3ICs5NjAsNyBAQAogICAgICAgICAgICAgICAgIGZpcnN0T3B0aW9u
ID0gaTsKICAgICAgICAgICAgIH0KIAotICAgICAgICBRX0FTU0VSVChmaXJzdE9wdGlvbiA9PSBs
aXN0SXRlbXMuc2l6ZSgpIHx8IGZvdW5kKTsKKyAgICAgICAgYXNzZXJ0KGZpcnN0T3B0aW9uID09
IGxpc3RJdGVtcy5zaXplKCkgfHwgZm91bmQpOwogICAgIH0KIAogICAgIG1fc2VsZWN0aW9uQ2hh
bmdlZCA9IGZhbHNlOwpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBy
ZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2NSw4ICs5NjUs
OCBAQAogICAgICAgICBJbnRQb2ludEFycmF5IHF1YWQoNCk7CiAgICAgICAgIHAtPnNldFBlbihQ
ZW46Ok5vUGVuKTsKICAgICAgICAgcC0+c2V0QnJ1c2goYyk7Ci0gICAgICAgIFFfQVNTRVJUKHgy
Pj14MSk7Ci0gICAgICAgIFFfQVNTRVJUKHkyPj15MSk7CisgICAgICAgIGFzc2VydCh4Mj49eDEp
OworICAgICAgICBhc3NlcnQoeTI+PXkxKTsKICAgICAgICAgaWYgKGFkamJ3MT09MCAmJiBhZGpi
dzIgPT0gMCkKICAgICAgICAgICB7CiAgICAgICAgICAgICBwLT5kcmF3UmVjdCh4MSx5MSx4Mi14
MSx5Mi15MSk7CkluZGV4OiByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBy
ZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYs
NiBAQAogI2luY2x1ZGUgInZpc2libGVfcG9zaXRpb24uaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4K
ICNpbmNsdWRlIDxrZGVidWcuaD4KLSNpbmNsdWRlIDxxYXBwbGljYXRpb24uaD4KICNpbmNsdWRl
IDxxZXZlbnQuaD4KICNpbmNsdWRlIDxxcGFpbnRlci5oPgogI2luY2x1ZGUgPHF3aWRnZXQuaD4K
SW5kZXg6IFdlYkNvcmUrU1ZHL0tET01TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZStTVkcvS0RPTVNldHRpbmdzLmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBXZWJDb3JlK1NWRy9L
RE9NU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsOSArMTY1LDggQEAKICAgICAg
ICAgaG9zdF9wYXJ0LnJlbW92ZSgwLGRvdF9pZHgpOwogICAgICAgICBpdCA9IHBvbGljaWVzLmZp
bmQoaG9zdF9wYXJ0KTsKICAgICAgICAgCi0gICAgICAgIFFfQVNTRVJUKG5vdGZvdW5kID09IHBv
bGljaWVzLmVuZCgpKTsKLSAgICAgICAgaWYoaXQgIT0gbm90Zm91bmQpCi0gICAgICAgIHsKKyAg
ICAgICAgYXNzZXJ0KG5vdGZvdW5kID09IHBvbGljaWVzLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0
ICE9IG5vdGZvdW5kKSB7CiAjaWYgREVCVUdfU0VUVElOR1MgPiAwCiAgICAgICAgICAgICBrZERl
YnVnKCkgPDwgInBhcnRpYWwgbWF0Y2giIDw8IGVuZGw7CiAgICAgICAgICAgICAoKml0KS5kdW1w
KGhvc3RfcGFydCk7CkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MjQ2NikKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtOTQsNiArOTQsOCBAQAogCQk3RTZGRUVEODA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29y
ZVNjcmlwdERlYnVnZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTZGRUVENjA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0U2
RkVFRDkwODk4NTgyMzAwQzQ0QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFNkZFRUQ3MDg5ODU4MjMw
MEM0NEMzRiAvKiBXZWJDb3JlU2NyaXB0RGVidWdnZXIubW0gKi87IH07CiAJCTkzN0EzNkE3MDk3
RTJFMzIwMEU0RUUyRiAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzdBMzZBNjA5N0UyRTMyMDBFNEVFMkYg
LyogVXNlckFnZW50U3R5bGVTaGVldHMuY3BwICovOyB9OworCQk5Mzg1Rjc2MjA5OEQ5QzMxMDBE
OTBEMjQgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5Mzg1Rjc2MTA5OEQ5QzMxMDBEOTBEMjQgLyogU2NyZWVuLmggKi87IH07CisJCTkz
ODVGNzc0MDk4RDlDQjkwMEQ5MEQyNCAvKiBTY3JlZW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzg1Rjc3MzA5OEQ5Q0I5MDBEOTBEMjQgLyogU2Ny
ZWVuLm1tICovOyB9OwogCQk5Mzk4ODVDMzA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzk4ODVD
MTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi87IH07CiAJCTkzOTg4NUM0MDhC
N0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzk4ODVDMjA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1l
cy5oICovOyB9OwogCQk5M0U2MkQ5QTA5ODVGNDE2MDBFMUI1RTMgLyogU3lzdGVtVGltZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2MkQ5ODA5
ODVGNDE2MDBFMUI1RTMgLyogU3lzdGVtVGltZS5jcHAgKi87IH07CkBAIC0xNDAsNyArMTQyLDYg
QEAKIAkJOTNGMTk5MUYwODI0NUU1OTAwMUU5QUJDIC8qIGRvbV90ZXh0aW1wbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QyRkUwMkRFNDQ3NjAx
ODYzNUNBIC8qIGRvbV90ZXh0aW1wbC5oICovOyB9OwogCQk5M0YxOTkyMDA4MjQ1RTU5MDAxRTlB
QkMgLyogZG9tX3htbGltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1MjNEMzAwMDJERTQ0NzYwMTg2MzVDQSAvKiBkb21feG1saW1wbC5oICovOyB9
OwogCQk5M0YxOTkyMTA4MjQ1RTU5MDAxRTlBQkMgLyogeG1sX3Rva2VuaXplci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMEEwMkRFNDQ3NjAx
ODYzNUNBIC8qIHhtbF90b2tlbml6ZXIuaCAqLzsgfTsKLQkJOTNGMTk5MjIwODI0NUU1OTAwMUU5
QUJDIC8qIEtXUUFwcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTg3ODY3NjAyREUzQjg2MDFFQTQxMjIgLyogS1dRQXBwbGljYXRpb24u
aCAqLzsgfTsKIAkJOTNGMTk5MjcwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUJ1ZmZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2N0MwMkRFM0I4
NjAxRUE0MTIyIC8qIEtXUUJ1ZmZlci5oICovOyB9OwogCQk5M0YxOTkyOTA4MjQ1RTU5MDAxRTlB
QkMgLyogS1dRQ1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU4Nzg2ODMwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUUNTdHJpbmcuaCAqLzsgfTsK
IAkJOTNGMTk5MkEwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUNoYXJzZXRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODRDQzAyREUzNzU5MDFFQTQx
MjIgLyogS1dRQ2hhcnNldHMuaCAqLzsgfTsKQEAgLTE2Nyw3ICsxNjgsNiBAQAogCQk5M0YxOTk1
NTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0pvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2NEEwMkRFM0E5QTAxRUE0MTIyIC8qIEtXUUtKb2Iu
aCAqLzsgfTsKIAkJOTNGMTk5NTYwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtKb2JDbGFzc2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODY0QjAy
REUzQTlBMDFFQTQxMjIgLyogS1dRS0pvYkNsYXNzZXMuaCAqLzsgfTsKIAkJOTNGMTk5NUIwODI0
NUU1OTAwMUU5QUJDIC8qIEtXUUtMb2NhbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NUZBMDJERTM4MjAwMUVBNDEyMiAvKiBLV1FLTG9jYWxl
LmggKi87IH07Ci0JCTkzRjE5OTVFMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLUGFydHNFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2Njkw
MkRFM0IzMjAxRUE0MTIyIC8qIEtXUUtQYXJ0c0V2ZW50LmggKi87IH07CiAJCTkzRjE5OTYwMDgy
NDVFNTkwMDFFOUFCQyAvKiBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjZCMDJERTNCMzIwMUVBNDEy
MiAvKiBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIuaCAqLzsgfTsKIAkJOTNGMTk5NjMwODI0NUU1
OTAwMUU5QUJDIC8qIEtXUUtTU0xLZXlHZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NjYyMDJERTNCMTEwMUVBNDEyMiAvKiBLV1FLU1NMS2V5
R2VuLmggKi87IH07CiAJCTkzRjE5OTY3MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLVVJMLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODYwMjAyREUz
ODIwMDFFQTQxMjIgLyogS1dRS1VSTC5oICovOyB9OwpAQCAtMTk1LDcgKzE5NSw2IEBACiAJCTkz
RjE5OTkyMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTb3J0ZWRMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZCNzAyREUzQjg2MDFFQTQxMjIg
LyogS1dRU29ydGVkTGlzdC5oICovOyB9OwogCQk5M0YxOTk5MzA4MjQ1RTU5MDAxRTlBQkMgLyog
S1dRU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNTg3ODZCOTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU3RyaW5nLmggKi87IH07CiAJCTkzRjE5
OTk0MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZCQTAyREUzQjg2MDFFQTQxMjIgLyog
S1dRU3RyaW5nTGlzdC5oICovOyB9OwotCQk5M0YxOTk5NTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NkJCMDJERTNCODYwMUVBNDEyMiAvKiBLV1FTdHlsZS5oICovOyB9OwogCQk5M0YxOTk5NzA4
MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dEFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTM1MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FUZXh0
QXJlYS5oICovOyB9OwogCQk5M0YxOTk5ODA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dENvZGVj
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODZC
RDAyREUzQjg2MDFFQTQxMjIgLyogS1dRVGV4dENvZGVjLmggKi87IH07CiAJCTkzRjE5OTk5MDgy
NDVFNTkwMDFFOUFCQyAvKiBLV1FUZXh0RWRpdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2QkUwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVRleHRF
ZGl0LmggKi87IH07CkBAIC0yNzgsNyArMjc3LDYgQEAKIAkJOTNGMTlBMDkwODI0NUU1OTAwMUU5
QUJDIC8qIHNvdXRoV2VzdFJlc2l6ZUN1cnNvci50aWZmIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEMwRkEyQzA1MkI5NjZEMDAwNDQwQTEgLyogc291
dGhXZXN0UmVzaXplQ3Vyc29yLnRpZmYgKi87IH07CiAJCTkzRjE5QTBBMDgyNDVFNTkwMDFFOUFC
QyAvKiB3YWl0Q3Vyc29yLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg0QzBGQTJEMDUyQjk2NkQwMDA0NDBBMSAvKiB3YWl0Q3Vyc29yLnRpZmYg
Ki87IH07CiAJCTkzRjE5QTBCMDgyNDVFNTkwMDFFOUFCQyAvKiB3ZXN0UmVzaXplQ3Vyc29yLnRp
ZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QzBG
QTJFMDUyQjk2NkQwMDA0NDBBMSAvKiB3ZXN0UmVzaXplQ3Vyc29yLnRpZmYgKi87IH07Ci0JCTkz
RjE5QTBEMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FBcHBsaWNhdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NEM0MDJERTM3NTgwMUVBNDEy
MiAvKiBLV1FBcHBsaWNhdGlvbi5tbSAqLzsgfTsKIAkJOTNGMTlBMTAwODI0NUU1OTAwMUU5QUJD
IC8qIEtXUUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNTg3ODRDODAyREUzNzU5MDFFQTQxMjIgLyogS1dRQnVmZmVyLmNwcCAqLzsgfTsK
IAkJOTNGMTlBMTMwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUNoYXJzZXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NENEMDJERTM3NTkwMUVB
NDEyMiAvKiBLV1FDaGFyc2V0cy5jcHAgKi87IH07CiAJCTkzRjE5QTE3MDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FDb21ib0JveC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1ODc4NEQyMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FDb21ib0JveC5tbSAqLzsg
fTsKQEAgLTI4OCw3ICsyODYsNiBAQAogCQk5M0YxOUExRTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
Rm9udC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NEUwMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FGb250Lm1tICovOyB9OwogCQk5M0YxOUExRjA4
MjQ1RTU5MDAxRTlBQkMgLyogS1dRRm9udE1ldHJpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODRFMjAyREUzNzU5MDFFQTQxMjIgLyogS1dR
Rm9udE1ldHJpY3MubW0gKi87IH07CiAJCTkzRjE5QTIwMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FG
cmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
ODc4NEU0MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FGcmFtZS5tbSAqLzsgfTsKLQkJOTNGMTlBMjEw
ODI0NUU1OTAwMUU5QUJDIC8qIEtXUUdsb2JhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODRFNTAyREUzNzU5MDFFQTQxMjIgLyogS1dRR2xv
YmFsLmNwcCAqLzsgfTsKIAkJOTNGMTlBMjIwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUd1YXJkZWRQ
dHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4
Nzg0RTYwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUd1YXJkZWRQdHIuY3BwICovOyB9OwogCQk5M0Yx
OUEyNDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0NvbmZpZ0Jhc2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3ODRFRDAyREUzNzU5MDFFQTQxMjIg
LyogS1dRS0NvbmZpZ0Jhc2UubW0gKi87IH07CiAJCTkzRjE5QTI1MDgyNDVFNTkwMDFFOUFCQyAv
KiBLV1FLQ29va2llSmFyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU4Nzg0RUYwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUtDb29raWVKYXIubW0gKi87
IH07CkBAIC0yOTksNyArMjk2LDYgQEAKIAkJOTNGMTlBMzAwODI0NUU1OTAwMUU5QUJDIC8qIEtX
UUtKb2JDbGFzc2VzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjU4Nzg1MDEwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUtKb2JDbGFzc2VzLm1tICovOyB9
OwogCQk5M0YxOUEzMTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTG9hZGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg1MDMwMkRFMzc1OTAxRUE0
MTIyIC8qIEtXUUxvYWRlci5tbSAqLzsgfTsKIAkJOTNGMTlBMzIwODI0NUU1OTAwMUU5QUJDIC8q
IEtXUUtMb2NhbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTg3ODUwNDAyREUzNzU5MDFFQTQxMjIgLyogS1dRS0xvY2FsZS5tbSAqLzsgfTsKLQkJ
OTNGMTlBMzMwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtQYXJ0c0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4NTA4MDJERTM3NTkwMUVB
NDEyMiAvKiBLV1FLUGFydHNFdmVudC5jcHAgKi87IH07CiAJCTkzRjE5QTM2MDgyNDVFNTkwMDFF
OUFCQyAvKiBLV1FLVVJMLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU4Nzg1MEUwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUtVUkwubW0gKi87IH07CiAJ
CTkzRjE5QTM4MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FLV2luTW9kdWxlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg1MTAwMkRFMzc1OTAxRUE0
MTIyIC8qIEtXUUtXaW5Nb2R1bGUubW0gKi87IH07CiAJCTkzRjE5QTNBMDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FMaW5lRWRpdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1ODc4NTEyMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FMaW5lRWRpdC5tbSAqLzsg
fTsKQEAgLTM2Nyw3ICszNjMsNiBAQAogCQk5M0YxOUFCQzA4MjQ1RTU5MDAxRTlBQkMgLyogeG1s
X3Rva2VuaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0EgLyogeG1sX3Rva2VuaXplci5jcHAgKi87IH07
CiAJCTkzRjE5QUJFMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlQ2FjaGUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNUIyQTRGRDAyRTIyMjBGMDE4
NjM1Q0IgLyogV2ViQ29yZUNhY2hlLm1tICovOyB9OwogCQk5M0YxOUFCRjA4MjQ1RTU5MDAxRTlB
QkMgLyogV2ViQ29yZUphdmFTY3JpcHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNUIyQTUyQzAyRTIyNTczMDE4NjM1Q0IgLyogV2ViQ29yZUphdmFT
Y3JpcHQubW0gKi87IH07Ci0JCTkzRjE5QUMxMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTdHlsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTdCMEVF
MDAyRUJDNzhCMDE4NjM1Q0EgLyogS1dRU3R5bGUuY3BwICovOyB9OwogCQk5M0YxOUFDMjA4MjQ1
RTU5MDAxRTlBQkMgLyogV2ViQ29yZVNldHRpbmdzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU2NUFFODYwMkVDQTU4MzAxODYzNUNBIC8qIFdlYkNv
cmVTZXR0aW5ncy5tbSAqLzsgfTsKIAkJOTNGMTlBQzQwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNp
Z25hbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NTExN0JDQTAyRjlGRkVGMDE4NjM1Q0UgLyogS1dRU2lnbmFsLmNwcCAqLzsgfTsKIAkJOTNGMTlB
QzUwODI0NUU1OTAwMUU5QUJDIC8qIEtXUVNsb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUxMTdCQ0MwMkY5RkZFRjAxODYzNUNFIC8qIEtXUVNs
b3QuY3BwICovOyB9OwpAQCAtMTIxMSw2ICsxMjA2LDggQEAKIAkJOTM3OEQ5RjkwNzY0MEE0NjAw
NEI5N0JGIC8qIG1hcmt1cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IG1hcmt1cC5jcHA7IHBhdGggPSBlZGl0aW5nL21hcmt1cC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk5Mzc4RDlGQTA3NjQwQTQ2MDA0Qjk3QkYgLyogbWFya3VwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbWFya3VwLmg7IHBhdGggPSBlZGl0aW5n
L21hcmt1cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJOTM3QTM2QTYwOTdFMkUzMjAwRTRFRTJGIC8qIFVzZXJBZ2VudFN0eWxlU2hl
ZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJBZ2VudFN0
eWxlU2hlZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM4NUY3NjEwOThE
OUMzMTAwRDkwRDI0IC8qIFNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTY3JlZW4uaDsgcGF0aCA9IHBsYXRmb3JtL1NjcmVlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5Mzg1Rjc3MzA5OEQ5Q0I5MDBEOTBEMjQgLyogU2NyZWVuLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gU2NyZWVuLm1tOyBwYXRoID0gcGxhdGZv
cm0vbWFjL1NjcmVlbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM4NjFEREYw
MzJDMkU1MjAwODYzNUNFIC8qIEtXUUxvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FMb2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5Mzg2MURFMDAzMkMyRTUy
MDA4NjM1Q0UgLyogS1dRTG9nZ2luZy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMub2JqYzsgcGF0aCA9IEtXUUxvZ2dpbmcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkzOTRFMEE0MDNBQTVCQkUwMDg2
MzVDRSAvKiBLV1FQYWdlU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBLV1FQYWdlU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0yMTE0LDggKzIxMTEsNiBAQAogCQlG
NTYyMzRFMDAzMDI2RDczMDE2MjlCNDcgLyogV2ViQ29yZUVuY29kaW5ncy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVF
bmNvZGluZ3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTY1QUU4NTAyRUNBNTgzMDE4NjM1Q0EgLyogV2ViQ29yZVNldHRpbmdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJRjU2NUFFODYwMkVDQTU4MzAxODYzNUNBIC8qIFdlYkNvcmVTZXR0
aW5ncy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkNvcmVTZXR0aW5ncy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1N0IwRUUwMDJFQkM3OEIwMTg2MzVDQSAv
KiBLV1FTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBLV1FTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTg3ODRDNDAyREUzNzU4MDFFQTQxMjIgLyog
S1dRQXBwbGljYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBLV1FBcHBsaWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NEM4MDJERTM3NTkw
MUVBNDEyMiAvKiBLV1FCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1dRQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NENDMDJERTM3NTkw
MUVBNDEyMiAvKiBLV1FDaGFyc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBLV1FDaGFyc2V0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg0Q0QwMkRFMzc1OTAxRUE0
MTIyIC8qIEtXUUNoYXJzZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtXUUNoYXJzZXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0yMTI4LDcgKzIxMjMsNiBA
QAogCQlGNTg3ODRFMjAyREUzNzU5MDFFQTQxMjIgLyogS1dRRm9udE1ldHJpY3MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FG
b250TWV0cmljcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUY1ODc4NEUzMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FGcmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FGcmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJRjU4Nzg0RTQwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUZyYW1lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1dRRnJhbWUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwotCQlGNTg3ODRFNTAyREUzNzU5MDFFQTQxMjIgLyogS1dRR2xvYmFsLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtXUUdsb2JhbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQlGNTg3ODRFNjAyREUzNzU5MDFFQTQxMjIgLyogS1dRR3VhcmRlZFB0ci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLV1FHdWFy
ZGVkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1ODc4NEVEMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLQ29uZmlnQmFzZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEtXUUtDb25maWdCYXNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg0RUUwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUtD
b29raWVKYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gS1dRS0Nvb2tpZUphci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTIxNDAsNyArMjEzNCw2IEBACiAJCUY1ODc4NTAxMDJE
RTM3NTkwMUVBNDEyMiAvKiBLV1FLSm9iQ2xhc3Nlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUtKb2JDbGFzc2VzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
RjU4Nzg1MDMwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUxvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUxvYWRlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CUY1ODc4NTA0MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLTG9jYWxlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gS1dRS0xvY2FsZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
Ci0JCUY1ODc4NTA4MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FLUGFydHNFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLV1FLUGFy
dHNFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODUwRTAyREUzNzU5MDFFQTQxMjIgLyogS1dRS1VSTC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtX
UUtVUkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQlGNTg3ODUxMDAyREUzNzU5MDFFQTQxMjIgLyogS1dRS1dpbk1vZHVsZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEtXUUtXaW5Nb2R1bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODUxMjAyREUzNzU5MDFFQTQxMjIgLyogS1dRTGluZUVk
aXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBLV1FMaW5lRWRpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0yMTk3LDkgKzIxOTAsNyBAQAogCQlGNTg3ODY0QTAy
REUzQTlBMDFFQTQxMjIgLyogS1dRS0pvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FLSm9iLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODY0QjAyREUzQTlBMDFFQTQx
MjIgLyogS1dRS0pvYkNsYXNzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gS1dRS0pvYkNsYXNzZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEwMUVB
NDEyMiAvKiBLV1FLU1NMS2V5R2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEtXUUtTU0xLZXlHZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07Ci0JCUY1ODc4NjY5MDJERTNCMzIwMUVB
NDEyMiAvKiBLV1FLUGFydHNFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBLV1FLUGFydHNFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2NkIwMkRFM0IzMjAx
RUE0MTIyIC8qIEtXUUtQYXJ0c0hpc3RvcnlQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FLUGFydHNIaXN0b3J5UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
Ci0JCUY1ODc4Njc2MDJERTNCODYwMUVBNDEyMiAvKiBLV1FBcHBsaWNhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBwYXRo
ID0gS1dRQXBwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NjdDMDJERTNCODYwMUVBNDEyMiAvKiBLV1FCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
S1dRQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4MDAyREUzQjg2MDFFQTQxMjIgLyogS1dRQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FD
b2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODY4MjAyREUzQjg2MDFFQTQxMjIgLyogS1dRQ29tYm9Cb3guaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRQ29t
Ym9Cb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CkBAIC0yMjI2LDcgKzIyMTcsNiBAQAogCQlGNTg3ODZCNzAyREUzQjg2MDFFQTQxMjIg
LyogS1dRU29ydGVkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLV1FTb3J0ZWRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODZCOTAyREUzQjg2MDFFQTQxMjIg
LyogS1dRU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEtXUVN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2QkEwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVN0
cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gS1dRU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKLQkJRjU4Nzg2QkIwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVN0
eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEtXUVN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODZCRDAyREUzQjg2MDFFQTQxMjIgLyogS1dRVGV4dENvZGVjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUVRl
eHRDb2RlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJRjU4Nzg2QkUwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVRleHRFZGl0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUVRleHRF
ZGl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlGNTg3ODZCRjAyREUzQjg2MDFFQTQxMjIgLyogS1dRVGV4dFN0cmVhbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FUZXh0U3Ry
ZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwpAQCAtMzE1OCw2ICszMTQ4LDggQEAKIAkJCQlCQ0ZCMkU4MzA5NzlGRDRGMDBCQTcwM0Qg
LyogU2hhcmVkLmggKi8sCiAJCQkJOTNFNjJEOTgwOTg1RjQxNjAwRTFCNUUzIC8qIFN5c3RlbVRp
bWUuY3BwICovLAogCQkJCTkzRTYyRDk5MDk4NUY0MTYwMEUxQjVFMyAvKiBTeXN0ZW1UaW1lLmgg
Ki8sCisJCQkJOTM4NUY3NjEwOThEOUMzMTAwRDkwRDI0IC8qIFNjcmVlbi5oICovLAorCQkJCTkz
ODVGNzczMDk4RDlDQjkwMEQ5MEQyNCAvKiBTY3JlZW4ubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9
IHBsYXRmb3JtOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM2OTIsNyArMzY4NCw2
IEBACiAJCUY1ODc4NjFDMDJERTM4MjIwMUVBNDEyMiAvKiBrZGVjb3JlICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGNTg3ODRDNDAyREUzNzU4MDFFQTQx
MjIgLyogS1dRQXBwbGljYXRpb24ubW0gKi8sCiAJCQkJRjU4Nzg1RjMwMkRFMzgyMDAxRUE0MTIy
IC8qIEtXUUtDb25maWdCYXNlLmggKi8sCiAJCQkJRjU4Nzg0RUQwMkRFMzc1OTAxRUE0MTIyIC8q
IEtXUUtDb25maWdCYXNlLm1tICovLAogCQkJCUY1ODc4NUY0MDJERTM4MjAwMUVBNDEyMiAvKiBL
V1FLRGVidWcuaCAqLywKQEAgLTM3MzAsNyArMzcyMSw2IEBACiAJCUY1ODc4NjVGMDJERTNBOUMw
MUVBNDEyMiAvKiBraW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUY1ODc4NEU1MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FHbG9iYWwuY3BwICovLAogCQkJ
CUY1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBLV1FLSU9HbG9iYWwuaCAqLywKIAkJCQlGNTg3
ODY0QTAyREUzQTlBMDFFQTQxMjIgLyogS1dRS0pvYi5oICovLAogCQkJCUY1ODc4NjRCMDJERTNB
OUEwMUVBNDEyMiAvKiBLV1FLSm9iQ2xhc3Nlcy5oICovLApAQCAtMzc0NCw4ICszNzM0LDYgQEAK
IAkJRjU4Nzg2NzUwMkRFM0IzMzAxRUE0MTIyIC8qIGtwYXJ0cyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRjU4Nzg2NjkwMkRFM0IzMjAxRUE0MTIyIC8q
IEtXUUtQYXJ0c0V2ZW50LmggKi8sCi0JCQkJRjU4Nzg1MDgwMkRFMzc1OTAxRUE0MTIyIC8qIEtX
UUtQYXJ0c0V2ZW50LmNwcCAqLywKIAkJCQlGNTg3ODY2QjAyREUzQjMyMDFFQTQxMjIgLyogS1dR
S1BhcnRzSGlzdG9yeVByb3ZpZGVyLmggKi8sCiAJCQkJRjU4Nzg0RjYwMkRFMzc1OTAxRUE0MTIy
IC8qIEtXUUtIaXN0b3J5UHJvdmlkZXIubW0gKi8sCiAJCQkpOwpAQCAtMzc1NSw3ICszNzQzLDYg
QEAKIAkJRjU4Nzg3MTgwMkRFM0I4ODAxRUE0MTIyIC8qIHF0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGNTg3ODY3NjAyREUzQjg2MDFFQTQxMjIgLyog
S1dRQXBwbGljYXRpb24uaCAqLywKIAkJCQlGNTg3ODY3QzAyREUzQjg2MDFFQTQxMjIgLyogS1dR
QnVmZmVyLmggKi8sCiAJCQkJRjU4Nzg0QzgwMkRFMzc1OTAxRUE0MTIyIC8qIEtXUUJ1ZmZlci5j
cHAgKi8sCiAJCQkJRjU4Nzg2ODAwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUUNvbGxlY3Rpb24uaCAq
LywKQEAgLTM4MTAsOCArMzc5Nyw2IEBACiAJCQkJRjU4Nzg1MzEwMkRFMzc1OTAxRUE0MTIyIC8q
IEtXUVN0cmluZy5tbSAqLywKIAkJCQlGNTg3ODZCQTAyREUzQjg2MDFFQTQxMjIgLyogS1dRU3Ry
aW5nTGlzdC5oICovLAogCQkJCUY1ODc4NTMyMDJERTM3NTkwMUVBNDEyMiAvKiBLV1FTdHJpbmdM
aXN0Lm1tICovLAotCQkJCUY1ODc4NkJCMDJERTNCODYwMUVBNDEyMiAvKiBLV1FTdHlsZS5oICov
LAotCQkJCUY1N0IwRUUwMDJFQkM3OEIwMTg2MzVDQSAvKiBLV1FTdHlsZS5jcHAgKi8sCiAJCQkJ
RjU4Nzg2QkQwMkRFM0I4NjAxRUE0MTIyIC8qIEtXUVRleHRDb2RlYy5oICovLAogCQkJCUY1ODc4
NTM3MDJERTM3NTkwMUVBNDEyMiAvKiBLV1FUZXh0Q29kZWMuY3BwICovLAogCQkJCUY1ODc4NkJF
MDJERTNCODYwMUVBNDEyMiAvKiBLV1FUZXh0RWRpdC5oICovLApAQCAtMzg4Miw3ICszODY3LDYg
QEAKIAkJCQk5M0YxOTkxRjA4MjQ1RTU5MDAxRTlBQkMgLyogZG9tX3RleHRpbXBsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxOTkyMDA4MjQ1RTU5MDAxRTlBQkMgLyogZG9tX3htbGltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OTIxMDgyNDVFNTkwMDFFOUFCQyAvKiB4bWxfdG9rZW5p
emVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5M0YxOTkyMjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
QXBwbGljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTI3MDgyNDVFNTkwMDFFOUFC
QyAvKiBLV1FCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OTI5MDgyNDVFNTkwMDFF
OUFCQyAvKiBLV1FDU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTkyQTA4MjQ1RTU5
MDAxRTlBQkMgLyogS1dRQ2hhcnNldHMuaCBpbiBIZWFkZXJzICovLApAQCAtMzkwOSw3ICszODkz
LDYgQEAKIAkJCQk5M0YxOTk1NTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0pvYi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGMTk5NTYwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtKb2JDbGFzc2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk1QjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0xvY2Fs
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTNGMTk5NUUwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtQ
YXJ0c0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk2MDA4MjQ1RTU5MDAxRTlBQkMg
LyogS1dRS1BhcnRzSGlzdG9yeVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk2
MzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS1NTTEtleUdlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNGMTk5NjcwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtVUkwuaCBpbiBIZWFkZXJzICovLApAQCAt
MzkzNyw3ICszOTIwLDYgQEAKIAkJCQk5M0YxOTk5MjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU29y
dGVkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OTMwODI0NUU1OTAwMUU5QUJDIC8q
IEtXUVN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OTQwODI0NUU1OTAwMUU5QUJD
IC8qIEtXUVN0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OTk1MDgyNDVFNTkw
MDFFOUFCQyAvKiBLV1FTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OTcwODI0NUU1
OTAwMUU5QUJDIC8qIEtXUVRleHRBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTk5ODA4
MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dENvZGVjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Yx
OTk5OTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRVGV4dEVkaXQuaCBpbiBIZWFkZXJzICovLApAQCAt
NDM1OCw2ICs0MzQwLDcgQEAKIAkJCQlCQ0M4RDE3NDA5ODgzMDEyMDAxNDBCRjIgLyogUGVuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzA3NTk4NjA5ODg2MUE0MDA0MDdCNDggLyogQnJ1c2guaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRDc1QUJDMDk4OUE0NDYwMDNFMjhERiAvKiBJbWFnZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTM4NUY3NjIwOThEOUMzMTAwRDkwRDI0IC8qIFNjcmVlbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC01MDA3LDcgKzQ5OTAsNiBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAo
Ci0JCQkJOTNGMTlBMEQwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUFwcGxpY2F0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNGMTlBMTAwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUJ1ZmZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUExMzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRQ2hhcnNl
dHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMTcwODI0NUU1OTAwMUU5QUJDIC8qIEtX
UUNvbWJvQm94Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC01MDE3LDcgKzQ5OTksNiBAQAogCQkJCTkz
RjE5QTFFMDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FGb250Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTNGMTlBMUYwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUZvbnRNZXRyaWNzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTNGMTlBMjAwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUZyYW1lLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJOTNGMTlBMjEwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUdsb2JhbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5M0YxOUEyMjA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRR3VhcmRlZFB0
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUEyNDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
S0NvbmZpZ0Jhc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUEyNTA4MjQ1RTU5MDAxRTlB
QkMgLyogS1dRS0Nvb2tpZUphci5tbSBpbiBTb3VyY2VzICovLApAQCAtNTAyOCw3ICs1MDA5LDYg
QEAKIAkJCQk5M0YxOUEzMDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRS0pvYkNsYXNzZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5M0YxOUEzMTA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRTG9hZGVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMzIwODI0NUU1OTAwMUU5QUJDIC8qIEtXUUtMb2Nh
bGUubW0gaW4gU291cmNlcyAqLywKLQkJCQk5M0YxOUEzMzA4MjQ1RTU5MDAxRTlBQkMgLyogS1dR
S1BhcnRzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBMzYwODI0NUU1OTAwMUU5
QUJDIC8qIEtXUUtVUkwubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUEzODA4MjQ1RTU5MDAx
RTlBQkMgLyogS1dRS1dpbk1vZHVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTNBMDgy
NDVFNTkwMDFFOUFCQyAvKiBLV1FMaW5lRWRpdC5tbSBpbiBTb3VyY2VzICovLApAQCAtNTA5Niw3
ICs1MDc2LDYgQEAKIAkJCQk5M0YxOUFCQzA4MjQ1RTU5MDAxRTlBQkMgLyogeG1sX3Rva2VuaXpl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUFCRTA4MjQ1RTU5MDAxRTlBQkMgLyogV2Vi
Q29yZUNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlBQkYwODI0NUU1OTAwMUU5QUJD
IC8qIFdlYkNvcmVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJOTNGMTlBQzEwODI0
NUU1OTAwMUU5QUJDIC8qIEtXUVN0eWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUMy
MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlU2V0dGluZ3MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxOUFDNDA4MjQ1RTU5MDAxRTlBQkMgLyogS1dRU2lnbmFsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzRjE5QUM1MDgyNDVFNTkwMDFFOUFCQyAvKiBLV1FTbG90LmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtNTQ4MCw2ICs1NDU5LDcgQEAKIAkJCQkxQURCNTY5OTA5ODgyN0FEMDAzMkVFRTIg
LyogSlNFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENzVBQkUwOTg5QTQ1QzAwM0Uy
OERGIC8qIEltYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzN0Y2M0EwOTg4RUUzMzAwRDA1
RTkwIC8qIEpTQ29yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5Mzg1Rjc3NDA5OEQ5Q0I5MDBE
OTBEMjQgLyogU2NyZWVuLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBrY2FudmFzL0tDYW52YXNJ
dGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBrY2FudmFzL0tDYW52YXNJdGVtLmNwcAkocmV2aXNpb24g
MTI0NjYpCisrKyBrY2FudmFzL0tDYW52YXNJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQAogLy8gUmVuZGVyUGF0aAogUmVuZGVyUGF0aDo6UmVuZGVyUGF0aChraHRtbDo6
UmVuZGVyU3R5bGUgKnN0eWxlLCBLU1ZHOjpTVkdTdHlsZWRFbGVtZW50SW1wbCAqbm9kZSkgOiBS
ZW5kZXJPYmplY3QoKERPTTo6Tm9kZUltcGwgKilub2RlKSwgZChuZXcgUHJpdmF0ZSgpKQogewot
ICAgIFFfQVNTRVJUKHN0eWxlICE9IDApOworICAgIGFzc2VydChzdHlsZSAhPSAwKTsKIH0KIAog
UmVuZGVyUGF0aDo6flJlbmRlclBhdGgoKQpJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qCShyZXZpc2lvbiAxMjQ2NikKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1MSwxMCArMTUxLDYgQEAKIAkJCU5hbWU9
Imt3cSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxrd3FcS1dR
QXBwbGljYXRpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXC4uXGt3cVxLV1FCdWZmZXIuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
QEAgLTIzOSwxMCArMjM1LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5ca3dxXEtXUUdsb2JhbC5jcHAiDQotCQkJCT4NCi0JCQk8L0Zp
bGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxrd3FcS1dRR3VhcmRlZFB0
ci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzE5LDE0ICszMTEsNiBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxrd3FcS1dR
S1BhcnRzRXZlbnQuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ca3dxXEtXUUtQYXJ0c0V2ZW50LmgiDQotCQkJCT4NCi0JCQk8L0Zp
bGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxrd3FcS1dRS1BhcnRzSGlz
dG9yeVByb3ZpZGVyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMzk5LDEwICszODMsNiBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwu
Llxrd3FcS1dRUGFpci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5ca3dxXEtXUVBhbGV0dGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CkBAIC01MDcsMTQgKzQ4Nyw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGt3cVxLV1FTdHlsZS5jcHAiDQotCQkJCT4NCi0JCQk8L0Zp
bGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxrd3FcS1dRU3R5bGUuaCIN
Ci0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGt3cVxLV1FUZXh0QXJlYS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IGNzcy9jc3Nw
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxMjQ2
NikKKysrIGNzcy9jc3NwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAzLDE1ICsyNjAz
LDIwIEBACiAgICAgcmV0dXJuIGNvbnRleHQuZmFpbGVkKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
aW50IHl5ZXJyb3IoIGNvbnN0IGNoYXIgKnN0ciApIHsKLSNpZmRlZiBDU1NfREVCVUcKKyNpZiBD
U1NfREVCVUcKKworc3RhdGljIGlubGluZSBpbnQgeXllcnJvcihjb25zdCBjaGFyICpzdHIpCit7
CiAgICAga2REZWJ1ZyggNjA4MCApIDw8ICJDU1MgcGFyc2UgZXJyb3IgIiA8PCBzdHIgPDwgZW5k
bDsKLSNlbHNlCi0gICAgUV9VTlVTRUQoIHN0ciApOwotI2VuZGlmCiAgICAgcmV0dXJuIDE7CiB9
CiAKKyNlbHNlCisKK3N0YXRpYyBpbmxpbmUgaW50IHl5ZXJyb3IoY29uc3QgY2hhciopIHsgcmV0
dXJuIDE7IH0KKworI2VuZGlmCisKICNkZWZpbmUgRU5EX1RPS0VOIDAKIAogI2luY2x1ZGUgImNz
c19ncmFtbWFyLmgiCkluZGV4OiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJyaWRnZS9tYWMvTWFjRnJhbWUubW0JKHJldmlzaW9uIDEyNDY2KQorKysgYnJpZGdlL21hYy9N
YWNGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYsOCArOTYsNiBAQAogCiB1c2luZyBuYW1l
c3BhY2UgS0lPOwogCi11c2luZyBuYW1lc3BhY2UgS1BhcnRzOwotCiBAaW50ZXJmYWNlIE5TT2Jq
ZWN0IChXZWJQbHVnSW4pCiAtIChpZClvYmplY3RGb3JXZWJTY3JpcHQ7CiAtICh2b2lkICopcGx1
Z2luU2NyaXB0YWJsZU9iamVjdDsKQEAgLTE1MDEsNyArMTQ5OSw3IEBACiAKICAgICBkLT5tX21v
dXNlUHJlc3NOb2RlID0gZXZlbnQtPmlubmVyTm9kZSgpOwogICAgIAotICAgIGlmICghcGFzc1dp
ZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoZXZlbnQpKSB7CisgICAgaWYgKCFwYXNzV2lkZ2V0
TW91c2VEb3duRXZlbnRUb1dpZGdldChldmVudCwgZmFsc2UpKSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IGRvIHRoaXMgYXQgdGhlIHN0YXJ0IG9mIG1vdXNlIGRvd24gaGFuZGxpbmcgKGJlZm9yZSBj
YWxsaW5nIGludG8gV2ViQ29yZSksCiAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0
byBkbyBpdCB1bnRpbCB3ZSBrbm93IHdlIGRpZG4ndCBoaXQgYSB3aWRnZXQuCiAgICAgICAgIE5T
VmlldyAqdmlldyA9IGQtPm1fdmlldy0+Z2V0RG9jdW1lbnRWaWV3KCk7CkluZGV4OiBrc3ZnMi9j
c3MvS1NWR0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga3N2ZzIvY3NzL0tTVkdDU1NQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxMjQ2NikKKysrIGtzdmcyL2Nzcy9LU1ZHQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjkzLDIyICsyOTMsMTMgQEAKICAgICBpZih2YWxpZF9wcmltaXRp
dmUpCiAgICAgewogICAgICAgICBpZihpZCAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBxRGVidWcoIiBuZXcgdmFsdWU6IGlkPSVkIiwgaWQpOwogICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKGlkKTsKLSAgICAgICAgfQogICAgICAgICBl
bHNlIGlmKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKQogICAg
ICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKGRvbVN0cmlu
Zyh2YWx1ZS0+c3RyaW5nKSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHZhbHVlLT51
bml0KTsKICAgICAgICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA+PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiAmJiB2YWx1ZS0+dW5pdCA8PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWikK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gcURlYnVnKCIgbmV3IHZhbHVlOiB2YWx1ZT0lLjJm
LCB1bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQpOwogICAgICAgICAgICAgcGFy
c2VkVmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKHZhbHVlLT5mVmFsdWUsIChDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCk7Ci0gICAgICAgIH0KICAgICAg
ICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA+PSBLRE9NQ1NTVmFsdWU6OlFfRU1TKQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBxRGVidWcoIiBuZXcgcXVpcmtzIHZhbHVlOiB2YWx1ZT0lLjJmLCB1
bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQpOwogICAgICAgICAgICAgcGFyc2Vk
VmFsdWUgPSBuZXcgQ1NTUXVpcmtQcmltaXRpdmVWYWx1ZUltcGwodmFsdWUtPmZWYWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpOwotICAgICAgICB9CiAgICAgICAgIHZhbHVlTGlzdC0+
bmV4dCgpOwogICAgICAgICBpZiAodmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgICAg
IGRlbGV0ZSBwYXJzZWRWYWx1ZTsKQEAgLTMzMiwxNyArMzIzLDExIEBACiAgICAgewogICAgICAg
ICB2YWxpZF9wcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGUGVyY2VudCB8
Rk5vbk5lZywgZmFsc2UpOwogICAgICAgICBpZih2YWx1ZS0+aWQgIT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgLy8gcURlYnVnKCIgbmV3IHZhbHVlOiBpZD0lZCIsIGlkKTsKICAgICAgICAg
ICAgIHJldC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwodmFsdWUtPmlkKSk7Ci0g
ICAgICAgIH0KICAgICAgICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1NUUklORykKICAgICAgICAgICAgIHJldC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZUltcGwoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlcykgdmFsdWUtPnVuaXQpKTsKICAgICAgICAgZWxzZSBpZih2YWx1ZS0+dW5pdCA+PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJiB2YWx1ZS0+dW5pdCA8PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0tIWikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gcURlYnVnKCIgbmV3
IHZhbHVlOiB2YWx1ZT0lLjJmLCB1bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQp
OwogICAgICAgICAgICAgcmV0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbCh2YWx1
ZS0+ZlZhbHVlLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQpKTsK
LSAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICBp
Zih2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBLRE9NQ1NTVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVl
LT5pVmFsdWUgPT0gJywnKQogICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKTsK
SW5kZXg6IEZvcndhcmRpbmdIZWFkZXJzL2twYXJ0cy9ldmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEZv
cndhcmRpbmdIZWFkZXJzL2twYXJ0cy9ldmVudC5oCShyZXZpc2lvbiAxMjQ2NikKKysrIEZvcndh
cmRpbmdIZWFkZXJzL2twYXJ0cy9ldmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xICswLDAgQEAK
LSNpbmNsdWRlICJLV1FLUGFydHNFdmVudC5oIgpJbmRleDogRm9yd2FyZGluZ0hlYWRlcnMvcXN0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gRm9yd2FyZGluZ0hlYWRlcnMvcXN0eWxlLmgJKHJldmlzaW9u
IDEyNDY2KQorKysgRm9yd2FyZGluZ0hlYWRlcnMvcXN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEgKzAsMCBAQAotI2luY2x1ZGUgIktXUVN0eWxlLmgiCkluZGV4OiBGb3J3YXJkaW5nSGVhZGVy
cy9xYXBwbGljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBGb3J3YXJkaW5nSGVhZGVycy9xYXBwbGlj
YXRpb24uaAkocmV2aXNpb24gMTI0NjYpCisrKyBGb3J3YXJkaW5nSGVhZGVycy9xYXBwbGljYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSArMCwwIEBACi0jaW5jbHVkZSAiS1dRQXBwbGljYXRp
b24uaCIKSW5kZXg6IGt3cS9LV1FLUGFydHNFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt3cS9LV1FL
UGFydHNFdmVudC5oCShyZXZpc2lvbiAxMjQ2NikKKysrIGt3cS9LV1FLUGFydHNFdmVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgS1dRS1BBUlRTRVZFTlRfSF8KLSNkZWZpbmUgS1dRS1BBUlRTRVZFTlRfSF8KLQotI2luY2x1
ZGUgIktXUUV2ZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBRUGFpbnRl
cjsKLX0KLQotbmFtZXNwYWNlIEtQYXJ0cyB7Ci0KLWNsYXNzIEV2ZW50IDogcHVibGljIFFFdmVu
dCB7Ci1wdWJsaWM6Ci0gICAgRXZlbnQoY29uc3QgY2hhciAqKTsKLSAgICB+RXZlbnQoKTsKLQot
ICAgIHN0YXRpYyBib29sIHRlc3QoY29uc3QgUUV2ZW50ICopOwotICAgIHN0YXRpYyBib29sIHRl
c3QoY29uc3QgUUV2ZW50ICosIGNvbnN0IGNoYXIgKik7Ci0KLXByaXZhdGU6Ci0gICAgY2hhciAq
X25hbWU7Ci0KLSAgICBFdmVudChjb25zdCBFdmVudCAmKTsKLSAgICBFdmVudCAmb3BlcmF0b3I9
KGNvbnN0IEV2ZW50ICYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgS1BhcnRzCi0KLSNlbmRpZgpJ
bmRleDoga3dxL0tXUVdpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt3cS9LV1FXaWRnZXQuaAkocmV2
aXNpb24gMTI0NjYpCisrKyBrd3EvS1dRV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDYgQEAKIGNsYXNzIEtXUVdpZGdldFByaXZhdGU7CiBjbGFzcyBRRXZlbnQ7CiBjbGFzcyBR
UGFsZXR0ZTsKLWNsYXNzIFFTdHlsZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFFQYWludGVyOwpAQCAtMTA3LDkgKzEwNiw2IEBACiAgICAgY29uc3QgUVBhbGV0dGUmIHBhbGV0
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFsZXR0ZShjb25zdCBRUGFsZXR0ZSAm
KTsKICAgICAKLSAgICBRU3R5bGUgJnN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdHlsZShR
U3R5bGUgKik7Ci0gICAgCiAgICAgUUZvbnQgZm9udCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb250KGNvbnN0IFFGb250ICYpOwogICAgIApJbmRleDoga3dxL0tXUVBhaXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBrd3EvS1dRUGFpci5oCShyZXZpc2lvbiAxMjQ2NikKKysrIGt3cS9LV1FQYWly
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2luY2x1ZGUgPHV0aWxpdHk+Ci0KLSNkZWZpbmUgUVBhaXIgc3RkOjpwYWlyCi0jZGVmaW5lIHFN
YWtlUGFpciBzdGQ6Om1ha2VfcGFpcgotCkluZGV4OiBrd3EvS1dRUmVnRXhwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrd3EvS1dRUmVnRXhwLmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBrd3EvS1dRUmVn
RXhwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw2IEBACiAKIFFTdHJpbmcgUVJl
Z0V4cDo6Y2FwKGludCBuKSBjb25zdAogewotICAgIFFfQVNTRVJUKCFkLT5sYXN0U2VhcmNoU3Ry
aW5nLmlzTnVsbCgpKTsKICAgICBjb25zdCBwY3JlX2NoYXIgKnN1YnN0cmluZyA9IE5VTEw7CiAg
ICAgaW50IHN1YnN0cmluZ0xlbmd0aCA9IHBjcmVfZ2V0X3N1YnN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQxNl90ICo+KGQtPmxhc3RNYXRjaFN0cmluZy51bmljb2RlKCkpLCBkLT5s
YXN0TWF0Y2hPZmZzZXRzLCBkLT5sYXN0TWF0Y2hDb3VudCwgbiwgJnN1YnN0cmluZyk7CiAgICAg
aWYgKHN1YnN0cmluZ0xlbmd0aCA+IDApIHsKSW5kZXg6IGt3cS9LV1FHbG9iYWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGt3cS9LV1FHbG9iYWwuY3BwCShyZXZpc2lvbiAxMjQ2NikKKysrIGt3cS9LV1FH
bG9iYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotdm9pZCBxRGVidWcoY29uc3QgY2hhciAqbXNn
LCAuLi4pCi17Ci19Ci0KLXZvaWQgcVdhcm5pbmcoY29uc3QgY2hhciAqbXNnLCAuLi4pCi17Ci19
Ci0KSW5kZXg6IGt3cS9LV1FEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvS1dRRGVmLmgJKHJldmlz
aW9uIDEyNDY2KQorKysga3dxL0tXUURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMiArNTks
NCBAQAogI2RlZmluZSBGQUxTRSAwCiAjZW5kaWYKIAotdm9pZCBxRGVidWcoY29uc3QgY2hhciAq
bXNnLCAuLi4pOwotdm9pZCBxV2FybmluZyhjb25zdCBjaGFyICptc2csIC4uLik7Ci0KLS8qIFNp
bGx5IGhhY2sgdG8gYXZvaWQgInVudXNlZCBwYXJhbWV0ZXIiIHdhcm5pbmdzICovCi0jZGVmaW5l
IFFfVU5VU0VEKHgpICh2b2lkKSh4KQotCi0jZGVmaW5lIFFfQVNTRVJUKGFyZykgZG8ge30gd2hp
bGUoMCkKLQogI2VuZGlmCkluZGV4OiBrd3EvS1dRS0N1cnNvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt3
cS9LV1FLQ3Vyc29yLmgJKHJldmlzaW9uIDEyNDY2KQorKysga3dxL0tXUUtDdXJzb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsOCArMzMsNiBAQAogY2xhc3MgS0N1cnNvciB7CiBwdWJsaWM6CiAK
LSAgICBzdGF0aWMgdm9pZCBzZXRBdXRvSGlkZUN1cnNvcihRV2lkZ2V0ICp3LCBib29sIGVuYWJs
ZSk7Ci0KICAgICBzdGF0aWMgUUN1cnNvciBhcnJvd0N1cnNvcigpOwogICAgIHN0YXRpYyBRQ3Vy
c29yIGNyb3NzQ3Vyc29yKCk7CiAgICAgc3RhdGljIFFDdXJzb3IgaGFuZEN1cnNvcigpOwpJbmRl
eDoga3dxL0tXUUFwcGxpY2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt3cS9LV1FBcHBsaWNhdGlv
bi5tbQkocmV2aXNpb24gMTI0NjYpCisrKyBrd3EvS1dRQXBwbGljYXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2ltcG9ydCAiS1dRQXBwbGljYXRpb24uaCIKLSNpbXBvcnQgIktXUVN0eWxlLmgi
Ci0KLS8vIFRoZSBOU1NjcmVlbiBDb2NvYSBjYWxscyBpbiB0aGlzIGZpbGUgc2hvdWxkIG5ldmVy
IHRocm93LCBzbwotLy8gdGhlcmUncyBubyBuZWVkIHRvIGJsb2NrIGV4Y2VwdGlvbnMuCi0KLWlu
dCBRRGVza3RvcFdpZGdldDo6d2lkdGgoKQotewotICAgIHJldHVybiAoaW50KVtbTlNTY3JlZW4g
bWFpblNjcmVlbl0gZnJhbWVdLnNpemUud2lkdGg7Ci19Ci0gICAgCi1pbnQgUURlc2t0b3BXaWRn
ZXQ6OmhlaWdodCgpCi17Ci0gICAgcmV0dXJuIChpbnQpW1tOU1NjcmVlbiBtYWluU2NyZWVuXSBm
cmFtZV0uc2l6ZS5oZWlnaHQ7Ci19Ci0KLS8vIEZJWE1FOiBTb21lIGRheSB3ZSBtYXkgd2FudCB0
byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHdpZGdldCBpcyBpbiBhIHdpbmRvdyB0aGF0J3Mg
b24KLS8vIGEgZGlmZmVyZW50IHNjcmVlbiBmcm9tIHRoZSBrZXkgd2luZG93IGF0IHRoZSB0aW1l
IHRoZSBzY3JpcHQgaXMgcnVuLiBJZiBzbywga2VlcCBpbiBtaW5kCi0vLyB0aGF0IHRoZSByZXN1
bHQgb2Ygc2NyZWVuR2VvbWV0cnkgaXMgaW50ZXJzZWN0ZWQgd2l0aCB0aGUgcmVzdWx0IG9mIEtX
aW5Nb2R1bGU6OndvcmtBcmVhLgotCi1pbnQgUURlc2t0b3BXaWRnZXQ6OnNjcmVlbk51bWJlcihR
V2lkZ2V0ICopCi17Ci0gICAgLy8gQWx3YXlzIHJldHVybnMgMCwgd2hpY2ggaXMgZmluZSBzaW5j
ZSB0aGlzIGlzIG9ubHkgcGFzc2VkIHRvIHNjcmVlbkdlb21ldHJ5LAotICAgIC8vIHdoaWNoIGln
bm9yZXMgdGhlIHNjcmVlbiBudW1iZXIgcGFyYW1ldGVyLgotICAgIHJldHVybiAwOwotfQotCi1J
bnRSZWN0IFFEZXNrdG9wV2lkZ2V0OjpzY3JlZW5HZW9tZXRyeShpbnQgc2NyZWVuTnVtYmVyKQot
ewotICAgIC8vIElnbm9yZXMgdGhlIHNjcmVlbiBudW1iZXIsIGFuZCBhbHdheXMgcmV0dXJucyB0
aGUgZ2VvbWV0cnkgb2YgdGhlIG1haW4gc2NyZWVuLAotICAgIC8vIHdoaWNoIGlzIHRoZSBzY3Jl
ZW4gdGhhdCB0aGUga2V5IHdpbmRvdyBpcyBvbi4KLSAgICBOU1JlY3QgcmVjdCA9IFtbTlNTY3Jl
ZW4gbWFpblNjcmVlbl0gZnJhbWVdOwotICAgIHJlY3Qub3JpZ2luLnkgPSBOU01heFkoW1tbTlNT
Y3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0pIC0gTlNNYXhZKHJlY3QpOwot
ICAgIHJldHVybiBJbnRSZWN0KHJlY3QpOwotfQotCi1JbnRSZWN0IFFEZXNrdG9wV2lkZ2V0Ojph
dmFpbGFibGVHZW9tZXRyeShRV2lkZ2V0ICp3aWRnZXQpCi17Ci0gICAgTlNTY3JlZW4gKnNjcmVl
biA9IHdpZGdldCA/IFtbd2lkZ2V0LT5nZXRWaWV3KCkgd2luZG93XSBzY3JlZW5dIDogbmlsOwot
ICAgIGlmICghc2NyZWVuKQotICAgICAgICBzY3JlZW4gPSBbTlNTY3JlZW4gbWFpblNjcmVlbl07
Ci0gICAgTlNSZWN0IHJlY3QgPSBbc2NyZWVuIHZpc2libGVGcmFtZV07Ci0gICAgcmVjdC5vcmln
aW4ueSA9IE5TTWF4WShbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1l
XSkgLSBOU01heFkocmVjdCk7Ci0gICAgcmV0dXJuIEludFJlY3QocmVjdCk7Ci19Ci0KLWludCBR
RGVza3RvcFdpZGdldDo6c2NyZWVuRGVwdGgoKSBjb25zdAotewotICAgIHJldHVybiBDR0Rpc3Bs
YXlCaXRzUGVyUGl4ZWwoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOwotfQotCi12b2lkIFFBcHBsaWNh
dGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoY29uc3QgUUN1cnNvciAmYykKLXsKLSAgICAvLyBGSVhN
RTogU2hvdWxkIGltcGxlbWVudCB0aGlzIHNvIHRoYXQgZnJhbWUgYm9yZGVyIGRyYWdnaW5nIGhh
cyB0aGUgcHJvcGVyIGN1cnNvci4KLX0KLQotdm9pZCBRQXBwbGljYXRpb246OnJlc3RvcmVPdmVy
cmlkZUN1cnNvcigpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCBpbXBsZW1lbnQgdGhpcyBzbyB0
aGF0IGZyYW1lIGJvcmRlciBkcmFnZ2luZyBoYXMgdGhlIHByb3BlciBjdXJzb3IuCi19Ci0KLVFT
dHlsZSAmUUFwcGxpY2F0aW9uOjpzdHlsZSgpCi17Ci0gICAgc3RhdGljIFFTdHlsZSBzdHlsZTsK
LSAgICByZXR1cm4gc3R5bGU7Ci19CkluZGV4OiBrd3EvS1dRU3R5bGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBrd3EvS1dRU3R5bGUuaAkocmV2aXNpb24gMTI0NjYpCisrKyBrd3EvS1dRU3R5bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzIEFw
cGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVm
IEtXUVNUWUxFX0hfCi0jZGVmaW5lIEtXUVNUWUxFX0hfCi0KLSNpbmNsdWRlICJLV1FPYmplY3Qu
aCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0KLWNsYXNzIFFXaWRnZXQ7Ci0KLWNsYXNzIFFTdHls
ZSA6IHB1YmxpYyBRT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBlbnVtIFBpeGVsTWV0cmljIHsgCi0g
ICAgICAgIFBNX0luZGljYXRvcldpZHRoLAotICAgICAgICBQTV9JbmRpY2F0b3JIZWlnaHQsCi0g
ICAgICAgIFBNX0V4Y2x1c2l2ZUluZGljYXRvcldpZHRoLAotICAgICAgICBQTV9FeGNsdXNpdmVJ
bmRpY2F0b3JIZWlnaHQsCi0gICAgICAgIFBNX0RlZmF1bHRGcmFtZVdpZHRoLAotICAgICAgICBQ
TV9CdXR0b25NYXJnaW4KLSAgICB9OwotICAgIAotICAgIGVudW0gQ29udGVudFR5cGUgewotICAg
ICAgICBDVF9QdXNoQnV0dG9uCi0gICAgfTsKLQotICAgIGludCBwaXhlbE1ldHJpYyhQaXhlbE1l
dHJpYyBtZXRyaWMsIFFXaWRnZXQgKiA9IDApIGNvbnN0IHsKLSAgICAgICAgc3dpdGNoIChtZXRy
aWMpIHsKLSAgICAgICAgY2FzZSBQTV9JbmRpY2F0b3JXaWR0aDoKLSAgICAgICAgY2FzZSBQTV9J
bmRpY2F0b3JIZWlnaHQ6Ci0gICAgICAgIGNhc2UgUE1fRXhjbHVzaXZlSW5kaWNhdG9yV2lkdGg6
Ci0gICAgICAgIGNhc2UgUE1fRXhjbHVzaXZlSW5kaWNhdG9ySGVpZ2h0OgotICAgICAgICAgICAg
cmV0dXJuIDIyOyAvLyBGSVhNRSEgU2hvdWxkbid0IGJlIGhhcmRjb2RlZC4gUGVyaGFwcyBzaG91
bGRuJ3QgYWxsIGJlIHNhbWUuCi0gICAgICAgIGNhc2UgUE1fRGVmYXVsdEZyYW1lV2lkdGg6Ci0g
ICAgICAgIGNhc2UgUE1fQnV0dG9uTWFyZ2luOgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIEludFNpemUgc2l6ZUZy
b21Db250ZW50cyhDb250ZW50VHlwZSwgUVdpZGdldCAqLCBjb25zdCBJbnRTaXplICYpIGNvbnN0
OwotfTsKLQotI2VuZGlmCkluZGV4OiBrd3EvS1dRS1BhcnRzRXZlbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGt3cS9LV1FLUGFydHNFdmVudC5jcHAJKHJldmlzaW9uIDEyNDY2KQorKysga3dxL0tXUUtQ
YXJ0c0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1dRS1BhcnRzRXZlbnQu
aCIKLQotbmFtZXNwYWNlIEtQYXJ0cyB7Ci0KLUV2ZW50OjpFdmVudChjb25zdCBjaGFyICpuYW1l
KSA6IFFFdmVudChLUGFydHMpLCBfbmFtZShzdHJkdXAobmFtZSkpCi17Ci19Ci0KLUV2ZW50Ojp+
RXZlbnQoKQotewotICAgIGZyZWUoX25hbWUpOwotfQotCi1ib29sIEV2ZW50Ojp0ZXN0KGNvbnN0
IFFFdmVudCAqZXZlbnQpCi17Ci0gICAgcmV0dXJuIGV2ZW50ICYmIGV2ZW50LT50eXBlKCkgPT0g
S1BhcnRzOwotfQotCi1ib29sIEV2ZW50Ojp0ZXN0KGNvbnN0IFFFdmVudCAqZXZlbnQsIGNvbnN0
IGNoYXIgKm5hbWUpCi17Ci0gICAgcmV0dXJuIGV2ZW50ICYmIGV2ZW50LT50eXBlKCkgPT0gS1Bh
cnRzICYmIHN0cmNtcChuYW1lLCBzdGF0aWNfY2FzdDxjb25zdCBFdmVudCAqPihldmVudCktPl9u
YW1lKSA9PSAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBLUGFydHMKSW5kZXg6IGt3cS9LV1FLQ3Vy
c29yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGt3cS9LV1FLQ3Vyc29yLm1tCShyZXZpc2lvbiAxMjQ2NikK
KysrIGt3cS9LV1FLQ3Vyc29yLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAj
aW1wb3J0ICJLV1FFeGNlcHRpb25zLmgiCiAKIC8vIFNpbXBsZSBOU0RpY3Rpb25hcnkgYW5kIE5T
Q3Vyc29yIGNhbGxzIHNob3VsZG4ndCBuZWVkIHByb3RlY3Rpb24sCi0vLyBidXQgY3JlYXRpbmcg
YSBjdXJzb3Igd2l0aCBhIGJhZCBpbWFnZSBtaWdodCB0aHJvdy4uLgorLy8gYnV0IGNyZWF0aW5n
IGEgY3Vyc29yIHdpdGggYSBiYWQgaW1hZ2UgbWlnaHQgdGhyb3cuCiAKIEBpbnRlcmZhY2UgS1dR
S0N1cnNvckJ1bmRsZUR1bW15IDogTlNPYmplY3QgeyB9CiBAZW5kCkBAIC03Miw4ICs3Miw2IEBA
CiAKIEBlbmQKIAotdm9pZCBLQ3Vyc29yOjpzZXRBdXRvSGlkZUN1cnNvcihRV2lkZ2V0ICp3LCBi
b29sIGVuYWJsZSkge30KLQogUUN1cnNvciBLQ3Vyc29yOjphcnJvd0N1cnNvcigpIHsgcmV0dXJu
IFFDdXJzb3IoKTsgfQogUUN1cnNvciBLQ3Vyc29yOjpjcm9zc0N1cnNvcigpIHsgcmV0dXJuIFFD
dXJzb3I6Om1ha2VXaXRoTlNDdXJzb3IoW05TQ3Vyc29yIGNyb3NzaGFpckN1cnNvcl0pOyB9CiBR
Q3Vyc29yIEtDdXJzb3I6OmhhbmRDdXJzb3IoKSB7IHJldHVybiBRQ3Vyc29yOjptYWtlV2l0aE5T
Q3Vyc29yKFtOU0N1cnNvciBfV2ViQ29yZV9jdXJzb3JXaXRoTmFtZTpAImxpbmtDdXJzb3IiIGhv
dFNwb3Q6TlNNYWtlUG9pbnQoNi4wLCAxLjApXSk7IH0KSW5kZXg6IGt3cS9LV1FTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3dxL0tXUVN0eWxlLmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBrd3Ev
S1dRU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJLV1FTdHlsZS5oIgotCi1j
bGFzcyBRV2lkZ2V0OwotCi1JbnRTaXplIFFTdHlsZTo6c2l6ZUZyb21Db250ZW50cyhDb250ZW50
VHlwZSwgUVdpZGdldCAqLCBjb25zdCBJbnRTaXplICZzKSBjb25zdAotewotICAgIHJldHVybiBJ
bnRTaXplKHMud2lkdGgoKSArIDI4LCAzMik7Ci19CkluZGV4OiBrd3EvS1dRQXBwbGljYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrd3EvS1dRQXBwbGljYXRpb24uaAkocmV2aXNpb24gMTI0NjYpCisr
KyBrd3EvS1dRQXBwbGljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFFBUFBMSUNBVElPTl9IXwotI2RlZmluZSBRQVBQ
TElDQVRJT05fSF8KLQotI2luY2x1ZGUgIktXUVBhbGV0dGUuaCIKLSNpbmNsdWRlICJLV1FXaWRn
ZXQuaCIKLQotY2xhc3MgUURlc2t0b3BXaWRnZXQ7Ci0KLWNsYXNzIFFBcHBsaWNhdGlvbiA6IHB1
YmxpYyBRT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUURlc2t0b3BXaWRnZXQgKmRlc2t0
b3AoKSB7IHJldHVybiAwOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0T3ZlcnJpZGVDdXJzb3IoY29u
c3QgUUN1cnNvciAmKTsKLSAgICBzdGF0aWMgdm9pZCByZXN0b3JlT3ZlcnJpZGVDdXJzb3IoKTsK
LSAgICBzdGF0aWMgYm9vbCBzZW5kRXZlbnQoUU9iamVjdCAqbywgUUV2ZW50ICplKSB7IHJldHVy
biBvLT5ldmVudChlKTsgfQotICAgIHN0YXRpYyBRU3R5bGUgJnN0eWxlKCk7Ci0gICAgc3RhdGlj
IFFQYWxldHRlIHBhbGV0dGUoKSB7IHJldHVybiBRUGFsZXR0ZSgpOyB9Ci19OwotCi1RQXBwbGlj
YXRpb24gKiBjb25zdCBxQXBwID0gMDsKLQotY2xhc3MgUURlc2t0b3BXaWRnZXQgOiBwdWJsaWMg
UVdpZGdldCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGludCBzY3JlZW5OdW1iZXIoUVdpZGdldCAq
KTsKLSAgICBzdGF0aWMgSW50UmVjdCBzY3JlZW5HZW9tZXRyeShpbnQgc2NyZWVuTnVtYmVyKTsK
LSAgICBpbnQgc2NyZWVuRGVwdGgoKSBjb25zdDsgLy8gRklYTUU6IERvIHdlIHJlYWxseSBhbHdh
eXMgYXNzdW1lIG1haW4gZGlzcGxheSBoZXJlPyBUaGF0J3MgaG93IGl0IHVzZWQgdG8gd29yayBp
biBRUGFpbnREZXZpY2VNZXRyaWNzLgotICAgIHN0YXRpYyBJbnRSZWN0IGF2YWlsYWJsZUdlb21l
dHJ5KFFXaWRnZXQgKik7Ci0gICAgc3RhdGljIGludCB3aWR0aCgpOwotICAgIHN0YXRpYyBpbnQg
aGVpZ2h0KCk7Ci19OwotCi0jZW5kaWYKSW5kZXg6IGt3cS9LV1FXaWRnZXQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga3dxL0tXUVdpZGdldC5tbQkocmV2aXNpb24gMTI0NjYpCisrKyBrd3EvS1dRV2lkZ2V0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW1wb3J0ICJLV1FGb3VuZGF0
aW9uRXh0cmFzLmgiCiAjaW1wb3J0ICJNYWNGcmFtZS5oIgogI2ltcG9ydCAiS1dRTG9nZ2luZy5o
IgotI2ltcG9ydCAiS1dRU3R5bGUuaCIKICNpbXBvcnQgIktXUVZpZXcuaCIKICNpbXBvcnQgIktX
UVdpbmRvd1dpZGdldC5oIgogI2ltcG9ydCAiV2ViQ29yZUZyYW1lQnJpZGdlLmgiCkBAIC01NCw3
ICs1Myw2IEBACiBjbGFzcyBLV1FXaWRnZXRQcml2YXRlCiB7CiBwdWJsaWM6Ci0gICAgUVN0eWxl
ICpzdHlsZTsKICAgICBRRm9udCBmb250OwogICAgIFFQYWxldHRlIHBhbDsKICAgICBOU1ZpZXcg
KnZpZXc7CkBAIC02NSw4ICs2Myw2IEBACiAKIFFXaWRnZXQ6OlFXaWRnZXQoKSA6IGRhdGEobmV3
IEtXUVdpZGdldFByaXZhdGUpCiB7Ci0gICAgc3RhdGljIFFTdHlsZSBkZWZhdWx0U3R5bGU7Ci0g
ICAgZGF0YS0+c3R5bGUgPSAmZGVmYXVsdFN0eWxlOwogICAgIGRhdGEtPnZpZXcgPSBuaWw7CiAg
ICAgZGF0YS0+dmlzaWJsZSA9IHRydWU7CiAgICAgZGF0YS0+bXVzdFN0YXlJbldpbmRvdyA9IGZh
bHNlOwpAQCAtNzUsOCArNzEsNiBAQAogCiBRV2lkZ2V0OjpRV2lkZ2V0KE5TVmlldyAqdmlldykg
OiBkYXRhKG5ldyBLV1FXaWRnZXRQcml2YXRlKQogewotICAgIHN0YXRpYyBRU3R5bGUgZGVmYXVs
dFN0eWxlOwotICAgIGRhdGEtPnN0eWxlID0gJmRlZmF1bHRTdHlsZTsKICAgICBkYXRhLT52aWV3
ID0gS1dRUmV0YWluKHZpZXcpOwogICAgIGRhdGEtPnZpc2libGUgPSB0cnVlOwogICAgIGRhdGEt
Pm11c3RTdGF5SW5XaW5kb3cgPSBmYWxzZTsKQEAgLTMxMSwyMSArMzA1LDYgQEAKICAgICBkYXRh
LT5wYWwgPSBwYWxldHRlOwogfQogCi1RU3R5bGUgJlFXaWRnZXQ6OnN0eWxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gKmRhdGEtPnN0eWxlOwotfQotCi12b2lkIFFXaWRnZXQ6OnNldFN0eWxlKFFT
dHlsZSAqc3R5bGUpCi17Ci0gICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBRdCBpbXBsZW1lbnRhdGlv
biAKLSAgICAvKgotICAgIFNldHMgdGhlIHdpZGdldCdzIEdVSSBzdHlsZSB0byBcYSBzdHlsZS4g
T3duZXJzaGlwIG9mIHRoZSBzdHlsZQotICAgIG9iamVjdCBpcyBub3QgdHJhbnNmZXJyZWQuCi0g
ICAgKi8KLSAgICBkYXRhLT5zdHlsZSA9IHN0eWxlOwotfQotCiBRRm9udCBRV2lkZ2V0Ojpmb250
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZGF0YS0+Zm9udDsKSW5kZXg6IGt3cS9LV1FTdHJpbmcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga3dxL0tXUVN0cmluZy5tbQkocmV2aXNpb24gMTI0NjYpCisrKyBr
d3EvS1dRU3RyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgzLDggKzE3ODMsNiBAQAogICAg
IFFTdHJpbmcgciA9ICp0aGlzOwogCiAgICAgaWYgKCAhZmluZEFyZyggcG9zLCBsZW4gKSApIHsK
LQlxV2FybmluZyggIlFTdHJpbmc6OmFyZygpOiBBcmd1bWVudCBtaXNzaW5nOiAlcywgJXMiLAot
CQkgIGxhdGluMSgpLCBhLmxhdGluMSgpICk7CiAJLy8gTWFrZSBzdXJlIHRoZSB0ZXh0IGF0IGxl
YXN0IGFwcGVhcnMgU09NRVdIRVJFCiAJciArPSAnICc7CiAJcG9zID0gci5kYXRhSGFuZGxlWzBd
LT5fbGVuZ3RoOwpJbmRleDogcGFnZS9GcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWUu
aAkocmV2aXNpb24gMTI0NjYpCisrKyBwYWdlL0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
Nyw4ICs4NjcsNiBAQAogICB2b2lkIHNsb3RGaW5pc2hlZFBhcnNpbmcoKTsKICAgdm9pZCBzbG90
UmVkaXJlY3QoKTsKICAgdm9pZCBzbG90UmVkaXJlY3Rpb24oS0lPOjpKb2IqLCBjb25zdCBLVVJM
Jik7Ci0gIHZvaWQgc2xvdERlYnVnRE9NVHJlZSgpOwotICB2b2lkIHNsb3REZWJ1Z1JlbmRlclRy
ZWUoKTsKIAogICB2b2lkIHNsb3RJbmNab29tKCk7CiAgIHZvaWQgc2xvdERlY1pvb20oKTsKQEAg
LTEwMzUsNyArMTAzMyw3IEBACiAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKTsKICAgdm9pZCBz
Y3JvbGxUb0FuY2hvcihjb25zdCBLVVJMICYpOwogICBib29sIGNhbk1vdXNlRG93blN0YXJ0U2Vs
ZWN0KFdlYkNvcmU6Ok5vZGVJbXBsKiBub2RlKTsKLSAgYm9vbCBwYXNzV2lkZ2V0TW91c2VEb3du
RXZlbnRUb1dpZGdldChXZWJDb3JlOjpNb3VzZUV2ZW50ICopOworICBib29sIHBhc3NXaWRnZXRN
b3VzZURvd25FdmVudFRvV2lkZ2V0KFdlYkNvcmU6Ok1vdXNlRXZlbnQgKiwgYm9vbCBpc0RvdWJs
ZUNsaWNrKTsKICAgYm9vbCBwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQgKik7CiAgIHZpcnR1YWwgYm9vbCBwYXNzTW91c2VEb3duRXZlbnRUb1dp
ZGdldChRV2lkZ2V0ICopID0gMDsKIApJbmRleDogcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHBhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTI0NjYpCisrKyBwYWdlL0ZyYW1l
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5MSwzOCArOTkxLDQ0IEBACiAgICAgc2V0U3Rh
dGljQmFja2dyb3VuZCh0cnVlKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbEJhcnNN
b2RlICggU2Nyb2xsQmFyTW9kZSBtb2RlICkKKyNpZiAhS0hUTUxfTk9fU0NST0xMQkFSUworCit2
b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUoU2Nyb2xsQmFyTW9kZSBtb2RlKQogewot
I2lmbmRlZiBLSFRNTF9OT19TQ1JPTExCQVJTCiAgICAgZC0+dm1vZGUgPSBtb2RlOwogICAgIGQt
Pmhtb2RlID0gbW9kZTsKICAgICAKICAgICBRU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUo
bW9kZSk7Ci0jZWxzZQotICAgIFFfVU5VU0VEKCBtb2RlICk7Ci0jZW5kaWYKIH0KIAotdm9pZCBG
cmFtZVZpZXc6OnNldFZTY3JvbGxCYXJNb2RlICggU2Nyb2xsQmFyTW9kZSBtb2RlICkKK3ZvaWQg
RnJhbWVWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZShTY3JvbGxCYXJNb2RlIG1vZGUpCiB7Ci0jaWZu
ZGVmIEtIVE1MX05PX1NDUk9MTEJBUlMKICAgICBkLT52bW9kZSA9IG1vZGU7CiAgICAgUVNjcm9s
bFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKG1vZGUpOwotI2Vsc2UKLSAgICBRX1VOVVNFRCggbW9k
ZSApOwotI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZSAoIFNj
cm9sbEJhck1vZGUgbW9kZSApCit2b2lkIEZyYW1lVmlldzo6c2V0SFNjcm9sbEJhck1vZGUoU2Ny
b2xsQmFyTW9kZSBtb2RlKQogewotI2lmbmRlZiBLSFRNTF9OT19TQ1JPTExCQVJTCiAgICAgZC0+
aG1vZGUgPSBtb2RlOwogICAgIFFTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZShtb2RlKTsK
K30KKwogI2Vsc2UKLSAgICBRX1VOVVNFRCggbW9kZSApOwotI2VuZGlmCisKK3ZvaWQgRnJhbWVW
aWV3OjpzZXRTY3JvbGxCYXJzTW9kZShTY3JvbGxCYXJNb2RlKQorewogfQogCit2b2lkIEZyYW1l
Vmlldzo6c2V0VlNjcm9sbEJhck1vZGUoU2Nyb2xsQmFyTW9kZSkKK3sKK30KKwordm9pZCBGcmFt
ZVZpZXc6OnNldEhTY3JvbGxCYXJNb2RlKFNjcm9sbEJhck1vZGUpCit7Cit9CisKKyNlbmRpZgor
CiB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNjcm9sbEJhciAoICkKIHsKICAgICBzdXBwcmVzc1Nj
cm9sbEJhcnMoZmFsc2UpOwpJbmRleDogcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFn
ZS9GcmFtZS5jcHAJKHJldmlzaW9uIDEyNDY2KQorKysgcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0OSwyMSArNTQ5LDYgQEAKICAgcmV0dXJuIGQtPm1fYlBsdWdpbnNFbmFibGVk
OwogfQogCi0KLXZvaWQgRnJhbWU6OnNsb3REZWJ1Z0RPTVRyZWUoKQotewotICBpZiAoIGQtPm1f
ZG9jICYmIGQtPm1fZG9jLT5maXJzdENoaWxkKCkgKQotICAgIHFEZWJ1ZygiJXMiLCBjcmVhdGVN
YXJrdXAoZC0+bV9kb2MtPmZpcnN0Q2hpbGQoKSkubGF0aW4xKCkpOwotfQotCi12b2lkIEZyYW1l
OjpzbG90RGVidWdSZW5kZXJUcmVlKCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gIGlmICggZC0+bV9k
b2MgKQotICAgIGQtPm1fZG9jLT5yZW5kZXJlcigpLT5wcmludFRyZWUoKTsKLSNlbmRpZgotfQot
CiB2b2lkIEZyYW1lOjpzZXRBdXRvbG9hZEltYWdlcyggYm9vbCBlbmFibGUgKQogewogICBpZiAo
IGQtPm1fZG9jICYmIGQtPm1fZG9jLT5kb2NMb2FkZXIoKS0+YXV0b2xvYWRJbWFnZXMoKSA9PSBl
bmFibGUgKQpAQCAtMzU2NiwxMCArMzU1MSwxMCBAQAogCiB2b2lkIEZyYW1lOjpraHRtbE1vdXNl
RG91YmxlQ2xpY2tFdmVudChNb3VzZURvdWJsZUNsaWNrRXZlbnQgKmV2ZW50KQogewotICAgIHBh
c3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGV2ZW50KTsKKyAgICBwYXNzV2lkZ2V0TW91
c2VEb3duRXZlbnRUb1dpZGdldChldmVudCwgdHJ1ZSk7CiB9CiAKLWJvb2wgRnJhbWU6OnBhc3NX
aWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KE1vdXNlRXZlbnQgKmV2ZW50KQorYm9vbCBGcmFt
ZTo6cGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoTW91c2VFdmVudCAqZXZlbnQsIGJv
b2wgaXNEb3VibGVDbGljaykKIHsKICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2Vu
ZCB0aGUgZXZlbnQgdG8uCiAgICAgUmVuZGVyT2JqZWN0ICp0YXJnZXQgPSBldmVudC0+aW5uZXJO
b2RlKCkgPyBldmVudC0+aW5uZXJOb2RlKCktPnJlbmRlcmVyKCkgOiAwOwpAQCAtMzU4NywxMCAr
MzU3Miw5IEBACiAgICAgLy8ganVzdCBwYXNzIF9jdXJyZW50RXZlbnQgZG93biB0byB0aGUgd2lk
Z2V0LCAgd2UgZG9uJ3Qgd2FudCB0byBjYWxsIGl0IGZvciBldmVudHMgdGhhdAogICAgIC8vIGRv
bid0IGNvcnJlc3BvbmQgdG8gQ29jb2EgZXZlbnRzLiAgVGhlIG1vdXNlZG93bi91cHMgd2lsbCBo
YXZlIGFscmVhZHkgYmVlbiBwYXNzZWQgb24gYXMKICAgICAvLyBwYXJ0IG9mIHRoZSBwcmVzc2Vk
L3JlbGVhc2VkIGhhbmRsaW5nLgotICAgIGlmICghTW91c2VEb3VibGVDbGlja0V2ZW50Ojp0ZXN0
KGV2ZW50KSkKKyAgICBpZiAoIWlzRG91YmxlQ2xpY2spCiAgICAgICAgIHJldHVybiBwYXNzTW91
c2VEb3duRXZlbnRUb1dpZGdldCh3aWRnZXQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRnJhbWU6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KFJlbmRlcldpZGdldCAqcmVuZGVyV2lkZ2V0KQo=
</data>
<flag name="review"
          id="1464"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>