<?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>4799</bug_id>
          
          <creation_ts>2005-09-01 18:07:08 -0700</creation_ts>
          <short_desc>Pull over Qt3-&gt;Qt4 changes for kdom/ksvg2 from kde</short_desc>
          <delta_ts>2005-09-02 09:26:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>18207</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-01 18:07:08 -0700</bug_when>
    <thetext>Pull over Qt3-&gt;Qt4 changes for kdom/ksvg2 from kde

There are a number of changes between KDE TOT and our tree, mostly the Qt3-&gt;Qt4 conversion.  I&apos;m 
trying to isolate these into a single patch to make this simple.  Mostly this is just a search replace of the 
following:

QDict -&gt; Q3Dict
QPtrStack -&gt;Q3PtrStack
QPtrList -&gt; Q3PtrList
QPtrCollection -&gt; Q3PtrCollection
QValueVector -&gt; Q3ValueVector
QValueList -&gt; Q3ValueList
QPaintDeviceMetrics -&gt; Q3PaintDeviceMetrics
QCString -&gt;Q3CString
QMemArray -&gt;Q3MemArray

And the corresponding headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18215</commentid>
    <comment_count>1</comment_count>
      <attachid>3715</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-02 01:48:38 -0700</bug_when>
    <thetext>Created attachment 3715
script to convert code from qt3 to qt4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18216</commentid>
    <comment_count>2</comment_count>
      <attachid>3716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-02 01:49:27 -0700</bug_when>
    <thetext>Created attachment 3716
script to ad forwarding headers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18219</commentid>
    <comment_count>3</comment_count>
      <attachid>3717</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-02 02:37:20 -0700</bug_when>
    <thetext>Created attachment 3717
Actual changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18220</commentid>
    <comment_count>4</comment_count>
      <attachid>3717</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-09-02 02:40:50 -0700</bug_when>
    <thetext>Comment on attachment 3717
Actual changes.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18234</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-02 09:26:32 -0700</bug_when>
    <thetext>I&apos;d like to see typedefs rather than defines whenever possible, but of course for templates it&apos;s not.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3715</attachid>
            <date>2005-09-02 01:48:38 -0700</date>
            <delta_ts>2005-09-02 01:48:38 -0700</delta_ts>
            <desc>script to convert code from qt3 to qt4</desc>
            <filename>q3to4.pl</filename>
            <type>text/plain</type>
            <size>656</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsIC13CgpteSBAdG9yZXBsYWNlID0gKApEaWN0LApQdHJTdGFjaywKUHRy
TGlzdCwKUHRyQ29sbGVjdGlvbiwKVmFsdWVWZWN0b3IsClZhbHVlTGlzdCwKUGFpbnREZXZpY2VN
ZXRyaWNzLApDU3RyaW5nLApNZW1BcnJheSk7CgpteSAkdGVzdERpcmVjdG9yeSA9ICcuJzsKbXkg
QGZpbGVzOwpwdXNoIEBmaWxlcywgbWFwIHsgY2hvbXA7IHMtXiR0ZXN0RGlyZWN0b3J5Ly0tOyAk
XzsgfSBgZmluZCAtRSAkdGVzdERpcmVjdG9yeSAtcmVnZXggJy4qKGh8Y3BwKScgLXByaW50YDsK
Zm9yIG15ICRmaWxlbmFtZSAoQGZpbGVzKQp7CglwcmludCAicHJvY2Vzc2luZyAkZmlsZW5hbWVc
biI7CglvcGVuKE5FV0ZJTEUsICI+ICRmaWxlbmFtZS50ZW1wIik7CglvcGVuKE9MREZJTEUsICI8
ICRmaWxlbmFtZSIpOwoJd2hpbGUoPE9MREZJTEU+KSB7CgkJI3ByaW50ICRfOwoJCWZvciBteSAk
c3VmZml4IChAdG9yZXBsYWNlKSB7CgkJCXMvUSRzdWZmaXgvUTMkc3VmZml4LzsKCQkJbXkgJGxv
d2VyID0gbGMoJHN1ZmZpeCk7CgkJCXMvcSRsb3dlci9xMyRsb3dlci87CgkJfQoJCXByaW50IE5F
V0ZJTEUgJF87Cgl9CgljbG9zZShPTERGSUxFKTsKCWNsb3NlKE5FV0ZJTEUpOwoJYG12ICIkZmls
ZW5hbWUudGVtcCIgIiRmaWxlbmFtZSJgOwp9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3716</attachid>
            <date>2005-09-02 01:49:27 -0700</date>
            <delta_ts>2005-09-02 01:49:27 -0700</delta_ts>
            <desc>script to ad forwarding headers</desc>
            <filename>forwards.pl</filename>
            <type>text/plain</type>
            <size>421</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsIC13CgpteSBAdG9yZXBsYWNlID0gKApEaWN0LApQdHJTdGFjaywKUHRy
TGlzdCwKUHRyQ29sbGVjdGlvbiwKVmFsdWVWZWN0b3IsClZhbHVlTGlzdCwKUGFpbnREZXZpY2VN
ZXRyaWNzLApDU3RyaW5nLApNZW1BcnJheSk7CgojIG5vdyB3cml0ZSB0aGUgZm9yd2FyZGluZyBo
ZWFkZXJzCmZvciBteSAkc3VmZml4IChAdG9yZXBsYWNlKSB7CglteSAkbG93ZXIgPSBsYygkc3Vm
Zml4KTsKICAgICAgICBteSAkb2xkaGVhZGVyID0gIldlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cSRsb3dlci5oIjsKCW15ICRuZXdoZWFkZXIgPSAiV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9x
MyRsb3dlci5oIjsKCXByaW50ICJjcmVhdGluZyAkbmV3aGVhZGVyXG4iOwoJYGNwICIkb2xkaGVh
ZGVyIiAiJG5ld2hlYWRlciJgOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3717</attachid>
            <date>2005-09-02 02:37:20 -0700</date>
            <delta_ts>2005-09-02 02:40:50 -0700</delta_ts>
            <desc>Actual changes.</desc>
            <filename>qt4.patch</filename>
            <type>text/plain</type>
            <size>119913</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IEZvcndhcmRpbmdIZWFkZXJzL3EzY3N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IEZvcndhcmRpbmdIZWFkZXJzL3EzY3N0cmluZy5oCmRpZmYgLU4gRm9yd2FyZGluZ0hlYWRlcnMv
cTNjc3RyaW5nLmgKLS0tIEZvcndhcmRpbmdIZWFkZXJzL3EzY3N0cmluZy5oCTEgSmFuIDE5NzAg
MDA6MDA6MDAgLTAwMDAKKysrIEZvcndhcmRpbmdIZWFkZXJzL3EzY3N0cmluZy5oCTIgU2VwIDIw
MDUgMDk6Mzg6MzAgLTAwMDAKQEAgLTAsMCArMSBAQAorI2ltcG9ydCAiS1dRQ1N0cmluZy5oIgpJ
bmRleDogRm9yd2FyZGluZ0hlYWRlcnMvcTNkaWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRm9y
d2FyZGluZ0hlYWRlcnMvcTNkaWN0LmgKZGlmZiAtTiBGb3J3YXJkaW5nSGVhZGVycy9xM2RpY3Qu
aAotLS0gRm9yd2FyZGluZ0hlYWRlcnMvcTNkaWN0LmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAw
MAorKysgRm9yd2FyZGluZ0hlYWRlcnMvcTNkaWN0LmgJMiBTZXAgMjAwNSAwOTozODozMCAtMDAw
MApAQCAtMCwwICsxIEBACisjaW1wb3J0ICJLV1FEaWN0LmgiCkluZGV4OiBGb3J3YXJkaW5nSGVh
ZGVycy9xM21lbWFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRm9yd2FyZGluZ0hlYWRlcnMv
cTNtZW1hcnJheS5oCmRpZmYgLU4gRm9yd2FyZGluZ0hlYWRlcnMvcTNtZW1hcnJheS5oCi0tLSBG
b3J3YXJkaW5nSGVhZGVycy9xM21lbWFycmF5LmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgRm9yd2FyZGluZ0hlYWRlcnMvcTNtZW1hcnJheS5oCTIgU2VwIDIwMDUgMDk6Mzg6MzAgLTAw
MDAKQEAgLTAsMCArMSBAQAorI2ltcG9ydCAiS1dRTWVtQXJyYXkuaCIKSW5kZXg6IEZvcndhcmRp
bmdIZWFkZXJzL3EzcGFpbnRkZXZpY2VtZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRm9y
d2FyZGluZ0hlYWRlcnMvcTNwYWludGRldmljZW1ldHJpY3MuaApkaWZmIC1OIEZvcndhcmRpbmdI
ZWFkZXJzL3EzcGFpbnRkZXZpY2VtZXRyaWNzLmgKLS0tIEZvcndhcmRpbmdIZWFkZXJzL3EzcGFp
bnRkZXZpY2VtZXRyaWNzLmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRm9yd2FyZGlu
Z0hlYWRlcnMvcTNwYWludGRldmljZW1ldHJpY3MuaAkyIFNlcCAyMDA1IDA5OjM4OjMwIC0wMDAw
CkBAIC0wLDAgKzEgQEAKKyNpbXBvcnQgIktXUVBhaW50RGV2aWNlTWV0cmljcy5oIgpJbmRleDog
Rm9yd2FyZGluZ0hlYWRlcnMvcTNwdHJjb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
Rm9yd2FyZGluZ0hlYWRlcnMvcTNwdHJjb2xsZWN0aW9uLmgKZGlmZiAtTiBGb3J3YXJkaW5nSGVh
ZGVycy9xM3B0cmNvbGxlY3Rpb24uaAotLS0gRm9yd2FyZGluZ0hlYWRlcnMvcTNwdHJjb2xsZWN0
aW9uLmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgRm9yd2FyZGluZ0hlYWRlcnMvcTNw
dHJjb2xsZWN0aW9uLmgJMiBTZXAgMjAwNSAwOTozODozMCAtMDAwMApAQCAtMCwwICsxIEBACisj
aW1wb3J0ICJLV1FDb2xsZWN0aW9uLmgiCkluZGV4OiBGb3J3YXJkaW5nSGVhZGVycy9xM3B0cmxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBGb3J3YXJkaW5nSGVhZGVycy9xM3B0cmxpc3QuaApk
aWZmIC1OIEZvcndhcmRpbmdIZWFkZXJzL3EzcHRybGlzdC5oCi0tLSBGb3J3YXJkaW5nSGVhZGVy
cy9xM3B0cmxpc3QuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBGb3J3YXJkaW5nSGVh
ZGVycy9xM3B0cmxpc3QuaAkyIFNlcCAyMDA1IDA5OjM4OjMwIC0wMDAwCkBAIC0wLDAgKzEgQEAK
KyNpbXBvcnQgIktXUVB0ckxpc3QuaCIKSW5kZXg6IEZvcndhcmRpbmdIZWFkZXJzL3EzcHRyc3Rh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBGb3J3YXJkaW5nSGVhZGVycy9xM3B0cnN0YWNrLmgK
ZGlmZiAtTiBGb3J3YXJkaW5nSGVhZGVycy9xM3B0cnN0YWNrLmgKLS0tIEZvcndhcmRpbmdIZWFk
ZXJzL3EzcHRyc3RhY2suaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBGb3J3YXJkaW5n
SGVhZGVycy9xM3B0cnN0YWNrLmgJMiBTZXAgMjAwNSAwOTozODozMCAtMDAwMApAQCAtMCwwICsx
IEBACisjaW1wb3J0ICJLV1FQdHJTdGFjay5oIgpJbmRleDogRm9yd2FyZGluZ0hlYWRlcnMvcTN2
YWx1ZWxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBGb3J3YXJkaW5nSGVhZGVycy9xM3ZhbHVl
bGlzdC5oCmRpZmYgLU4gRm9yd2FyZGluZ0hlYWRlcnMvcTN2YWx1ZWxpc3QuaAotLS0gRm9yd2Fy
ZGluZ0hlYWRlcnMvcTN2YWx1ZWxpc3QuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBG
b3J3YXJkaW5nSGVhZGVycy9xM3ZhbHVlbGlzdC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzAgLTAwMDAK
QEAgLTAsMCArMSBAQAorI2ltcG9ydCAiS1dRVmFsdWVMaXN0LmgiCkluZGV4OiBGb3J3YXJkaW5n
SGVhZGVycy9xM3ZhbHVldmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogRm9yd2FyZGluZ0hl
YWRlcnMvcTN2YWx1ZXZlY3Rvci5oCmRpZmYgLU4gRm9yd2FyZGluZ0hlYWRlcnMvcTN2YWx1ZXZl
Y3Rvci5oCi0tLSBGb3J3YXJkaW5nSGVhZGVycy9xM3ZhbHVldmVjdG9yLmgJMSBKYW4gMTk3MCAw
MDowMDowMCAtMDAwMAorKysgRm9yd2FyZGluZ0hlYWRlcnMvcTN2YWx1ZXZlY3Rvci5oCTIgU2Vw
IDIwMDUgMDk6Mzg6MzAgLTAwMDAKQEAgLTAsMCArMSBAQAorI2ltcG9ydCAiS1dRVmFsdWVWZWN0
b3IuaCIKSW5kZXg6IGtjYW52YXMvS0NhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2NhbnZhcy9LQ2FudmFzLmNwcAotLS0ga2NhbnZhcy9L
Q2FudmFzLmNwcAkxIFNlcCAyMDA1IDA3OjMyOjQ0IC0wMDAwCTEuNQorKysga2NhbnZhcy9LQ2Fu
dmFzLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5j
bHVkZSA8a2RlYnVnLmg+CiAjaW5jbHVkZSA8a2dsb2JhbC5oPgogCi0jaW5jbHVkZSA8cXZhbHVl
bGlzdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+CiAKICNpbmNsdWRlICJLQ2FudmFzLmgi
CiAjaW5jbHVkZSAiS0NhbnZhc1ZpZXcuaCIKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IEtDYW52YXNSZWdpc3RyeSAqcmVnaXN0cnk7CiAgICAgS1JlbmRlcmluZ0RldmljZSAqcmVuZGVy
aW5nRGV2aWNlOwogCi0gICAgUVZhbHVlTGlzdDxjb25zdCBLQ2FudmFzVmlldyAqPiB2aWV3TGlz
dDsKKyAgICBRM1ZhbHVlTGlzdDxjb25zdCBLQ2FudmFzVmlldyAqPiB2aWV3TGlzdDsKIH07CiAK
IEtDYW52YXM6OktDYW52YXMoS1JlbmRlcmluZ0RldmljZSAqZGV2aWNlKSA6IGQobmV3IFByaXZh
dGUoZGV2aWNlKSkKQEAgLTEwNyw4ICsxMDcsOCBAQCB2b2lkIEtDYW52YXM6OnNldENhbnZhc1Np
emUoY29uc3QgUVNpemUgCiAgICAgZC0+Y2FudmFzU2l6ZSA9IHNpemU7CiAKICAgICAvLyBSZXNp
emUgYWxsIHZpZXdzLi4uCi0gICAgUVZhbHVlTGlzdENvbnN0SXRlcmF0b3I8Y29uc3QgS0NhbnZh
c1ZpZXcgKj4gaXQgPSBkLT52aWV3TGlzdC5jb25zdEJlZ2luKCk7Ci0gICAgUVZhbHVlTGlzdENv
bnN0SXRlcmF0b3I8Y29uc3QgS0NhbnZhc1ZpZXcgKj4gZW5kID0gZC0+dmlld0xpc3QuY29uc3RF
bmQoKTsKKyAgICBRM1ZhbHVlTGlzdENvbnN0SXRlcmF0b3I8Y29uc3QgS0NhbnZhc1ZpZXcgKj4g
aXQgPSBkLT52aWV3TGlzdC5jb25zdEJlZ2luKCk7CisgICAgUTNWYWx1ZUxpc3RDb25zdEl0ZXJh
dG9yPGNvbnN0IEtDYW52YXNWaWV3ICo+IGVuZCA9IGQtPnZpZXdMaXN0LmNvbnN0RW5kKCk7CiAK
ICAgICBmb3IoOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGNvbnN0X2Nhc3Q8S0NhbnZhc1Zp
ZXcgKj4oKml0KS0+Y2FudmFzU2l6ZUNoYW5nZWQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKQEAgLTEzNCw4ICsxMzQsOCBAQCBLQ2FudmFzQ29udGFpbmVyICpLQ2FudmFzOjpyb290Q29u
dGFpbmVyCiB2b2lkIEtDYW52YXM6OmludmFsaWRhdGUoY29uc3QgS0NhbnZhc0l0ZW0gKml0ZW0p
CiB7CiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgaXRlbSBpbiBhbGwgdmlld3MKLSAgICBRVmFsdWVM
aXN0Q29uc3RJdGVyYXRvcjxjb25zdCBLQ2FudmFzVmlldyAqPiBpdCA9IGQtPnZpZXdMaXN0LmNv
bnN0QmVnaW4oKTsKLSAgICBRVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxjb25zdCBLQ2FudmFzVmll
dyAqPiBlbmQgPSBkLT52aWV3TGlzdC5jb25zdEVuZCgpOworICAgIFEzVmFsdWVMaXN0Q29uc3RJ
dGVyYXRvcjxjb25zdCBLQ2FudmFzVmlldyAqPiBpdCA9IGQtPnZpZXdMaXN0LmNvbnN0QmVnaW4o
KTsKKyAgICBRM1ZhbHVlTGlzdENvbnN0SXRlcmF0b3I8Y29uc3QgS0NhbnZhc1ZpZXcgKj4gZW5k
ID0gZC0+dmlld0xpc3QuY29uc3RFbmQoKTsKIAogICAgIGZvcig7IGl0ICE9IGVuZDsgKytpdCkK
ICAgICAgICAgKCppdCktPmludmFsaWRhdGVDYW52YXNJdGVtKGl0ZW0pOwpJbmRleDoga2NhbnZh
cy9LQ2FudmFzRmlsdGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBw
b3J0L2tjYW52YXMvS0NhbnZhc0ZpbHRlcnMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRp
ZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9LQ2FudmFzRmlsdGVycy5oCi0tLSBrY2FudmFzL0tDYW52
YXNGaWx0ZXJzLmgJMSBTZXAgMjAwNSAwNzozMjo0NSAtMDAwMAkxLjQKKysrIGtjYW52YXMvS0Nh
bnZhc0ZpbHRlcnMuaAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC04MCw3ICs4MCw3IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFFSZWN0IG1fZmlsdGVyUmVjdDsKLSAgICBRVmFs
dWVMaXN0PEtDYW52YXNGaWx0ZXJFZmZlY3QgKj4gbV9lZmZlY3RzOworICAgIFEzVmFsdWVMaXN0
PEtDYW52YXNGaWx0ZXJFZmZlY3QgKj4gbV9lZmZlY3RzOwogICAgIGJvb2wgbV9maWx0ZXJCQm94
TW9kZTsKICAgICBib29sIG1fZWZmZWN0QkJveE1vZGU7CiB9OwpAQCAtMjA4LDE0ICsyMDgsMTQg
QEAgcHVibGljOgogICAgIEtDQ29sb3JNYXRyaXhUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KICAgICB2b2lkIHNldFR5cGUoS0NDb2xvck1hdHJpeFR5cGUgdHlwZSkgeyBtX3R5
cGUgPSB0eXBlOyB9CiAgICAgCi0gICAgUVZhbHVlTGlzdDxmbG9hdD4gdmFsdWVzKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZXM7IH0KLSAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBRVmFsdWVMaXN0
PGZsb2F0PiAmdmFsdWVzKSB7IG1fdmFsdWVzID0gdmFsdWVzOyB9OworICAgIFEzVmFsdWVMaXN0
PGZsb2F0PiB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlczsgfQorICAgIHZvaWQgc2V0
VmFsdWVzKGNvbnN0IFEzVmFsdWVMaXN0PGZsb2F0PiAmdmFsdWVzKSB7IG1fdmFsdWVzID0gdmFs
dWVzOyB9OwogCiAgICAgUVRleHRTdHJlYW0gJmV4dGVybmFsUmVwcmVzZW50YXRpb24oUVRleHRT
dHJlYW0gJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgS0NDb2xvck1hdHJpeFR5cGUgbV90eXBl
OwotICAgIFFWYWx1ZUxpc3Q8ZmxvYXQ+IG1fdmFsdWVzOworICAgIFEzVmFsdWVMaXN0PGZsb2F0
PiBtX3ZhbHVlczsKIH07CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0yMzEsOCArMjMxLDggQEAgdHlw
ZWRlZiBlbnVtIHsKICAgICAgS0NDb21wb25lbnRUcmFuc2ZlclR5cGUgdHlwZSgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0VHlwZShLQ0NvbXBvbmVudFRyYW5zZmVyVHlwZSB0eXBlKSB7IG1fdHlwZSA9
IHR5cGU7IH0KICAgICAKLSAgICBRVmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZhbHVlcygpIGNvbnN0
OwotICAgIHZvaWQgc2V0VGFibGVWYWx1ZXMoUVZhbHVlTGlzdDxmbG9hdD4gdGFibGVWYWx1ZXMp
OworICAgIFEzVmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZhbHVlcygpIGNvbnN0OworICAgIHZvaWQg
c2V0VGFibGVWYWx1ZXMoUTNWYWx1ZUxpc3Q8ZmxvYXQ+IHRhYmxlVmFsdWVzKTsKICAgICAKICAg
ICBmbG9hdCBzbG9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2xvcGU7IH0KICAgICB2b2lkIHNldFNs
b3BlKGZsb2F0IHNsb3BlKSB7IG1fc2xvcGUgPSBzbG9wZTsgfQpAQCAtMjUyLDcgKzI1Miw3IEBA
IHR5cGVkZWYgZW51bSB7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBLQ0NvbXBvbmVudFRyYW5z
ZmVyVHlwZSB0eXBlOwotICAgIFFWYWx1ZUxpc3Q8ZmxvYXQ+IHRhYmxlVmFsdWVzOworICAgIFEz
VmFsdWVMaXN0PGZsb2F0PiB0YWJsZVZhbHVlczsKICAgICBmbG9hdCBzbG9wZTsKICAgICBmbG9h
dCBpbnRlcmNlcHQ7CiAgICAgZmxvYXQgYW1wbGl0dWRlOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgaW50IG1fb3JkZXJYOwogICAgIGludCBtX29yZGVyWTsKLSAg
ICBRVmFsdWVMaXN0PGZsb2F0PiBtX2tlcm5lbE1hdHJpeDsgLy8gbWF5YmUgc2hvdWxkIGJlIGEg
cmVhbCBtYXRyaXg/CisgICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IG1fa2VybmVsTWF0cml4OyAvLyBt
YXliZSBzaG91bGQgYmUgYSByZWFsIG1hdHJpeD8KICAgICBmbG9hdCBtX2Rpdmlzb3I7CiAgICAg
ZmxvYXQgbV9iaWFzOwogICAgIGludCBtX3RhcmdldFg7CkluZGV4OiBrY2FudmFzL0tDYW52YXNJ
dGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9L
Q2FudmFzSXRlbS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBr
Y2FudmFzL0tDYW52YXNJdGVtLmgKLS0tIGtjYW52YXMvS0NhbnZhc0l0ZW0uaAkxIFNlcCAyMDA1
IDA3OjMyOjQ2IC0wMDAwCTEuMworKysga2NhbnZhcy9LQ2FudmFzSXRlbS5oCTIgU2VwIDIwMDUg
MDk6Mzg6MzEgLTAwMDAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDxxcmVjdC5oPgogI2lu
Y2x1ZGUgPHFwb2ludC5oPgogI2luY2x1ZGUgPHFyZWN0Lmg+Ci0jaW5jbHVkZSA8cXZhbHVlbGlz
dC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+CiAKICNpbmNsdWRlIDxrY2FudmFzL0tDYW52
YXNUeXBlcy5oPgogCkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBIZWxwZXIg
ZGF0YSBzdHJ1Y3R1cmUKLXR5cGVkZWYgUVZhbHVlTGlzdDxjb25zdCBLQ2FudmFzSXRlbSAqPiBL
Q2FudmFzSXRlbUxpc3Q7Cit0eXBlZGVmIFEzVmFsdWVMaXN0PGNvbnN0IEtDYW52YXNJdGVtICo+
IEtDYW52YXNJdGVtTGlzdDsKIAogI2VuZGlmCiAKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1BhdGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52
YXNQYXRoLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtjYW52
YXMvS0NhbnZhc1BhdGguaAotLS0ga2NhbnZhcy9LQ2FudmFzUGF0aC5oCTEgU2VwIDIwMDUgMDc6
MzI6NDYgLTAwMDAJMS40CisrKyBrY2FudmFzL0tDYW52YXNQYXRoLmgJMiBTZXAgMjAwNSAwOToz
ODozMSAtMDAwMApAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBLQ2FudmFzUGF0aF9ICiAjZGVm
aW5lIEtDYW52YXNQYXRoX0gKIAotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKyNpbmNsdWRlIDxx
M3ZhbHVlbGlzdC5oPgogCiBjbGFzcyBRVGV4dFN0cmVhbTsKIApAQCAtNTYsNyArNTYsNyBAQCBz
dHJ1Y3QgS0NQYXRoRGF0YQogCiBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmVhbSAm
dHMsIGNvbnN0IEtDUGF0aERhdGEgJmQpOwogCi1jbGFzcyBLQ1BhdGhEYXRhTGlzdCA6IHB1Ymxp
YyBRVmFsdWVMaXN0PEtDUGF0aERhdGE+CitjbGFzcyBLQ1BhdGhEYXRhTGlzdCA6IHB1YmxpYyBR
M1ZhbHVlTGlzdDxLQ1BhdGhEYXRhPgogewogcHVibGljOgogICAgIEtDUGF0aERhdGFMaXN0KCkg
eyB9CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IEtDQ2xpcERhdGEKIAogUVRleHRTdHJlYW0g
Jm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBLQ0NsaXBEYXRhICZkKTsKIAotY2xh
c3MgS0NDbGlwRGF0YUxpc3QgOiBwdWJsaWMgUVZhbHVlTGlzdDxLQ0NsaXBEYXRhPgorY2xhc3Mg
S0NDbGlwRGF0YUxpc3QgOiBwdWJsaWMgUTNWYWx1ZUxpc3Q8S0NDbGlwRGF0YT4KIHsKIHB1Ymxp
YzoKICAgICBLQ0NsaXBEYXRhTGlzdCgpIHsgfQpJbmRleDoga2NhbnZhcy9LQ2FudmFzUmVnaXN0
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMv
S0NhbnZhc1JlZ2lzdHJ5LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUg
LXIxLjQga2NhbnZhcy9LQ2FudmFzUmVnaXN0cnkuY3BwCi0tLSBrY2FudmFzL0tDYW52YXNSZWdp
c3RyeS5jcHAJMSBTZXAgMjAwNSAwNzozMjo0NiAtMDAwMAkxLjQKKysrIGtjYW52YXMvS0NhbnZh
c1JlZ2lzdHJ5LmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC03MywxMSArNzMsMTEg
QEAgUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLAogICAgIH0gZWxzZSAK
ICAgICB7ICAgCiAgICAgICAgIHRzIDw8IGVuZGw7Ci0gICAgICAgIGZvciAoUURpY3RJdGVyYXRv
cjxLQ2FudmFzUmVzb3VyY2U+IGl0KHIubV9yZXNvdXJjZXMpOyAoKml0KTsgKytpdCkgCisgICAg
ICAgIGZvciAoUTNEaWN0SXRlcmF0b3I8S0NhbnZhc1Jlc291cmNlPiBpdChyLm1fcmVzb3VyY2Vz
KTsgKCppdCk7ICsraXQpIAogICAgICAgICB7ICAgICAgICAgICAgCiAgICAgICAgICAgICB0cyA8
PCAiICBLQ2FudmFzUmVzb3VyY2Uge2lkPVwiIiA8PCBpdC5jdXJyZW50S2V5KCkgPDwgIlwiICIg
PDwgKigqaXQpIDw8ICJ9IiA8PCBlbmRsOwogICAgICAgICB9Ci0gICAgICAgIGZvciAoUURpY3RJ
dGVyYXRvcjxLUmVuZGVyaW5nUGFpbnRTZXJ2ZXI+IGl0KHIubV9wc2VydmVycyk7ICgqaXQpOyAr
K2l0KQorICAgICAgICBmb3IgKFEzRGljdEl0ZXJhdG9yPEtSZW5kZXJpbmdQYWludFNlcnZlcj4g
aXQoci5tX3BzZXJ2ZXJzKTsgKCppdCk7ICsraXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRz
IDw8ICIgIEtSZW5kZXJpbmdQYWludFNlcnZlciB7aWQ9XCIiIDw8IGl0LmN1cnJlbnRLZXkoKSA8
PCAiXCIgIiA8PCAqKCppdCkgPDwifSIgPDwgZW5kbDsKICAgICAgICAgfQpJbmRleDoga2NhbnZh
cy9LQ2FudmFzUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rY2FudmFzL0tDYW52YXNSZWdpc3RyeS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQK
ZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL0tDYW52YXNSZWdpc3RyeS5oCi0tLSBrY2FudmFzL0tD
YW52YXNSZWdpc3RyeS5oCTEgU2VwIDIwMDUgMDc6MzI6NDYgLTAwMDAJMS40CisrKyBrY2FudmFz
L0tDYW52YXNSZWdpc3RyeS5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTIzLDcgKzIz
LDcgQEAKICNpZm5kZWYgS0NhbnZhc1JlZ2lzdHJ5X0gKICNkZWZpbmUgS0NhbnZhc1JlZ2lzdHJ5
X0gKIAotI2luY2x1ZGUgPHFkaWN0Lmg+CisjaW5jbHVkZSA8cTNkaWN0Lmg+CiAjaW5jbHVkZSA8
cXN0cmluZy5oPgogCiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmg+CkBAIC01
MCw4ICs1MCw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8
KFFUZXh0U3RyZWFtICYsIGNvbnN0IEtDYW52YXNSZWdpc3RyeSAmKTsKICAgICAKIHByaXZhdGU6
Ci0gICAgUURpY3Q8S0NhbnZhc1Jlc291cmNlPiBtX3Jlc291cmNlczsKLSAgICBRRGljdDxLUmVu
ZGVyaW5nUGFpbnRTZXJ2ZXI+IG1fcHNlcnZlcnM7CisgICAgUTNEaWN0PEtDYW52YXNSZXNvdXJj
ZT4gbV9yZXNvdXJjZXM7CisgICAgUTNEaWN0PEtSZW5kZXJpbmdQYWludFNlcnZlcj4gbV9wc2Vy
dmVyczsKIH07CiAKIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICYsIGNvbnN0
IEtDYW52YXNSZWdpc3RyeSAmKTsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc1Jl
c291cmNlcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2Fu
dmFzL0tDYW52YXNSZXNvdXJjZXMuaAotLS0ga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmgJMSBT
ZXAgMjAwNSAwNzozMjo0NyAtMDAwMAkxLjQKKysrIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5o
CTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI0LDcgKzI0LDcgQEAKICNkZWZpbmUgS0Nh
bnZhc1Jlc291cmNlc19ICiAKICNpbmNsdWRlIDxxc3RyaW5nLmg+Ci0jaW5jbHVkZSA8cXZhbHVl
bGlzdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+CiAKICNpbmNsdWRlIDxrY2FudmFzL0tD
YW52YXNJdGVtLmg+CiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFzUGF0aC5oPgpJbmRleDoga2Nh
bnZhcy9LQ2FudmFzVHJlZURlYnVnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NW
R1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMgpkaWZmIC1wIC11IC1yMS4yIGtjYW52YXMvS0NhbnZhc1RyZWVEZWJ1Zy5oCi0tLSBrY2Fu
dmFzL0tDYW52YXNUcmVlRGVidWcuaAkxIFNlcCAyMDA1IDA0OjM5OjM1IC0wMDAwCTEuMgorKysg
a2NhbnZhcy9LQ2FudmFzVHJlZURlYnVnLmgJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAt
MjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8cXN0cmluZy5oPgogI2luY2x1ZGUgPHF0ZXh0c3Ry
ZWFtLmg+Ci0jaW5jbHVkZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+
CiAKIGNsYXNzIEtDYW52YXNNYXRyaXg7CiBjbGFzcyBRUmVjdDsKQEAgLTUxLDExICs1MSwxMSBA
QCBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmVhbSAmdHMsCiBRVGV4dFN0cmVhbSAm
b3BlcmF0b3I8PChRVGV4dFN0cmVhbSAmdHMsIGNvbnN0IFFTdHJpbmdMaXN0ICZsKTsKICAgICAK
IHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1RVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0
cmVhbSAmdHMsIGNvbnN0IFFWYWx1ZUxpc3Q8SXRlbSo+ICZsKQorUVRleHRTdHJlYW0gJm9wZXJh
dG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBRM1ZhbHVlTGlzdDxJdGVtKj4gJmwpCiB7CiAg
ICAgdHMgPDwgIlsiOwotICAgIHR5cGVuYW1lIFFWYWx1ZUxpc3Q8SXRlbSo+OjpDb25zdEl0ZXJh
dG9yIGl0ID0gbC5iZWdpbigpOwotICAgIHR5cGVuYW1lIFFWYWx1ZUxpc3Q8SXRlbSo+OjpDb25z
dEl0ZXJhdG9yIGl0X2UgPSBsLmVuZCgpOworICAgIHR5cGVuYW1lIFEzVmFsdWVMaXN0PEl0ZW0q
Pjo6Q29uc3RJdGVyYXRvciBpdCA9IGwuYmVnaW4oKTsKKyAgICB0eXBlbmFtZSBRM1ZhbHVlTGlz
dDxJdGVtKj46OkNvbnN0SXRlcmF0b3IgaXRfZSA9IGwuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9
IGl0X2UpCiAgICAgewogICAgICAgICB0cyA8PCAqKCppdCk7CkBAIC02OCwxMSArNjgsMTEgQEAg
UVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBJdGVtPgotUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLCBj
b25zdCBRVmFsdWVMaXN0PEl0ZW0+ICZsKQorUVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRT
dHJlYW0gJnRzLCBjb25zdCBRM1ZhbHVlTGlzdDxJdGVtPiAmbCkKIHsKICAgICB0cyA8PCAiWyI7
Ci0gICAgdHlwZW5hbWUgUVZhbHVlTGlzdDxJdGVtPjo6Q29uc3RJdGVyYXRvciBpdCA9IGwuYmVn
aW4oKTsKLSAgICB0eXBlbmFtZSBRVmFsdWVMaXN0PEl0ZW0+OjpDb25zdEl0ZXJhdG9yIGl0X2Ug
PSBsLmVuZCgpOworICAgIHR5cGVuYW1lIFEzVmFsdWVMaXN0PEl0ZW0+OjpDb25zdEl0ZXJhdG9y
IGl0ID0gbC5iZWdpbigpOworICAgIHR5cGVuYW1lIFEzVmFsdWVMaXN0PEl0ZW0+OjpDb25zdEl0
ZXJhdG9yIGl0X2UgPSBsLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBpdF9lKQogICAgIHsKICAg
ICAgICAgdHMgPDwgKml0OwpJbmRleDoga2NhbnZhcy9LQ2FudmFzVHlwZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXNUeXBlcy5oLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFzL0tDYW52YXNU
eXBlcy5oCi0tLSBrY2FudmFzL0tDYW52YXNUeXBlcy5oCTEgU2VwIDIwMDUgMDc6MzI6NDcgLTAw
MDAJMS4zCisrKyBrY2FudmFzL0tDYW52YXNUeXBlcy5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAw
MDAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgS0NhbnZhc1R5cGVzX0gKICNkZWZpbmUgS0Nh
bnZhc1R5cGVzX0gKIAotI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisjaW5jbHVkZSA8cTNwdHJsaXN0
Lmg+CiAKIC8vIFNvbWUgZGVmYXVsdCBjb25zdGFudHMKIApAQCAtMzUsOSArMzUsOSBAQCBjbGFz
cyBLQ2FudmFzUHJpdmF0ZVVzZXJEYXRhIHsKIAogfTsKIAotdHlwZWRlZiBRUHRyTGlzdDxLQ2Fu
dmFzUHJpdmF0ZVVzZXJEYXRhPiBLQ2FudmFzVXNlckRhdGFMaXN0OwordHlwZWRlZiBRM1B0ckxp
c3Q8S0NhbnZhc1ByaXZhdGVVc2VyRGF0YT4gS0NhbnZhc1VzZXJEYXRhTGlzdDsKICNlbHNlCi10
eXBlZGVmIFFQdHJMaXN0PHZvaWQ+IEtDYW52YXNVc2VyRGF0YUxpc3Q7Cit0eXBlZGVmIFEzUHRy
TGlzdDx2b2lkPiBLQ2FudmFzVXNlckRhdGFMaXN0OwogI2VuZGlmCiAKIC8vIGFrYSAid2hhdCB0
byBkcmF3IgpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJp
bmdEZXZpY2UuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVy
aW5nRGV2aWNlLmgJMSBTZXAgMjAwNSAwNzozMjo1MCAtMDAwMAkxLjMKKysrIGtjYW52YXMvZGV2
aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlIDxxY29sb3IuaD4KICNpbmNsdWRlIDxxb2JqZWN0Lmg+Ci0j
aW5jbHVkZSA8cXB0cnN0YWNrLmg+CisjaW5jbHVkZSA8cTNwdHJzdGFjay5oPgogCiAjaW5jbHVk
ZSA8a2NhbnZhcy9LQ2FudmFzVHlwZXMuaD4KICNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNGaWx0
ZXJzLmg+CkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDogLy8gVG8gYmUgdXNlZCBieSBmcm9t
IGluaGVyaXQKIAogcHJpdmF0ZToKICAgICBLQ2FudmFzVXNlckRhdGEgbV9jdXJyZW50UGF0aDsK
LSAgICBRUHRyU3RhY2s8S1JlbmRlcmluZ0RldmljZUNvbnRleHQ+IG1fY29udGV4dFN0YWNrOwor
ICAgIFEzUHRyU3RhY2s8S1JlbmRlcmluZ0RldmljZUNvbnRleHQ+IG1fY29udGV4dFN0YWNrOwog
fTsKIAogI2VuZGlmCkluZGV4OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNlRmFjdG9y
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9k
ZXZpY2UvS1JlbmRlcmluZ0RldmljZUZhY3RvcnkuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNlRmFjdG9y
eS5jcHAKLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2VGYWN0b3J5LmNwcAkxIFNl
cCAyMDA1IDA3OjMyOjUwIC0wMDAwCTEuMworKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0Rl
dmljZUZhY3RvcnkuY3BwCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTU5LDcgKzU5LDcg
QEAgS1JlbmRlcmluZ0RldmljZUZhY3RvcnkgKktSZW5kZXJpbmdEZXZpYwogCiBLUmVuZGVyaW5n
RGV2aWNlICpLUmVuZGVyaW5nRGV2aWNlRmFjdG9yeTo6cmVxdWVzdChjb25zdCBRU3RyaW5nICZk
ZXZpY2UpIGNvbnN0CiB7Ci0gICAgUVZhbHVlTGlzdDxLU2VydmljZTo6UHRyPiB0cmFkZXJMaXN0
ID0gS1RyYWRlcjo6c2VsZigpLT5xdWVyeSgiS0NhbnZhcy9EZXZpY2UiLCAiKFR5cGUgPT0gJ1Nl
cnZpY2UnKSIpOworICAgIFEzVmFsdWVMaXN0PEtTZXJ2aWNlOjpQdHI+IHRyYWRlckxpc3QgPSBL
VHJhZGVyOjpzZWxmKCktPnF1ZXJ5KCJLQ2FudmFzL0RldmljZSIsICIoVHlwZSA9PSAnU2Vydmlj
ZScpIik7CiAgICAgS1RyYWRlcjo6T2ZmZXJMaXN0OjpJdGVyYXRvciBpdCh0cmFkZXJMaXN0LmJl
Z2luKCkpOwogICAgIGZvciggOyBpdCAhPSB0cmFkZXJMaXN0LmVuZCgpOyArK2l0KQogICAgIHsK
QEAgLTgzLDExICs4MywxMSBAQCBLUmVuZGVyaW5nRGV2aWNlICpLUmVuZGVyaW5nRGV2aWNlRmFj
dG9yCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IFFWYWx1ZUxpc3Q8S1JlbmRlcmluZ0Rldmlj
ZUluZm8+IEtSZW5kZXJpbmdEZXZpY2VGYWN0b3J5OjpkZXZpY2VMaXN0KCkgY29uc3QKK2NvbnN0
IFEzVmFsdWVMaXN0PEtSZW5kZXJpbmdEZXZpY2VJbmZvPiBLUmVuZGVyaW5nRGV2aWNlRmFjdG9y
eTo6ZGV2aWNlTGlzdCgpIGNvbnN0CiB7Ci0gICAgUVZhbHVlTGlzdDxLUmVuZGVyaW5nRGV2aWNl
SW5mbz4gbGlzdDsKKyAgICBRM1ZhbHVlTGlzdDxLUmVuZGVyaW5nRGV2aWNlSW5mbz4gbGlzdDsK
ICAgICAKLSAgICBRVmFsdWVMaXN0PEtTZXJ2aWNlOjpQdHI+IHRyYWRlckxpc3QgPSBLVHJhZGVy
OjpzZWxmKCktPnF1ZXJ5KCJLQ2FudmFzL0RldmljZSIsICIoVHlwZSA9PSAnU2VydmljZScpIik7
CisgICAgUTNWYWx1ZUxpc3Q8S1NlcnZpY2U6OlB0cj4gdHJhZGVyTGlzdCA9IEtUcmFkZXI6OnNl
bGYoKS0+cXVlcnkoIktDYW52YXMvRGV2aWNlIiwgIihUeXBlID09ICdTZXJ2aWNlJykiKTsKICAg
ICBLVHJhZGVyOjpPZmZlckxpc3Q6Okl0ZXJhdG9yIGl0KHRyYWRlckxpc3QuYmVnaW4oKSk7CiAg
ICAgZm9yKCA7IGl0ICE9IHRyYWRlckxpc3QuZW5kKCk7ICsraXQpCiAgICAgewpJbmRleDoga2Nh
bnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZUZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNlRmFj
dG9yeS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrY2FudmFz
L2RldmljZS9LUmVuZGVyaW5nRGV2aWNlRmFjdG9yeS5oCi0tLSBrY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nRGV2aWNlRmFjdG9yeS5oCTEgU2VwIDIwMDUgMDc6MzI6NTAgLTAwMDAJMS4zCisrKyBr
Y2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNlRmFjdG9yeS5oCTIgU2VwIDIwMDUgMDk6Mzg6
MzEgLTAwMDAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPGtpbnN0YW5jZS5oPgogCi0j
aW5jbHVkZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+CiAKIGNsYXNz
IEtDYW52YXM7CiBjbGFzcyBLQ2FudmFzVGFyZ2V0OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgS1JlbmRlcmluZ0RldmljZSAqcmVxdWVzdChjb25zdCBRU3RyaW5nICZkZXZpY2UpIGNv
bnN0OwogICAgIAogICAgIC8vIFJlcXVlc3QgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcmVuZGVy
aW5nIGRldmljZXMKLSAgICBjb25zdCBRVmFsdWVMaXN0PEtSZW5kZXJpbmdEZXZpY2VJbmZvPiBk
ZXZpY2VMaXN0KCkgY29uc3Q7CisgICAgY29uc3QgUTNWYWx1ZUxpc3Q8S1JlbmRlcmluZ0Rldmlj
ZUluZm8+IGRldmljZUxpc3QoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgS0luc3Rh
bmNlICpzX2luc3RhbmNlOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2Vy
dmVyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQuY3BwCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5n
UGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJMSBTZXAgMjAwNSAwNzozMjo1MCAtMDAwMAkxLjQKKysr
IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmNwcAkyIFNlcCAy
MDA1IDA5OjM4OjMxIC0wMDAwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgS0NTb3J0ZWRHcmFkaWVu
dFN0b3BMaXN0OjphZGRTdG9wKGYKICAgICBzb3J0KCk7CiB9CiAKLWludCBLQ1NvcnRlZEdyYWRp
ZW50U3RvcExpc3Q6OmNvbXBhcmVJdGVtcyhRUHRyQ29sbGVjdGlvbjo6SXRlbSBpdGVtMSwgUVB0
ckNvbGxlY3Rpb246Okl0ZW0gaXRlbTIpCitpbnQgS0NTb3J0ZWRHcmFkaWVudFN0b3BMaXN0Ojpj
b21wYXJlSXRlbXMoUTNQdHJDb2xsZWN0aW9uOjpJdGVtIGl0ZW0xLCBRM1B0ckNvbGxlY3Rpb246
Okl0ZW0gaXRlbTIpCiB7CiAgICAgS0NHcmFkaWVudE9mZnNldFBhaXIgKnBhaXIxID0gc3RhdGlj
X2Nhc3Q8S0NHcmFkaWVudE9mZnNldFBhaXIgKj4oaXRlbTEpOwogICAgIEtDR3JhZGllbnRPZmZz
ZXRQYWlyICpwYWlyMiA9IHN0YXRpY19jYXN0PEtDR3JhZGllbnRPZmZzZXRQYWlyICo+KGl0ZW0y
KTsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2Uv
S1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3Jh
ZGllbnQuaAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1BhaW50U2VydmVyR3JhZGllbnQu
aAkxIFNlcCAyMDA1IDA3OjMyOjUwIC0wMDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRl
cmluZ1BhaW50U2VydmVyR3JhZGllbnQuaAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0y
NCw3ICsyNCw3IEBACiAjZGVmaW5lIEtSZW5kZXJpbmdQYWludFNlcnZlckdyYWRpZW50X0gKIAog
I2luY2x1ZGUgPHFjb2xvci5oPgotI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisjaW5jbHVkZSA8cTNw
dHJsaXN0Lmg+CiAKICNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaD4KICNpbmNs
dWRlIDxrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nUGFpbnRTZXJ2ZXIuaD4KQEAgLTQ0LDE3ICs0
NCwxNyBAQCBzdHJ1Y3QgS0NHcmFkaWVudE9mZnNldFBhaXIKICAgICBRQ29sb3IgY29sb3I7CiB9
OwogCi1jbGFzcyBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3QgOiBwdWJsaWMgUVB0ckxpc3Q8S0NH
cmFkaWVudE9mZnNldFBhaXI+CitjbGFzcyBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3QgOiBwdWJs
aWMgUTNQdHJMaXN0PEtDR3JhZGllbnRPZmZzZXRQYWlyPgogewogcHVibGljOgogICAgIEtDU29y
dGVkR3JhZGllbnRTdG9wTGlzdCgpOwogICAgIHZvaWQgYWRkU3RvcChmbG9hdCBvZmZzZXQsIGNv
bnN0IFFDb2xvciAmY29sb3IpOwogCi0gICAgdHlwZWRlZiBRUHRyTGlzdEl0ZXJhdG9yPEtDR3Jh
ZGllbnRPZmZzZXRQYWlyPiBJdGVyYXRvcjsKKyAgICB0eXBlZGVmIFEzUHRyTGlzdEl0ZXJhdG9y
PEtDR3JhZGllbnRPZmZzZXRQYWlyPiBJdGVyYXRvcjsKIAogICAgIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgaW50IGNvbXBhcmVJdGVtcyhRUHRyQ29sbGVjdGlvbjo6SXRlbSBpdGVtMSwgUVB0
ckNvbGxlY3Rpb246Okl0ZW0gaXRlbTIpOworICAgIHZpcnR1YWwgaW50IGNvbXBhcmVJdGVtcyhR
M1B0ckNvbGxlY3Rpb246Okl0ZW0gaXRlbTEsIFEzUHRyQ29sbGVjdGlvbjo6SXRlbSBpdGVtMik7
CiBwcml2YXRlOgogICAgIGZyaWVuZCBRVGV4dFN0cmVhbSAmb3BlcmF0b3I8PChRVGV4dFN0cmVh
bSAmLCBjb25zdCBLQ1NvcnRlZEdyYWRpZW50U3RvcExpc3QgJik7CiB9OwpJbmRleDoga2NhbnZh
cy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdT
dHlsZS5oCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nU3R5bGUuaAkxIFNlcCAyMDA1IDA3
OjMyOjUyIC0wMDAwCTEuNAorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmgJMiBT
ZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBLUmVuZGVy
aW5nU3R5bGVfSAogI2RlZmluZSBLUmVuZGVyaW5nU3R5bGVfSAogCi0jaW5jbHVkZSA8cXZhbHVl
bGlzdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVsaXN0Lmg+CiAjaW5jbHVkZSA8cXN0cmluZ2xpc3Qu
aD4KIAogLy8gRW51bWVyYXRpb25zCkBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgZW51bQogfSBL
Q0ltYWdlUmVuZGVyaW5nOwogCiAvLyBTcGVjaWFsIHR5cGVzCi10eXBlZGVmIFFWYWx1ZUxpc3Q8
ZmxvYXQ+IEtDRGFzaEFycmF5OwordHlwZWRlZiBRM1ZhbHVlTGlzdDxmbG9hdD4gS0NEYXNoQXJy
YXk7CiAKIGNsYXNzIEtDYW52YXNNYXRyaXg7CiBjbGFzcyBLQ2FudmFzRmlsdGVyOwpJbmRleDog
a2RvbS9LRE9NU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdT
dXBwb3J0L2tkb20vS0RPTVNldHRpbmdzLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRp
ZmYgLXAgLXUgLXIxLjMga2RvbS9LRE9NU2V0dGluZ3MuY3BwCi0tLSBrZG9tL0tET01TZXR0aW5n
cy5jcHAJMSBTZXAgMjAwNSAwNzozMjo1NiAtMDAwMAkxLjMKKysrIGtkb20vS0RPTVNldHRpbmdz
LmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNs
dWRlIDxxcGFpci5oPgogI2luY2x1ZGUgPHFyZWdleHAuaD4KLSNpbmNsdWRlIDxxdmFsdWV2ZWN0
b3IuaD4KKyNpbmNsdWRlIDxxM3ZhbHVldmVjdG9yLmg+CiAjaW5jbHVkZSA8cWZvbnRkYXRhYmFz
ZS5oPgogCiAjaW5jbHVkZSAiS0RPTVNldHRpbmdzLmgiCkBAIC05Nyw4ICs5Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIFBvbGljeU1hcCBkb21haW5Qb2xpY3k7CiAKLSAgICBRVmFsdWVWZWN0b3I8UVJl
Z0V4cD4gYWRGaWx0ZXJzOwotICAgIFFWYWx1ZUxpc3Q8IFFQYWlyPCBRU3RyaW5nLCBRQ2hhciA+
ID4gZmFsbGJhY2tBY2Nlc3NLZXlzQXNzaWdubWVudHM7CisgICAgUTNWYWx1ZVZlY3RvcjxRUmVn
RXhwPiBhZEZpbHRlcnM7CisgICAgUTNWYWx1ZUxpc3Q8IFFQYWlyPCBRU3RyaW5nLCBRQ2hhciA+
ID4gZmFsbGJhY2tBY2Nlc3NLZXlzQXNzaWdubWVudHM7CiAKICAgICAvLyBGbGFncwogICAgIGJv
b2wgZW5mb3JjZUNoYXJzZXQgOiAxOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIGJvb2wgS0RPTVNldHRp
bmdzOjppc0FkRmlsdGVyZWQoY29uc3QgUVMKICAgICB7CiAgICAgICAgIGlmKCF1cmwuc3RhcnRz
V2l0aChRU3RyaW5nOjpmcm9tTGF0aW4xKCJkYXRhOiIpKSkKICAgICAgICAgewotICAgICAgICAg
ICAgUVZhbHVlVmVjdG9yPFFSZWdFeHA+OjppdGVyYXRvciBpdDsKKyAgICAgICAgICAgIFEzVmFs
dWVWZWN0b3I8UVJlZ0V4cD46Oml0ZXJhdG9yIGl0OwogICAgICAgICAgICAgZm9yKGl0ID0gZC0+
YWRGaWx0ZXJzLmJlZ2luKCk7IGl0ICE9IGQtPmFkRmlsdGVycy5lbmQoKTsgKytpdCkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBpZigoKml0KS5zZWFyY2godXJsKSAhPSAtMSkKSW5k
ZXg6IGtkb20vY2FjaGUvS0RPTUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rZG9tL2NhY2hlL0tET01DYWNoZS5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20vY2FjaGUvS0RPTUNhY2hlLmNwcAotLS0ga2Rv
bS9jYWNoZS9LRE9NQ2FjaGUuY3BwCTEgU2VwIDIwMDUgMDc6MzM6MDAgLTAwMDAJMS4zCisrKyBr
ZG9tL2NhY2hlL0tET01DYWNoZS5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtNDYs
OSArNDYsOSBAQCB1c2luZyBuYW1lc3BhY2UgS0RPTTsKICNkZWZpbmUgS0RPTV9DQUNIRV9ERUZB
VUxUX1NJWkUgMjE0NjMwNCAvLyAyMDk2ICogMTAyNAogCiBMb2FkZXIgKkNhY2hlOjpzX2xvYWRl
ciA9IDA7Ci1RRGljdDxDYWNoZWRPYmplY3Q+ICpDYWNoZTo6c19vYmplY3REaWN0ID0gMDsKLVFQ
dHJMaXN0PENhY2hlZE9iamVjdD4gKkNhY2hlOjpzX2ZyZWVMaXN0ID0gMDsKLVFQdHJMaXN0PERv
Y3VtZW50TG9hZGVyPiAqQ2FjaGU6OnNfZG9jTG9hZGVyTGlzdCA9IDA7CitRM0RpY3Q8Q2FjaGVk
T2JqZWN0PiAqQ2FjaGU6OnNfb2JqZWN0RGljdCA9IDA7CitRM1B0ckxpc3Q8Q2FjaGVkT2JqZWN0
PiAqQ2FjaGU6OnNfZnJlZUxpc3QgPSAwOworUTNQdHJMaXN0PERvY3VtZW50TG9hZGVyPiAqQ2Fj
aGU6OnNfZG9jTG9hZGVyTGlzdCA9IDA7CiAKIFFQaXhtYXAgKkNhY2hlOjpudWxsUGl4bWFwOwog
UVBpeG1hcCAqQ2FjaGU6OmJyb2tlblBpeG1hcDsKQEAgLTYzLDE0ICs2MywxNCBAQCB2b2lkIENh
Y2hlOjppbml0KCkKICAgICAgICAgc19sb2FkZXIgPSBuZXcgTG9hZGVyKCk7CiAKICAgICBpZigh
c19vYmplY3REaWN0KQotICAgICAgICBzX29iamVjdERpY3QgPSBuZXcgUURpY3Q8Q2FjaGVkT2Jq
ZWN0PihLRE9NX0NBQ0hFX0RJQ1RfU0laRSwgdHJ1ZSk7CisgICAgICAgIHNfb2JqZWN0RGljdCA9
IG5ldyBRM0RpY3Q8Q2FjaGVkT2JqZWN0PihLRE9NX0NBQ0hFX0RJQ1RfU0laRSwgdHJ1ZSk7CiAK
ICAgICBpZighc19kb2NMb2FkZXJMaXN0KQotICAgICAgICBzX2RvY0xvYWRlckxpc3QgPSBuZXcg
UVB0ckxpc3Q8RG9jdW1lbnRMb2FkZXI+OworICAgICAgICBzX2RvY0xvYWRlckxpc3QgPSBuZXcg
UTNQdHJMaXN0PERvY3VtZW50TG9hZGVyPjsKIAogICAgIGlmKCFzX2ZyZWVMaXN0KQogICAgIHsK
LSAgICAgICAgc19mcmVlTGlzdCA9IG5ldyBRUHRyTGlzdDxDYWNoZWRPYmplY3Q+OworICAgICAg
ICBzX2ZyZWVMaXN0ID0gbmV3IFEzUHRyTGlzdDxDYWNoZWRPYmplY3Q+OwogICAgICAgICBzX2Zy
ZWVMaXN0LT5zZXRBdXRvRGVsZXRlKHRydWUpOwogICAgIH0KICAgICAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIENhY2hlOjpzZXRTaXplKGludCBieXRlcykKIAogYm9vbCBDYWNoZTo6aGFzUGVu
ZGluZyhDYWNoZWRPYmplY3Q6OlR5cGUgdHlwZSkKIHsKLSAgICBRRGljdEl0ZXJhdG9yPENhY2hl
ZE9iamVjdD4gaXQoKnNfb2JqZWN0RGljdCk7CisgICAgUTNEaWN0SXRlcmF0b3I8Q2FjaGVkT2Jq
ZWN0PiBpdCgqc19vYmplY3REaWN0KTsKICAgICBmb3IoaXQudG9GaXJzdCgpOyBpdC5jdXJyZW50
KCk7ICsraXQpCiAgICAgewogICAgICAgICBpZihpdC5jdXJyZW50KCktPnR5cGUoKSA9PSB0eXBl
ICYmCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBDYWNoZTo6c3RhdGlzdGljcygpCiAgICAgaW50
IHN0eWxlc2hlZXRzID0gMDsKICAgICBpbnQgZG9jdW1lbnRzID0gMDsKIAotICAgIFFEaWN0SXRl
cmF0b3I8Q2FjaGVkT2JqZWN0PiBpdCgqc19vYmplY3REaWN0KTsKKyAgICBRM0RpY3RJdGVyYXRv
cjxDYWNoZWRPYmplY3Q+IGl0KCpzX29iamVjdERpY3QpOwogICAgIGZvcihpdC50b0ZpcnN0KCk7
IGl0LmN1cnJlbnQoKTsgKytpdCkKICAgICB7CiAgICAgICAgIG8gPSBpdC5jdXJyZW50KCk7Cklu
ZGV4OiBrZG9tL2NhY2hlL0tET01DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tkb20vY2FjaGUvS0RPTUNhY2hlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20vY2FjaGUvS0RPTUNhY2hlLmgKLS0tIGtkb20vY2Fj
aGUvS0RPTUNhY2hlLmgJMSBTZXAgMjAwNSAwNzozMzowMCAtMDAwMAkxLjMKKysrIGtkb20vY2Fj
aGUvS0RPTUNhY2hlLmgJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMjgsOCArMjgsOCBA
QAogI2lmbmRlZiBLRE9NX0NhY2hlX0gKICNkZWZpbmUgS0RPTV9DYWNoZV9ICiAKLSNpbmNsdWRl
IDxxZGljdC5oPgotI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisjaW5jbHVkZSA8cTNkaWN0Lmg+Cisj
aW5jbHVkZSA8cTNwdHJsaXN0Lmg+CiAjaW5jbHVkZSA8cXBpeG1hcC5oPgogCiAjaW5jbHVkZSAi
S0RPTUNhY2hlZE9iamVjdC5oIgpAQCAtODgsOSArODgsOSBAQCBuYW1lc3BhY2UgS0RPTQogCiAg
ICAgICAgIHN0YXRpYyBMb2FkZXIgKnNfbG9hZGVyOwogCi0gICAgICAgIHN0YXRpYyBRRGljdDxD
YWNoZWRPYmplY3Q+ICpzX29iamVjdERpY3Q7IC8vIGNhY2hlCi0gICAgICAgIHN0YXRpYyBRUHRy
TGlzdDxDYWNoZWRPYmplY3Q+ICpzX2ZyZWVMaXN0OyAvLyBmcmVlbGlzdAotICAgICAgICBzdGF0
aWMgUVB0ckxpc3Q8RG9jdW1lbnRMb2FkZXI+ICpzX2RvY0xvYWRlckxpc3Q7IC8vIGRvY2xvYWRl
cjsKKyAgICAgICAgc3RhdGljIFEzRGljdDxDYWNoZWRPYmplY3Q+ICpzX29iamVjdERpY3Q7IC8v
IGNhY2hlCisgICAgICAgIHN0YXRpYyBRM1B0ckxpc3Q8Q2FjaGVkT2JqZWN0PiAqc19mcmVlTGlz
dDsgLy8gZnJlZWxpc3QKKyAgICAgICAgc3RhdGljIFEzUHRyTGlzdDxEb2N1bWVudExvYWRlcj4g
KnNfZG9jTG9hZGVyTGlzdDsgLy8gZG9jbG9hZGVyOwogCiAgICAgcHJpdmF0ZTogLy8gVXNlZCBi
eSAnRG9jdW1lbnRMb2FkZXInIGV4Y2x1c2l2ZWx5CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENhY2hlZE9iamVjdFR5cGUsIGVudW0gQ2FjaGVkT2JqZWN0OjpUeXBlIENhY2hlZFR5cGU+Cklu
ZGV4OiBrZG9tL2NhY2hlL0tET01DYWNoZUhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY2FjaGUvS0RPTUNhY2hlSGVscGVyLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20vY2FjaGUvS0RPTUNhY2hlSGVs
cGVyLmgKLS0tIGtkb20vY2FjaGUvS0RPTUNhY2hlSGVscGVyLmgJMSBTZXAgMjAwNSAwNzozMzow
MCAtMDAwMAkxLjMKKysrIGtkb20vY2FjaGUvS0RPTUNhY2hlSGVscGVyLmgJMiBTZXAgMjAwNSAw
OTozODozMSAtMDAwMApAQCAtMjksNyArMjksNyBAQAogI2RlZmluZSBLRE9NX0NhY2hlSGVscGVy
X0gKIAogI2luY2x1ZGUgPHFwdHJkaWN0Lmg+Ci0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNs
dWRlIDxxM3B0cmxpc3QuaD4KIAogI2luY2x1ZGUgPGtkb20vY2FjaGUvS0RPTUNhY2hlZE9iamVj
dC5oPgogCkluZGV4OiBrZG9tL2NhY2hlL0tET01Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY2FjaGUvS0RPTUxvYWRl
ci5jcHAKLS0tIGtkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAJMSBTZXAgMjAwNSAwOTozOTowMSAt
MDAwMAkxLjUKKysrIGtkb20vY2FjaGUvS0RPTUxvYWRlci5jcHAJMiBTZXAgMjAwNSAwOTozODoz
MSAtMDAwMApAQCAtMjY2LDcgKzI2Niw3IEBAIGludCBMb2FkZXI6Om51bVJlcXVlc3RzKERvY3Vt
ZW50TG9hZGVyICoKIHsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIFFQdHJMaXN0SXRlcmF0b3I8
UmVxdWVzdD4gcEl0KG1fcmVxdWVzdHNQZW5kaW5nKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxS
ZXF1ZXN0PiBwSXQobV9yZXF1ZXN0c1BlbmRpbmcpOwogICAgIGZvcig7IHBJdC5jdXJyZW50KCk7
ICsrcEl0KQogICAgIHsKICAgICAgICAgaWYocEl0LmN1cnJlbnQoKS0+ZG9jTG9hZGVyID09IGRv
Y0xvYWRlcikKQEAgLTI4NSw3ICsyODUsNyBAQCBpbnQgTG9hZGVyOjpudW1SZXF1ZXN0cyhEb2N1
bWVudExvYWRlciAqCiAKIHZvaWQgTG9hZGVyOjpjYW5jZWxSZXF1ZXN0cyhEb2N1bWVudExvYWRl
ciAqZG9jTG9hZGVyKQogewotICAgIFFQdHJMaXN0SXRlcmF0b3I8UmVxdWVzdD4gcEl0KG1fcmVx
dWVzdHNQZW5kaW5nKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxSZXF1ZXN0PiBwSXQobV9yZXF1
ZXN0c1BlbmRpbmcpOwogICAgIHdoaWxlKHBJdC5jdXJyZW50KCkpCiAgICAgewogICAgICAgICBp
ZihwSXQuY3VycmVudCgpLT5kb2NMb2FkZXIgPT0gZG9jTG9hZGVyKQpJbmRleDoga2RvbS9jYWNo
ZS9LRE9NTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a2RvbS9jYWNoZS9LRE9NTG9hZGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1w
IC11IC1yMS40IGtkb20vY2FjaGUvS0RPTUxvYWRlci5oCi0tLSBrZG9tL2NhY2hlL0tET01Mb2Fk
ZXIuaAkxIFNlcCAyMDA1IDA3OjMzOjAyIC0wMDAwCTEuNAorKysga2RvbS9jYWNoZS9LRE9NTG9h
ZGVyLmgJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMTQ4LDcgKzE0OCw3IEBAIG5hbWVz
cGFjZSBLRE9NCiAgICAgICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoKTsKIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgUVB0ckxpc3Q8UmVxdWVzdD4gbV9yZXF1ZXN0c1BlbmRpbmc7Cisg
ICAgICAgIFEzUHRyTGlzdDxSZXF1ZXN0PiBtX3JlcXVlc3RzUGVuZGluZzsKICAgICAgICAgUVB0
ckRpY3Q8UmVxdWVzdD4gbV9yZXF1ZXN0c0xvYWRpbmc7CiAKICAgICAgICAgUVRpbWVyIG1fdGlt
ZXI7CkluZGV4OiBrZG9tL2NvcmUvRE9NTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9ET01MaXN0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY29yZS9ET01MaXN0LmgKLS0tIGtkb20vY29yZS9E
T01MaXN0LmgJMSBTZXAgMjAwNSAwNzozMzozMyAtMDAwMAkxLjQKKysrIGtkb20vY29yZS9ET01M
aXN0LmgJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRl
ZiBLRE9NX0RPTUxpc3RfSAogI2RlZmluZSBLRE9NX0RPTUxpc3RfSAogCi0jaW5jbHVkZSA8cXB0
cmxpc3QuaD4KKyNpbmNsdWRlIDxxM3B0cmxpc3QuaD4KICNpbmNsdWRlIDxrZG9tL1NoYXJlZC5o
PgogCiBuYW1lc3BhY2UgS0RPTQpAQCAtMTE2LDcgKzExNiw3IEBAIG5hbWVzcGFjZSBLRE9NCiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFFQdHJMaXN0PFQ+IG1faW1wbDsKKyAg
ICAgICAgUTNQdHJMaXN0PFQ+IG1faW1wbDsKICAgICB9OwogfTsKIApJbmRleDoga2RvbS9jb3Jl
L0RvY3VtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jb3JlL0RvY3VtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpk
aWZmIC1wIC11IC1yMS42IGtkb20vY29yZS9Eb2N1bWVudEltcGwuY3BwCi0tLSBrZG9tL2NvcmUv
RG9jdW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjAyIC0wMDAwCTEuNgorKysga2RvbS9j
b3JlL0RvY3VtZW50SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMzAsOCAr
MzAsOCBAQAogCiAjaW5jbHVkZSA8a2xvY2FsZS5oPgogCi0jaW5jbHVkZSA8cXB0cnN0YWNrLmg+
Ci0jaW5jbHVkZSA8cXBhaW50ZGV2aWNlbWV0cmljcy5oPgorI2luY2x1ZGUgPHEzcHRyc3RhY2su
aD4KKyNpbmNsdWRlIDxxM3BhaW50ZGV2aWNlbWV0cmljcy5oPgogCiAjaW5jbHVkZSAia2RvbS5o
IgogI2luY2x1ZGUgPGtkb20vZWNtYS9FY21hLmg+CkBAIC02NzksNyArNjc5LDcgQEAgRWxlbWVu
dEltcGwgKkRvY3VtZW50SW1wbDo6Z2V0RWxlbWVudEJ5SQogICAgIGlmKGVsZW1lbnRJZCkKICAg
ICAgICAgZWxlbWVudElkLT5yZWYoKTsKIAotICAgIFFQdHJTdGFjazxOb2RlSW1wbD4gbm9kZVN0
YWNrOworICAgIFEzUHRyU3RhY2s8Tm9kZUltcGw+IG5vZGVTdGFjazsKICAgICBOb2RlSW1wbCAq
Y3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKIAogICAgIHdoaWxlKDEpCkBAIC04MzYsNyArODM2LDcg
QEAgdm9pZCBEb2N1bWVudEltcGw6OnNldFBhaW50RGV2aWNlKFFQYWludAogICAgICAgICBtX3Bh
aW50RGV2aWNlID0gZGV2OwogICAgICAgICAKICAgICAgICAgZGVsZXRlIG1fcGFpbnREZXZpY2VN
ZXRyaWNzOwotICAgICAgICBtX3BhaW50RGV2aWNlTWV0cmljcyA9IG5ldyBRUGFpbnREZXZpY2VN
ZXRyaWNzKGRldik7CisgICAgICAgIG1fcGFpbnREZXZpY2VNZXRyaWNzID0gbmV3IFEzUGFpbnRE
ZXZpY2VNZXRyaWNzKGRldik7CiAgICAgfQogfQogCkBAIC04NzQsNyArODc0LDcgQEAgTm9kZUlt
cGw6OklkIERvY3VtZW50SW1wbDo6Z2V0SWQoTm9kZUltcAogICAgICAgICB9CiAgICAgICAgIGNh
c2UgTm9kZUltcGw6Ok5hbWVzcGFjZUlkOgogICAgICAgICB7Ci0gICAgICAgICAgICAvLyAjIyMg
SWQgPT0gMCBjYW4ndCBiZSB1c2VkIHdpdGggKCh2b2lkICopIGludCkgYmFzZWQgUURpY3RzLi4u
CisgICAgICAgICAgICAvLyAjIyMgSWQgPT0gMCBjYW4ndCBiZSB1c2VkIHdpdGggKCh2b2lkICop
IGludCkgYmFzZWQgUTNEaWN0cy4uLgogICAgICAgICAgICAgaWYoIXN0cmNhc2VjbXAoRE9NU3Ry
aW5nKG5hbWUpLCBET01TdHJpbmcoZGVmYXVsdE5TKCkpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAKSW5kZXg6IGtkb20vY29yZS9Eb2N1bWVudEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvRG9jdW1lbnRJbXBsLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY29yZS9Eb2N1bWVu
dEltcGwuaAotLS0ga2RvbS9jb3JlL0RvY3VtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDk6Mzk6MDIg
LTAwMDAJMS41CisrKyBrZG9tL2NvcmUvRG9jdW1lbnRJbXBsLmgJMiBTZXAgMjAwNSAwOTozODoz
MSAtMDAwMApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSA8a3VybC5oPgogCi0jaW5jbHVk
ZSA8cWRpY3QuaD4KKyNpbmNsdWRlIDxxM2RpY3QuaD4KICNpbmNsdWRlIDxxaW50ZGljdC5oPgog
I2luY2x1ZGUgPHFzdHJpbmdsaXN0Lmg+CiAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxr
ZG9tL3hwYXRoL1hQYXRoRXZhbHVhdG9ySW1wbC5oPgogCiBjbGFzcyBRUGFpbnREZXZpY2U7Ci1j
bGFzcyBRUGFpbnREZXZpY2VNZXRyaWNzOworY2xhc3MgUTNQYWludERldmljZU1ldHJpY3M7CiAK
IG5hbWVzcGFjZSBLRE9NCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAgbmFtZXNwYWNlIEtET00KICAg
ICAgICAgdm9pZCBzZXRWaWV3KEtET01WaWV3ICp2aWV3KSB7IG1fdmlldyA9IHZpZXc7IH0KICAg
ICAgICAgS0RPTVBhcnQgKnBhcnQoKSBjb25zdDsKIAotICAgICAgICBRUGFpbnREZXZpY2VNZXRy
aWNzICpwYWludERldmljZU1ldHJpY3MoKSB7IHJldHVybiBtX3BhaW50RGV2aWNlTWV0cmljczsg
fQorICAgICAgICBRM1BhaW50RGV2aWNlTWV0cmljcyAqcGFpbnREZXZpY2VNZXRyaWNzKCkgeyBy
ZXR1cm4gbV9wYWludERldmljZU1ldHJpY3M7IH0KICAgICAgICAgUVBhaW50RGV2aWNlICpwYWlu
dERldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnREZXZpY2U7IH0KICAgICAgICAgdm9pZCBz
ZXRQYWludERldmljZShRUGFpbnREZXZpY2UgKmRldik7CiAKQEAgLTI1OSwxNCArMjU5LDE0IEBA
IG5hbWVzcGFjZSBLRE9NCiAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZFN0YXJ0OwogICAg
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgY291bnQ7CiAgICAgICAgICAgICBRSW50RGljdDxET01T
dHJpbmdJbXBsPiBuYW1lczsKLSAgICAgICAgICAgIFFEaWN0PE5vZGVJbXBsOjpJZD4gaWRzOwor
ICAgICAgICAgICAgUTNEaWN0PE5vZGVJbXBsOjpJZD4gaWRzOwogICAgICAgICB9OwogCiAgICAg
ICAgIElkTmFtZU1hcHBpbmcgKm1fYXR0ck1hcDsKICAgICAgICAgSWROYW1lTWFwcGluZyAqbV9l
bGVtZW50TWFwOwogICAgICAgICBJZE5hbWVNYXBwaW5nICptX25hbWVzcGFjZU1hcDsKIAotICAg
ICAgICBRUHRyTGlzdDxOb2RlSXRlcmF0b3JJbXBsPiBtX25vZGVJdGVyYXRvcnM7CisgICAgICAg
IFEzUHRyTGlzdDxOb2RlSXRlcmF0b3JJbXBsPiBtX25vZGVJdGVyYXRvcnM7CiAKICAgICAgICAg
dmlydHVhbCBET01TdHJpbmdJbXBsICpkZWZhdWx0TlMoKSBjb25zdDsKIApAQCAtMzA2LDcgKzMw
Niw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgICAgIEtET01WaWV3ICptX3ZpZXc7CiAKICAgICAg
ICAgUVBhaW50RGV2aWNlICptX3BhaW50RGV2aWNlOwotICAgICAgICBRUGFpbnREZXZpY2VNZXRy
aWNzICptX3BhaW50RGV2aWNlTWV0cmljczsKKyAgICAgICAgUTNQYWludERldmljZU1ldHJpY3Mg
Km1fcGFpbnREZXZpY2VNZXRyaWNzOwogCiAgICAgICAgIC8vIFRyYWNrIHRoZSBudW1iZXIgb2Yg
Y3VycmVudGx5IGxvYWRpbmcgdG9wLWxldmVsIHN0eWxlc2hlZXRzLiAgU2hlZXRzCiAgICAgICAg
IC8vIGxvYWRlZCB1c2luZyB0aGUgQGltcG9ydCBkaXJlY3RpdmUgYXJlIG5vdCBpbmNsdWRlZCBp
biB0aGlzIGNvdW50LgpJbmRleDoga2RvbS9jb3JlL05hbWVkTm9kZU1hcEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9OYW1lZE5vZGVN
YXBJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2Rv
bS9jb3JlL05hbWVkTm9kZU1hcEltcGwuY3BwCi0tLSBrZG9tL2NvcmUvTmFtZWROb2RlTWFwSW1w
bC5jcHAJMSBTZXAgMjAwNSAwNzozMzozNiAtMDAwMAkxLjQKKysrIGtkb20vY29yZS9OYW1lZE5v
ZGVNYXBJbXBsLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC00NCw3ICs0NCw3IEBA
IE5hbWVkTm9kZU1hcEltcGw6On5OYW1lZE5vZGVNYXBJbXBsKCkKIFJPTmFtZWROb2RlTWFwSW1w
bDo6Uk9OYW1lZE5vZGVNYXBJbXBsKERvY3VtZW50UHRyICpkb2MpCiA6IE5hbWVkTm9kZU1hcElt
cGwoKSwgbV9kb2MoZG9jKQogewotICAgIG1fbWFwID0gbmV3IFFQdHJMaXN0PE5vZGVJbXBsPjsK
KyAgICBtX21hcCA9IG5ldyBRM1B0ckxpc3Q8Tm9kZUltcGw+OwogfQogCiBST05hbWVkTm9kZU1h
cEltcGw6On5ST05hbWVkTm9kZU1hcEltcGwoKQpAQCAtOTQsNyArOTQsNyBAQCBOb2RlSW1wbCAq
Uk9OYW1lZE5vZGVNYXBJbXBsOjpnZXROYW1lZEl0CiB7CiAgICAgLy8gVE9ETyA6IGlkIG1lY2hh
bmlzbSBkb2VzbnQgd29yaywKICAgICAvLyByZXZlcnRpbmcgdG8gb2xkIHN5c3RlbQotICAgIFFQ
dHJMaXN0SXRlcmF0b3I8Tm9kZUltcGw+IGl0KCptX21hcCk7CisgICAgUTNQdHJMaXN0SXRlcmF0
b3I8Tm9kZUltcGw+IGl0KCptX21hcCk7CiAgICAgZm9yKDsgaXQuY3VycmVudCgpOyArK2l0KQog
ICAgIHsKICAgICAgICAgaWYoRE9NU3RyaW5nKGl0LmN1cnJlbnQoKS0+bm9kZU5hbWUoKSkgPT0g
RE9NU3RyaW5nKG5hbWUpKQpJbmRleDoga2RvbS9jb3JlL05hbWVkTm9kZU1hcEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvTmFtZWROb2Rl
TWFwSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9t
L2NvcmUvTmFtZWROb2RlTWFwSW1wbC5oCi0tLSBrZG9tL2NvcmUvTmFtZWROb2RlTWFwSW1wbC5o
CTEgU2VwIDIwMDUgMDk6Mzk6MDIgLTAwMDAJMS41CisrKyBrZG9tL2NvcmUvTmFtZWROb2RlTWFw
SW1wbC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5k
ZWYgS0RPTV9OYW1lZE5vZGVNYXBJbXBsX0gKICNkZWZpbmUgS0RPTV9OYW1lZE5vZGVNYXBJbXBs
X0gKIAotI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisjaW5jbHVkZSA8cTNwdHJsaXN0Lmg+CiAKICNp
bmNsdWRlIDxrZG9tL1NoYXJlZC5oPgogI2luY2x1ZGUgPGtkb20vY29yZS9Ob2RlSW1wbC5oPgpA
QCAtODMsNyArODMsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICB2b2lkIGFkZE5vZGUoTm9k
ZUltcGwgKm4pOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBRUHRyTGlzdDxOb2RlSW1wbD4g
Km1fbWFwOworICAgICAgICBRM1B0ckxpc3Q8Tm9kZUltcGw+ICptX21hcDsKICAgICAgICAgRG9j
dW1lbnRQdHIgKm1fZG9jOwogICAgIH07CiB9OwpJbmRleDoga2RvbS9jb3JlL05vZGVJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvTm9k
ZUltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrZG9t
L2NvcmUvTm9kZUltcGwuY3BwCi0tLSBrZG9tL2NvcmUvTm9kZUltcGwuY3BwCTEgU2VwIDIwMDUg
MDc6MzM6MzYgLTAwMDAJMS40CisrKyBrZG9tL2NvcmUvTm9kZUltcGwuY3BwCTIgU2VwIDIwMDUg
MDk6Mzg6MzEgLTAwMDAKQEAgLTEzMDIsNyArMTMwMiw3IEBAIHVuc2lnbmVkIHNob3J0IE5vZGVJ
bXBsOjpjb21wYXJlRG9jdW1lbnQKICAgICAgICBub2RlVHlwZSgpID09IEVOVElUWV9OT0RFIHx8
IG5vZGVUeXBlKCkgPT0gTk9UQVRJT05fTk9ERSkKICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX1BP
U0lUSU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJRklDOwogCi0gICAgUVB0ckxpc3Q8Tm9kZUltcGw+
IGNvbnRhaW5lcnM7CisgICAgUTNQdHJMaXN0PE5vZGVJbXBsPiBjb250YWluZXJzOwogICAgIE5v
ZGVJbXBsICpjb250YWluZXIgPSBjb25zdF9jYXN0PE5vZGVJbXBsICo+KHRoaXMpOwogICAgIHdo
aWxlKGNvbnRhaW5lcikKICAgICB7CkluZGV4OiBrZG9tL2NvcmUvVGV4dEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9UZXh0SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY29yZS9U
ZXh0SW1wbC5jcHAKLS0tIGtkb20vY29yZS9UZXh0SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozMzoz
OCAtMDAwMAkxLjQKKysrIGtkb20vY29yZS9UZXh0SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODoz
MSAtMDAwMApAQCAtOTAsMTUgKzkwLDE1IEBAIERPTVN0cmluZ0ltcGwgKlRleHRJbXBsOjp3aG9s
ZVRleHQoKSBjb24KIHsKICAgICBET01TdHJpbmdJbXBsICpyZXQgPSBuZXcgRE9NU3RyaW5nSW1w
bCgpOwogCi0gICAgUVB0ckxpc3Q8Tm9kZUltcGw+IG5vZGVzID0gbG9naWNhbGx5QWRqYWNlbnRU
ZXh0Tm9kZXMoKTsKLSAgICBRUHRyTGlzdEl0ZXJhdG9yPE5vZGVJbXBsPiBpdChub2Rlcyk7Cisg
ICAgUTNQdHJMaXN0PE5vZGVJbXBsPiBub2RlcyA9IGxvZ2ljYWxseUFkamFjZW50VGV4dE5vZGVz
KCk7CisgICAgUTNQdHJMaXN0SXRlcmF0b3I8Tm9kZUltcGw+IGl0KG5vZGVzKTsKICAgICBmb3Io
O2l0LmN1cnJlbnQoKTsgKytpdCkKICAgICAgICAgcmV0LT5hcHBlbmQoKCppdCktPm5vZGVWYWx1
ZSgpKTsKIAogICAgIHJldHVybiByZXQ7CiB9CiAKLWJvb2wgVGV4dEltcGw6OmNoZWNrQ2hpbGRy
ZW4oTm9kZUltcGwgKl9ub2RlLCBjb25zdCBRUHRyTGlzdDxOb2RlSW1wbD4gJm5vZGVzKSBjb25z
dAorYm9vbCBUZXh0SW1wbDo6Y2hlY2tDaGlsZHJlbihOb2RlSW1wbCAqX25vZGUsIGNvbnN0IFEz
UHRyTGlzdDxOb2RlSW1wbD4gJm5vZGVzKSBjb25zdAogewogICAgIGZvcihOb2RlSW1wbCAqbiA9
IF9ub2RlLT5maXJzdENoaWxkKCk7bjtuID0gbi0+bmV4dFNpYmxpbmcoKSkKICAgICB7CkBAIC0x
MTgsOSArMTE4LDkgQEAgVGV4dEltcGwgKlRleHRJbXBsOjpyZXBsYWNlV2hvbGVUZXh0KERPTQog
ICAgIGlmKGlzUmVhZE9ubHkoKSAmJiBjb250ZW50ICYmIGNvbnRlbnQtPmxlbmd0aCgpID4gMCkK
ICAgICAgICAgcmVwbGFjZW1lbnQgPSBvd25lckRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGNv
bnRlbnQpOwogCi0gICAgUVB0ckxpc3Q8Tm9kZUltcGw+IG5vZGVzID0gbG9naWNhbGx5QWRqYWNl
bnRUZXh0Tm9kZXMoKTsKLSAgICBRUHRyTGlzdDxOb2RlSW1wbD4gcmVtb3ZhYmxlczsKLSAgICBR
UHRyTGlzdEl0ZXJhdG9yPE5vZGVJbXBsPiBpdChub2Rlcyk7CisgICAgUTNQdHJMaXN0PE5vZGVJ
bXBsPiBub2RlcyA9IGxvZ2ljYWxseUFkamFjZW50VGV4dE5vZGVzKCk7CisgICAgUTNQdHJMaXN0
PE5vZGVJbXBsPiByZW1vdmFibGVzOworICAgIFEzUHRyTGlzdEl0ZXJhdG9yPE5vZGVJbXBsPiBp
dChub2Rlcyk7CiAgICAgZm9yKDtpdC5jdXJyZW50KCk7ICsraXQpCiAgICAgewogICAgICAgICBO
b2RlSW1wbCAqbiA9ICgqaXQpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFRleHRJbXBsICpUZXh0SW1w
bDo6cmVwbGFjZVdob2xlVGV4dChET00KICAgICAgICAgfQogICAgIH0KIAotICAgIFFQdHJMaXN0
SXRlcmF0b3I8Tm9kZUltcGw+IGl0MihyZW1vdmFibGVzKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRv
cjxOb2RlSW1wbD4gaXQyKHJlbW92YWJsZXMpOwogICAgIGZvcig7aXQyLmN1cnJlbnQoKTsgKytp
dDIpCiAgICAgewogICAgICAgICBOb2RlSW1wbCAqcmVtb3ZhYmxlID0gKCppdDIpOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIFRleHRJbXBsICpUZXh0SW1wbDo6cmVwbGFjZVdob2xlVGV4dChET00KICAg
ICByZXR1cm4gdGhpczsKIH0KIAotUVB0ckxpc3Q8Tm9kZUltcGw+IFRleHRJbXBsOjpsb2dpY2Fs
bHlBZGphY2VudFRleHROb2RlcygpIGNvbnN0CitRM1B0ckxpc3Q8Tm9kZUltcGw+IFRleHRJbXBs
Ojpsb2dpY2FsbHlBZGphY2VudFRleHROb2RlcygpIGNvbnN0CiB7CiAgICAgTm9kZUltcGwgKm4g
PSBjb25zdF9jYXN0PFRleHRJbXBsICo+KHRoaXMpOwogICAgIGJvb2wgZ28gPSBmYWxzZTsKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBRUHRyTGlzdDxOb2RlSW1wbD4gVGV4dEltcGw6OmxvZ2ljYWxseUFk
CiAgICAgICAgIG4gPSBwcmV2aW91czsKICAgICB9CiAKLSAgICBRUHRyTGlzdDxOb2RlSW1wbD4g
cmV0OworICAgIFEzUHRyTGlzdDxOb2RlSW1wbD4gcmV0OwogICAgIGdvID0gdHJ1ZTsKICAgICB3
aGlsZSh0cnVlKQogICAgIHsKSW5kZXg6IGtkb20vY29yZS9UZXh0SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9UZXh0SW1wbC5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2NvcmUvVGV4dEltcGwu
aAotLS0ga2RvbS9jb3JlL1RleHRJbXBsLmgJMSBTZXAgMjAwNSAwOTozOTowMiAtMDAwMAkxLjUK
KysrIGtkb20vY29yZS9UZXh0SW1wbC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTQ2
LDggKzQ2LDggQEAgbmFtZXNwYWNlIEtET00KICAgICAgICAgdmlydHVhbCBOb2RlSW1wbCAqY2xv
bmVOb2RlKGJvb2wgZGVlcCwgRG9jdW1lbnRQdHIgKmRvYykgY29uc3Q7CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFFQdHJMaXN0PE5vZGVJbXBsPiBsb2dpY2FsbHlBZGphY2VudFRleHROb2Rl
cygpIGNvbnN0OwotICAgICAgICBib29sIGNoZWNrQ2hpbGRyZW4oTm9kZUltcGwgKm5vZGUsIGNv
bnN0IFFQdHJMaXN0PE5vZGVJbXBsPiAmcmVtb3ZhYmxlcykgY29uc3Q7CisgICAgICAgIFEzUHRy
TGlzdDxOb2RlSW1wbD4gbG9naWNhbGx5QWRqYWNlbnRUZXh0Tm9kZXMoKSBjb25zdDsKKyAgICAg
ICAgYm9vbCBjaGVja0NoaWxkcmVuKE5vZGVJbXBsICpub2RlLCBjb25zdCBRM1B0ckxpc3Q8Tm9k
ZUltcGw+ICZyZW1vdmFibGVzKSBjb25zdDsKICAgICB9OwogfTsKIApJbmRleDoga2RvbS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZUltcGwuY3BwCi0tLSBrZG9tL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUltcGwuY3BwCTEgU2VwIDIw
MDUgMDk6Mzk6MDUgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUltcGwu
Y3BwCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1
ZGUgPHFyZWdleHAuaD4KICNpbmNsdWRlIDxxZm9udG1ldHJpY3MuaD4KLSNpbmNsdWRlIDxxcGFp
bnRkZXZpY2VtZXRyaWNzLmg+CisjaW5jbHVkZSA8cTNwYWludGRldmljZW1ldHJpY3MuaD4KIAog
I2luY2x1ZGUgIlJlY3RJbXBsLmgiCiAjaW5jbHVkZSA8a2RvbS9jc3MvQ1NTSGVscGVyLmg+CkBA
IC0yMDgsNyArMjA4LDcgQEAgUkdCQ29sb3JJbXBsICpDU1NQcmltaXRpdmVWYWx1ZUltcGw6Omdl
dAogICAgIHJldHVybiBuZXcgUkdCQ29sb3JJbXBsKG1faW50ZXJmYWNlLCBnZXRRUkdCQ29sb3JW
YWx1ZSgpKTsKIH0KIAotaW50IENTU1ByaW1pdGl2ZVZhbHVlSW1wbDo6Y29tcHV0ZUxlbmd0aChS
ZW5kZXJTdHlsZSAqc3R5bGUsIFFQYWludERldmljZU1ldHJpY3MgKmRldk1ldHJpY3MpCitpbnQg
Q1NTUHJpbWl0aXZlVmFsdWVJbXBsOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlICpzdHlsZSwg
UTNQYWludERldmljZU1ldHJpY3MgKmRldk1ldHJpY3MpCiB7CiAgICAgZG91YmxlIHJlc3VsdCA9
IGNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSwgZGV2TWV0cmljcyk7CiAKQEAgLTIxOCw3ICsyMTgs
NyBAQCBpbnQgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsOjpjb21wdXRlTGVuZ3RoCiAgICAgcmV0dXJu
IGludFJlc3VsdDsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlSW1wbDo6Y29tcHV0ZUxl
bmd0aEZsb2F0KFJlbmRlclN0eWxlICpzdHlsZSwgUVBhaW50RGV2aWNlTWV0cmljcyAqZGV2TWV0
cmljcykKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZUltcGw6OmNvbXB1dGVMZW5ndGhGbG9hdChS
ZW5kZXJTdHlsZSAqc3R5bGUsIFEzUGFpbnREZXZpY2VNZXRyaWNzICpkZXZNZXRyaWNzKQogewog
ICAgIHVuc2lnbmVkIHNob3J0IHR5cGUgPSBwcmltaXRpdmVUeXBlKCk7CiAKSW5kZXg6IGtkb20v
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZUltcGwuaAotLS0ga2RvbS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVJbXBsLmgJMSBTZXAgMjAwNSAw
OTozOTowNSAtMDAwMAkxLjUKKysrIGtkb20vY3NzL0NTU1ByaW1pdGl2ZVZhbHVlSW1wbC5oCTIg
U2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlIDxrZG9t
L2Nzcy9DU1NWYWx1ZUltcGwuaD4KIAogI2luY2x1ZGUgPHFjb2xvci5oPgotY2xhc3MgUVBhaW50
RGV2aWNlTWV0cmljczsKK2NsYXNzIFEzUGFpbnREZXZpY2VNZXRyaWNzOwogCiBuYW1lc3BhY2Ug
S0RPTQogewpAQCAtNzIsOCArNzIsOCBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICAgKiB0aGlz
IGlzIHNjcmVlbi9wcmludGVyIGRlcGVuZGVudCwgc28gd2UgcHJvYmFibHkgbmVlZCBhIGNvbmZp
ZyBvcHRpb24gZm9yIHRoaXMsCiAgICAgICAgICAqIGFuZCBzb21lIHRvb2wgdG8gY2FsaWJyYXRl
LgogICAgICAgICAgKi8KLSAgICAgICAgaW50IGNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUgKnN0
eWxlLCBRUGFpbnREZXZpY2VNZXRyaWNzICpkZXZNZXRyaWNzKTsKLSAgICAgICAgZG91YmxlIGNv
bXB1dGVMZW5ndGhGbG9hdChSZW5kZXJTdHlsZSAqc3R5bGUsIFFQYWludERldmljZU1ldHJpY3Mg
KmRldk1ldHJpY3MpOworICAgICAgICBpbnQgY29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSAqc3R5
bGUsIFEzUGFpbnREZXZpY2VNZXRyaWNzICpkZXZNZXRyaWNzKTsKKyAgICAgICAgZG91YmxlIGNv
bXB1dGVMZW5ndGhGbG9hdChSZW5kZXJTdHlsZSAqc3R5bGUsIFEzUGFpbnREZXZpY2VNZXRyaWNz
ICpkZXZNZXRyaWNzKTsKIAogICAgICAgICAvLyB1c2Ugd2l0aCBjYXJlIQogICAgICAgICBkb3Vi
bGUgZmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCAvKiB1bml0VHlwZSAqLykgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5udW07IH0KSW5kZXg6IGtkb20vY3NzL0NTU1J1bGVMaXN0SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL0NTU1J1bGVMaXN0
SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL2Nz
cy9DU1NSdWxlTGlzdEltcGwuaAotLS0ga2RvbS9jc3MvQ1NTUnVsZUxpc3RJbXBsLmgJMSBTZXAg
MjAwNSAwNzozMzowNyAtMDAwMAkxLjMKKysrIGtkb20vY3NzL0NTU1J1bGVMaXN0SW1wbC5oCTIg
U2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPGtk
b20vU2hhcmVkLmg+CiAKLSNpbmNsdWRlIDxxcHRybGlzdC5oPgorI2luY2x1ZGUgPHEzcHRybGlz
dC5oPgogCiBuYW1lc3BhY2UgS0RPTQogewpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgS0RP
TQogICAgICAgICB2b2lkIGFwcGVuZChDU1NSdWxlSW1wbCAqcnVsZSk7CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFFQdHJMaXN0PENTU1J1bGVJbXBsPiBtX2xzdENTU1J1bGVzOworICAgICAg
ICBRM1B0ckxpc3Q8Q1NTUnVsZUltcGw+IG1fbHN0Q1NTUnVsZXM7CiAgICAgfTsKIH07CiAKSW5k
ZXg6IGtkb20vY3NzL0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uSW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmNwcAotLS0ga2RvbS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbkltcGwuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MDUgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9D
U1NTdHlsZURlY2xhcmF0aW9uSW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAt
NDEsNyArNDEsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbDo6Q1NTU3R5bGVEZWNsYXJhCiAg
ICAgbV9pbnRlcmZhY2UgPSBpbnRlcmZhY2U7CiB9CiAKLUNTU1N0eWxlRGVjbGFyYXRpb25JbXBs
OjpDU1NTdHlsZURlY2xhcmF0aW9uSW1wbChDREZJbnRlcmZhY2UgKmludGVyZmFjZSwgQ1NTUnVs
ZUltcGwgKnBhcmVudCwgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICpsc3RWYWx1ZXMpCitDU1NTdHls
ZURlY2xhcmF0aW9uSW1wbDo6Q1NTU3R5bGVEZWNsYXJhdGlvbkltcGwoQ0RGSW50ZXJmYWNlICpp
bnRlcmZhY2UsIENTU1J1bGVJbXBsICpwYXJlbnQsIFEzUHRyTGlzdDxDU1NQcm9wZXJ0eT4gKmxz
dFZhbHVlcykKIDogU3R5bGVCYXNlSW1wbChwYXJlbnQpCiB7CiAgICAgbV9ub2RlID0gMDsKQEAg
LTY1LDEwICs2NSwxMCBAQCBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAmQ1NTU3R5bGVEZWNsYXJh
CiAKICAgICBpZihvLm1fbHN0VmFsdWVzKQogICAgIHsKLSAgICAgICAgbV9sc3RWYWx1ZXMgPSBu
ZXcgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+KCk7CisgICAgICAgIG1fbHN0VmFsdWVzID0gbmV3IFEz
UHRyTGlzdDxDU1NQcm9wZXJ0eT4oKTsKICAgICAgICAgbV9sc3RWYWx1ZXMtPnNldEF1dG9EZWxl
dGUodHJ1ZSk7CiAKLSAgICAgICAgUVB0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFs
dWVzSXQoKm8ubV9sc3RWYWx1ZXMpOworICAgICAgICBRM1B0ckxpc3RJdGVyYXRvcjxDU1NQcm9w
ZXJ0eT4gbHN0VmFsdWVzSXQoKm8ubV9sc3RWYWx1ZXMpOwogICAgICAgICBmb3IobHN0VmFsdWVz
SXQudG9GaXJzdCgpOyBsc3RWYWx1ZXNJdC5jdXJyZW50KCk7ICsrbHN0VmFsdWVzSXQpCiAgICAg
ICAgICAgICBtX2xzdFZhbHVlcy0+YXBwZW5kKG5ldyBDU1NQcm9wZXJ0eSgqbHN0VmFsdWVzSXQu
Y3VycmVudCgpKSk7CiAgICAgfQpAQCAtODMsNyArODMsNyBAQCBET01TdHJpbmdJbXBsICpDU1NT
dHlsZURlY2xhcmF0aW9uSW1wbDo6CiAKICAgICBET01TdHJpbmdJbXBsICpyZXN1bHQgPSBuZXcg
RE9NU3RyaW5nSW1wbCgpOwogCi0gICAgUVB0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0
VmFsdWVzSXQoKm1fbHN0VmFsdWVzKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0
eT4gbHN0VmFsdWVzSXQoKm1fbHN0VmFsdWVzKTsKICAgICAgICAgCiAgICAgQ1NTUHJvcGVydHkg
KmN1cnJlbnQ7CiAgICAgZm9yKGxzdFZhbHVlc0l0LnRvRmlyc3QoKTsgKGN1cnJlbnQgPSBsc3RW
YWx1ZXNJdC5jdXJyZW50KCkpOyArK2xzdFZhbHVlc0l0KQpAQCAtOTgsNyArOTgsNyBAQCB2b2lk
IENTU1N0eWxlRGVjbGFyYXRpb25JbXBsOjpzZXRDc3NUZXh0CiAgICAgICAgIG1fbHN0VmFsdWVz
LT5jbGVhcigpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1fbHN0VmFsdWVzID0gbmV3IFFQ
dHJMaXN0PENTU1Byb3BlcnR5PigpOworICAgICAgICBtX2xzdFZhbHVlcyA9IG5ldyBRM1B0ckxp
c3Q8Q1NTUHJvcGVydHk+KCk7CiAgICAgICAgIG1fbHN0VmFsdWVzLT5zZXRBdXRvRGVsZXRlKHRy
dWUpOwogICAgIH0KIApAQCAtMjkxLDcgKzI5MSw3IEBAIENTU1ZhbHVlSW1wbCAqQ1NTU3R5bGVE
ZWNsYXJhdGlvbkltcGw6OmcKICAgICBpZighbV9sc3RWYWx1ZXMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUVB0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQoKm1fbHN0
VmFsdWVzKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQo
Km1fbHN0VmFsdWVzKTsKICAgICBDU1NQcm9wZXJ0eSAqY3VycmVudDsKICAgICBmb3IobHN0VmFs
dWVzSXQudG9MYXN0KCk7IChjdXJyZW50ID0gbHN0VmFsdWVzSXQuY3VycmVudCgpKTsgLS1sc3RW
YWx1ZXNJdCkKICAgICB7CkBAIC0zMzEsNyArMzMxLDcgQEAgRE9NU3RyaW5nSW1wbCAqQ1NTU3R5
bGVEZWNsYXJhdGlvbkltcGw6OgogCiAgICAgRE9NU3RyaW5nSW1wbCAqdmFsdWUgPSAwOwogCi0g
ICAgUVB0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQoKm1fbHN0VmFsdWVz
KTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQoKm1fbHN0
VmFsdWVzKTsKICAgICBDU1NQcm9wZXJ0eSAqY3VycmVudDsKICAgICBmb3IobHN0VmFsdWVzSXQu
dG9MYXN0KCk7IChjdXJyZW50ID0gbHN0VmFsdWVzSXQuY3VycmVudCgpKTsgLS1sc3RWYWx1ZXNJ
dCkKICAgICB7CkBAIC0zNTIsNyArMzUyLDcgQEAgYm9vbCBDU1NTdHlsZURlY2xhcmF0aW9uSW1w
bDo6Z2V0UHJvcGVydAogICAgIGlmKCFtX2xzdFZhbHVlcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgUVB0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQoKm1fbHN0
VmFsdWVzKTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gbHN0VmFsdWVzSXQo
Km1fbHN0VmFsdWVzKTsKICAgICAgICAgCiAgICAgQ1NTUHJvcGVydHkgKmN1cnJlbnQ7CiAgICAg
Zm9yKGxzdFZhbHVlc0l0LnRvRmlyc3QoKTsgKGN1cnJlbnQgPSBsc3RWYWx1ZXNJdC5jdXJyZW50
KCkpOyArK2xzdFZhbHVlc0l0KQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgQ1NTU3R5bGVEZWNs
YXJhdGlvbkltcGw6OnNldFByb3BlcnQKIHsKICAgICBpZighbV9sc3RWYWx1ZXMpCiAgICAgewot
ICAgICAgICBtX2xzdFZhbHVlcyA9IG5ldyBRUHRyTGlzdDxDU1NQcm9wZXJ0eT4oKTsKKyAgICAg
ICAgbV9sc3RWYWx1ZXMgPSBuZXcgUTNQdHJMaXN0PENTU1Byb3BlcnR5PigpOwogICAgICAgICBt
X2xzdFZhbHVlcy0+c2V0QXV0b0RlbGV0ZSh0cnVlKTsKICAgICB9CiAKQEAgLTM5Nyw3ICszOTcs
NyBAQCBib29sIENTU1N0eWxlRGVjbGFyYXRpb25JbXBsOjpzZXRQcm9wZXJ0CiB7CiAgICAgaWYo
IW1fbHN0VmFsdWVzKQogICAgIHsKLSAgICAgICAgbV9sc3RWYWx1ZXMgPSBuZXcgUVB0ckxpc3Q8
Q1NTUHJvcGVydHk+KCk7CisgICAgICAgIG1fbHN0VmFsdWVzID0gbmV3IFEzUHRyTGlzdDxDU1NQ
cm9wZXJ0eT4oKTsKICAgICAgICAgbV9sc3RWYWx1ZXMtPnNldEF1dG9EZWxldGUodHJ1ZSk7CiAg
ICAgfQogCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbDo6
c2V0UHJvcGVydAogewogICAgIGlmKCFtX2xzdFZhbHVlcykKICAgICB7Ci0gICAgICAgIG1fbHN0
VmFsdWVzID0gbmV3IFFQdHJMaXN0PENTU1Byb3BlcnR5PigpOworICAgICAgICBtX2xzdFZhbHVl
cyA9IG5ldyBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+KCk7CiAgICAgICAgIG1fbHN0VmFsdWVzLT5z
ZXRBdXRvRGVsZXRlKHRydWUpOwogICAgIH0KIApJbmRleDoga2RvbS9jc3MvQ1NTU3R5bGVEZWNs
YXJhdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5oCi0t
LSBrZG9tL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5oCTEgU2VwIDIwMDUgMDk6Mzk6MDUg
LTAwMDAJMS41CisrKyBrZG9tL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5oCTIgU2VwIDIw
MDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgS0RPTV9DU1NTdHls
ZURlY2xhcmF0aW9uSW1wbF9ICiAjZGVmaW5lIEtET01fQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGxf
SAogCi0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRlIDxxM3B0cmxpc3QuaD4KIAogI2lu
Y2x1ZGUgPGtkb20vY3NzL1N0eWxlQmFzZUltcGwuaD4KIApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgS0RPTQogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENTU1N0eWxlRGVjbGFyYXRp
b25JbXBsKENERkludGVyZmFjZSAqaW50ZXJmYWNlLCBDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSk7
Ci0gICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb25JbXBsKENERkludGVyZmFjZSAqaW50ZXJmYWNl
LCBDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSwgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICpsc3RWYWx1
ZXMpOworICAgICAgICBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbChDREZJbnRlcmZhY2UgKmludGVy
ZmFjZSwgQ1NTUnVsZUltcGwgKnBhcmVudFJ1bGUsIFEzUHRyTGlzdDxDU1NQcm9wZXJ0eT4gKmxz
dFZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgfkNTU1N0eWxlRGVjbGFyYXRpb25JbXBsKCk7CiAK
ICAgICAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwmIG9wZXJhdG9yPShjb25zdCBDU1NTdHls
ZURlY2xhcmF0aW9uSW1wbCAmKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEtET00KICAg
ICAgICAgdm9pZCBzZXROb2RlKE5vZGVJbXBsICpub2RlKSB7IG1fbm9kZSA9IG5vZGU7IH0KICAg
ICAgICAgCiAgICAgICAgIENERkludGVyZmFjZSAqaW50ZXJmYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcmZhY2U7IH0KLSAgICAgICAgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICp2YWx1ZXMoKSBj
b25zdCB7IHJldHVybiBtX2xzdFZhbHVlczsgfQorICAgICAgICBRM1B0ckxpc3Q8Q1NTUHJvcGVy
dHk+ICp2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX2xzdFZhbHVlczsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRDaGFuZ2VkKCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgbmFtZXNwYWNlIEtE
T00KICAgICAgICAgRE9NU3RyaW5nSW1wbCAqZ2V0NFZhbHVlcyhjb25zdCBpbnQgKnByb3BlcnRp
ZXMpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBRUHRyTGlzdDxDU1NQcm9wZXJ0
eT4gKm1fbHN0VmFsdWVzOworICAgICAgICBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+ICptX2xzdFZh
bHVlczsKICAgICAgICAgQ0RGSW50ZXJmYWNlICptX2ludGVyZmFjZTsKICAgICAgICAgTm9kZUlt
cGwgKm1fbm9kZTsKICAgICB9OwpJbmRleDoga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jc3MvQ1NTU3R5
bGVSdWxlSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40
IGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuY3BwCi0tLSBrZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJ
bXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjA4IC0wMDAwCTEuNAorKysga2RvbS9jc3MvQ1NTU3R5
bGVSdWxlSW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtNzQsNyArNzQsNyBA
QCBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqQ1NTU3R5bGVSdWxlSW1wCiAgICAgcmV0dXJuIG1f
c3R5bGU7CiB9CiAKLXZvaWQgQ1NTU3R5bGVSdWxlSW1wbDo6c2V0U2VsZWN0b3IoUVB0ckxpc3Q8
Q1NTU2VsZWN0b3I+ICpzZWxlY3RvcikKK3ZvaWQgQ1NTU3R5bGVSdWxlSW1wbDo6c2V0U2VsZWN0
b3IoUTNQdHJMaXN0PENTU1NlbGVjdG9yPiAqc2VsZWN0b3IpCiB7CiAgICAgbV9zZWxlY3RvciA9
IHNlbGVjdG9yOwogfQpJbmRleDoga2RvbS9jc3MvQ1NTU3R5bGVSdWxlSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL0NTU1N0eWxlUnVsZUlt
cGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jc3Mv
Q1NTU3R5bGVSdWxlSW1wbC5oCi0tLSBrZG9tL2Nzcy9DU1NTdHlsZVJ1bGVJbXBsLmgJMSBTZXAg
MjAwNSAwOTozOTowNSAtMDAwMAkxLjUKKysrIGtkb20vY3NzL0NTU1N0eWxlUnVsZUltcGwuaAky
IFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxr
ZG9tL2Nzcy9DU1NSdWxlSW1wbC5oPgogCi0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRl
IDxxM3B0cmxpc3QuaD4KIAogbmFtZXNwYWNlIEtET00KIHsKQEAgLTQ3LDE3ICs0NywxNyBAQCBu
YW1lc3BhY2UgS0RPTQogICAgICAgICAvLyAnQ1NTUnVsZScgZnVuY3Rpb25zCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1N0eWxlUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAg
ICB2b2lkIHNldFNlbGVjdG9yKFFQdHJMaXN0PENTU1NlbGVjdG9yPiAqc2VsZWN0b3IpOworICAg
ICAgICB2b2lkIHNldFNlbGVjdG9yKFEzUHRyTGlzdDxDU1NTZWxlY3Rvcj4gKnNlbGVjdG9yKTsK
ICAgICAgICAgdm9pZCBzZXREZWNsYXJhdGlvbihDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqc3R5
bGUpOwogCi0gICAgICAgIFFQdHJMaXN0PENTU1NlbGVjdG9yPiAqc2VsZWN0b3IoKSB7IHJldHVy
biBtX3NlbGVjdG9yOyB9CisgICAgICAgIFEzUHRyTGlzdDxDU1NTZWxlY3Rvcj4gKnNlbGVjdG9y
KCkgeyByZXR1cm4gbV9zZWxlY3RvcjsgfQogICAgICAgICBDU1NTdHlsZURlY2xhcmF0aW9uSW1w
bCAqZGVjbGFyYXRpb24oKSB7IHJldHVybiBtX3N0eWxlOyB9CiAKICAgICAgICAgdm9pZCBzZXRO
b25DU1NIaW50cygpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBDU1NTdHlsZURlY2xhcmF0
aW9uSW1wbCAqbV9zdHlsZTsKLSAgICAgICAgUVB0ckxpc3Q8Q1NTU2VsZWN0b3I+ICptX3NlbGVj
dG9yOworICAgICAgICBRM1B0ckxpc3Q8Q1NTU2VsZWN0b3I+ICptX3NlbGVjdG9yOwogICAgIH07
CiB9OwogCkluZGV4OiBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43CmRpZmYgLXAgLXUgLXIxLjcga2RvbS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKLS0tIGtkb20vY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCTEgU2Vw
IDIwMDUgMDk6Mzk6MDUgLTAwMDAJMS43CisrKyBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVkZSA8
a2dsb2JhbC5oPgogCiAjaW5jbHVkZSA8cXRvb2x0aXAuaD4KLSNpbmNsdWRlIDxxdmFsdWV2ZWN0
b3IuaD4KKyNpbmNsdWRlIDxxM3ZhbHVldmVjdG9yLmg+CiAjaW5jbHVkZSA8cWFwcGxpY2F0aW9u
Lmg+Ci0jaW5jbHVkZSA8cXBhaW50ZGV2aWNlbWV0cmljcy5oPgorI2luY2x1ZGUgPHEzcGFpbnRk
ZXZpY2VtZXRyaWNzLmg+CiAKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiS0RPTVBhcnQu
aCIKQEAgLTE0OCw3ICsxNDgsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9y
KERvY3VtCiAgICAgLy8gYWRkIHN0eWxlc2hlZXRzIGZyb20gZG9jdW1lbnQKICAgICBhdXRob3JT
dHlsZSA9IG5ldyBDU1NTdHlsZVNlbGVjdG9yTGlzdCgpOwogCi0gICAgUVB0ckxpc3RJdGVyYXRv
cjxTdHlsZVNoZWV0SW1wbD4gaXQoc3R5bGVTaGVldHMtPnN0eWxlU2hlZXRzKTsKKyAgICBRM1B0
ckxpc3RJdGVyYXRvcjxTdHlsZVNoZWV0SW1wbD4gaXQoc3R5bGVTaGVldHMtPnN0eWxlU2hlZXRz
KTsKICAgICBmb3IoOyBpdC5jdXJyZW50KCk7ICsraXQpCiAgICAgewogICAgICAgICAgICBpZihp
dC5jdXJyZW50KCktPmlzQ1NTU3R5bGVTaGVldCgpKQpAQCAtMjI4LDEzICsyMjgsMTMgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpjbGVhcigpCiAKICNkZWZpbmUgTUFYRk9OVFNJWkVTIDkKIAot
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRm9udFNpemVzKFFQYWludERldmljZU1ldHJp
Y3MgKnBhaW50RGV2aWNlTWV0cmljcywgaW50IHpvb21GYWN0b3IpCit2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmNvbXB1dGVGb250U2l6ZXMoUTNQYWludERldmljZU1ldHJpY3MgKnBhaW50RGV2aWNl
TWV0cmljcywgaW50IHpvb21GYWN0b3IpCiB7CiAgICAgY29tcHV0ZUZvbnRTaXplc0ZvcihwYWlu
dERldmljZU1ldHJpY3MsIHpvb21GYWN0b3IsIG1fZm9udFNpemVzLCBmYWxzZSk7CiAgICAgY29t
cHV0ZUZvbnRTaXplc0ZvcihwYWludERldmljZU1ldHJpY3MsIHpvb21GYWN0b3IsIG1fZml4ZWRG
b250U2l6ZXMsIHRydWUpOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNvbXB1dGVGb250
U2l6ZXNGb3IoUVBhaW50RGV2aWNlTWV0cmljcyAqcGFpbnREZXZpY2VNZXRyaWNzLCBpbnQgem9v
bUZhY3RvciwgUVZhbHVlVmVjdG9yPGludD4gJmZvbnRTaXplcywgYm9vbCBpc0ZpeGVkKQordm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjpjb21wdXRlRm9udFNpemVzRm9yKFEzUGFpbnREZXZpY2VNZXRy
aWNzICpwYWludERldmljZU1ldHJpY3MsIGludCB6b29tRmFjdG9yLCBRM1ZhbHVlVmVjdG9yPGlu
dD4gJmZvbnRTaXplcywgYm9vbCBpc0ZpeGVkKQogewogICAgIFFfVU5VU0VEKGlzRml4ZWQpOwog
ICAgICAgICAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnViYmxlU29y
dChDU1NPcmRlcmVkCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGludCBuZXh0Rm9udFNpemUo
Y29uc3QgUVZhbHVlVmVjdG9yPGludD4gJmEsIGludCB2LCBib29sIHNtYWxsZXIpCitzdGF0aWMg
aW5saW5lIGludCBuZXh0Rm9udFNpemUoY29uc3QgUTNWYWx1ZVZlY3RvcjxpbnQ+ICZhLCBpbnQg
diwgYm9vbCBzbWFsbGVyKQogewogICAgIC8vIHJldHVybiB0aGUgbmVhcmVzdCBiaWdnZXIvc21h
bGxlciB2YWx1ZSBpbiBzY2FsZSBhLCB3aGVuIHYgaXMgaW4gcmFuZ2UuCiAgICAgLy8gb3RoZXJ3
aXNlIGluY3JlYXNlL2RlY3JlYXNlIHZhbHVlIHVzaW5nIGEgMS4yIGZpeGVkIHJhdGlvCkBAIC01
NDcsOCArNTQ3LDggQEAgdW5zaWduZWQgaW50IENTU1N0eWxlU2VsZWN0b3I6OmFkZElubGluZQog
ICAgIGlmKCFkZWNsICYmICFhZGREZWNscykKICAgICAgICAgcmV0dXJuIG51bVByb3BzOwogCi0g
ICAgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICp2YWx1ZXMgPSBkZWNsID8gZGVjbC0+dmFsdWVzKCkg
OiAwOwotICAgIFFQdHJMaXN0PENTU1Byb3BlcnR5PiAqYWRkVmFsdWVzID0gYWRkRGVjbHMgPyBh
ZGREZWNscy0+dmFsdWVzKCkgOiAwOworICAgIFEzUHRyTGlzdDxDU1NQcm9wZXJ0eT4gKnZhbHVl
cyA9IGRlY2wgPyBkZWNsLT52YWx1ZXMoKSA6IDA7CisgICAgUTNQdHJMaXN0PENTU1Byb3BlcnR5
PiAqYWRkVmFsdWVzID0gYWRkRGVjbHMgPyBhZGREZWNscy0+dmFsdWVzKCkgOiAwOwogICAgIGlm
KCF2YWx1ZXMgJiYgIWFkZFZhbHVlcykKICAgICAgICAgcmV0dXJuIG51bVByb3BzOwogCkBAIC0x
NDk1LDcgKzE0OTUsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmJ1aWxkTGlzdHMoKQogICAg
IGNsZWFyTGlzdHMoKTsKICAgICAvLyBjb2xsZWN0IGFsbCBzZWxlY3RvcnMgYW5kIFByb3BlcnRp
ZXMgaW4gbGlzdHMuIFRoZW4gdHJhbnNmZXIgdGhlbSB0byB0aGUgYXJyYXkgZm9yIGZhc3RlciBs
b29rdXAuCiAKLSAgICBRUHRyTGlzdDxDU1NTZWxlY3Rvcj4gc2VsZWN0b3JMaXN0OworICAgIFEz
UHRyTGlzdDxDU1NTZWxlY3Rvcj4gc2VsZWN0b3JMaXN0OwogICAgIENTU09yZGVyZWRQcm9wZXJ0
eUxpc3QgcHJvcGVydHlMaXN0OwogCiAgICAgaWYobV9tZWRpdW0gPT0gInByaW50IiAmJiBkZWZh
dWx0UHJpbnRTdHlsZSkKQEAgLTE1ODYsNyArMTU4Niw3IEBAIENTU09yZGVyZWRSdWxlOjp+Q1NT
T3JkZXJlZFJ1bGUoKQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DU1NTdHlsZVNlbGVjdG9yTGlzdDo6Q1NT
U3R5bGVTZWxlY3Rvckxpc3QoKSA6IFFQdHJMaXN0PENTU09yZGVyZWRSdWxlPigpCitDU1NTdHls
ZVNlbGVjdG9yTGlzdDo6Q1NTU3R5bGVTZWxlY3Rvckxpc3QoKSA6IFEzUHRyTGlzdDxDU1NPcmRl
cmVkUnVsZT4oKQogewogICAgIHNldEF1dG9EZWxldGUodHJ1ZSk7CiB9CkBAIC0xNjEzLDExICsx
NjEzLDExIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvckxpc3Q6OmFwcGVuZChDU1NTdHkKICAgICAg
ICAgaWYoaXRlbS0+aXNTdHlsZVJ1bGUoKSkKICAgICAgICAgewogICAgICAgICAgICAgQ1NTU3R5
bGVSdWxlSW1wbCAqciA9IHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZUltcGwgKj4oaXRlbSk7Ci0g
ICAgICAgICAgICBRUHRyTGlzdDxDU1NTZWxlY3Rvcj4gKnMgPSByLT5zZWxlY3RvcigpOworICAg
ICAgICAgICAgUTNQdHJMaXN0PENTU1NlbGVjdG9yPiAqcyA9IHItPnNlbGVjdG9yKCk7CiAgICAg
ICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwoaW50KXMtPmNvdW50KCk7IGorKykKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBDU1NPcmRlcmVkUnVsZSAqcnVsZSA9IG5ldyBDU1NPcmRl
cmVkUnVsZShyLCBzLT5hdChqKSwgY291bnQoKSk7Ci0gICAgICAgICAgICAgICAgUVB0ckxpc3Q8
Q1NTT3JkZXJlZFJ1bGU+OjphcHBlbmQocnVsZSk7CisgICAgICAgICAgICAgICAgUTNQdHJMaXN0
PENTU09yZGVyZWRSdWxlPjo6YXBwZW5kKHJ1bGUpOwogICAgICAgICAgICAgICAgIC8va2REZWJ1
ZygpIDw8ICJhcHBlbmRpbmcgU3R5bGVSdWxlISIgPDwgZW5kbDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTY1OCwxMSArMTY1OCwxMSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3JMaXN0
OjphcHBlbmQoQ1NTU3R5CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhIFN0eWxl
UnVsZSwgc28gYXBwZW5kIGl0IHRvIG91ciBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NTdHlsZVJ1bGVJbXBsICpzdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGVJbXBs
ICo+KGNoaWxkSXRlbSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIFFQdHJMaXN0PENTU1Nl
bGVjdG9yPiAqcyA9IHN0eWxlUnVsZS0+c2VsZWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFEzUHRyTGlzdDxDU1NTZWxlY3Rvcj4gKnMgPSBzdHlsZVJ1bGUtPnNlbGVjdG9yKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwoaW50KSBzLT5jb3VudCgp
OyBqKyspCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTT3JkZXJlZFJ1bGUgKm9yZGVyZWRSdWxlID0gbmV3IENTU09yZGVyZWRSdWxlKHN0
eWxlUnVsZSwgcy0+YXQoaiksIGNvdW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFFQdHJMaXN0PENTU09yZGVyZWRSdWxlPjo6YXBwZW5kKG9yZGVyZWRSdWxlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBRM1B0ckxpc3Q8Q1NTT3JkZXJlZFJ1bGU+OjphcHBlbmQob3Jk
ZXJlZFJ1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTE2ODIsNyArMTY4Miw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvckxpc3Q6OmFwcGVuZChDU1NTdHkKICAgICB9CiB9CiAKLXZvaWQgQ1NT
U3R5bGVTZWxlY3Rvckxpc3Q6OmNvbGxlY3QoUVB0ckxpc3Q8Q1NTU2VsZWN0b3I+ICpzZWxlY3Rv
ckxpc3QsIENTU09yZGVyZWRQcm9wZXJ0eUxpc3QgKnByb3BMaXN0LCBTb3VyY2UgcmVndWxhciwg
U291cmNlIGltcG9ydGFudCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvckxpc3Q6OmNvbGxlY3QoUTNQ
dHJMaXN0PENTU1NlbGVjdG9yPiAqc2VsZWN0b3JMaXN0LCBDU1NPcmRlcmVkUHJvcGVydHlMaXN0
ICpwcm9wTGlzdCwgU291cmNlIHJlZ3VsYXIsIFNvdXJjZSBpbXBvcnRhbnQpCiB7CiAgICAgQ1NT
T3JkZXJlZFJ1bGUgKnIgPSBmaXJzdCgpOwogICAgIHdoaWxlKHIpCkBAIC0xNzA3LDcgKzE3MDcs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3JMaXN0Ojpjb2xsZWN0KFFQdHJMCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotaW50IENTU09yZGVyZWRQcm9wZXJ0eUxpc3Q6OmNvbXBhcmVJdGVtcyhR
UHRyQ29sbGVjdGlvbjo6SXRlbSBpMSwgUVB0ckNvbGxlY3Rpb246Okl0ZW0gaTIpCitpbnQgQ1NT
T3JkZXJlZFByb3BlcnR5TGlzdDo6Y29tcGFyZUl0ZW1zKFEzUHRyQ29sbGVjdGlvbjo6SXRlbSBp
MSwgUTNQdHJDb2xsZWN0aW9uOjpJdGVtIGkyKQogewogICAgIGludCBkaWZmID0gc3RhdGljX2Nh
c3Q8Q1NTT3JkZXJlZFByb3BlcnR5ICo+KGkxKS0+cHJpb3JpdHkgLQogICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Q1NTT3JkZXJlZFByb3BlcnR5ICo+KGkyKS0+cHJpb3JpdHk7CkBAIC0xNzIw
LDcgKzE3MjAsNyBAQCB2b2lkIENTU09yZGVyZWRQcm9wZXJ0eUxpc3Q6OmFwcGVuZChDU1NTCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VsZWN0b3Is
IHVuc2lnbmVkIGludCBzcGVjaWZpY2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNvdXJjZSByZWd1bGFyLCBTb3VyY2UgaW1wb3J0YW50KQogewotICAgIFFQdHJMaXN0
PENTU1Byb3BlcnR5PiAqdmFsdWVzID0gZGVjbC0+dmFsdWVzKCk7CisgICAgUTNQdHJMaXN0PENT
U1Byb3BlcnR5PiAqdmFsdWVzID0gZGVjbC0+dmFsdWVzKCk7CiAgICAgaWYoIXZhbHVlcykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xNzM0LDE0ICsxNzM0LDE0IEBAIHZvaWQgQ1NTT3JkZXJlZFBy
b3BlcnR5TGlzdDo6YXBwZW5kKENTU1MKICAgICAgICAgaWYocHJvcC0+bV9ub25DU1NIaW50KSBz
b3VyY2UgPSBOb25DU1NIaW50OwogCiAgICAgICAgIGJvb2wgZmlyc3QgPSAoKGRlY2wgJiYgZGVj
bC0+aW50ZXJmYWNlKCkpID8gZGVjbC0+aW50ZXJmYWNlKCktPmNzc1Byb3BlcnR5QXBwbHlGaXJz
dChwcm9wLT5tX2lkKSA6IGZhbHNlKTsKLSAgICAgICAgUVB0ckxpc3Q8Q1NTT3JkZXJlZFByb3Bl
cnR5Pjo6YXBwZW5kKG5ldyBDU1NPcmRlcmVkUHJvcGVydHkocHJvcCwgc2VsZWN0b3IsIGZpcnN0
LCBzb3VyY2UsIHNwZWNpZmljaXR5LCBjb3VudCgpKSk7CisgICAgICAgIFEzUHRyTGlzdDxDU1NP
cmRlcmVkUHJvcGVydHk+OjphcHBlbmQobmV3IENTU09yZGVyZWRQcm9wZXJ0eShwcm9wLCBzZWxl
Y3RvciwgZmlyc3QsIHNvdXJjZSwgc3BlY2lmaWNpdHksIGNvdW50KCkpKTsKICAgICB9CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRoaXMgaXMgbW9zdGx5IGJvcmlu
ZyBzdHVmZiBvbiBob3cgdG8gYXBwbHkgYSBjZXJ0YWluIHJ1bGUgdG8gdGhlIHJlbmRlcnN0eWxl
Li4uCiBMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2
ZVZhbHVlSW1wbCAqcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlICpzdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVBhaW50RGV2aWNlTWV0cmljcyAqcGFp
bnREZXZpY2VNZXRyaWNzLCBib29sICpvaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUTNQYWludERldmljZU1ldHJpY3MgKnBhaW50RGV2aWNlTWV0cmljcywgYm9v
bCAqb2spCiB7CiAgICAgTGVuZ3RoIGw7CiAgICAgaWYoIXByaW1pdGl2ZVZhbHVlKQpAQCAtMzM4
Miw3ICszMzgyLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVJ1bGUoaW50IGlkLAog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBrZXl3b3JkcyBhcmUgYmVpbmcgdXNlZC4gIFBpY2sg
dGhlIGNvcnJlY3QgZGVmYXVsdAogICAgICAgICAgICAgLy8gYmFzZWQgb2ZmIHRoZSBmb250IGZh
bWlseS4KLSAgICAgICAgICAgIGNvbnN0IFFWYWx1ZVZlY3RvcjxpbnQ+ICZmb250U2l6ZXMgPSBt
X2ZvbnRTaXplczsKKyAgICAgICAgICAgIGNvbnN0IFEzVmFsdWVWZWN0b3I8aW50PiAmZm9udFNp
emVzID0gbV9mb250U2l6ZXM7CiAgICAgICAgICAgICBzd2l0Y2gocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NfVkFMX1hY
X1NNQUxMOgpJbmRleDoga2RvbS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCi0tLSBrZG9tL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJMSBTZXAgMjAwNSAw
OTozOTowNSAtMDAwMAkxLjUKKysrIGtkb20vY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkyIFNlcCAy
MDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0yNywxNCArMjcsMTQgQEAKICNpZm5kZWYgS0RPTV9DU1NT
dHlsZVNlbGVjdG9yX0gKICNkZWZpbmUgS0RPTV9DU1NTdHlsZVNlbGVjdG9yX0gKIAotI2luY2x1
ZGUgPHFwdHJsaXN0Lmg+Ci0jaW5jbHVkZSA8cXZhbHVldmVjdG9yLmg+CisjaW5jbHVkZSA8cTNw
dHJsaXN0Lmg+CisjaW5jbHVkZSA8cTN2YWx1ZXZlY3Rvci5oPgogCiAjaW5jbHVkZSA8a2RvbS9E
T01TdHJpbmcuaD4KICNpbmNsdWRlIDxrZG9tL2Nzcy9SZW5kZXJTdHlsZS5oPgogCiBjbGFzcyBL
VVJMOwotY2xhc3MgUVBhaW50RGV2aWNlTWV0cmljczsKK2NsYXNzIFEzUGFpbnREZXZpY2VNZXRy
aWNzOwogCiBuYW1lc3BhY2UgS0RPTQogewpAQCAtMTI2LDggKzEyNiw4IEBAIG5hbWVzcGFjZSBL
RE9NCiAKICAgICAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSAqc3R5bGVGb3JFbGVtZW50KEVsZW1l
bnRJbXBsICplKTsKIAotICAgICAgICBRVmFsdWVWZWN0b3I8aW50PiBmb250U2l6ZXMoKSBjb25z
dCB7IHJldHVybiBtX2ZvbnRTaXplczsgfQotICAgICAgICBRVmFsdWVWZWN0b3I8aW50PiBmaXhl
ZEZvbnRTaXplcygpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRGb250U2l6ZXM7IH0KKyAgICAgICAg
UTNWYWx1ZVZlY3RvcjxpbnQ+IGZvbnRTaXplcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVz
OyB9CisgICAgICAgIFEzVmFsdWVWZWN0b3I8aW50PiBmaXhlZEZvbnRTaXplcygpIGNvbnN0IHsg
cmV0dXJuIG1fZml4ZWRGb250U2l6ZXM7IH0KIAogICAgICAgICBib29sIHN0cmljdFBhcnNpbmc7
CiAKQEAgLTEzOCw4ICsxMzgsOCBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICAgICAgUVN0cmlu
ZyBmaWxlOwogICAgICAgICB9IGVuY29kZWR1cmw7CiAKLSAgICAgICAgdm9pZCBjb21wdXRlRm9u
dFNpemVzKFFQYWludERldmljZU1ldHJpY3MgKnBhaW50RGV2aWNlTWV0cmljcywgaW50IHpvb21G
YWN0b3IpOwotICAgICAgICB2b2lkIGNvbXB1dGVGb250U2l6ZXNGb3IoUVBhaW50RGV2aWNlTWV0
cmljcyAqcGFpbnREZXZpY2VNZXRyaWNzLCBpbnQgem9vbUZhY3RvciwgUVZhbHVlVmVjdG9yPGlu
dD4gJmZvbnRTaXplcywgYm9vbCBpc0ZpeGVkKTsKKyAgICAgICAgdm9pZCBjb21wdXRlRm9udFNp
emVzKFEzUGFpbnREZXZpY2VNZXRyaWNzICpwYWludERldmljZU1ldHJpY3MsIGludCB6b29tRmFj
dG9yKTsKKyAgICAgICAgdm9pZCBjb21wdXRlRm9udFNpemVzRm9yKFEzUGFpbnREZXZpY2VNZXRy
aWNzICpwYWludERldmljZU1ldHJpY3MsIGludCB6b29tRmFjdG9yLCBRM1ZhbHVlVmVjdG9yPGlu
dD4gJmZvbnRTaXplcywgYm9vbCBpc0ZpeGVkKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
LyogY2hlY2tzIGlmIHRoZSBjb21wbGV0ZSBzZWxlY3RvciAod2hpY2ggY2FuIGJlIGJ1aWxkIHVw
IGZyb20gYSBmZXcKQEAgLTE2Miw3ICsxNjIsNyBAQCBuYW1lc3BhY2UgS0RPTQogCiAgICAgICAg
IC8vIEhlbHBlciBmdW5jdGlvbiAodXNlZCBmb3IgaW5zdGFuY2UgYnkga2h0bWwncyBIVE1MQ1NT
U3R5bGVTZWxlY3RvcikKICAgICAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NT
UHJpbWl0aXZlVmFsdWVJbXBsICpwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUgKnN0eWxlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUGFpbnREZXZpY2VNZXRyaWNz
ICpwYWludERldmljZU1ldHJpY3MsIGJvb2wgKm9rID0gMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFEzUGFpbnREZXZpY2VNZXRyaWNzICpwYWludERldmljZU1ldHJp
Y3MsIGJvb2wgKm9rID0gMCk7CiAKICAgICAgICAgc3RhdGljIFJlbmRlclN0eWxlICpzdHlsZU5v
dFlldEF2YWlsYWJsZTsKIApAQCAtMjE1LDcgKzIxNSw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAg
ICAgIFNlbGVjdG9yQ2FjaGUgKnNlbGVjdG9yQ2FjaGU7CiAgICAgICAgIHVuc2lnbmVkIGludCBw
cm9wZXJ0aWVzX3NpemU7CiAgICAgICAgIENTU09yZGVyZWRQcm9wZXJ0eSAqKnByb3BlcnRpZXM7
Ci0gICAgICAgIFFNZW1BcnJheTxDU1NPcmRlcmVkUHJvcGVydHk+IGlubGluZVByb3BzOworICAg
ICAgICBRM01lbUFycmF5PENTU09yZGVyZWRQcm9wZXJ0eT4gaW5saW5lUHJvcHM7CiAgICAgICAg
IFFTdHJpbmcgbV9tZWRpdW07CiAgICAgICAgIENTU09yZGVyZWRQcm9wZXJ0eSAqKnByb3BzVG9B
cHBseTsKICAgICAgICAgQ1NTT3JkZXJlZFByb3BlcnR5ICoqcHNldWRvUHJvcHM7CkBAIC0yMzIs
MTAgKzIzMiwxMCBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICBLRE9NVmlldyAqdmlldzsKICAg
ICAgICAgS0RPTVBhcnQgKnBhcnQ7CiAgICAgICAgIGNvbnN0IEtET01TZXR0aW5ncyAqc2V0dGlu
Z3M7Ci0gICAgICAgIFFQYWludERldmljZU1ldHJpY3MgKnBhaW50RGV2aWNlTWV0cmljczsKKyAg
ICAgICAgUTNQYWludERldmljZU1ldHJpY3MgKnBhaW50RGV2aWNlTWV0cmljczsKIAotICAgICAg
ICBRVmFsdWVWZWN0b3I8aW50PiBtX2ZvbnRTaXplczsKLSAgICAgICAgUVZhbHVlVmVjdG9yPGlu
dD4gbV9maXhlZEZvbnRTaXplczsKKyAgICAgICAgUTNWYWx1ZVZlY3RvcjxpbnQ+IG1fZm9udFNp
emVzOworICAgICAgICBRM1ZhbHVlVmVjdG9yPGludD4gbV9maXhlZEZvbnRTaXplczsKIAogICAg
ICAgICBib29sIGZvbnREaXJ0eTsKIApAQCAtMjgxLDEwICsyODEsMTAgQEAgbmFtZXNwYWNlIEtE
T00KICAgICAgKiBUaGlzIGlzIHRoZSBsaXN0IHdlIHdpbGwgY29sbGVjdCBhbGwgcHJvcGVydGll
cyB3ZSBuZWVkIHRvIGFwcGx5IGluLgogICAgICAqIEl0IHdpbGwgZ2V0IHNvcnRlZCBvbmNlIGJl
Zm9yZSBhcHBseWluZy4KICAgICAgKi8KLSAgICBjbGFzcyBDU1NPcmRlcmVkUHJvcGVydHlMaXN0
IDogcHVibGljIFFQdHJMaXN0PENTU09yZGVyZWRQcm9wZXJ0eT4KKyAgICBjbGFzcyBDU1NPcmRl
cmVkUHJvcGVydHlMaXN0IDogcHVibGljIFEzUHRyTGlzdDxDU1NPcmRlcmVkUHJvcGVydHk+CiAg
ICAgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCBpbnQgY29tcGFyZUl0ZW1zKFFQdHJD
b2xsZWN0aW9uOjpJdGVtIGkxLCBRUHRyQ29sbGVjdGlvbjo6SXRlbSBpMik7CisgICAgICAgIHZp
cnR1YWwgaW50IGNvbXBhcmVJdGVtcyhRM1B0ckNvbGxlY3Rpb246Okl0ZW0gaTEsIFEzUHRyQ29s
bGVjdGlvbjo6SXRlbSBpMik7CiAgICAgICAgIHZvaWQgYXBwZW5kKENTU1N0eWxlRGVjbGFyYXRp
b25JbXBsICpkZWNsLCB1bnNpZ25lZCBpbnQgc2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzcGVjaWZpY2l0eSwgU291cmNlIHJlZ3VsYXIsIFNvdXJjZSBpbXBvcnRh
bnQpOwogICAgIH07CkBAIC0zMDAsMTQgKzMwMCwxNCBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAg
ICBpbnQgaW5kZXg7CiAgICAgfTsKIAotICAgIGNsYXNzIENTU1N0eWxlU2VsZWN0b3JMaXN0IDog
cHVibGljIFFQdHJMaXN0PENTU09yZGVyZWRSdWxlPgorICAgIGNsYXNzIENTU1N0eWxlU2VsZWN0
b3JMaXN0IDogcHVibGljIFEzUHRyTGlzdDxDU1NPcmRlcmVkUnVsZT4KICAgICB7CiAgICAgcHVi
bGljOgogICAgICAgICBDU1NTdHlsZVNlbGVjdG9yTGlzdCgpOwogICAgICAgICB2aXJ0dWFsIH5D
U1NTdHlsZVNlbGVjdG9yTGlzdCgpOwogCiAgICAgICAgIHZvaWQgYXBwZW5kKENTU1N0eWxlU2hl
ZXRJbXBsICpzaGVldCwgRE9NU3RyaW5nSW1wbCAqbWVkaXVtKTsKLSAgICAgICAgdm9pZCBjb2xs
ZWN0KFFQdHJMaXN0PENTU1NlbGVjdG9yPiAqc2VsZWN0b3JMaXN0LCBDU1NPcmRlcmVkUHJvcGVy
dHlMaXN0ICpwcm9wTGlzdCwKKyAgICAgICAgdm9pZCBjb2xsZWN0KFEzUHRyTGlzdDxDU1NTZWxl
Y3Rvcj4gKnNlbGVjdG9yTGlzdCwgQ1NTT3JkZXJlZFByb3BlcnR5TGlzdCAqcHJvcExpc3QsCiAg
ICAgICAgICAgICAgICAgICAgICBTb3VyY2UgcmVndWxhciwgU291cmNlIGltcG9ydGFudCk7CiAg
ICAgfTsKIH0KSW5kZXg6IGtkb20vY3NzL0NTU1N0eWxlU2hlZXRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NTdHlsZVNoZWV0SW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY3Nz
L0NTU1N0eWxlU2hlZXRJbXBsLmNwcAotLS0ga2RvbS9jc3MvQ1NTU3R5bGVTaGVldEltcGwuY3Bw
CTEgU2VwIDIwMDUgMDc6MzM6MDggLTAwMDAJMS40CisrKyBrZG9tL2Nzcy9DU1NTdHlsZVNoZWV0
SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtMzQsNyArMzQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgS0RPTTsKIENTU1N0eWxlU2hlZXRJbXBsOjpDU1NTdHlsZVNoZWV0SW1wbChD
U1NTdHlsZVNoZWV0SW1wbCAqcGFyZW50U2hlZXQsIERPTVN0cmluZ0ltcGwgKmhyZWYpCiA6IFN0
eWxlU2hlZXRJbXBsKHBhcmVudFNoZWV0LCBocmVmKQogewotICAgIG1fbHN0Q2hpbGRyZW4gPSBu
ZXcgUVB0ckxpc3Q8U3R5bGVCYXNlSW1wbD4oKTsKKyAgICBtX2xzdENoaWxkcmVuID0gbmV3IFEz
UHRyTGlzdDxTdHlsZUJhc2VJbXBsPigpOwogCiAgICAgbV9kb2MgPSAwOwogICAgIG1faW1wbGlj
aXQgPSBmYWxzZTsKQEAgLTQ0LDcgKzQ0LDcgQEAgQ1NTU3R5bGVTaGVldEltcGw6OkNTU1N0eWxl
U2hlZXRJbXBsKENTUwogQ1NTU3R5bGVTaGVldEltcGw6OkNTU1N0eWxlU2hlZXRJbXBsKE5vZGVJ
bXBsICpwYXJlbnROb2RlLCBET01TdHJpbmdJbXBsICpocmVmLCBib29sIF9pbXBsaWNpdCkKIDog
U3R5bGVTaGVldEltcGwocGFyZW50Tm9kZSwgaHJlZikKIHsKLSAgICBtX2xzdENoaWxkcmVuID0g
bmV3IFFQdHJMaXN0PFN0eWxlQmFzZUltcGw+KCk7CisgICAgbV9sc3RDaGlsZHJlbiA9IG5ldyBR
M1B0ckxpc3Q8U3R5bGVCYXNlSW1wbD4oKTsKIAogICAgIG1fZG9jID0gKCFpc0RvY3VtZW50Tm9k
ZShwYXJlbnROb2RlKSA/IHBhcmVudE5vZGUtPm93bmVyRG9jdW1lbnQoKSA6IHN0YXRpY19jYXN0
PERvY3VtZW50SW1wbCAqPihwYXJlbnROb2RlKSk7CiAgICAgbV9pbXBsaWNpdCA9IF9pbXBsaWNp
dDsKQEAgLTU0LDcgKzU0LDcgQEAgQ1NTU3R5bGVTaGVldEltcGw6OkNTU1N0eWxlU2hlZXRJbXBs
KE5vZAogQ1NTU3R5bGVTaGVldEltcGw6OkNTU1N0eWxlU2hlZXRJbXBsKENTU1J1bGVJbXBsICpv
d25lclJ1bGUsIERPTVN0cmluZ0ltcGwgKmhyZWYpCiA6IFN0eWxlU2hlZXRJbXBsKG93bmVyUnVs
ZSwgaHJlZikKIHsKLSAgICBtX2xzdENoaWxkcmVuID0gbmV3IFFQdHJMaXN0PFN0eWxlQmFzZUlt
cGw+KCk7CisgICAgbV9sc3RDaGlsZHJlbiA9IG5ldyBRM1B0ckxpc3Q8U3R5bGVCYXNlSW1wbD4o
KTsKIAogICAgIG1fZG9jID0gMDsKICAgICBtX2ltcGxpY2l0ID0gZmFsc2U7CkBAIC02NCw3ICs2
NCw3IEBAIENTU1N0eWxlU2hlZXRJbXBsOjpDU1NTdHlsZVNoZWV0SW1wbChDU1MKIENTU1N0eWxl
U2hlZXRJbXBsOjpDU1NTdHlsZVNoZWV0SW1wbChOb2RlSW1wbCAqcGFyZW50Tm9kZSwgQ1NTU3R5
bGVTaGVldEltcGwgKm9yaWcpCiA6IFN0eWxlU2hlZXRJbXBsKHBhcmVudE5vZGUsIG9yaWctPm1f
c3RySHJlZikKIHsKLSAgICBtX2xzdENoaWxkcmVuID0gbmV3IFFQdHJMaXN0PFN0eWxlQmFzZUlt
cGw+KCk7CisgICAgbV9sc3RDaGlsZHJlbiA9IG5ldyBRM1B0ckxpc3Q8U3R5bGVCYXNlSW1wbD4o
KTsKIAogICAgIFN0eWxlQmFzZUltcGwgKnJ1bGU7CiAgICAgZm9yKHJ1bGUgPSBvcmlnLT5tX2xz
dENoaWxkcmVuLT5maXJzdCgpOyBydWxlICE9IDA7IHJ1bGUgPSBvcmlnLT5tX2xzdENoaWxkcmVu
LT5uZXh0KCkpCkBAIC04Miw3ICs4Miw3IEBAIENTU1N0eWxlU2hlZXRJbXBsOjpDU1NTdHlsZVNo
ZWV0SW1wbChDU1MKIDogU3R5bGVTaGVldEltcGwob3duZXJSdWxlLCBvcmlnLT5tX3N0ckhyZWYp
CiB7CiAgICAgLy8gbV9sc3RDaGlsZHJlbiBpcyBkZWxldGVkIGluIFN0eWxlTGlzdEltcGwKLSAg
ICBtX2xzdENoaWxkcmVuID0gbmV3IFFQdHJMaXN0PFN0eWxlQmFzZUltcGw+KCk7CisgICAgbV9s
c3RDaGlsZHJlbiA9IG5ldyBRM1B0ckxpc3Q8U3R5bGVCYXNlSW1wbD4oKTsKIAogICAgIFN0eWxl
QmFzZUltcGwgKnJ1bGU7CiAgICAgZm9yKHJ1bGUgPSBvcmlnLT5tX2xzdENoaWxkcmVuLT5maXJz
dCgpOyBydWxlICE9IDA7IHJ1bGUgPSBvcmlnLT5tX2xzdENoaWxkcmVuLT5uZXh0KCkpCkluZGV4
OiBrZG9tL2Nzcy9DU1NWYWx1ZUxpc3RJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NWYWx1ZUxpc3RJbXBsLmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9jc3MvQ1NTVmFsdWVMaXN0SW1w
bC5jcHAKLS0tIGtkb20vY3NzL0NTU1ZhbHVlTGlzdEltcGwuY3BwCTEgU2VwIDIwMDUgMDc6MzM6
MDkgLTAwMDAJMS40CisrKyBrZG9tL2Nzcy9DU1NWYWx1ZUxpc3RJbXBsLmNwcAkyIFNlcCAyMDA1
IDA5OjM4OjMxIC0wMDAwCkBAIC01Miw3ICs1Miw3IEBAIERPTVN0cmluZ0ltcGwgKkNTU1ZhbHVl
TGlzdEltcGw6OmNzc1RleHQKIHsKICAgICBET01TdHJpbmdJbXBsICpyZXN1bHQgPSBuZXcgRE9N
U3RyaW5nSW1wbCgpOwogCi0gICAgZm9yKFFQdHJMaXN0SXRlcmF0b3I8Q1NTVmFsdWVJbXBsPiBp
dGVyYXRvcihtX3ZhbHVlcyk7IGl0ZXJhdG9yLmN1cnJlbnQoKTsgKytpdGVyYXRvcikKKyAgICBm
b3IoUTNQdHJMaXN0SXRlcmF0b3I8Q1NTVmFsdWVJbXBsPiBpdGVyYXRvcihtX3ZhbHVlcyk7IGl0
ZXJhdG9yLmN1cnJlbnQoKTsgKytpdGVyYXRvcikKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoaXRl
cmF0b3IuY3VycmVudCgpLT5jc3NUZXh0KCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6
IGtkb20vY3NzL0NTU1ZhbHVlTGlzdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9DU1NWYWx1ZUxpc3RJbXBsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL0NTU1ZhbHVlTGlzdEltcGwuaAot
LS0ga2RvbS9jc3MvQ1NTVmFsdWVMaXN0SW1wbC5oCTEgU2VwIDIwMDUgMDk6Mzk6MDYgLTAwMDAJ
MS41CisrKyBrZG9tL2Nzcy9DU1NWYWx1ZUxpc3RJbXBsLmgJMiBTZXAgMjAwNSAwOTozODozMSAt
MDAwMApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8a2RvbS9jc3MvQ1NTVmFsdWVJbXBs
Lmg+CiAKLSNpbmNsdWRlIDxxcHRybGlzdC5oPgorI2luY2x1ZGUgPHEzcHRybGlzdC5oPgogCiBu
YW1lc3BhY2UgS0RPTQogewpAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAg
ICB2b2lkIGFwcGVuZChDU1NWYWx1ZUltcGwgKnZhbCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIFFQdHJMaXN0PENTU1ZhbHVlSW1wbD4gbV92YWx1ZXM7CisgICAgICAgIFEzUHRyTGlzdDxD
U1NWYWx1ZUltcGw+IG1fdmFsdWVzOwogICAgIH07CiB9OwogCkluZGV4OiBrZG9tL2Nzcy9Gb250
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9G
b250LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9j
c3MvRm9udC5jcHAKLS0tIGtkb20vY3NzL0ZvbnQuY3BwCTEgU2VwIDIwMDUgMDc6MzM6MDkgLTAw
MDAJMS40CisrKyBrZG9tL2Nzcy9Gb250LmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBA
IC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8a2dsb2JhbC5oPgogCiAjaW5jbHVkZSA8cWZvbnRk
YXRhYmFzZS5oPgotI2luY2x1ZGUgPHFwYWludGRldmljZW1ldHJpY3MuaD4KKyNpbmNsdWRlIDxx
M3BhaW50ZGV2aWNlbWV0cmljcy5oPgogCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIktE
T01TZXR0aW5ncy5oIgpAQCAtNjUsNyArNjUsNyBAQCBib29sIEZvbnQ6Om9wZXJhdG9yPT0oY29u
c3QgRm9udCAmb3RoZXIpCiAgICAgICAgICAgICBtX2xldHRlclNwYWNpbmcgPT0gb3RoZXIubV9s
ZXR0ZXJTcGFjaW5nKTsKIH0KIAotdm9pZCBGb250Ojp1cGRhdGUoUVBhaW50RGV2aWNlTWV0cmlj
cyAqZGV2TWV0cmljcywgY29uc3QgS0RPTVNldHRpbmdzICpzZXR0aW5ncykgY29uc3QKK3ZvaWQg
Rm9udDo6dXBkYXRlKFEzUGFpbnREZXZpY2VNZXRyaWNzICpkZXZNZXRyaWNzLCBjb25zdCBLRE9N
U2V0dGluZ3MgKnNldHRpbmdzKSBjb25zdAogewogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sK
ICAgICBtX2ZvbnQuc2V0RmFtaWx5KG1fZm9udERlZi5mYW1pbHkuaXNFbXB0eSgpID8gc2V0dGlu
Z3MtPnN0ZEZvbnROYW1lKCkgOiBtX2ZvbnREZWYuZmFtaWx5KTsKQEAgLTgzLDcgKzgzLDcgQEAg
dm9pZCBGb250Ojp1cGRhdGUoUVBhaW50RGV2aWNlTWV0cmljcyAqZAogICAgIC8vIGFsbCBvdGhl
ciBmb250IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUgdGhpcyBvbmUhISEhCiAgICAg
aWYoIWRiLmlzU21vb3RobHlTY2FsYWJsZShtX2ZvbnQuZmFtaWx5KCksIGRiLnN0eWxlU3RyaW5n
KG1fZm9udCkpKQogICAgIHsKLSAgICAgICAgY29uc3QgUVZhbHVlTGlzdDxpbnQ+IHBvaW50U2l6
ZXMgPSBkYi5zbW9vdGhTaXplcyhtX2ZvbnQuZmFtaWx5KCksIGRiLnN0eWxlU3RyaW5nKG1fZm9u
dCkpOworICAgICAgICBjb25zdCBRM1ZhbHVlTGlzdDxpbnQ+IHBvaW50U2l6ZXMgPSBkYi5zbW9v
dGhTaXplcyhtX2ZvbnQuZmFtaWx5KCksIGRiLnN0eWxlU3RyaW5nKG1fZm9udCkpOwogICAgICAg
ICAKICAgICAgICAgLy8gbGV0cyBzZWUgaWYgd2UgZmluZCBhIG5pY2UgbG9va2luZyBmb250LCB3
aGljaCBpcyBub3QgdG9vIGZhciBhd2F5IGZyb20gdGhlIHJlcXVlc3RlZCBvbmUuCiAgICAgICAg
IC8vIGtkRGVidWcoNjA4MCkgPDwgImtodG1sOjpzZXRGb250U2l6ZSBmYW1pbHkgPSAiIDw8IG1f
Zm9udC5mYW1pbHkoKSA8PCAiIHNpemUgcmVxdWVzdGVkPSIgPDwgc2l6ZSA8PCBlbmRsOwpAQCAt
OTEsOCArOTEsOCBAQCB2b2lkIEZvbnQ6OnVwZGF0ZShRUGFpbnREZXZpY2VNZXRyaWNzICpkCiAg
ICAgICAgIGZsb2F0IGRpZmYgPSAxOyAvLyAjIyMgMTAwJSBkZXZpYXRpb24KICAgICAgICAgZmxv
YXQgYmVzdFNpemUgPSAwOwogCi0gICAgICAgIFFWYWx1ZUxpc3Q8aW50Pjo6Q29uc3RJdGVyYXRv
ciBpdCA9IHBvaW50U2l6ZXMuYmVnaW4oKTsKLSAgICAgICAgY29uc3QgUVZhbHVlTGlzdDxpbnQ+
OjpDb25zdEl0ZXJhdG9yIGl0RW5kID0gcG9pbnRTaXplcy5lbmQoKTsKKyAgICAgICAgUTNWYWx1
ZUxpc3Q8aW50Pjo6Q29uc3RJdGVyYXRvciBpdCA9IHBvaW50U2l6ZXMuYmVnaW4oKTsKKyAgICAg
ICAgY29uc3QgUTNWYWx1ZUxpc3Q8aW50Pjo6Q29uc3RJdGVyYXRvciBpdEVuZCA9IHBvaW50U2l6
ZXMuZW5kKCk7CiAKICAgICAgICAgZm9yKDsgaXQgIT0gaXRFbmQ7ICsraXQpCiAgICAgICAgIHsK
SW5kZXg6IGtkb20vY3NzL0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL2Nzcy9Gb250LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1w
IC11IC1yMS41IGtkb20vY3NzL0ZvbnQuaAotLS0ga2RvbS9jc3MvRm9udC5oCTEgU2VwIDIwMDUg
MDc6MzM6MTAgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9Gb250LmgJMiBTZXAgMjAwNSAwOTozODoz
MSAtMDAwMApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgPHFwYWludGVyLmg+CiAjaW5jbHVk
ZSA8cWZvbnRtZXRyaWNzLmg+CiAKLWNsYXNzIFFQYWludERldmljZU1ldHJpY3M7CitjbGFzcyBR
M1BhaW50RGV2aWNlTWV0cmljczsKIAogbmFtZXNwYWNlIEtET00KIHsKQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnQgJm90aGVyKSBjb25z
dDsKICAgICAKLSAgICB2b2lkIHVwZGF0ZShRUGFpbnREZXZpY2VNZXRyaWNzICpkZXZNZXRyaWNz
LCBjb25zdCBLRE9NU2V0dGluZ3MgKnNldHRpbmdzKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZShR
M1BhaW50RGV2aWNlTWV0cmljcyAqZGV2TWV0cmljcywgY29uc3QgS0RPTVNldHRpbmdzICpzZXR0
aW5ncykgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBEcmF3cyBhIHBpZWNlIGZyb20gdGhlIGdp
dmVuIHBpZWNlIG9mIHRleHQuCkluZGV4OiBrZG9tL2Nzcy9LRE9NQ1NTUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9LRE9NQ1NTUGFy
c2VyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9j
c3MvS0RPTUNTU1BhcnNlci5jcHAKLS0tIGtkb20vY3NzL0tET01DU1NQYXJzZXIuY3BwCTEgU2Vw
IDIwMDUgMDk6Mzk6MDYgLTAwMDAJMS41CisrKyBrZG9tL2Nzcy9LRE9NQ1NTUGFyc2VyLmNwcAky
IFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIAogCiBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAq
Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZURlY2xhcmF0aW9uKENTU1N0eWxlUnVsZUltcGwgKnJ1bGUp
CiB7Ci0gICAgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICpwcm9wTGlzdCA9IG5ldyBRUHRyTGlzdDxD
U1NQcm9wZXJ0eT4oKTsKKyAgICBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+ICpwcm9wTGlzdCA9IG5l
dyBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+KCk7CiAgICAgcHJvcExpc3QtPnNldEF1dG9EZWxldGUo
dHJ1ZSk7CiAgICAgZm9yKGludCBpID0gMDsgaSA8IG51bVBhcnNlZFByb3BlcnRpZXM7IGkrKykK
ICAgICAgICAgcHJvcExpc3QtPmFwcGVuZChwYXJzZWRQcm9wZXJ0aWVzW2ldKTsKQEAgLTM2Myw3
ICszNjMsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqQ1NTUGFyc2VyOjpjcmVhCiAgICAg
cmV0dXJuIGNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24ocnVsZSwgcHJvcExpc3QpOwogfQogCi1D
U1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqQ1NTUGFyc2VyOjpjcmVhdGVDU1NTdHlsZURlY2xhcmF0
aW9uKENTU1N0eWxlUnVsZUltcGwgKnJ1bGUsIFFQdHJMaXN0PENTU1Byb3BlcnR5PiAqcHJvcExp
c3QpCitDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqQ1NTUGFyc2VyOjpjcmVhdGVDU1NTdHlsZURl
Y2xhcmF0aW9uKENTU1N0eWxlUnVsZUltcGwgKnJ1bGUsIFEzUHRyTGlzdDxDU1NQcm9wZXJ0eT4g
KnByb3BMaXN0KQogewogICAgIHJldHVybiBuZXcgQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwoZG9j
dW1lbnQoKS0+aW1wbGVtZW50YXRpb24oKS0+Y2RmSW50ZXJmYWNlKCksIHJ1bGUsIHByb3BMaXN0
KTsKIH0KSW5kZXg6IGtkb20vY3NzL0tET01DU1NQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9LRE9NQ1NTUGFyc2VyLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vY3NzL0tET01DU1NQYXJzZXIu
aAotLS0ga2RvbS9jc3MvS0RPTUNTU1BhcnNlci5oCTEgU2VwIDIwMDUgMDk6Mzk6MDYgLTAwMDAJ
MS41CisrKyBrZG9tL2Nzcy9LRE9NQ1NTUGFyc2VyLmgJMiBTZXAgMjAwNSAwOTozODozMSAtMDAw
MApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBLRE9NX0NTU1BBUlNFUl9ICiAKICNpbmNsdWRl
IDxxc3RyaW5nLmg+Ci0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRlIDxxM3B0cmxpc3Qu
aD4KIAogI2luY2x1ZGUgPGtkb20vY29yZS9ET01TdHJpbmdJbXBsLmg+CiAKQEAgLTE1Myw3ICsx
NTMsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgICAgICBzdGF0aWMgYm9vbCB2YWxpZFVuaXQoS0RP
TUNTU1ZhbHVlICp2YWx1ZSwgaW50IHVuaXRmbGFncywgYm9vbCBzdHJpY3QpOwogCiAgICAgICAg
IHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwgKmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRp
b24oQ1NTU3R5bGVSdWxlSW1wbCAqcnVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUHRyTGlzdDxDU1NQcm9wZXJ0
eT4gKnByb3BMaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+ICpwcm9wTGlz
dCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIGJvb2wgc3RyaWN0OwpJbmRleDoga2RvbS9jc3Mv
TWVkaWFMaXN0SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jc3MvTWVkaWFMaXN0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtkb20vY3NzL01lZGlhTGlzdEltcGwuY3BwCi0tLSBrZG9tL2Nzcy9N
ZWRpYUxpc3RJbXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjEwIC0wMDAwCTEuNAorKysga2RvbS9j
c3MvTWVkaWFMaXN0SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMSAtMDAwMApAQCAtNjcsOCAr
NjcsOCBAQCBET01TdHJpbmdJbXBsICpNZWRpYUxpc3RJbXBsOjptZWRpYVRleHQoCiB7CiAgICAg
RE9NU3RyaW5nSW1wbCAqdGV4dCA9IG5ldyBET01TdHJpbmdJbXBsKCk7CiAgICAgCi0gICAgUVZh
bHVlTGlzdDxET01TdHJpbmc+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigp
OwotICAgIGNvbnN0IFFWYWx1ZUxpc3Q8RE9NU3RyaW5nPjo6Q29uc3RJdGVyYXRvciBlbmQgPSBt
X2xzdE1lZGlhLmVuZCgpOworICAgIFEzVmFsdWVMaXN0PERPTVN0cmluZz46OkNvbnN0SXRlcmF0
b3IgaXQgPSBtX2xzdE1lZGlhLmJlZ2luKCk7CisgICAgY29uc3QgUTNWYWx1ZUxpc3Q8RE9NU3Ry
aW5nPjo6Q29uc3RJdGVyYXRvciBlbmQgPSBtX2xzdE1lZGlhLmVuZCgpOwogICAgIAogICAgIGZv
cig7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgdGV4dC0+YXBwZW5kKCgqaXQpLnN0cmluZygp
ICsgUVN0cmluZzo6ZnJvbUxhdGluMSgiLCAiKSk7CkBAIC0xMDYsOCArMTA2LDggQEAgRE9NU3Ry
aW5nSW1wbCAqTWVkaWFMaXN0SW1wbDo6aXRlbSh1bnNpZwogCiB2b2lkIE1lZGlhTGlzdEltcGw6
OmRlbGV0ZU1lZGl1bShET01TdHJpbmdJbXBsICpvbGRNZWRpdW0pCiB7Ci0gICAgUVZhbHVlTGlz
dDxET01TdHJpbmc+OjpJdGVyYXRvciBpdCA9IG1fbHN0TWVkaWEuYmVnaW4oKTsKLSAgICBjb25z
dCBRVmFsdWVMaXN0PERPTVN0cmluZz46Okl0ZXJhdG9yIGVuZCA9IG1fbHN0TWVkaWEuZW5kKCk7
CisgICAgUTNWYWx1ZUxpc3Q8RE9NU3RyaW5nPjo6SXRlcmF0b3IgaXQgPSBtX2xzdE1lZGlhLmJl
Z2luKCk7CisgICAgY29uc3QgUTNWYWx1ZUxpc3Q8RE9NU3RyaW5nPjo6SXRlcmF0b3IgZW5kID0g
bV9sc3RNZWRpYS5lbmQoKTsKIAogICAgIGZvcig7IGl0ICE9IGVuZDsgKytpdCkKICAgICB7Cklu
ZGV4OiBrZG9tL2Nzcy9NZWRpYUxpc3RJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS9jc3MvTWVkaWFMaXN0SW1wbC5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9NZWRpYUxpc3RJbXBsLmgKLS0tIGtk
b20vY3NzL01lZGlhTGlzdEltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjA2IC0wMDAwCTEuNQorKysg
a2RvbS9jc3MvTWVkaWFMaXN0SW1wbC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlIDxrZG9tL2Nzcy9TdHlsZUJhc2VJbXBsLmg+CiAjaW5jbHVk
ZSA8a2RvbS9ET01TdHJpbmcuaD4KIAotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKyNpbmNsdWRl
IDxxM3ZhbHVlbGlzdC5oPgogCiBuYW1lc3BhY2UgS0RPTQogewpAQCAtNjksNyArNjksNyBAQCBu
YW1lc3BhY2UgS0RPTQogICAgICAgICBib29sIGNvbnRhaW5zKERPTVN0cmluZ0ltcGwgKm1lZGl1
bSkgY29uc3Q7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFFWYWx1ZUxpc3Q8RE9NU3RyaW5n
PiBtX2xzdE1lZGlhOworICAgICAgICBRM1ZhbHVlTGlzdDxET01TdHJpbmc+IG1fbHN0TWVkaWE7
CiAgICAgfTsKIH07CiAKSW5kZXg6IGtkb20vY3NzL1N0eWxlQmFzZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1N0eWxlQmFzZUltcGwu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nzcy9T
dHlsZUJhc2VJbXBsLmNwcAotLS0ga2RvbS9jc3MvU3R5bGVCYXNlSW1wbC5jcHAJMSBTZXAgMjAw
NSAwOTozOTowNiAtMDAwMAkxLjUKKysrIGtkb20vY3NzL1N0eWxlQmFzZUltcGwuY3BwCTIgU2Vw
IDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTEyNCw5ICsxMjQsOSBAQCBLVVJMIFN0eWxlQmFzZUlt
cGw6OmJhc2VVUkwoKQogICAgIHJldHVybiBzaGVldC0+b3duZXJOb2RlKCktPm93bmVyRG9jdW1l
bnQoKS0+ZG9jdW1lbnRLVVJJKCk7CiB9CiAKLXZvaWQgU3R5bGVCYXNlSW1wbDo6c2V0UGFyc2Vk
VmFsdWUoaW50IHByb3BJZCwgY29uc3QgQ1NTVmFsdWVJbXBsICpwYXJzZWRWYWx1ZSwgYm9vbCBp
bXBvcnRhbnQsIGJvb2wgbm9uQ1NTSGludCwgUVB0ckxpc3Q8Q1NTUHJvcGVydHk+ICpwcm9wTGlz
dCkKK3ZvaWQgU3R5bGVCYXNlSW1wbDo6c2V0UGFyc2VkVmFsdWUoaW50IHByb3BJZCwgY29uc3Qg
Q1NTVmFsdWVJbXBsICpwYXJzZWRWYWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgbm9uQ1NTSGlu
dCwgUTNQdHJMaXN0PENTU1Byb3BlcnR5PiAqcHJvcExpc3QpCiB7Ci0gICAgUVB0ckxpc3RJdGVy
YXRvcjxDU1NQcm9wZXJ0eT4gcHJvcEl0KCpwcm9wTGlzdCk7CisgICAgUTNQdHJMaXN0SXRlcmF0
b3I8Q1NTUHJvcGVydHk+IHByb3BJdCgqcHJvcExpc3QpOwogICAgIHByb3BJdC50b0xhc3QoKTsg
Ly8ganVzdCByZW1vdmUgdGhlIHRvcCBvbmUgLSBub3Qgc3VyZSB3aGF0IHNob3VsZCBoYXBwZW4g
aWYgd2UgaGF2ZSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHByb3BlcnR5CiAKICAgICB3aGls
ZShwcm9wSXQuY3VycmVudCgpICYmCkluZGV4OiBrZG9tL2Nzcy9TdHlsZUJhc2VJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jc3MvU3R5bGVCYXNl
SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nz
cy9TdHlsZUJhc2VJbXBsLmgKLS0tIGtkb20vY3NzL1N0eWxlQmFzZUltcGwuaAkxIFNlcCAyMDA1
IDA5OjM5OjA2IC0wMDAwCTEuNQorKysga2RvbS9jc3MvU3R5bGVCYXNlSW1wbC5oCTIgU2VwIDIw
MDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgS0RPTV9TdHlsZUJh
c2VJbXBsX0gKICNkZWZpbmUgS0RPTV9TdHlsZUJhc2VJbXBsX0gKIAotI2luY2x1ZGUgPHFwdHJs
aXN0Lmg+CisjaW5jbHVkZSA8cTNwdHJsaXN0Lmg+CiAKICNpbmNsdWRlIDxrZG9tL1RyZWVTaGFy
ZWQuaD4KICNpbmNsdWRlIDxrZG9tL2NvcmUvTm9kZUltcGwuaD4KQEAgLTEyMiw3ICsxMjIsNyBA
QCBuYW1lc3BhY2UgS0RPTQogICAgICAgICB2b2lkIHNldFBhcmVudChTdHlsZUJhc2VJbXBsICpw
YXJlbnQpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldFBhcnNlZFZhbHVlKGludCBwcm9wSWQs
IGNvbnN0IENTU1ZhbHVlSW1wbCAqcGFyc2VkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50LCBib29sIG5vbkNTU0hpbnQsIFFQdHJMaXN0PENT
U1Byb3BlcnR5PiAqcHJvcExpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCwgYm9vbCBub25DU1NIaW50LCBRM1B0ckxpc3Q8Q1NTUHJvcGVydHk+
ICpwcm9wTGlzdCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIHBhcnNlU3RyaW5nKERPTVN0cmlu
Z0ltcGwgKmNzc1N0cmluZywgYm9vbCA9IGZhbHNlKTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBAIG5h
bWVzcGFjZSBLRE9NCiAgICAgICAgIHZvaWQgYXBwZW5kKFN0eWxlQmFzZUltcGwgKml0ZW0pOwog
CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBRUHRyTGlzdDxTdHlsZUJhc2VJbXBsPiAqbV9sc3RD
aGlsZHJlbjsKKyAgICAgICAgUTNQdHJMaXN0PFN0eWxlQmFzZUltcGw+ICptX2xzdENoaWxkcmVu
OwogICAgIH07CiAKICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3RvciBmb3Ig
YSBTdHlsZVJ1bGUKSW5kZXg6IGtkb20vY3NzL1N0eWxlU2hlZXRMaXN0SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jc3MvU3R5bGVTaGVldExp
c3RJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2Rv
bS9jc3MvU3R5bGVTaGVldExpc3RJbXBsLmNwcAotLS0ga2RvbS9jc3MvU3R5bGVTaGVldExpc3RJ
bXBsLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjEyIC0wMDAwCTEuNAorKysga2RvbS9jc3MvU3R5bGVT
aGVldExpc3RJbXBsLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMxIC0wMDAwCkBAIC0zMiw3ICszMiw3
IEBAIFN0eWxlU2hlZXRMaXN0SW1wbDo6U3R5bGVTaGVldExpc3RJbXBsKCkKIAogU3R5bGVTaGVl
dExpc3RJbXBsOjp+U3R5bGVTaGVldExpc3RJbXBsKCkKIHsKLSAgICBRUHRyTGlzdEl0ZXJhdG9y
PFN0eWxlU2hlZXRJbXBsPiBpdChzdHlsZVNoZWV0cyk7CisgICAgUTNQdHJMaXN0SXRlcmF0b3I8
U3R5bGVTaGVldEltcGw+IGl0KHN0eWxlU2hlZXRzKTsKICAgICBmb3IoOyBpdC5jdXJyZW50KCk7
ICsraXQpCiAgICAgICAgIGl0LmN1cnJlbnQoKS0+ZGVyZWYoKTsKIH0KQEAgLTQxLDcgKzQxLDcg
QEAgdW5zaWduZWQgbG9uZyBTdHlsZVNoZWV0TGlzdEltcGw6Omxlbmd0aAogewogICAgIC8vIGhh
Y2sgc28gaW1wbGljaXQgQk9EWSBzdHlsZXNoZWV0cyBkb24ndCBnZXQgY291bnRlZCBoZXJlCiAg
ICAgdW5zaWduZWQgbG9uZyBsID0gMDsKLSAgICBRUHRyTGlzdEl0ZXJhdG9yPFN0eWxlU2hlZXRJ
bXBsPiBpdChzdHlsZVNoZWV0cyk7CisgICAgUTNQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVldElt
cGw+IGl0KHN0eWxlU2hlZXRzKTsKICAgICBmb3IoOyBpdC5jdXJyZW50KCk7ICsraXQpCiAgICAg
ewogICAgICAgICBpZighaXQuY3VycmVudCgpLT5pc0NTU1N0eWxlU2hlZXQoKSB8fCAhc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldEltcGwqPihpdC5jdXJyZW50KCkpLT5pbXBsaWNpdCgpKQpAQCAt
NTQsNyArNTQsNyBAQCB1bnNpZ25lZCBsb25nIFN0eWxlU2hlZXRMaXN0SW1wbDo6bGVuZ3RoCiBT
dHlsZVNoZWV0SW1wbCAqU3R5bGVTaGVldExpc3RJbXBsOjppdGVtKHVuc2lnbmVkIGxvbmcgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbG9uZyBsID0gMDsKLSAgICBRUHRyTGlzdEl0ZXJh
dG9yPFN0eWxlU2hlZXRJbXBsPiBpdChzdHlsZVNoZWV0cyk7CisgICAgUTNQdHJMaXN0SXRlcmF0
b3I8U3R5bGVTaGVldEltcGw+IGl0KHN0eWxlU2hlZXRzKTsKICAgICBmb3IoOyBpdC5jdXJyZW50
KCk7ICsraXQpCiAgICAgewogICAgICAgICBpZighaXQuY3VycmVudCgpLT5pc0NTU1N0eWxlU2hl
ZXQoKSB8fCAhc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldEltcGwgKj4oaXQuY3VycmVudCgpKS0+
aW1wbGljaXQoKSkKSW5kZXg6IGtkb20vY3NzL1N0eWxlU2hlZXRMaXN0SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1N0eWxlU2hlZXRMaXN0
SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL2Nz
cy9TdHlsZVNoZWV0TGlzdEltcGwuaAotLS0ga2RvbS9jc3MvU3R5bGVTaGVldExpc3RJbXBsLmgJ
MSBTZXAgMjAwNSAwNzozMzoxMiAtMDAwMAkxLjMKKysrIGtkb20vY3NzL1N0eWxlU2hlZXRMaXN0
SW1wbC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzEgLTAwMDAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgPGtkb20vU2hhcmVkLmg+CiAKLSNpbmNsdWRlIDxxcHRybGlzdC5oPgorI2luY2x1ZGUg
PHEzcHRybGlzdC5oPgogCiBuYW1lc3BhY2UgS0RPTQogewpAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgS0RPTQogICAgICAgICB2b2lkIGFkZChTdHlsZVNoZWV0SW1wbCAqcyk7CiAgICAgICAg
IHZvaWQgcmVtb3ZlKFN0eWxlU2hlZXRJbXBsICpzKTsKIAotICAgICAgICBRUHRyTGlzdDxTdHls
ZVNoZWV0SW1wbD4gc3R5bGVTaGVldHM7CisgICAgICAgIFEzUHRyTGlzdDxTdHlsZVNoZWV0SW1w
bD4gc3R5bGVTaGVldHM7CiAgICAgfTsKIH07CiAKSW5kZXg6IGtkb20vZWNtYS9TY3JpcHRJbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2Rv
bS9lY21hL1NjcmlwdEludGVycHJldGVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRp
ZmYgLXAgLXUgLXIxLjUga2RvbS9lY21hL1NjcmlwdEludGVycHJldGVyLmNwcAotLS0ga2RvbS9l
Y21hL1NjcmlwdEludGVycHJldGVyLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjI0IC0wMDAwCTEuNQor
Kysga2RvbS9lY21hL1NjcmlwdEludGVycHJldGVyLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0w
MDAwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSA8a2pzL29iamVjdC5oPgogCiAjaW5jbHVk
ZSA8cXB0cmRpY3QuaD4KLSNpbmNsdWRlIDxxcHRybGlzdC5oPgorI2luY2x1ZGUgPHEzcHRybGlz
dC5oPgogCiAjaW5jbHVkZSAiRXZlbnRJbXBsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRJbXBsLmgi
CkBAIC0zNCw3ICszNCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCi10eXBlZGVmIFFQ
dHJMaXN0PFNjcmlwdEludGVycHJldGVyPiBJbnRlcnByZXRlckxpc3Q7Cit0eXBlZGVmIFEzUHRy
TGlzdDxTY3JpcHRJbnRlcnByZXRlcj4gSW50ZXJwcmV0ZXJMaXN0Owogc3RhdGljIEludGVycHJl
dGVyTGlzdCAqc19pbnRlcnByZXRlckxpc3Q7CiAKIGNsYXNzIFNjcmlwdEludGVycHJldGVyOjpQ
cml2YXRlCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0
RE9NT2JqZWN0KAogICAgIGlmKCFzX2ludGVycHJldGVyTGlzdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUVB0ckxpc3RJdGVyYXRvcjxTY3JpcHRJbnRlcnByZXRlcj4gaXQoKnNfaW50ZXJwcmV0
ZXJMaXN0KTsKKyAgICBRM1B0ckxpc3RJdGVyYXRvcjxTY3JpcHRJbnRlcnByZXRlcj4gaXQoKnNf
aW50ZXJwcmV0ZXJMaXN0KTsKICAgICB3aGlsZShpdC5jdXJyZW50KCkpCiAgICAgewogICAgICAg
ICAoKml0KS0+cmVtb3ZlRE9NT2JqZWN0KGhhbmRsZSk7CkluZGV4OiBrZG9tL2V2ZW50cy9FdmVu
dFRhcmdldEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NApkaWZmIC1wIC11IC1yMS40IGtkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAKLS0tIGtk
b20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozMzoyNyAtMDAwMAkx
LjQKKysrIGtkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODoz
MiAtMDAwMApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0SW1wbDo6YWRkRXZlbnRM
aXN0ZW5lcihECiAKICAgICBpZighbV9ldmVudExpc3RlbmVycykKICAgICB7Ci0gICAgICAgIG1f
ZXZlbnRMaXN0ZW5lcnMgPSBuZXcgUVB0ckxpc3Q8UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI+KCk7
CisgICAgICAgIG1fZXZlbnRMaXN0ZW5lcnMgPSBuZXcgUTNQdHJMaXN0PFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyPigpOwogICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLT5zZXRBdXRvRGVsZXRlKHRy
dWUpOwogICAgIH0KICAgICBlbHNlCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgRXZlbnRUYXJnZXRJ
bXBsOjphZGRFdmVudExpc3RlbmVyKEQKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gZXhpc3Rp
bmcgbGlzdGVuZXIgZm9yZ2V0IHRoaXMgY2FsbC4uLgogICAgICAgICBSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciBjb21wYXJlKHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgCiAKLSAgICAgICAg
UVB0ckxpc3RJdGVyYXRvcjxSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcj4gaXQoKm1fZXZlbnRMaXN0
ZW5lcnMpOworICAgICAgICBRM1B0ckxpc3RJdGVyYXRvcjxSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
cj4gaXQoKm1fZXZlbnRMaXN0ZW5lcnMpOwogICAgICAgICBmb3IoOyBpdC5jdXJyZW50KCk7ICsr
aXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmKCooaXQuY3VycmVudCgpKSA9PSBjb21wYXJl
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgRXZlbnRUYXJnZXRJbXBsOjpyZW1vdmVFdmVudExp
c3RlbmUKIAogICAgIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyIGNvbXBhcmUodHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOwogCi0gICAgUVB0ckxpc3RJdGVyYXRvcjxSZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lcj4gaXQoKm1fZXZlbnRMaXN0ZW5lcnMpOworICAgIFEzUHRyTGlzdEl0ZXJhdG9yPFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyPiBpdCgqbV9ldmVudExpc3RlbmVycyk7CiAgICAgZm9yKDsg
aXQuY3VycmVudCgpOyArK2l0KQogICAgIHsKICAgICAgICAgaWYoKCppdC5jdXJyZW50KCkpID09
IGNvbXBhcmUpCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBFdmVudFRhcmdldEltcGw6OmRpc3Bh
dGNoRXZlbnQoRXZlbgogCiAgICAgLy8gRmluZCBvdXQsIHdoZXJlIHRvIHNlbmQgdG8gLT4gY29s
bGVjdCBwYXJlbnQgbm9kZXMsCiAgICAgLy8gY2FzdCB0aGVtIHRvIEV2ZW50VGFyZ2V0cyBhbmQg
YWRkIHRoZW0gdG8gbGlzdAotICAgIFFQdHJMaXN0PEV2ZW50VGFyZ2V0SW1wbD4gdGFyZ2V0Q2hh
aW47CisgICAgUTNQdHJMaXN0PEV2ZW50VGFyZ2V0SW1wbD4gdGFyZ2V0Q2hhaW47CiAKICAgICBO
b2RlSW1wbCAqaSA9IGR5bmFtaWNfY2FzdDxOb2RlSW1wbCAqPih0aGlzKTsKICAgICBpZighaSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIEV2ZW50VGFyZ2V0SW1wbDo6ZGlzcGF0Y2hFdmVudChF
dmVuCiAgICAgLy8gVHJpZ2dlciBhbnkgY2FwdHVyaW5nIGV2ZW50IGhhbmRsZXJzIG9uIG91ciB3
YXkgZG93bgogICAgIGV2dC0+c2V0RXZlbnRQaGFzZShDQVBUVVJJTkdfUEhBU0UpOwogCi0gICAg
UVB0ckxpc3RJdGVyYXRvcjxFdmVudFRhcmdldEltcGw+IGl0KHRhcmdldENoYWluKTsKKyAgICBR
M1B0ckxpc3RJdGVyYXRvcjxFdmVudFRhcmdldEltcGw+IGl0KHRhcmdldENoYWluKTsKICAgICBm
b3IoOyBpdC5jdXJyZW50KCkgJiYgaXQuY3VycmVudCgpICE9IHRoaXMgJiYgIWV2dC0+cHJvcGFn
YXRpb25TdG9wcGVkKCk7ICsraXQpCiAgICAgewogICAgICAgICBFdmVudFRhcmdldEltcGwgKmkg
PSBpdC5jdXJyZW50KCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBFdmVudFRhcmdldEltcGw6
OmhhbmRsZUxvY2FsRXZlbnRzKAogCiAgICAgS0pTOjpJbnRlcnByZXRlcjo6bG9jaygpOwogCi0g
ICAgUVB0ckxpc3RJdGVyYXRvcjxSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcj4gaXQoKm1fZXZlbnRM
aXN0ZW5lcnMpOworICAgIFEzUHRyTGlzdEl0ZXJhdG9yPFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
PiBpdCgqbV9ldmVudExpc3RlbmVycyk7CiAgICAgZm9yKDsgaXQuY3VycmVudCgpOyArK2l0KQog
ICAgIHsKICAgICAgICAgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIgKmN1cnJlbnQgPSBpdC5jdXJy
ZW50KCk7CkluZGV4OiBrZG9tL2V2ZW50cy9FdmVudFRhcmdldEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2V2ZW50cy9FdmVudFRhcmdldEltcGwu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9ldmVudHMv
RXZlbnRUYXJnZXRJbXBsLmgKLS0tIGtkb20vZXZlbnRzL0V2ZW50VGFyZ2V0SW1wbC5oCTEgU2Vw
IDIwMDUgMDc6MzM6MjcgLTAwMDAJMS40CisrKyBrZG9tL2V2ZW50cy9FdmVudFRhcmdldEltcGwu
aAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIEtE
T01fRXZlbnRUYXJnZXRJbXBsX0gKICNkZWZpbmUgS0RPTV9FdmVudFRhcmdldEltcGxfSAogCi0j
aW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRlIDxxM3B0cmxpc3QuaD4KIAogI2luY2x1ZGUg
PGtkb20vRE9NU3RyaW5nLmg+CiAjaW5jbHVkZSA8a2RvbS9UcmVlU2hhcmVkLmg+CkBAIC01OCw3
ICs1OCw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fbGlz
dGVuZXJUeXBlczsKIAotICAgICAgICBRUHRyTGlzdDxSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcj4g
Km1fZXZlbnRMaXN0ZW5lcnM7CisgICAgICAgIFEzUHRyTGlzdDxSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lcj4gKm1fZXZlbnRMaXN0ZW5lcnM7CiAgICAgfTsKIH07CiAKSW5kZXg6IGtkb20vbHMvTFNQ
YXJzZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL2xzL0xTUGFyc2VySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1w
IC11IC1yMS40IGtkb20vbHMvTFNQYXJzZXJJbXBsLmNwcAotLS0ga2RvbS9scy9MU1BhcnNlcklt
cGwuY3BwCTEgU2VwIDIwMDUgMDc6MzM6NTEgLTAwMDAJMS40CisrKyBrZG9tL2xzL0xTUGFyc2Vy
SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMiAtMDAwMApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aW5jbHVkZSA8cWRpci5oPgogI2luY2x1ZGUgPHFidWZmZXIuaD4KLSNpbmNsdWRlIDxxY3N0cmlu
Zy5oPgorI2luY2x1ZGUgPHEzY3N0cmluZy5oPgogCiAjaW5jbHVkZSA8a21pbWV0eXBlLmg+CiAK
QEAgLTEzMiw3ICsxMzIsNyBAQCBEb2N1bWVudEltcGwgKkxTUGFyc2VySW1wbDo6cGFyc2UoS1VS
TCB1CiAgICAgZWxzZSBpZihpbnB1dC0+Ynl0ZVN0cmVhbSgpICYmICFpbnB1dC0+Ynl0ZVN0cmVh
bSgpLT5pc0VtcHR5KCkpCiAgICAgewogICAgICAgICBRU3RyaW5nIHN0cihpbnB1dC0+Ynl0ZVN0
cmVhbSgpLT5zdHJpbmcoKSk7Ci0gICAgICAgIFFDU3RyaW5nIGluKHN0ci5hc2NpaSgpLCBzdHIu
bGVuZ3RoKCkgKyAxKTsKKyAgICAgICAgUTNDU3RyaW5nIGluKHN0ci5hc2NpaSgpLCBzdHIubGVu
Z3RoKCkgKyAxKTsKIAogICAgICAgICBpbnQgYSwgYjsKICAgICAgICAgdW5zaWduZWQgaW50IGkg
PSAwOwpJbmRleDoga2RvbS9wYXJzZXIvS0RPTURvY3VtZW50QnVpbGRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9wYXJzZXIvS0RPTURvY3VtZW50
QnVpbGRlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtk
b20vcGFyc2VyL0tET01Eb2N1bWVudEJ1aWxkZXIuY3BwCi0tLSBrZG9tL3BhcnNlci9LRE9NRG9j
dW1lbnRCdWlsZGVyLmNwcAkxIFNlcCAyMDA1IDA3OjMzOjUzIC0wMDAwCTEuNAorKysga2RvbS9w
YXJzZXIvS0RPTURvY3VtZW50QnVpbGRlci5jcHAJMiBTZXAgMjAwNSAwOTozODozMiAtMDAwMApA
QCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgPGt1cmwuaD4KICNpbmNsdWRlIDxrZGVidWcuaD4K
IAotI2luY2x1ZGUgPHFwdHJzdGFjay5oPgorI2luY2x1ZGUgPHEzcHRyc3RhY2suaD4KIAogI2lu
Y2x1ZGUgImtkb20uaCIKICNpbmNsdWRlIDxrZG9tL0hlbHBlci5oPgpAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGNkYXRhOwogICAgIERvY3VtZW50SW1wbCAqZG9jOwotICAg
IFFQdHJTdGFjazxOb2RlSW1wbD4gbm9kZXM7CisgICAgUTNQdHJTdGFjazxOb2RlSW1wbD4gbm9k
ZXM7CiB9OwogCiBEb2N1bWVudEJ1aWxkZXI6OkRvY3VtZW50QnVpbGRlcigpIDogZChuZXcgUHJp
dmF0ZSgpKQpJbmRleDoga2RvbS94cGF0aC9pbXBsL2V4cHJlc3Npb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBhdGgvaW1wbC9leHByZXNzaW9u
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIga2RvbS94cGF0
aC9pbXBsL2V4cHJlc3Npb24uY3BwCi0tLSBrZG9tL3hwYXRoL2ltcGwvZXhwcmVzc2lvbi5jcHAJ
MSBTZXAgMjAwNSAwNzozNDowMyAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9leHByZXNz
aW9uLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0yMTMsNyArMjEzLDcgQEAgRXhw
cmVzc2lvbjo6RXhwcmVzc2lvbigpCiAKIEV4cHJlc3Npb246On5FeHByZXNzaW9uKCkKIHsKLSAg
ICBRVmFsdWVMaXN0PEV4cHJlc3Npb24gKj46Okl0ZXJhdG9yIGl0LCBlbmQgPSBtX3N1YkV4cHJl
c3Npb25zLmVuZCgpOworICAgIFEzVmFsdWVMaXN0PEV4cHJlc3Npb24gKj46Okl0ZXJhdG9yIGl0
LCBlbmQgPSBtX3N1YkV4cHJlc3Npb25zLmVuZCgpOwogICAgIGZvciAoIGl0ID0gbV9zdWJFeHBy
ZXNzaW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQgKSB7CiAgICAgICAgIGRlbGV0ZSAqaXQ7
CiAgICAgfQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgRXhwcmVzc2lvbjo6YWRkU3ViRXhwcmVz
c2lvbiggRXhwcmUKIHZvaWQgRXhwcmVzc2lvbjo6b3B0aW1pemUoKQogewogICAgIGJvb2wgYWxs
U3ViRXhwcmVzc2lvbnNDb25zdGFudCA9IHRydWU7Ci0gICAgUVZhbHVlTGlzdDxFeHByZXNzaW9u
ICo+OjpJdGVyYXRvciBpdCwgZW5kID0gbV9zdWJFeHByZXNzaW9ucy5lbmQoKTsKKyAgICBRM1Zh
bHVlTGlzdDxFeHByZXNzaW9uICo+OjpJdGVyYXRvciBpdCwgZW5kID0gbV9zdWJFeHByZXNzaW9u
cy5lbmQoKTsKICAgICBmb3IgKCBpdCA9IG1fc3ViRXhwcmVzc2lvbnMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0ICkgewogICAgICAgICBFeHByZXNzaW9uICpleHByID0gKml0OwogICAgICAgICBp
ZiAoIGV4cHItPmlzQ29uc3RhbnQoKSApIHsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIEV4cHJl
c3Npb246Om9wdGltaXplKCkKICAgICBpZiAoIGFsbFN1YkV4cHJlc3Npb25zQ29uc3RhbnQgKSB7
CiAgICAgICAgIG1fY29uc3RhbnRWYWx1ZSA9IG5ldyBWYWx1ZSggZG9FdmFsdWF0ZSgpICk7CiAK
LSAgICAgICAgUVZhbHVlTGlzdDxFeHByZXNzaW9uICo+OjpJdGVyYXRvciBpdCwgZW5kID0gbV9z
dWJFeHByZXNzaW9ucy5lbmQoKTsKKyAgICAgICAgUTNWYWx1ZUxpc3Q8RXhwcmVzc2lvbiAqPjo6
SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3ViRXhwcmVzc2lvbnMuZW5kKCk7CiAgICAgICAgIGZvciAo
IGl0ID0gbV9zdWJFeHByZXNzaW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQgKSB7CiAgICAg
ICAgICAgICBkZWxldGUgKml0OwogICAgICAgICB9CkBAIC0yNzYsNyArMjc2LDcgQEAgY29uc3Qg
RXhwcmVzc2lvbiAqRXhwcmVzc2lvbjo6c3ViRXhwciggdQogCiBib29sIEV4cHJlc3Npb246Omlz
Q29uc3RhbnQoKSBjb25zdAogewotICAgIFFWYWx1ZUxpc3Q8RXhwcmVzc2lvbiAqPjo6Q29uc3RJ
dGVyYXRvciBpdCwgZW5kID0gbV9zdWJFeHByZXNzaW9ucy5lbmQoKTsKKyAgICBRM1ZhbHVlTGlz
dDxFeHByZXNzaW9uICo+OjpDb25zdEl0ZXJhdG9yIGl0LCBlbmQgPSBtX3N1YkV4cHJlc3Npb25z
LmVuZCgpOwogICAgIGZvciAoIGl0ID0gbV9zdWJFeHByZXNzaW9ucy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQgKSB7CiAgICAgICAgIGlmICggISggKml0ICktPmlzQ29uc3RhbnQoKSApIHsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IGtkb20veHBhdGgvaW1wbC9leHByZXNzaW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS94cGF0aC9p
bXBsL2V4cHJlc3Npb24uaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIx
LjIga2RvbS94cGF0aC9pbXBsL2V4cHJlc3Npb24uaAotLS0ga2RvbS94cGF0aC9pbXBsL2V4cHJl
c3Npb24uaAkxIFNlcCAyMDA1IDA3OjM0OjAzIC0wMDAwCTEuMgorKysga2RvbS94cGF0aC9pbXBs
L2V4cHJlc3Npb24uaAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJET01TdHJpbmdJbXBsLmgiCiAKLSNpbmNsdWRlIDxxZGljdC5oPgorI2lu
Y2x1ZGUgPHEzZGljdC5oPgogCiBuYW1lc3BhY2UgS0RPTSB7CiAgICAgY2xhc3MgTm9kZUltcGw7
CkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBFdmFsdWF0aW9uQ29udGV4dAogICAgIEtET006Ok5v
ZGVJbXBsICpub2RlOwogICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAgICB1bnNpZ25lZCBsb25n
IHBvc2l0aW9uOwotICAgIFFEaWN0PEtET006OkRPTVN0cmluZ0ltcGw+IHZhcmlhYmxlQmluZGlu
Z3M7CisgICAgUTNEaWN0PEtET006OkRPTVN0cmluZ0ltcGw+IHZhcmlhYmxlQmluZGluZ3M7CiAg
ICAgLyogVGhlIGZ1bmN0aW9uIGxpYnJhcnkgaXMgZ2xvYmFsbHkgYWNjZXNzaWJsZSB0aHJvdWdo
CiAgICAgICogRnVuY3Rpb25MaWJyYXJ5OjpzZWxmKCkKICAgICAgKi8KQEAgLTEwNyw3ICsxMDcs
NyBAQCBjbGFzcyBFeHByZXNzaW9uCiAKICAgICAgICAgc3RhdGljIEV2YWx1YXRpb25Db250ZXh0
IHNfZXZhbHVhdGlvbkNvbnRleHQ7CiAKLSAgICAgICAgUVZhbHVlTGlzdDxFeHByZXNzaW9uICo+
IG1fc3ViRXhwcmVzc2lvbnM7CisgICAgICAgIFEzVmFsdWVMaXN0PEV4cHJlc3Npb24gKj4gbV9z
dWJFeHByZXNzaW9uczsKICAgICAgICAgVmFsdWUgKm1fY29uc3RhbnRWYWx1ZTsKIH07CiAKSW5k
ZXg6IGtkb20veHBhdGgvaW1wbC9mdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBhdGgvaW1wbC9mdW5jdGlvbnMuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBrZG9tL3hwYXRoL2ltcGwvZnVuY3Rp
b25zLmNwcAotLS0ga2RvbS94cGF0aC9pbXBsL2Z1bmN0aW9ucy5jcHAJMSBTZXAgMjAwNSAwNzoz
NDowMyAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9mdW5jdGlvbnMuY3BwCTIgU2VwIDIw
MDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTMyOCw5ICszMjgsOSBAQCBRU3RyaW5nIEludGVydmFsOjph
c1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQgRnVuY3Rpb246OnNldEFy
Z3VtZW50cyggY29uc3QgUVZhbHVlTGlzdDxFeHByZXNzaW9uICo+ICZhcmdzICkKK3ZvaWQgRnVu
Y3Rpb246OnNldEFyZ3VtZW50cyggY29uc3QgUTNWYWx1ZUxpc3Q8RXhwcmVzc2lvbiAqPiAmYXJn
cyApCiB7Ci0gICAgUVZhbHVlTGlzdDxFeHByZXNzaW9uICo+OjpDb25zdEl0ZXJhdG9yIGl0LCBl
bmQgPSBhcmdzLmVuZCgpOworICAgIFEzVmFsdWVMaXN0PEV4cHJlc3Npb24gKj46OkNvbnN0SXRl
cmF0b3IgaXQsIGVuZCA9IGFyZ3MuZW5kKCk7CiAgICAgZm9yICggaXQgPSBhcmdzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCApIHsKICAgICAgICAgYWRkU3ViRXhwcmVzc2lvbiggKml0ICk7CiAg
ICAgfQpAQCAtOTA2LDcgKzkwNiw3IEBAIEZ1bmN0aW9uTGlicmFyeTo6RnVuY3Rpb25MaWJyYXJ5
KCkKIH0KIAogRnVuY3Rpb24gKkZ1bmN0aW9uTGlicmFyeTo6Z2V0RnVuY3Rpb24oIGNvbnN0IGNo
YXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UVZhbHVlTGlzdDxFeHByZXNzaW9uICo+ICZhcmdzICkgY29uc3QKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRM1ZhbHVlTGlzdDxFeHByZXNzaW9uICo+ICZh
cmdzICkgY29uc3QKIHsKICAgICBpZiAoICFtX2Z1bmN0aW9uRGljdC5maW5kKCBuYW1lICkgKSB7
CiAgICAgICAgIHFXYXJuaW5nKCAiRnVuY3Rpb24gJyVzJyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg
aW1wbGVtZW50YXRpb24uIiwgbmFtZSApOwpJbmRleDoga2RvbS94cGF0aC9pbXBsL2Z1bmN0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBhdGgv
aW1wbC9mdW5jdGlvbnMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIx
LjIga2RvbS94cGF0aC9pbXBsL2Z1bmN0aW9ucy5oCi0tLSBrZG9tL3hwYXRoL2ltcGwvZnVuY3Rp
b25zLmgJMSBTZXAgMjAwNSAwNzozNDowMyAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9m
dW5jdGlvbnMuaAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0yNywxMyArMjcsMTMgQEAK
IAogI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKIAotI2luY2x1ZGUgPHFkaWN0Lmg+Ci0jaW5jbHVk
ZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHEzZGljdC5oPgorI2luY2x1ZGUgPHEzdmFsdWVs
aXN0Lmg+CiAKIGNsYXNzIEZ1bmN0aW9uIDogcHVibGljIEV4cHJlc3Npb24KIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZvaWQgc2V0QXJndW1lbnRzKCBjb25zdCBRVmFsdWVMaXN0PEV4cHJlc3Np
b24gKj4gJmFyZ3MgKTsKKyAgICAgICAgdm9pZCBzZXRBcmd1bWVudHMoIGNvbnN0IFEzVmFsdWVM
aXN0PEV4cHJlc3Npb24gKj4gJmFyZ3MgKTsKICAgICAgICAgdm9pZCBzZXROYW1lKCBjb25zdCBR
U3RyaW5nICZuYW1lICk7CiAKICAgICAgICAgdmlydHVhbCBRU3RyaW5nIGR1bXAoKSBjb25zdDsK
QEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRnVuY3Rpb25MaWJyYXJ5CiAgICAgICAgIHN0YXRpYyBG
dW5jdGlvbkxpYnJhcnkgJnNlbGYoKTsKIAogICAgICAgICBGdW5jdGlvbiAqZ2V0RnVuY3Rpb24o
IGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UVZhbHVlTGlzdDxFeHByZXNzaW9uICo+ICZhcmdzID0gUVZhbHVlTGlzdDxFeHByZXNzaW9uICo+
KCkgKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRM1ZhbHVl
TGlzdDxFeHByZXNzaW9uICo+ICZhcmdzID0gUTNWYWx1ZUxpc3Q8RXhwcmVzc2lvbiAqPigpICkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRnVuY3Rpb25SZWM7CkBAIC02
NSw3ICs2NSw3IEBAIGNsYXNzIEZ1bmN0aW9uTGlicmFyeQogICAgICAgICBGdW5jdGlvbkxpYnJh
cnkgJm9wZXJhdG9yPSggY29uc3QgRnVuY3Rpb25MaWJyYXJ5ICZyaHMgKTsKIAogICAgICAgICBz
dGF0aWMgRnVuY3Rpb25MaWJyYXJ5ICpzX2luc3RhbmNlOwotICAgICAgICBRRGljdDxGdW5jdGlv
blJlYz4gbV9mdW5jdGlvbkRpY3Q7CisgICAgICAgIFEzRGljdDxGdW5jdGlvblJlYz4gbV9mdW5j
dGlvbkRpY3Q7CiB9OwogCiAjZW5kaWYgLy8gRlVOQ1RJT05TX0gKSW5kZXg6IGtkb20veHBhdGgv
aW1wbC9wYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL3hwYXRoL2ltcGwvcGF0aC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1w
IC11IC1yMS4yIGtkb20veHBhdGgvaW1wbC9wYXRoLmNwcAotLS0ga2RvbS94cGF0aC9pbXBsL3Bh
dGguY3BwCTEgU2VwIDIwMDUgMDc6MzQ6MDMgLTAwMDAJMS4yCisrKyBrZG9tL3hwYXRoL2ltcGwv
cGF0aC5jcHAJMiBTZXAgMjAwNSAwOTozODozMiAtMDAwMApAQCAtMjYsNyArMjYsNyBAQAogCiAj
aW5jbHVkZSAiTm9kZUltcGwuaCIKIAotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKyNpbmNsdWRl
IDxxM3ZhbHVlbGlzdC5oPgogCiB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIApAQCAtMzcsNyArMzcs
NyBAQCBQYXRoOjpQYXRoKCkKIAogUGF0aDo6flBhdGgoKQogewotICAgIFFWYWx1ZUxpc3Q8U3Rl
cCAqPjo6SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3RlcHMuZW5kKCk7CisgICAgUTNWYWx1ZUxpc3Q8
U3RlcCAqPjo6SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3RlcHMuZW5kKCk7CiAgICAgZm9yICggaXQg
PSBtX3N0ZXBzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCApIHsKICAgICAgICAgZGVsZXRlICpp
dDsKICAgICB9CkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgUGF0aDo6YWRkU3RlcCggU3RlcCAqc3Rl
cCApCiAKIHZvaWQgUGF0aDo6b3B0aW1pemUoKQogewotICAgIFFWYWx1ZUxpc3Q8U3RlcCAqPjo6
SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3RlcHMuZW5kKCk7CisgICAgUTNWYWx1ZUxpc3Q8U3RlcCAq
Pjo6SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3RlcHMuZW5kKCk7CiAgICAgZm9yICggaXQgPSBtX3N0
ZXBzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCApIHsKICAgICAgICAgKCAqaXQgKS0+b3B0aW1p
emUoKTsKICAgICB9CkBAIC03OCw4ICs3OCw4IEBAIFZhbHVlIFBhdGg6OmRvRXZhbHVhdGUoKSBj
b25zdAogCiAgICAgaW5Eb21Ob2Rlcy5hcHBlbmQoIGNvbnRleHQgKTsKIAotICAgIFFWYWx1ZUxp
c3Q8U3RlcCAqPjo6Q29uc3RJdGVyYXRvciBpdCA9IG1fc3RlcHMuYmVnaW4oKTsKLSAgICBRVmFs
dWVMaXN0PFN0ZXAgKj46OkNvbnN0SXRlcmF0b3IgZW5kID0gbV9zdGVwcy5lbmQoKTsKKyAgICBR
M1ZhbHVlTGlzdDxTdGVwICo+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9zdGVwcy5iZWdpbigpOwor
ICAgIFEzVmFsdWVMaXN0PFN0ZXAgKj46OkNvbnN0SXRlcmF0b3IgZW5kID0gbV9zdGVwcy5lbmQo
KTsKICAgICBmb3IgKCA7IGl0ICE9IGVuZDsgKytpdCApIHsKICAgICAgICAgU3RlcCAqc3RlcCA9
ICppdDsKICAgICAgICAgZm9yICggdW5zaWduZWQgaW50IGkgPSAwOyBpIDwgaW5Eb21Ob2Rlcy5j
b3VudCgpOyArK2kgKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAgUVN0cmluZyBQYXRoOjpkdW1wKCkg
Y29uc3QKICAgICBRU3RyaW5nIHMgPSAiPHBhdGggYWJzb2x1dGU9XCIiOwogICAgIHMgKz0gbV9h
YnNvbHV0ZSA/ICJ0cnVlIiA6ICJmYWxzZSI7CiAgICAgcyArPSAiXCI+IjsKLSAgICBRVmFsdWVM
aXN0PFN0ZXAgKj46OkNvbnN0SXRlcmF0b3IgaXQsIGVuZCA9IG1fc3RlcHMuZW5kKCk7CisgICAg
UTNWYWx1ZUxpc3Q8U3RlcCAqPjo6Q29uc3RJdGVyYXRvciBpdCwgZW5kID0gbV9zdGVwcy5lbmQo
KTsKICAgICBmb3IgKCBpdCA9IG1fc3RlcHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0ICkgewog
ICAgICAgICBzICs9ICggKml0ICktPmR1bXAoKTsKICAgICB9CkluZGV4OiBrZG9tL3hwYXRoL2lt
cGwvcGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
eHBhdGgvaW1wbC9wYXRoLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1y
MS4yIGtkb20veHBhdGgvaW1wbC9wYXRoLmgKLS0tIGtkb20veHBhdGgvaW1wbC9wYXRoLmgJMSBT
ZXAgMjAwNSAwNzozNDowMyAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9wYXRoLmgJMiBT
ZXAgMjAwNSAwOTozODozMiAtMDAwMApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgImV4cHJl
c3Npb24uaCIKICNpbmNsdWRlICJzdGVwLmgiCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBRVmFsdWVMaXN0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFEzVmFsdWVMaXN0Owog
CiBjbGFzcyBQYXRoIDogcHVibGljIEV4cHJlc3Npb24KIHsKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgUGF0aCA6IHB1YmxpYyBFeHByZXNzaW9uCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBWYWx1ZSBkb0V2YWx1YXRlKCkgY29uc3Q7CiAKLSAgICAgICAgUVZhbHVlTGlzdDxTdGVwICo+
IG1fc3RlcHM7CisgICAgICAgIFEzVmFsdWVMaXN0PFN0ZXAgKj4gbV9zdGVwczsKICAgICAgICAg
Ym9vbCBtX2Fic29sdXRlOwogfTsKIApJbmRleDoga2RvbS94cGF0aC9pbXBsL3N0ZXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBhdGgvaW1wbC9z
dGVwLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIxLjIga2RvbS94
cGF0aC9pbXBsL3N0ZXAuY3BwCi0tLSBrZG9tL3hwYXRoL2ltcGwvc3RlcC5jcHAJMSBTZXAgMjAw
NSAwNzozNDowNCAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9zdGVwLmNwcAkyIFNlcCAy
MDA1IDA5OjM4OjMyIC0wMDAwCkBAIC01Nyw3ICs1Nyw3IEBAIFN0ZXA6OlN0ZXAoKQogfQogCiBT
dGVwOjpTdGVwKCBBeGlzVHlwZSBheGlzLCBjb25zdCBEb21TdHJpbmcgJm5vZGVUZXN0LAotICAg
ICAgICAgICAgY29uc3QgUVZhbHVlTGlzdDxQcmVkaWNhdGUgKj4gJnByZWRpY2F0ZXMgKQorICAg
ICAgICAgICAgY29uc3QgUTNWYWx1ZUxpc3Q8UHJlZGljYXRlICo+ICZwcmVkaWNhdGVzICkKICAg
ICA6IG1fYXhpcyggYXhpcyApLAogICAgIG1fbm9kZVRlc3QoIG5vZGVUZXN0ICksCiAgICAgbV9w
cmVkaWNhdGVzKCBwcmVkaWNhdGVzICkKQEAgLTY2LDggKzY2LDggQEAgU3RlcDo6U3RlcCggQXhp
c1R5cGUgYXhpcywgY29uc3QgRG9tU3RyaQogCiBTdGVwOjp+U3RlcCgpCiB7Ci0gICAgUVZhbHVl
TGlzdDxQcmVkaWNhdGUgKj46Okl0ZXJhdG9yIGl0ID0gbV9wcmVkaWNhdGVzLmJlZ2luKCk7Ci0g
ICAgUVZhbHVlTGlzdDxQcmVkaWNhdGUgKj46Okl0ZXJhdG9yIGVuZCA9IG1fcHJlZGljYXRlcy5l
bmQoKTsKKyAgICBRM1ZhbHVlTGlzdDxQcmVkaWNhdGUgKj46Okl0ZXJhdG9yIGl0ID0gbV9wcmVk
aWNhdGVzLmJlZ2luKCk7CisgICAgUTNWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpJdGVyYXRvciBl
bmQgPSBtX3ByZWRpY2F0ZXMuZW5kKCk7CiAgICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQgKSB7
CiAgICAgICAgIGRlbGV0ZSAqaXQ7CiAgICAgfQpAQCAtOTIsNyArOTIsNyBAQCBEb21Ob2RlTGlz
dCBTdGVwOjpldmFsdWF0ZSggTm9kZUltcGwgKmNvCiAgICAgbm9kZXMgPSBub2RlVGVzdE1hdGNo
ZXMoIG5vZGVzICk7CiAgICAgcURlYnVnKCAiXHROb2RldGVzdCAnJXMnIHRyaW1zIHRoaXMgbnVt
YmVyIHRvICVpLiIsIG1fbm9kZVRlc3QubGF0aW4xKCksIG5vZGVzLmNvdW50KCkgKTsKIAotICAg
IFFWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpDb25zdEl0ZXJhdG9yIGl0LCBlbmQgPSBtX3ByZWRp
Y2F0ZXMuZW5kKCk7CisgICAgUTNWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpDb25zdEl0ZXJhdG9y
IGl0LCBlbmQgPSBtX3ByZWRpY2F0ZXMuZW5kKCk7CiAgICAgZm9yICggaXQgPSBtX3ByZWRpY2F0
ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0ICkgewogICAgICAgICBFeHByZXNzaW9uOjpldmFs
dWF0aW9uQ29udGV4dCgpLnNpemUgPSBub2Rlcy5jb3VudCgpOwogICAgICAgICBFeHByZXNzaW9u
OjpldmFsdWF0aW9uQ29udGV4dCgpLnBvc2l0aW9uID0gMTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBE
b21Ob2RlTGlzdCBTdGVwOjpub2RlVGVzdE1hdGNoZXMoIGNvbnN0CiAKIHZvaWQgU3RlcDo6b3B0
aW1pemUoKQogewotICAgIFFWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpDb25zdEl0ZXJhdG9yIGl0
LCBlbmQgPSBtX3ByZWRpY2F0ZXMuZW5kKCk7CisgICAgUTNWYWx1ZUxpc3Q8UHJlZGljYXRlICo+
OjpDb25zdEl0ZXJhdG9yIGl0LCBlbmQgPSBtX3ByZWRpY2F0ZXMuZW5kKCk7CiAgICAgZm9yICgg
aXQgPSBtX3ByZWRpY2F0ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0ICkgewogICAgICAgICAo
ICppdCApLT5vcHRpbWl6ZSgpOwogICAgIH0KQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIFN0ZXA6
Om9wdGltaXplKCkKIFFTdHJpbmcgU3RlcDo6ZHVtcCgpIGNvbnN0CiB7CiAgICAgUVN0cmluZyBz
ID0gUVN0cmluZyggIjxzdGVwIGF4aXM9XCIlMVwiIG5vZGV0ZXN0PVwiJTJcIj4iICkuYXJnKCBh
eGlzQXNTdHJpbmcoIG1fYXhpcyApICkuYXJnKCBtX25vZGVUZXN0ICkubG9jYWw4Qml0KCkuZGF0
YSgpOwotICAgIFFWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpDb25zdEl0ZXJhdG9yIGl0LCBlbmQg
PSBtX3ByZWRpY2F0ZXMuZW5kKCk7CisgICAgUTNWYWx1ZUxpc3Q8UHJlZGljYXRlICo+OjpDb25z
dEl0ZXJhdG9yIGl0LCBlbmQgPSBtX3ByZWRpY2F0ZXMuZW5kKCk7CiAgICAgZm9yICggaXQgPSBt
X3ByZWRpY2F0ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0ICkgewogICAgICAgICBzICs9ICgg
Kml0ICktPmR1bXAoKTsKICAgICB9CkluZGV4OiBrZG9tL3hwYXRoL2ltcGwvc3RlcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBhdGgvaW1wbC9zdGVw
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGtkb20veHBhdGgv
aW1wbC9zdGVwLmgKLS0tIGtkb20veHBhdGgvaW1wbC9zdGVwLmgJMSBTZXAgMjAwNSAwNzozNDow
NCAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC9zdGVwLmgJMiBTZXAgMjAwNSAwOTozODoz
MiAtMDAwMApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTdGVwCiAgICAgICAgIFN0ZXAoKTsKICAg
ICAgICAgU3RlcCggQXhpc1R5cGUgYXhpcywKICAgICAgICAgICAgICAgY29uc3QgRG9tU3RyaW5n
ICZub2RlVGVzdCwKLSAgICAgICAgICAgICAgY29uc3QgUVZhbHVlTGlzdDxQcmVkaWNhdGUgKj4g
JnByZWRpY2F0ZXMgPSBRVmFsdWVMaXN0PFByZWRpY2F0ZSAqPigpICk7CisgICAgICAgICAgICAg
IGNvbnN0IFEzVmFsdWVMaXN0PFByZWRpY2F0ZSAqPiAmcHJlZGljYXRlcyA9IFEzVmFsdWVMaXN0
PFByZWRpY2F0ZSAqPigpICk7CiAgICAgICAgIH5TdGVwKCk7CiAKICAgICAgICAgRG9tTm9kZUxp
c3QgZXZhbHVhdGUoIEtET006Ok5vZGVJbXBsICpjb250ZXh0ICkgY29uc3Q7CkBAIC02Miw3ICs2
Miw3IEBAIGNsYXNzIFN0ZXAKIAogICAgICAgICBBeGlzVHlwZSBtX2F4aXM7CiAgICAgICAgIERv
bVN0cmluZyBtX25vZGVUZXN0OwotICAgICAgICBRVmFsdWVMaXN0PFByZWRpY2F0ZSAqPiBtX3By
ZWRpY2F0ZXM7CisgICAgICAgIFEzVmFsdWVMaXN0PFByZWRpY2F0ZSAqPiBtX3ByZWRpY2F0ZXM7
CiB9OwogCiAjZW5kaWYgLy8gU1RFUF9ICkluZGV4OiBrZG9tL3hwYXRoL2ltcGwvdG9rZW5pemVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hwYXRo
L2ltcGwvdG9rZW5pemVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUg
LXIxLjIga2RvbS94cGF0aC9pbXBsL3Rva2VuaXplci5jcHAKLS0tIGtkb20veHBhdGgvaW1wbC90
b2tlbml6ZXIuY3BwCTEgU2VwIDIwMDUgMDc6MzQ6MDQgLTAwMDAJMS4yCisrKyBrZG9tL3hwYXRo
L2ltcGwvdG9rZW5pemVyLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC02NCw4ICs2
NCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBub2RlVHlwZU5hbWVzW10KIAogVG9rZW5p
emVyKiBUb2tlbml6ZXI6OnNfaW5zdGFuY2UgPSAwOwogCi1RRGljdDxTdGVwOjpBeGlzVHlwZT4q
IFRva2VuaXplcjo6c19heGlzTmFtZXNEaWN0ICAgICA9IDA7Ci1RRGljdDxjaGFyPiogVG9rZW5p
emVyOjpzX25vZGVUeXBlTmFtZXNEaWN0ID0gMDsKK1EzRGljdDxTdGVwOjpBeGlzVHlwZT4qIFRv
a2VuaXplcjo6c19heGlzTmFtZXNEaWN0ICAgICA9IDA7CitRM0RpY3Q8Y2hhcj4qIFRva2VuaXpl
cjo6c19ub2RlVHlwZU5hbWVzRGljdCA9IDA7CiAKIFRva2VuaXplciAmVG9rZW5pemVyOjpzZWxm
KCkKIHsKQEAgLTExMSw3ICsxMTEsNyBAQCBUb2tlbml6ZXI6OlhNTENhdCBUb2tlbml6ZXI6OmNo
YXJDYXQoUUNoCiBib29sIFRva2VuaXplcjo6aXNBeGlzTmFtZShRU3RyaW5nIG5hbWUsIFN0ZXA6
OkF4aXNUeXBlICp0eXBlKQogewogICAgIGlmICghc19heGlzTmFtZXNEaWN0KSB7Ci0gICAgICAg
IHNfYXhpc05hbWVzRGljdCA9IG5ldyBRRGljdDxTdGVwOjpBeGlzVHlwZT47CisgICAgICAgIHNf
YXhpc05hbWVzRGljdCA9IG5ldyBRM0RpY3Q8U3RlcDo6QXhpc1R5cGU+OwogICAgICAgICBzX2F4
aXNOYW1lc0RpY3QtPnNldEF1dG9EZWxldGUoIHRydWUgKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgcCA9IDA7IHAgPCBheGlzTmFtZXNDb3VudDsgKytwKQogICAgICAgICAgICAgc19heGlz
TmFtZXNEaWN0LT5pbnNlcnQoUVN0cmluZzo6ZnJvbUxhdGluMShheGlzTmFtZXNbcF0ubmFtZSks
CkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBUb2tlbml6ZXI6OmlzTm9kZVR5cGVOYW1lKFFTdHJp
bmcgbgogewogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKICAgICBpZiAoIXNfbm9kZVR5cGVO
YW1lc0RpY3QpIHsKLSAgICAgICAgc19ub2RlVHlwZU5hbWVzRGljdCA9IG5ldyBRRGljdDxjaGFy
PjsKKyAgICAgICAgc19ub2RlVHlwZU5hbWVzRGljdCA9IG5ldyBRM0RpY3Q8Y2hhcj47CiAgICAg
ICAgIGZvciAoaW50IHAgPSAwOyBub2RlVHlwZU5hbWVzW3BdOyArK3ApCiAgICAgICAgICAgICBz
X25vZGVUeXBlTmFtZXNEaWN0LT5pbnNlcnQoUVN0cmluZzo6ZnJvbUxhdGluMShub2RlVHlwZU5h
bWVzW3BdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlVHlw
ZU5hbWVzIC8qZHVtbXkqLyk7CkluZGV4OiBrZG9tL3hwYXRoL2ltcGwvdG9rZW5pemVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS94cGF0aC9pbXBsL3Rv
a2VuaXplci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBrZG9t
L3hwYXRoL2ltcGwvdG9rZW5pemVyLmgKLS0tIGtkb20veHBhdGgvaW1wbC90b2tlbml6ZXIuaAkx
IFNlcCAyMDA1IDA3OjM0OjA0IC0wMDAwCTEuMgorKysga2RvbS94cGF0aC9pbXBsL3Rva2VuaXpl
ci5oCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYg
VE9LRU5JWkVSX0gKICNkZWZpbmUgVE9LRU5JWkVSX0gKIAotI2luY2x1ZGUgPHFkaWN0Lmg+Cisj
aW5jbHVkZSA8cTNkaWN0Lmg+CiAjaW5jbHVkZSA8cXN0cmluZy5oPgogCiAjaW5jbHVkZSAic3Rl
cC5oIgpAQCAtNTYsOCArNTYsOCBAQCBwcml2YXRlOgogICAgIFFTdHJpbmcgbV9kYXRhOwogICAg
IGludCBtX2xhc3RUb2tlblR5cGU7CiAKLSAgICBzdGF0aWMgUURpY3Q8U3RlcDo6QXhpc1R5cGU+
KiBzX2F4aXNOYW1lc0RpY3Q7Ci0gICAgc3RhdGljIFFEaWN0PGNoYXI+KiBzX25vZGVUeXBlTmFt
ZXNEaWN0OworICAgIHN0YXRpYyBRM0RpY3Q8U3RlcDo6QXhpc1R5cGU+KiBzX2F4aXNOYW1lc0Rp
Y3Q7CisgICAgc3RhdGljIFEzRGljdDxjaGFyPiogc19ub2RlVHlwZU5hbWVzRGljdDsKICAgICBz
dGF0aWMgVG9rZW5pemVyKiBzX2luc3RhbmNlOwogCiAgICAgZW51bSBYTUxDYXQgewpJbmRleDog
a2RvbS94cGF0aC9pbXBsL3V0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL3hwYXRoL2ltcGwvdXRpbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIK
ZGlmZiAtcCAtdSAtcjEuMiBrZG9tL3hwYXRoL2ltcGwvdXRpbC5oCi0tLSBrZG9tL3hwYXRoL2lt
cGwvdXRpbC5oCTEgU2VwIDIwMDUgMDc6MzQ6MDQgLTAwMDAJMS4yCisrKyBrZG9tL3hwYXRoL2lt
cGwvdXRpbC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTI2LDEzICsyNiwxMyBAQAog
I2RlZmluZSBVVElMX0gKIAogI2luY2x1ZGUgPHFzdHJpbmcuaD4KLSNpbmNsdWRlIDxxdmFsdWVs
aXN0Lmg+CisjaW5jbHVkZSA8cTN2YWx1ZWxpc3QuaD4KIAogbmFtZXNwYWNlIEtET00gewogICAg
IGNsYXNzIE5vZGVJbXBsOwogfQogCi10eXBlZGVmIFFWYWx1ZUxpc3Q8S0RPTTo6Tm9kZUltcGwg
Kj4gRG9tTm9kZUxpc3Q7Cit0eXBlZGVmIFEzVmFsdWVMaXN0PEtET006Ok5vZGVJbXBsICo+IERv
bU5vZGVMaXN0OwogdHlwZWRlZiBRU3RyaW5nIERvbVN0cmluZzsKIAogLyogQHJldHVybiB3aGV0
aGVyIHRoZSBnaXZlbiBub2RlIGlzIHRoZSByb290IG5vZGUuCkluZGV4OiBrZG9tL3hwYXRoL2lt
cGwvdmFyaWFibGVyZWZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tkb20veHBhdGgvaW1wbC92YXJpYWJsZXJlZmVyZW5jZS5jcHAsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGtkb20veHBhdGgvaW1wbC92YXJpYWJs
ZXJlZmVyZW5jZS5jcHAKLS0tIGtkb20veHBhdGgvaW1wbC92YXJpYWJsZXJlZmVyZW5jZS5jcHAJ
MSBTZXAgMjAwNSAwNzozNDowNCAtMDAwMAkxLjIKKysrIGtkb20veHBhdGgvaW1wbC92YXJpYWJs
ZXJlZmVyZW5jZS5jcHAJMiBTZXAgMjAwNSAwOTozODozMiAtMDAwMApAQCAtNDEsNyArNDEsNyBA
QCBRU3RyaW5nIFZhcmlhYmxlUmVmZXJlbmNlOjpkdW1wKCkgY29uc3QKIAogVmFsdWUgVmFyaWFi
bGVSZWZlcmVuY2U6OmRvRXZhbHVhdGUoKSBjb25zdAogewotICAgIFFEaWN0PEtET006OkRPTVN0
cmluZ0ltcGw+IGJpbmRpbmdzID0gZXZhbHVhdGlvbkNvbnRleHQoKS52YXJpYWJsZUJpbmRpbmdz
OworICAgIFEzRGljdDxLRE9NOjpET01TdHJpbmdJbXBsPiBiaW5kaW5ncyA9IGV2YWx1YXRpb25D
b250ZXh0KCkudmFyaWFibGVCaW5kaW5nczsKICAgICBpZiAoICFiaW5kaW5ncy5maW5kKCBtX25h
bWUgKSApIHsKICAgICAgICAgLy8gWFhYIFdoYXQgdG8gZG8gaWYgYW4gdW5rbm93biB2YXJpYWJs
ZSBpcyByZWZlcmVuY2VkPwogICAgICAgICByZXR1cm4gVmFsdWUoICIiICk7CkluZGV4OiBrZG9t
L3hwb2ludGVyL2ltcGwvRWxlbWVudFNjaGVtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvaW1wbC9FbGVtZW50U2NoZW1lSW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtkb20veHBv
aW50ZXIvaW1wbC9FbGVtZW50U2NoZW1lSW1wbC5jcHAKLS0tIGtkb20veHBvaW50ZXIvaW1wbC9F
bGVtZW50U2NoZW1lSW1wbC5jcHAJMSBTZXAgMjAwNSAwNzozNDowNyAtMDAwMAkxLjMKKysrIGtk
b20veHBvaW50ZXIvaW1wbC9FbGVtZW50U2NoZW1lSW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODoz
MiAtMDAwMApAQCAtMTQyLDggKzE0Miw4IEBAIFhQb2ludGVyUmVzdWx0SW1wbCAqRWxlbWVudFNj
aGVtZUltcGw6OmUKICAgICAgICAgcmVzdWx0Tm9kZSA9IGNvbnRleHQ7IC8qIEd1cmFudGVlZCB0
byBiZSBkb2N1bWVudCBub2RlLiAqLwogCiAgICAgUV9BU1NFUlQocmVzdWx0Tm9kZSk7Ci0gICAg
UVZhbHVlTGlzdDx1bnNpZ25lZCBpbnQ+Ojpjb25zdF9pdGVyYXRvciBpdDsKLSAgICBRVmFsdWVM
aXN0PHVuc2lnbmVkIGludD46OmNvbnN0X2l0ZXJhdG9yIGVuZChtX2NoaWxkU2VxdWVuY2UuY29u
c3RFbmQoKSk7CisgICAgUTNWYWx1ZUxpc3Q8dW5zaWduZWQgaW50Pjo6Y29uc3RfaXRlcmF0b3Ig
aXQ7CisgICAgUTNWYWx1ZUxpc3Q8dW5zaWduZWQgaW50Pjo6Y29uc3RfaXRlcmF0b3IgZW5kKG1f
Y2hpbGRTZXF1ZW5jZS5jb25zdEVuZCgpKTsKIAogICAgIGZvcihpdCA9IG1fY2hpbGRTZXF1ZW5j
ZS5jb25zdEJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICB7CkluZGV4OiBrZG9tL3hwb2lu
dGVyL2ltcGwvRWxlbWVudFNjaGVtZUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rZG9tL3hwb2ludGVyL2ltcGwvRWxlbWVudFNjaGVtZUltcGwuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS94cG9pbnRlci9pbXBs
L0VsZW1lbnRTY2hlbWVJbXBsLmgKLS0tIGtkb20veHBvaW50ZXIvaW1wbC9FbGVtZW50U2NoZW1l
SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzQ6MDggLTAwMDAJMS4zCisrKyBrZG9tL3hwb2ludGVyL2lt
cGwvRWxlbWVudFNjaGVtZUltcGwuaAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbmNsdWRlIDxrZG9tL3hwb2ludGVyL2ltcGwvUG9pbnRlclBhcnRJbXBs
Lmg+CiAKLSNpbmNsdWRlIDxxdmFsdWVsaXN0Lmg+CisjaW5jbHVkZSA8cTN2YWx1ZWxpc3QuaD4K
ICNpbmNsdWRlIDxxc3RyaW5nbGlzdC5oPgogCiBuYW1lc3BhY2UgS0RPTQpAQCAtNTYsNyArNTYs
NyBAQCBuYW1lc3BhY2UgWFBvaW50ZXIKICAgICAgICAgdm9pZCBwYXJzZUNoaWxkU2VxdWVuY2Uo
Y29uc3QgUVN0cmluZ0xpc3QgJnN0ZXBzKTsKIAogICAgICAgICBTaG9ydEhhbmRJbXBsICptX3No
b3J0aGFuZDsKLSAgICAgICAgUVZhbHVlTGlzdDx1bnNpZ25lZCBpbnQ+IG1fY2hpbGRTZXF1ZW5j
ZTsKKyAgICAgICAgUTNWYWx1ZUxpc3Q8dW5zaWduZWQgaW50PiBtX2NoaWxkU2VxdWVuY2U7CiAg
ICAgfTsKIH07CiAKSW5kZXg6IGtkb20veHBvaW50ZXIvaW1wbC9YUG9pbnRlckV2YWx1YXRvcklt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBv
aW50ZXIvaW1wbC9YUG9pbnRlckV2YWx1YXRvckltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFdmFsdWF0
b3JJbXBsLmNwcAotLS0ga2RvbS94cG9pbnRlci9pbXBsL1hQb2ludGVyRXZhbHVhdG9ySW1wbC5j
cHAJMSBTZXAgMjAwNSAwNzozNDowOCAtMDAwMAkxLjMKKysrIGtkb20veHBvaW50ZXIvaW1wbC9Y
UG9pbnRlckV2YWx1YXRvckltcGwuY3BwCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTIz
LDcgKzIzLDcgQEAKICNpbmNsdWRlIDxxbWFwLmg+CiAjaW5jbHVkZSA8cXBhaXIuaD4KICNpbmNs
dWRlIDxxc3RyaW5nLmg+Ci0jaW5jbHVkZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHEzdmFs
dWVsaXN0Lmg+CiAKICNpbmNsdWRlIDxrZGVidWcuaD4KIApAQCAtMTA0LDcgKzEwNCw3IEBAIFhQ
b2ludGVyRXhwcmVzc2lvbkltcGwgKlhQb2ludGVyRXZhbHVhdG8KICAgICB0eXBlZGVmIFFQYWly
PERPTVN0cmluZywgRE9NU3RyaW5nPiBTdHJQYWlyOwogICAgIAogICAgIC8qIEEgbGlzdCBvZiBw
YWlyIG9mIFNjaGVtZU5hbWUgYW5kIFNjaGVtZURhdGEsIGFsbCB2YWxpZC4gKi8KLSAgICB0eXBl
ZGVmIFFWYWx1ZUxpc3Q8U3RyUGFpcj4gU3RyUGFpckxpc3Q7CisgICAgdHlwZWRlZiBRM1ZhbHVl
TGlzdDxTdHJQYWlyPiBTdHJQYWlyTGlzdDsKICAgICBTdHJQYWlyTGlzdCBwb2ludGVyUGFydHM7
CiAKICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCkluZGV4OiBr
ZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFeHByZXNzaW9uSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS94cG9pbnRlci9pbXBsL1hQb2ludGVy
RXhwcmVzc2lvbkltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAt
cjEuMyBrZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFeHByZXNzaW9uSW1wbC5jcHAKLS0tIGtk
b20veHBvaW50ZXIvaW1wbC9YUG9pbnRlckV4cHJlc3Npb25JbXBsLmNwcAkxIFNlcCAyMDA1IDA3
OjM0OjA5IC0wMDAwCTEuMworKysga2RvbS94cG9pbnRlci9pbXBsL1hQb2ludGVyRXhwcmVzc2lv
bkltcGwuY3BwCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTIwLDcgKzIwLDcgQEAKICAq
CiAgKi8KIAotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKyNpbmNsdWRlIDxxM3ZhbHVlbGlzdC5o
PgogCiAjaW5jbHVkZSAia2RvbS9TaGFyZWQuaCIKICNpbmNsdWRlICJOb2RlSW1wbC5oIgpJbmRl
eDoga2RvbS94cG9pbnRlci9pbXBsL1hQb2ludGVyRXhwcmVzc2lvbkltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50
ZXJFeHByZXNzaW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAt
cjEuMyBrZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFeHByZXNzaW9uSW1wbC5oCi0tLSBrZG9t
L3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFeHByZXNzaW9uSW1wbC5oCTEgU2VwIDIwMDUgMDc6MzQ6
MDkgLTAwMDAJMS4zCisrKyBrZG9tL3hwb2ludGVyL2ltcGwvWFBvaW50ZXJFeHByZXNzaW9uSW1w
bC5oCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYg
S0RPTV9YUG9pbnRlcl9YUG9pbnRlckV4cHJlc3Npb25JbXBsX0gKICNkZWZpbmUgS0RPTV9YUG9p
bnRlcl9YUG9pbnRlckV4cHJlc3Npb25JbXBsX0gKIAotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4K
KyNpbmNsdWRlIDxxM3ZhbHVlbGlzdC5oPgogCiAjaW5jbHVkZSA8a2RvbS9TaGFyZWQuaD4KIApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgWFBvaW50ZXIKICAgICBjbGFzcyBYUG9pbnRlckV4
cHJlc3Npb25JbXBsIDogcHVibGljIFNoYXJlZAogICAgIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHR5cGVkZWYgUVZhbHVlTGlzdDxQb2ludGVyUGFydEltcGwgKj4gTGlzdDsKKyAgICAgICAgdHlw
ZWRlZiBRM1ZhbHVlTGlzdDxQb2ludGVyUGFydEltcGwgKj4gTGlzdDsKIAogICAgICAgICBYUG9p
bnRlckV4cHJlc3Npb25JbXBsKERPTVN0cmluZ0ltcGwgKnJhdywgTm9kZUltcGwgKnJlbGF0ZWRO
b2RlLCBEb2N1bWVudEltcGwgKmNvbnRleHQpOwogICAgICAgICB2aXJ0dWFsIH5YUG9pbnRlckV4
cHJlc3Npb25JbXBsKCk7CkluZGV4OiBrc3ZnMi9LU1ZHRmFjdG9yeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvS1NWR0ZhY3RvcnkuY3BwLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3ZnMi9LU1ZHRmFjdG9yeS5j
cHAKLS0tIGtzdmcyL0tTVkdGYWN0b3J5LmNwcAkxIFNlcCAyMDA1IDA3OjM0OjE0IC0wMDAwCTEu
NAorKysga3N2ZzIvS1NWR0ZhY3RvcnkuY3BwCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAwMDAKQEAg
LTQ4LDcgKzQ4LDcgQEAgdW5zaWduZWQgbG9uZyBpbnQgS1NWR0ZhY3Rvcnk6OnNfcmVmY250IAog
S0luc3RhbmNlICpLU1ZHRmFjdG9yeTo6c19pbnN0YW5jZSA9IDA7CiBLQWJvdXREYXRhICpLU1ZH
RmFjdG9yeTo6c19hYm91dCA9IDA7CiBLU1ZHU2V0dGluZ3MgKktTVkdGYWN0b3J5OjpzX3NldHRp
bmdzID0gMDsKLVFQdHJMaXN0PEtTVkdQYXJ0PiAqS1NWR0ZhY3Rvcnk6OnNfcGFydHMgPSAwOwor
UTNQdHJMaXN0PEtTVkdQYXJ0PiAqS1NWR0ZhY3Rvcnk6OnNfcGFydHMgPSAwOwogCiBLU1ZHRmFj
dG9yeTo6S1NWR0ZhY3RvcnkoYm9vbCBjbG9uZSkKIHsKQEAgLTk0LDcgKzk0LDcgQEAgS1BhcnRz
OjpQYXJ0ICpLU1ZHRmFjdG9yeTo6Y3JlYXRlUGFydE9iagogICAgIGJvb2wgZHVtbXk7CiAgICAg
UVJlZ0V4cCByMShRU3RyaW5nOjpmcm9tTGF0aW4xKCIoV0lEVEgpKFxccyo9XFxzKlwiKShcXGQr
KShcXHcqKShcIikiKSk7CiAgICAgUVJlZ0V4cCByMihRU3RyaW5nOjpmcm9tTGF0aW4xKCIoSEVJ
R0hUKShcXHMqPVxccypcIikoXFxkKykoXFx3KikoXCIpIikpOwotICAgIGZvcihRVmFsdWVMaXN0
Q29uc3RJdGVyYXRvcjxRU3RyaW5nPiBpdCA9IGFyZ3MuYmVnaW4oKTsgaXQgIT0gYXJncy5lbmQo
KTsgKytpdCkgCisgICAgZm9yKFEzVmFsdWVMaXN0Q29uc3RJdGVyYXRvcjxRU3RyaW5nPiBpdCA9
IGFyZ3MuYmVnaW4oKTsgaXQgIT0gYXJncy5lbmQoKTsgKytpdCkgCiAgICAgewogICAgICAgICBp
ZihyMS5zZWFyY2goKml0KSA+IC0xKQogICAgICAgICAgICAgd2lkdGggPSByMS5jYXAoMykudG9V
SW50KCZkdW1teSk7CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBLU1ZHRmFjdG9yeTo6ZGVyZWYo
KQogdm9pZCBLU1ZHRmFjdG9yeTo6cmVnaXN0ZXJQYXJ0KEtTVkdQYXJ0ICpwYXJ0KQogewogICAg
IGlmKCFzX3BhcnRzKQotICAgICAgICBzX3BhcnRzID0gbmV3IFFQdHJMaXN0PEtTVkdQYXJ0Pigp
OworICAgICAgICBzX3BhcnRzID0gbmV3IFEzUHRyTGlzdDxLU1ZHUGFydD4oKTsKIAogICAgIGlm
KCFzX3BhcnRzLT5jb250YWluc1JlZihwYXJ0KSkKICAgICB7CkluZGV4OiBrc3ZnMi9LU1ZHRmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL0tT
VkdGYWN0b3J5LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGtz
dmcyL0tTVkdGYWN0b3J5LmgKLS0tIGtzdmcyL0tTVkdGYWN0b3J5LmgJMSBTZXAgMjAwNSAwNzoz
NDoxNCAtMDAwMAkxLjIKKysrIGtzdmcyL0tTVkdGYWN0b3J5LmgJMiBTZXAgMjAwNSAwOTozODoz
MiAtMDAwMApAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBLU1ZHX0tTVkdGYWN0b3J5X0gKIAog
I2luY2x1ZGUgPGt1cmwuaD4KLSNpbmNsdWRlIDxxcHRybGlzdC5oPgorI2luY2x1ZGUgPHEzcHRy
bGlzdC5oPgogCiAjaW5jbHVkZSA8a3BhcnRzL2ZhY3RvcnkuaD4KICNpbmNsdWRlIDxrcGFydHMv
aGlzdG9yeXByb3ZpZGVyLmg+CkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBLU1ZHCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUGFydChLU1ZHUGFydCAqcGFydCk7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlcmVnaXN0ZXJQYXJ0KEtTVkdQYXJ0ICpwYXJ0KTsKIAotICAgICAgICBzdGF0
aWMgUVB0ckxpc3Q8S1NWR1BhcnQ+ICpwYXJ0TGlzdCgpIHsgcmV0dXJuIHNfcGFydHM7IH0KKyAg
ICAgICAgc3RhdGljIFEzUHRyTGlzdDxLU1ZHUGFydD4gKnBhcnRMaXN0KCkgeyByZXR1cm4gc19w
YXJ0czsgfQogCiAgICAgICAgIHN0YXRpYyBLSW5zdGFuY2UgKmluc3RhbmNlKCk7CiAgICAgICAg
IHN0YXRpYyBLU1ZHU2V0dGluZ3MgKmRlZmF1bHRTVkdTZXR0aW5ncygpOwpAQCAtNzIsNyArNzIs
NyBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICBzdGF0aWMgS0Fib3V0RGF0YSAqc19hYm91dDsK
ICAgICAgICAgc3RhdGljIEtTVkdTZXR0aW5ncyAqc19zZXR0aW5nczsKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBRUHRyTGlzdDxLU1ZHUGFydD4gKnNfcGFydHM7CisgICAgICAgIHN0YXRpYyBR
M1B0ckxpc3Q8S1NWR1BhcnQ+ICpzX3BhcnRzOwogICAgIH07CiB9CiAKSW5kZXg6IGtzdmcyL2Nz
cy9LU1ZHQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rc3ZnMi9jc3MvS1NWR0NTU1BhcnNlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL2Nzcy9LU1ZHQ1NTUGFyc2VyLmNwcAotLS0ga3N2ZzIv
Y3NzL0tTVkdDU1NQYXJzZXIuY3BwCTEgU2VwIDIwMDUgMDk6Mzk6MTIgLTAwMDAJMS41CisrKyBr
c3ZnMi9jc3MvS1NWR0NTU1BhcnNlci5jcHAJMiBTZXAgMjAwNSAwOTozODozMiAtMDAwMApAQCAt
NTA5LDcgKzUwOSw3IEBAIGJvb2wgU1ZHQ1NTUGFyc2VyOjpwYXJzZVNoYXBlKGludCBwcm9wSWQK
ICAgICByZXR1cm4gcmV0OwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAqU1ZHQ1NTUGFy
c2VyOjpjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKENTU1N0eWxlUnVsZUltcGwgKnJ1bGUsIFFQ
dHJMaXN0PENTU1Byb3BlcnR5PiAqcHJvcExpc3QpCitDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAq
U1ZHQ1NTUGFyc2VyOjpjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKENTU1N0eWxlUnVsZUltcGwg
KnJ1bGUsIFEzUHRyTGlzdDxDU1NQcm9wZXJ0eT4gKnByb3BMaXN0KQogewogICAgIHJldHVybiBu
ZXcgU1ZHQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwoZG9jdW1lbnQoKS0+aW1wbGVtZW50YXRpb24o
KS0+Y2RmSW50ZXJmYWNlKCksIHJ1bGUsIHByb3BMaXN0KTsKIH0KSW5kZXg6IGtzdmcyL2Nzcy9L
U1ZHQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYg
LXAgLXUgLXIxLjQga3N2ZzIvY3NzL0tTVkdDU1NQYXJzZXIuaAotLS0ga3N2ZzIvY3NzL0tTVkdD
U1NQYXJzZXIuaAkxIFNlcCAyMDA1IDA5OjM5OjEyIC0wMDAwCTEuNAorKysga3N2ZzIvY3NzL0tT
VkdDU1NQYXJzZXIuaAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBLU1ZHCiAKICAgICAgICAgdmlydHVhbCBib29sIHBhcnNlU2hhcGUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogCi0gICAgICAgIHZpcnR1YWwgS0RPTTo6Q1NTU3R5bGVE
ZWNsYXJhdGlvbkltcGwgKmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oS0RPTTo6Q1NTU3R5bGVS
dWxlSW1wbCAqcnVsZSwgUVB0ckxpc3Q8S0RPTTo6Q1NTUHJvcGVydHk+ICpwcm9wTGlzdCk7Cisg
ICAgICAgIHZpcnR1YWwgS0RPTTo6Q1NTU3R5bGVEZWNsYXJhdGlvbkltcGwgKmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oS0RPTTo6Q1NTU3R5bGVSdWxlSW1wbCAqcnVsZSwgUTNQdHJMaXN0PEtE
T006OkNTU1Byb3BlcnR5PiAqcHJvcExpc3QpOwogICAgIH07CiB9CiAKSW5kZXg6IGtzdmcyL2Nz
cy9TVkdDU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvY3NzL1NWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvY3NzL1NW
R0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmNwcAotLS0ga3N2ZzIvY3NzL1NWR0NTU1N0eWxlRGVj
bGFyYXRpb25JbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjEyIC0wMDAwCTEuNAorKysga3N2ZzIv
Y3NzL1NWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0w
MDAwCkBAIC0zNiw3ICszNiw3IEBAIFNWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsOjpTVkdDU1NT
dHlsZUQKIHsKIH0KIAotU1ZHQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGw6OlNWR0NTU1N0eWxlRGVj
bGFyYXRpb25JbXBsKEtET006OkNERkludGVyZmFjZSAqaW50ZXJmYWNlLCBLRE9NOjpDU1NSdWxl
SW1wbCAqcGFyZW50LCBRUHRyTGlzdDxLRE9NOjpDU1NQcm9wZXJ0eT4gKmxzdFZhbHVlcykKK1NW
R0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsOjpTVkdDU1NTdHlsZURlY2xhcmF0aW9uSW1wbChLRE9N
OjpDREZJbnRlcmZhY2UgKmludGVyZmFjZSwgS0RPTTo6Q1NTUnVsZUltcGwgKnBhcmVudCwgUTNQ
dHJMaXN0PEtET006OkNTU1Byb3BlcnR5PiAqbHN0VmFsdWVzKQogOiBLRE9NOjpDU1NTdHlsZURl
Y2xhcmF0aW9uSW1wbChpbnRlcmZhY2UsIHBhcmVudCwgbHN0VmFsdWVzKQogewogfQpJbmRleDog
a3N2ZzIvY3NzL1NWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvY3NzL1NWR0NTU1N0eWxlRGVjbGFyYXRpb25J
bXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL2Nz
cy9TVkdDU1NTdHlsZURlY2xhcmF0aW9uSW1wbC5oCi0tLSBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVE
ZWNsYXJhdGlvbkltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjEyIC0wMDAwCTEuNAorKysga3N2ZzIv
Y3NzL1NWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsLmgJMiBTZXAgMjAwNSAwOTozODozMiAtMDAw
MApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgS1NWRwogICAgIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFNWR0NTU1N0eWxlRGVjbGFyYXRpb25JbXBsKEtET006OkNERkludGVyZmFjZSAqaW50
ZXJmYWNlLCBLRE9NOjpDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSk7Ci0gICAgICAgIFNWR0NTU1N0
eWxlRGVjbGFyYXRpb25JbXBsKEtET006OkNERkludGVyZmFjZSAqaW50ZXJmYWNlLCBLRE9NOjpD
U1NSdWxlSW1wbCAqcGFyZW50UnVsZSwgUVB0ckxpc3Q8S0RPTTo6Q1NTUHJvcGVydHk+ICpsc3RW
YWx1ZXMpOworICAgICAgICBTVkdDU1NTdHlsZURlY2xhcmF0aW9uSW1wbChLRE9NOjpDREZJbnRl
cmZhY2UgKmludGVyZmFjZSwgS0RPTTo6Q1NTUnVsZUltcGwgKnBhcmVudFJ1bGUsIFEzUHRyTGlz
dDxLRE9NOjpDU1NQcm9wZXJ0eT4gKmxzdFZhbHVlcyk7CiAgICAgICAgIHZpcnR1YWwgflNWR0NT
U1N0eWxlRGVjbGFyYXRpb25JbXBsKCk7CiAKICAgICAgICAgU1ZHQ1NTU3R5bGVEZWNsYXJhdGlv
bkltcGwgJm9wZXJhdG9yPShjb25zdCBTVkdDU1NTdHlsZURlY2xhcmF0aW9uSW1wbCAmb3RoZXIp
OwpJbmRleDoga3N2ZzIvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9y
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvY3Nz
L1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCi0tLSBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJMSBTZXAgMjAwNSAwOTozOToxMiAtMDAwMAkxLjUKKysrIGtzdmcyL2Nzcy9TVkdDU1NT
dHlsZVNlbGVjdG9yLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBAIC0xNDEsNyArMTQx
LDcgQEAgdm9pZCBTVkdDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eQogICAgIFFGaWxl
IGYobG9jYXRlKCJkYXRhIiwgUVN0cmluZzo6ZnJvbUxhdGluMSgia3N2ZzIvc3ZnLmNzcyIpKSk7
CiAgICAgZi5vcGVuKElPX1JlYWRPbmx5KTsKIAotICAgIFFDU3RyaW5nIGZpbGUoZi5zaXplKCkg
KyAxKTsKKyAgICBRM0NTdHJpbmcgZmlsZShmLnNpemUoKSArIDEpOwogICAgIGludCByZWFkYnl0
ZXMgPSBmLnJlYWRCbG9jayhmaWxlLmRhdGEoKSwgZi5zaXplKCkpOwogICAgIGYuY2xvc2UoKTsK
ICAgICBpZihyZWFkYnl0ZXMgPj0gMCkKQEAgLTE3MSw3ICsxNzEsNyBAQCB1bnNpZ25lZCBpbnQg
U1ZHQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkRXh0CiAgICAgaWYoIWRlY2wpCiAgICAgICAgIHJldHVy
biBudW1Qcm9wczsKIAotICAgIFFQdHJMaXN0PEtET006OkNTU1Byb3BlcnR5PiogdmFsdWVzID0g
ZGVjbCA/IGRlY2wtPnZhbHVlcygpIDogMDsKKyAgICBRM1B0ckxpc3Q8S0RPTTo6Q1NTUHJvcGVy
dHk+KiB2YWx1ZXMgPSBkZWNsID8gZGVjbC0+dmFsdWVzKCkgOiAwOwogICAgIGlmKCF2YWx1ZXMp
CiAgICAgICAgIHJldHVybiBudW1Qcm9wczsKIApJbmRleDoga3N2ZzIvY3NzL1NWR0NTU1N0eWxl
U2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3Zn
Mi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlm
ZiAtcCAtdSAtcjEuNCBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5oCi0tLSBrc3ZnMi9j
c3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5oCTEgU2VwIDIwMDUgMDk6Mzk6MTIgLTAwMDAJMS40Cisr
KyBrc3ZnMi9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5oCTIgU2VwIDIwMDUgMDk6Mzg6MzIgLTAw
MDAKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGFkZEV4dHJhRGVjbGFyYXRpb25zKEtET006OkVsZW1l
bnRJbXBsICplLCB1bnNpZ25lZCBpbnQgbnVtUHJvcHMpOwogCi0gICAgICAgIFFNZW1BcnJheTxL
RE9NOjpDU1NPcmRlcmVkUHJvcGVydHk+IHByZXNlbnRhdGlvbkF0dHJzOworICAgICAgICBRM01l
bUFycmF5PEtET006OkNTU09yZGVyZWRQcm9wZXJ0eT4gcHJlc2VudGF0aW9uQXR0cnM7CiAKICAg
ICAgICAgdm9pZCBsb2FkRGVmYXVsdFN0eWxlKEtET006OkRvY3VtZW50SW1wbCAqZG9jKTsKIApJ
bmRleDoga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0
eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIv
bWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCi0tLSBrc3ZnMi9taXNjL0tDYW52YXNSZW5k
ZXJpbmdTdHlsZS5jcHAJMSBTZXAgMjAwNSAwOTozOToxNCAtMDAwMAkxLjUKKysrIGtzdmcyL21p
c2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAwCkBA
IC0yMCw3ICsyMCw3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0j
aW5jbHVkZSA8cXBhaW50ZGV2aWNlbWV0cmljcy5oPgorI2luY2x1ZGUgPHEzcGFpbnRkZXZpY2Vt
ZXRyaWNzLmg+CiAjaW5jbHVkZSA8cXBhaW50ZGV2aWNlLmg+CiAKICNpbmNsdWRlIDxrY2FudmFz
L0tDYW52YXMuaD4KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEtDYW52YXNSZW5kZXJpbmdTdHls
ZTo6dXBkYXRlU3Ryb2tlCiAgICAgaWYoZGFzaGVzKQogICAgIHsKICAgICAgICAgS0RPTTo6Q1NT
UHJpbWl0aXZlVmFsdWVJbXBsICpkYXNoID0gMDsKLSAgICAgICAgUVBhaW50RGV2aWNlTWV0cmlj
cyAqcGFpbnREZXZpY2VNZXRyaWNzID0gMDsKKyAgICAgICAgUTNQYWludERldmljZU1ldHJpY3Mg
KnBhaW50RGV2aWNlTWV0cmljcyA9IDA7CiAKICAgICAgICAgU1ZHRWxlbWVudEltcGwgKmVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50SW1wbCAqPihpdGVtLT51c2VyRGF0YSgpKTsKICAg
ICAgICAgaWYoZWxlbWVudCAmJiBlbGVtZW50LT5vd25lckRvY3VtZW50KCkpCkBAIC0xOTEsNyAr
MTkxLDcgQEAgZG91YmxlIEtDYW52YXNSZW5kZXJpbmdTdHlsZTo6Y3NzUHJpbWl0aQogICAgIGlm
KCEoY3NzVHlwZSA+IEtET006OkNTU19VTktOT1dOICYmIGNzc1R5cGUgPD0gS0RPTTo6Q1NTX1BD
KSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIAotICAgIFFQYWludERldmljZU1ldHJp
Y3MgKnBhaW50RGV2aWNlTWV0cmljcyA9IDA7CisgICAgUTNQYWludERldmljZU1ldHJpY3MgKnBh
aW50RGV2aWNlTWV0cmljcyA9IDA7CiAKICAgICBTVkdFbGVtZW50SW1wbCAqZWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0VsZW1lbnRJbXBsICo+KGl0ZW0tPnVzZXJEYXRhKCkpOwogICAgIGlmKGVs
ZW1lbnQgJiYgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpKQpJbmRleDoga3N2ZzIvbWlzYy9LU1ZH
VGltZVNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuY3BwCi0t
LSBrc3ZnMi9taXNjL0tTVkdUaW1lU2NoZWR1bGVyLmNwcAkxIFNlcCAyMDA1IDA3OjM0OjE1IC0w
MDAwCTEuNAorKysga3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5jcHAJMiBTZXAgMjAwNSAw
OTozODozMiAtMDAwMApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1ZHVGltZXI6Om5vdGlmeUFs
bCgpCiAgICAgLy8gRmlyc3QgYnVpbGQgYSBsaXN0IG9mIGFuaW1hdGlvbiBlbGVtZW50cyBwZXIg
dGFyZ2V0IGVsZW1lbnQKICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCB0byBkZWNpZGUgYWJvdXQg
dGhlIG9yZGVyICYgcHJpb3JpdHkgb2YgCiAgICAgLy8gdGhlIGFuaW1hdGlvbnMgLT4gJ2FkZGl0
aXZlJyBzdXBwb3J0IGlzIGhhbmRsZWQgdGhpcyB3YXkuCi0gICAgdHlwZWRlZiBRTWFwPFNWR0Vs
ZW1lbnRJbXBsICosIFFQdHJMaXN0PFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsPiA+IFRhcmdldEFu
aW1hdGlvbk1hcDsKKyAgICB0eXBlZGVmIFFNYXA8U1ZHRWxlbWVudEltcGwgKiwgUTNQdHJMaXN0
PFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsPiA+IFRhcmdldEFuaW1hdGlvbk1hcDsKICAgICBUYXJn
ZXRBbmltYXRpb25NYXAgdGFyZ2V0TWFwOwogICAgIAogICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9
IG1fbm90aWZ5TGlzdC5jb3VudCgpOyBpID4gMDsgaS0tKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZv
aWQgU1ZHVGltZXI6Om5vdGlmeUFsbCgpCiAgICAgICAgIFNWR0VsZW1lbnRJbXBsICp0YXJnZXQg
PSBjb25zdF9jYXN0PFNWR0VsZW1lbnRJbXBsICo+KGFuaW1hdGlvbi0+dGFyZ2V0RWxlbWVudCgp
KTsKICAgICAgICAgaWYoIXRhcmdldE1hcC5jb250YWlucyh0YXJnZXQpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBRUHRyTGlzdDxTVkdBbmltYXRpb25FbGVtZW50SW1wbD4gbGlzdDsKKyAgICAg
ICAgICAgIFEzUHRyTGlzdDxTVkdBbmltYXRpb25FbGVtZW50SW1wbD4gbGlzdDsKICAgICAgICAg
ICAgIGxpc3QuYXBwZW5kKGFuaW1hdGlvbik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICB0YXJnZXRNYXAuaW5zZXJ0KHRhcmdldCwgbGlzdCk7CkBAIC0xNzEsOCArMTcxLDggQEAgdm9p
ZCBTVkdUaW1lcjo6bm90aWZ5QWxsKCkKIAogICAgIGZvcig7IHRpdCAhPSB0ZW5kOyArK3RpdCkK
ICAgICB7Ci0gICAgICAgIFFQdHJMaXN0PFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsPjo6SXRlcmF0
b3IgaXQgPSB0aXQuZGF0YSgpLmJlZ2luKCk7Ci0gICAgICAgIFFQdHJMaXN0PFNWR0FuaW1hdGlv
bkVsZW1lbnRJbXBsPjo6SXRlcmF0b3IgZW5kID0gdGl0LmRhdGEoKS5lbmQoKTsKKyAgICAgICAg
UTNQdHJMaXN0PFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsPjo6SXRlcmF0b3IgaXQgPSB0aXQuZGF0
YSgpLmJlZ2luKCk7CisgICAgICAgIFEzUHRyTGlzdDxTVkdBbmltYXRpb25FbGVtZW50SW1wbD46
Okl0ZXJhdG9yIGVuZCA9IHRpdC5kYXRhKCkuZW5kKCk7CiAKICAgICAgICAgUU1hcDxRU3RyaW5n
LCBRQ29sb3I+IHRhcmdldENvbG9yOyAvLyBzcGVjaWFsIDxhbmltYXRlQ29sb3I+IGNhc2UKICAg
ICAgICAgU1ZHVHJhbnNmb3JtTGlzdEltcGwgKnRhcmdldFRyYW5zZm9ybXMgPSAwOyAvLyBzcGVj
aWFsIDxhbmltYXRlVHJhbnNmb3JtPiBjYXNlICAgIApJbmRleDoga3N2ZzIvbWlzYy9LU1ZHVGlt
ZVNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRp
ZmYgLXAgLXUgLXIxLjQga3N2ZzIvbWlzYy9LU1ZHVGltZVNjaGVkdWxlci5oCi0tLSBrc3ZnMi9t
aXNjL0tTVkdUaW1lU2NoZWR1bGVyLmgJMSBTZXAgMjAwNSAwNzozNDoxNSAtMDAwMAkxLjQKKysr
IGtzdmcyL21pc2MvS1NWR1RpbWVTY2hlZHVsZXIuaAkyIFNlcCAyMDA1IDA5OjM4OjMyIC0wMDAw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSA8cXRpbWVyLmg+CiAjaW5jbHVkZSA8cW9iamVj
dC5oPgogI2luY2x1ZGUgPHFkYXRldGltZS5oPgotI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKyNp
bmNsdWRlIDxxM3ZhbHVlbGlzdC5oPgogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0aW9uRWxlbWVudElt
cGwuaCIKIApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICBTVkdBbmlt
YXRpb25FbGVtZW50SW1wbCAqYW5pbWF0aW9uOwogICAgIH0gU1ZHTm90aWZpY2F0aW9uU3RydWN0
OwogICAgIAotICAgIHR5cGVkZWYgUVZhbHVlTGlzdDxTVkdOb3RpZmljYXRpb25TdHJ1Y3Q+IFNW
R05vdGlmeUxpc3Q7CisgICAgdHlwZWRlZiBRM1ZhbHVlTGlzdDxTVkdOb3RpZmljYXRpb25TdHJ1
Y3Q+IFNWR05vdGlmeUxpc3Q7CiAKICAgICBjbGFzcyBUaW1lU2NoZWR1bGVyOwogICAgIGNsYXNz
IFNWR1RpbWVyCkBAIC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBLU1ZHCiAgICAgICAgIFNWR05v
dGlmeUxpc3QgbV9ub3RpZnlMaXN0OwogICAgIH07CiAKLSAgICB0eXBlZGVmIFFWYWx1ZUxpc3Q8
U1ZHVGltZXIgKj4gU1ZHVGltZXJMaXN0OworICAgIHR5cGVkZWYgUTNWYWx1ZUxpc3Q8U1ZHVGlt
ZXIgKj4gU1ZHVGltZXJMaXN0OwogCiAgICAgY2xhc3MgU1ZHRG9jdW1lbnRJbXBsOwogICAgIGNs
YXNzIFRpbWVTY2hlZHVsZXIgOiBwdWJsaWMgUU9iamVjdApJbmRleDoga3N2ZzIvc3ZnL1NWR0Rv
Y3VtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpk
aWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuY3BwCi0tLSBrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5OjM5OjE1IC0wMDAwCTEuNQorKysg
a3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApA
QCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLSNpbmNsdWRlIDxxZGlj
dC5oPgorI2luY2x1ZGUgPHEzZGljdC5oPgogCiAjaW5jbHVkZSA8a3VybC5oPgogI2luY2x1ZGUg
PGtsb2NhbGUuaD4KQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFNWR0RvY3VtZW50SW1wbDo6Zmlu
aXNoZWRQYXJzaW5nKCkKIHsKICAgICBhZGRTY3JpcHRzKHJvb3RFbGVtZW50KCkpOwogCi0gICAg
bV9zY3JpcHRzSXQgPSBuZXcgUVB0ckxpc3RJdGVyYXRvcjxTVkdTY3JpcHRFbGVtZW50SW1wbD4o
bV9zY3JpcHRzKTsKKyAgICBtX3NjcmlwdHNJdCA9IG5ldyBRM1B0ckxpc3RJdGVyYXRvcjxTVkdT
Y3JpcHRFbGVtZW50SW1wbD4obV9zY3JpcHRzKTsKICAgICBleGVjdXRlU2NyaXB0cyhmYWxzZSk7
CiB9CiAKQEAgLTYyMiw3ICs2MjIsNyBAQCB2b2lkIFNWR0RvY3VtZW50SW1wbDo6cmVjYWxjU3R5
bGVTZWxlY3RvCiAKICAgICBRU3RyaW5nIHNoZWV0VXNlZDsgLy8gRW1wdHkgc2hlZXQKIAotICAg
IFFQdHJMaXN0PEtET006OlN0eWxlU2hlZXRJbXBsPiBvbGRTdHlsZVNoZWV0cyA9IG1fc3R5bGVT
aGVldHMtPnN0eWxlU2hlZXRzOworICAgIFEzUHRyTGlzdDxLRE9NOjpTdHlsZVNoZWV0SW1wbD4g
b2xkU3R5bGVTaGVldHMgPSBtX3N0eWxlU2hlZXRzLT5zdHlsZVNoZWV0czsKICAgICBtX3N0eWxl
U2hlZXRzLT5zdHlsZVNoZWV0cy5jbGVhcigpOwogCiAgICAgZm9yKGludCBpID0gMDsgaSA8IDI7
IGkrKykKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFNWR0RvY3VtZW50SW1wbDo6cmVjYWxjU3R5
bGVTZWxlY3RvCiAgICAgfQogCiAgICAgLy8gRGUtcmVmZXJlbmNlIGFsbCB0aGUgc3R5bGVzaGVl
dHMgaW4gdGhlIG9sZCBsaXN0Ci0gICAgUVB0ckxpc3RJdGVyYXRvcjxLRE9NOjpTdHlsZVNoZWV0
SW1wbD4gaXQob2xkU3R5bGVTaGVldHMpOworICAgIFEzUHRyTGlzdEl0ZXJhdG9yPEtET006OlN0
eWxlU2hlZXRJbXBsPiBpdChvbGRTdHlsZVNoZWV0cyk7CiAgICAgZm9yKDtpdC5jdXJyZW50KCk7
ICsraXQpCiAgICAgICAgIGl0LmN1cnJlbnQoKS0+ZGVyZWYoKTsKIApJbmRleDoga3N2ZzIvc3Zn
L1NWR0RvY3VtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBw
b3J0L2tzdmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41
CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR0RvY3VtZW50SW1wbC5oCi0tLSBrc3ZnMi9z
dmcvU1ZHRG9jdW1lbnRJbXBsLmgJMSBTZXAgMjAwNSAwOTozOToxNSAtMDAwMAkxLjUKKysrIGtz
dmcyL3N2Zy9TVkdEb2N1bWVudEltcGwuaAkyIFNlcCAyMDA1IDA5OjM4OjMzIC0wMDAwCkBAIC0y
Myw3ICsyMyw3IEBACiAjaWZuZGVmIEtTVkdfU1ZHRG9jdW1lbnRJbXBsX0gKICNkZWZpbmUgS1NW
R19TVkdEb2N1bWVudEltcGxfSAogCi0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRlIDxx
M3B0cmxpc3QuaD4KIAogI2luY2x1ZGUgPGtkb20vY29yZS9Eb2N1bWVudEltcGwuaD4KICNpbmNs
dWRlIDxrZG9tL2NhY2hlL0tET01DYWNoZWRTY3JpcHQuaD4KQEAgLTExNiw4ICsxMTYsOCBAQCBu
YW1lc3BhY2UgS1NWRwogICAgICAgICB2b2lkIGFkZFNjcmlwdHMoS0RPTTo6Tm9kZUltcGwgKm9i
aik7CiAKICAgICAgICAgS0RPTTo6Q2FjaGVkU2NyaXB0ICptX2NhY2hlZFNjcmlwdDsKLSAgICAg
ICAgUVB0ckxpc3Q8U1ZHU2NyaXB0RWxlbWVudEltcGw+IG1fc2NyaXB0czsKLSAgICAgICAgUVB0
ckxpc3RJdGVyYXRvcjxTVkdTY3JpcHRFbGVtZW50SW1wbD4gKm1fc2NyaXB0c0l0OworICAgICAg
ICBRM1B0ckxpc3Q8U1ZHU2NyaXB0RWxlbWVudEltcGw+IG1fc2NyaXB0czsKKyAgICAgICAgUTNQ
dHJMaXN0SXRlcmF0b3I8U1ZHU2NyaXB0RWxlbWVudEltcGw+ICptX3NjcmlwdHNJdDsKICAgICB9
OwogfTsKIApJbmRleDoga3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZm
IC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudEltcGwuY3BwCi0t
LSBrc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnRJbXBsLmNwcAkxIFNlcCAyMDA1IDA5
OjM5OjE1IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50SW1w
bC5jcHAJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApAQCAtMTIwLDcgKzEyMCw3IEBAIEtDYW52
YXNJdGVtICpTVkdGRUNvbG9yTWF0cml4RWxlbWVudEltcGwKICAgICBtX2ZpbHRlckVmZmVjdCA9
IHN0YXRpY19jYXN0PEtDYW52YXNGRUNvbG9yTWF0cml4ICo+KGNhbnZhcy0+cmVuZGVyaW5nRGV2
aWNlKCktPmNyZWF0ZUZpbHRlckVmZmVjdChGRV9DT0xPUl9NQVRSSVgpKTsKICAgICBtX2ZpbHRl
ckVmZmVjdC0+c2V0SW4oS0RPTTo6RE9NU3RyaW5nKGluMSgpLT5iYXNlVmFsKCkpLnN0cmluZygp
KTsKICAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMobV9maWx0ZXJFZmZlY3QpOwotICAgIFFWYWx1
ZUxpc3Q8ZmxvYXQ+IF92YWx1ZXM7CisgICAgUTNWYWx1ZUxpc3Q8ZmxvYXQ+IF92YWx1ZXM7CiAg
ICAgU1ZHTnVtYmVyTGlzdEltcGwgKm51bWJlcnMgPSB2YWx1ZXMoKS0+YmFzZVZhbCgpOwogICAg
IHVuc2lnbmVkIGludCBuciA9IG51bWJlcnMtPm51bWJlck9mSXRlbXMoKTsKICAgICBmb3IodW5z
aWduZWQgaW50IGkgPSAwO2kgPCBucjtpKyspCkluZGV4OiBrc3ZnMi9zdmcvU1ZHTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdMaXN0
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtzdmcyL3N2Zy9T
VkdMaXN0LmgKLS0tIGtzdmcyL3N2Zy9TVkdMaXN0LmgJMSBTZXAgMjAwNSAwOTozOToxNiAtMDAw
MAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdMaXN0LmgJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApA
QCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBLU1ZHX1NWR0xpc3RfSAogI2RlZmluZSBLU1ZHX1NW
R0xpc3RfSAogCi0jaW5jbHVkZSA8cXB0cmxpc3QuaD4KKyNpbmNsdWRlIDxxM3B0cmxpc3QuaD4K
ICNpbmNsdWRlIDxrZG9tL2NvcmUvRE9NTGlzdC5oPgogI2luY2x1ZGUgPGtzdmcyL3N2Zy9TVkdT
dHlsZWRFbGVtZW50SW1wbC5oPgogCkluZGV4OiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9T
VkdTVkdFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11
IC1yMS41IGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdT
VkdFbGVtZW50SW1wbC5jcHAJMSBTZXAgMjAwNSAwOTozOToxNiAtMDAwMAkxLjUKKysrIGtzdmcy
L3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApAQCAt
NTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoSW1wbC5oIgogI2luY2x1
ZGUgIktDYW52YXNSZW5kZXJpbmdTdHlsZS5oIgogCi0jaW5jbHVkZSA8cXBhaW50ZGV2aWNlbWV0
cmljcy5oPgorI2luY2x1ZGUgPHEzcGFpbnRkZXZpY2VtZXRyaWNzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBLU1ZHOwogCkBAIC0xNjksNyArMTY5LDcgQEAgZmxvYXQgU1ZHU1ZHRWxlbWVudEltcGw6
OnBpeGVsVW5pdFRvTWlsbAogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKICAgICBpZihvd25l
ckRvY3VtZW50KCkgJiYgb3duZXJEb2N1bWVudCgpLT5wYWludERldmljZU1ldHJpY3MoKSkKICAg
ICB7Ci0gICAgICAgIFFQYWludERldmljZU1ldHJpY3MgKm1ldHJpY3MgPSBvd25lckRvY3VtZW50
KCktPnBhaW50RGV2aWNlTWV0cmljcygpOworICAgICAgICBRM1BhaW50RGV2aWNlTWV0cmljcyAq
bWV0cmljcyA9IG93bmVyRG9jdW1lbnQoKS0+cGFpbnREZXZpY2VNZXRyaWNzKCk7CiAgICAgICAg
IHJldHVybiBmbG9hdChtZXRyaWNzLT53aWR0aE1NKCkpIC8gZmxvYXQobWV0cmljcy0+d2lkdGgo
KSk7CiAgICAgfQogI2VuZGlmCkBAIC0xODIsNyArMTgyLDcgQEAgZmxvYXQgU1ZHU1ZHRWxlbWVu
dEltcGw6OnBpeGVsVW5pdFRvTWlsbAogI2lmbmRlZiBBUFBMRV9DT01QSUxFX0hBQ0sKICAgICBp
Zihvd25lckRvY3VtZW50KCkgJiYgb3duZXJEb2N1bWVudCgpLT5wYWludERldmljZU1ldHJpY3Mo
KSkKICAgICB7Ci0gICAgICAgIFFQYWludERldmljZU1ldHJpY3MgKm1ldHJpY3MgPSBvd25lckRv
Y3VtZW50KCktPnBhaW50RGV2aWNlTWV0cmljcygpOworICAgICAgICBRM1BhaW50RGV2aWNlTWV0
cmljcyAqbWV0cmljcyA9IG93bmVyRG9jdW1lbnQoKS0+cGFpbnREZXZpY2VNZXRyaWNzKCk7CiAg
ICAgICAgIHJldHVybiBmbG9hdChtZXRyaWNzLT5oZWlnaHRNTSgpKSAvIGZsb2F0KG1ldHJpY3Mt
PmhlaWdodCgpKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IGt3cS9LV1FDU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUUNTdHJpbmcuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4yNgpkaWZmIC1wIC11IC1yMS4yNiBrd3EvS1dRQ1N0cmluZy5oCi0t
LSBrd3EvS1dRQ1N0cmluZy5oCTEwIE1heSAyMDAzIDA1OjQ2OjU5IC0wMDAwCTEuMjYKKysrIGt3
cS9LV1FDU3RyaW5nLmgJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApAQCAtNzMsNCArNzMsNiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIgKnMxLCBjCiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFFDU3RyaW5nICZzMSwgY29uc3QgY2hhciAqczIpIHsgcmV0dXJuICEo
czEgPT0gczIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIgKnMxLCBjb25z
dCBRQ1N0cmluZyAmczIpIHsgcmV0dXJuICEoczEgPT0gczIpOyB9CiAKK3R5cGVkZWYgUUNTdHJp
bmcgUTNDU3RyaW5nOworCiAjZW5kaWYKSW5kZXg6IGt3cS9LV1FDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUUNvbGxlY3Rpb24uaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBrd3EvS1dRQ29sbGVjdGlv
bi5oCi0tLSBrd3EvS1dRQ29sbGVjdGlvbi5oCTIyIEphbiAyMDAzIDAwOjEyOjM0IC0wMDAwCTEu
MTAKKysrIGt3cS9LV1FDb2xsZWN0aW9uLmgJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApAQCAt
NDUsNCArNDUsNiBAQCBjbGFzcyBRUHRyQ29sbGVjdGlvbiB7CiAgICAgYm9vbCBkZWxfaXRlbTsK
IH07CiAKKyNkZWZpbmUgUTNQdHJDb2xsZWN0aW9uIFFQdHJDb2xsZWN0aW9uCisKICNlbmRpZgpJ
bmRleDoga3dxL0tXUURpY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9rd3EvS1dRRGljdC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIxCmRpZmYgLXAgLXUgLXIx
LjIxIGt3cS9LV1FEaWN0LmgKLS0tIGt3cS9LV1FEaWN0LmgJMjMgSnVuIDIwMDUgMjE6MjU6NDkg
LTAwMDAJMS4yMQorKysga3dxL0tXUURpY3QuaAkyIFNlcCAyMDA1IDA5OjM4OjMzIC0wMDAwCkBA
IC03NCw0ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgS1dRRGljdEl0ZXJhdG9ySW1wbCBpbXBsOwog
fTsKIAorI2RlZmluZSBRM0RpY3QgUURpY3QKKyNkZWZpbmUgUTNEaWN0SXRlcmF0b3IgUURpY3RJ
dGVyYXRvcgorCiAjZW5kaWYKSW5kZXg6IGt3cS9LV1FNZW1BcnJheS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2t3cS9LV1FNZW1BcnJheS5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjI2CmRpZmYgLXAgLXUgLXIxLjI2IGt3cS9LV1FNZW1BcnJheS5oCi0tLSBrd3Ev
S1dRTWVtQXJyYXkuaAkyMyBKdW4gMjAwNSAyMToyNTo0OSAtMDAwMAkxLjI2CisrKyBrd3EvS1dR
TWVtQXJyYXkuaAkyIFNlcCAyMDA1IDA5OjM4OjMzIC0wMDAwCkBAIC02Miw2ICs2Miw4IEBAIHB1
YmxpYzoKICAgICBLV1FBcnJheUltcGwgaW1wbDsKIH07CiAKKyNkZWZpbmUgUTNNZW1BcnJheSBR
TWVtQXJyYXkKKwogI2lmZGVmIF9LV1FfSU9TVFJFQU1fCiAKIHRlbXBsYXRlPGNsYXNzIFQ+Cklu
ZGV4OiBrd3EvS1dRUGFpbnREZXZpY2VNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYkNvcmUva3dxL0tXUVBhaW50RGV2aWNlTWV0cmljcy5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjExCmRpZmYgLXAgLXUgLXIxLjExIGt3cS9LV1FQYWludERldmljZU1ldHJpY3Mu
aAotLS0ga3dxL0tXUVBhaW50RGV2aWNlTWV0cmljcy5oCTQgQXByIDIwMDMgMTY6NTY6MDIgLTAw
MDAJMS4xMQorKysga3dxL0tXUVBhaW50RGV2aWNlTWV0cmljcy5oCTIgU2VwIDIwMDUgMDk6Mzg6
MzMgLTAwMDAKQEAgLTM2LDQgKzM2LDYgQEAgcHVibGljOgogICAgIGludCBkZXB0aCgpIGNvbnN0
OwogfTsKIAorI2RlZmluZSBRM1BhaW50RGV2aWNlTWV0cmljcyBRUGFpbnREZXZpY2VNZXRyaWNz
CisKICNlbmRpZgpJbmRleDoga3dxL0tXUVB0ckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRyTGlzdC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjI5CmRpZmYgLXAgLXUgLXIxLjI5IGt3cS9LV1FQdHJMaXN0LmgKLS0tIGt3cS9LV1FQdHJMaXN0
LmgJNSBKdWwgMjAwNSAwNzoxMzowMyAtMDAwMAkxLjI5CisrKyBrd3EvS1dRUHRyTGlzdC5oCTIg
U2VwIDIwMDUgMDk6Mzg6MzMgLTAwMDAKQEAgLTEwOSw2ICsxMDksOSBAQCBwcml2YXRlOgogICAg
IEtXUUxpc3RJdGVyYXRvckltcGwgaW1wbDsKIH07CiAKKyNkZWZpbmUgUTNQdHJMaXN0IFFQdHJM
aXN0CisjZGVmaW5lIFEzUHRyTGlzdEl0ZXJhdG9yIFFQdHJMaXN0SXRlcmF0b3IKKwogI2lmZGVm
IF9LV1FfSU9TVFJFQU1fCiAKIHRlbXBsYXRlPGNsYXNzIFQ+CkluZGV4OiBrd3EvS1dRUHRyU3Rh
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRUHRyU3Rh
Y2suaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNQpkaWZmIC1wIC11IC1yMS4xNSBrd3EvS1dR
UHRyU3RhY2suaAotLS0ga3dxL0tXUVB0clN0YWNrLmgJMjIgSmFuIDIwMDQgMDI6MzA6NTIgLTAw
MDAJMS4xNQorKysga3dxL0tXUVB0clN0YWNrLmgJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApA
QCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6CiAKIH07CiAKKyNkZWZpbmUgUTNQdHJTdGFjayBRUHRy
U3RhY2sKKwogI2lmZGVmIF9LV1FfSU9TVFJFQU1fCiAKIHRlbXBsYXRlPGNsYXNzIFQ+CkluZGV4
OiBrd3EvS1dRVmFsdWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva3dxL0tXUVZhbHVlTGlzdC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMzCmRpZmYgLXAg
LXUgLXIxLjMzIGt3cS9LV1FWYWx1ZUxpc3QuaAotLS0ga3dxL0tXUVZhbHVlTGlzdC5oCTMgSnVs
IDIwMDUgMDk6NTg6MzIgLTAwMDAJMS4zMworKysga3dxL0tXUVZhbHVlTGlzdC5oCTIgU2VwIDIw
MDUgMDk6Mzg6MzMgLTAwMDAKQEAgLTE3MSw0ICsxNzEsOCBAQCBpbmxpbmUgc3RkOjpvc3RyZWFt
ICZvcGVyYXRvcjw8KHN0ZDo6b3N0CiAKICNlbmRpZgogCisjZGVmaW5lIFEzVmFsdWVMaXN0IFFW
YWx1ZUxpc3QKKyNkZWZpbmUgUTNWYWx1ZUxpc3RJdGVyYXRvciBRVmFsdWVMaXN0SXRlcmF0b3IK
KyNkZWZpbmUgUTNWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yIFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9y
CisKICNlbmRpZgpJbmRleDoga3dxL0tXUVZhbHVlVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUVZhbHVlVmVjdG9yLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMQpkaWZmIC1wIC11IC1yMS4xIGt3cS9LV1FWYWx1ZVZlY3Rvci5oCi0tLSBrd3Ev
S1dRVmFsdWVWZWN0b3IuaAk3IEp1bCAyMDA1IDA2OjMxOjI0IC0wMDAwCTEuMQorKysga3dxL0tX
UVZhbHVlVmVjdG9yLmgJMiBTZXAgMjAwNSAwOTozODozMyAtMDAwMApAQCAtMzMsNSArMzMsNyBA
QCBjbGFzcyBRVmFsdWVWZWN0b3IgOiBwdWJsaWMgUVZhbHVlTGlzdDxUCiAKIH07CiAKKyNkZWZp
bmUgUTNWYWx1ZVZlY3RvciBRVmFsdWVWZWN0b3IKKwogI2VuZGlmCiAK
</data>
<flag name="review"
          id="486"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>