<?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>90015</bug_id>
          
          <creation_ts>2012-06-26 14:31:00 -0700</creation_ts>
          <short_desc>Enable AVCF hardware video decoding</short_desc>
          <delta_ts>2012-07-14 19:22:00 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>feature-media-reviews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658000</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-06-26 14:31:00 -0700</bug_when>
    <thetext>AVFoundationCF supports hardware video decoding on some systems, we should enable it when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658002</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-06-26 14:31:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/10770317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664909</commentid>
    <comment_count>2</comment_count>
      <attachid>151256</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-09 09:28:39 -0700</bug_when>
    <thetext>Created attachment 151256
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664912</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-09 09:31:50 -0700</bug_when>
    <thetext>Attachment 151256 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:981:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/WebCore/platform/win/SoftLinking.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664927</commentid>
    <comment_count>4</comment_count>
      <attachid>151256</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-09 09:51:27 -0700</bug_when>
    <thetext>Comment on attachment 151256
Proposed patch

Attachment 151256 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13167270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664938</commentid>
    <comment_count>5</comment_count>
      <attachid>151265</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-09 10:11:33 -0700</bug_when>
    <thetext>Created attachment 151265
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664945</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-09 10:14:26 -0700</bug_when>
    <thetext>Attachment 151265 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/win/SoftLinking.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664958</commentid>
    <comment_count>7</comment_count>
      <attachid>151265</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-09 10:25:21 -0700</bug_when>
    <thetext>Comment on attachment 151265
Updated patch.

Attachment 151265 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13156963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664980</commentid>
    <comment_count>8</comment_count>
      <attachid>151272</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-09 10:40:47 -0700</bug_when>
    <thetext>Created attachment 151272
Updated patch, again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664981</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-09 10:43:30 -0700</bug_when>
    <thetext>Attachment 151272 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/win/SoftLinking.h:133:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665030</commentid>
    <comment_count>10</comment_count>
      <attachid>151288</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-09 11:44:12 -0700</bug_when>
    <thetext>Created attachment 151288
Fix the style-bot nit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665828</commentid>
    <comment_count>11</comment_count>
      <attachid>151288</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-07-10 09:59:04 -0700</bug_when>
    <thetext>Comment on attachment 151288
Fix the style-bot nit.

View in context: https://bugs.webkit.org/attachment.cgi?id=151288&amp;action=review

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3485
&gt; +GraphicsDeviceAdapter* HTMLMediaElement::mediaPlayerGraphicsDeviceAdapter(const MediaPlayer*) const

It&apos;s a little ugly to have this be on the HTMLMediaElement, but I can&apos;t think of a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669910</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-14 19:22:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/122676</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151256</attachid>
            <date>2012-07-09 09:28:39 -0700</date>
            <delta_ts>2012-07-09 10:11:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>avcf_hw_accel_patch_23.txt</filename>
            <type>text/plain</type>
            <size>33624</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA3LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhh
cmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5l
dywgcmV0dXJuIHRoZSBjbGllbnQncyBncmFwaGljcyAKKyAgICAgICAgICAgIGRldmljZSBhZGFw
dGVyLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Z3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2
aWNlQWRhcHRlcik6IE5ldywgYXNrIHRoZSBtZWRpYSBlbGVtZW50IGZvciB0aGUgZ3JhcGhpY3MK
KyAgICAgICAgICAgIGRldmljZSBhZGFwdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oOiBTb2Z0LWxpbmsgQVZDRlBsYXllclNl
dERpcmVjdDNERGV2aWNlCisgICAgICAgICAgICBhbmQgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKTogUGFzcyB0aGUgY3VycmVudCBkM2Q5CisgICAgICAgICAgICBkZXZp
Y2UgaW50ZXJmYWNlIHRvIHRoZSBBVkZXcmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwpOiBJZiB0aGUgZDNkOSBkZXZpY2UgaW1wbGVtZW50cyBJ
RGlyZWN0M0REZXZpY2U5RXgsCisgICAgICAgICAgICB0ZWxsIHRoZSBBVkFzc2V0IHRvIGVuYWJs
ZSBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OmNyZWF0ZVBsYXllcik6IFBhc3MgdGhlIGQzZDkgZGV2aWNlIHRvIHRoZSBwbGF5ZXIgaWYgaXQg
aW1wbGVtZW50cyBJRGlyZWN0M0REZXZpY2U5RXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZM
YXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNBQ0ZMYXllclRyZWVI
b3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpncmFw
aGljc0RldmljZUFkYXB0ZXIpOiBOZXcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U29mdExpbmtpbmcuaDogRGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMLCBTT0ZU
X0xJTktfTE9BREVEX0xJQlJBUlksCisgICAgICAgICAgICBhbmQgU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwuCisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0ODEsNiArMzQ4MSwxNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5
ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNiArNDMyLDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qg
T1ZFUlJJREU7CiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogICAg
IHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lk
IHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAg
dm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50Piop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODEsNiArODEsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0cnVjdCBHcmFw
aGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpA
QCAtMjc2LDYgKzI4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oQWxsVHJpZ2dl
cnMpOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFZlY3RvcjxN
ZWRpYVBsYXllckZhY3RvcnkqPiYgaW5zdAogICAgICAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7
CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgICAgICBpZiAoU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICgxIC8qIEBAU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpIEBAICovKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShh
ZGRNZWRpYUVuZ2luZSk7CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC0xMDY4LDYgKzEwNjgsMTYg
QEAgU3RyaW5nIE1lZGlhUGxheWVyOjp1c2VyQWdlbnQoKSBjb25zdAogICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclVzZXJBZ2VudCgpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBNZWRp
YVBsYXllcjo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcih0aGlzKTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSw2ICs5OSwx
MCBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
c3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKKyNlbmRpZgorCiBjbGFzcyBNZWRpYVBsYXll
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBDT1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9u
eW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07CkBAIC0xNjUsNiArMTY5LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllclNvdXJjZU9wZW5lZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291
cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0K
QEAgLTM1Niw2ICszNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorICAgIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91
bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5o
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzcsNiArMTc3LDggQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
QwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldENyZWF0
ZVdpdGhVUkxBbmRPcHRpb25zLCBBVkNGVVJMQXNzZXRSZWYsIF9fY2RlY2wsIChDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIFVSTCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIGRp
c3BhdGNoX3F1ZXVlX3Qgbm90aWZpY2F0aW9uUXVldWUpLCAoYWxsb2NhdG9yLCBVUkwsIG9wdGlv
bnMsIG5vdGlmaWNhdGlvblF1ZXVlKSkKICNkZWZpbmUgQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVS
TEFuZE9wdGlvbnMgc29mdExpbmtfQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMK
IAorU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
LCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEltYWdlR2Vu
ZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwpAQCAt
MjQ0LDMgKzI0Niw2IEBAIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkK
IAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBB
VkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJSYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDUsNiAr
NDYsOCBAQAogI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CiAjaW5j
bHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogCisjaW5jbHVkZSA8ZDNkOS5oPgorI2luY2x1
ZGUgPGQzZHg5Lmg+CiAjaW5jbHVkZSA8ZGVsYXlpbXAuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9k
aXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04Nyw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHNldEFzc2V0KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCi0gICAgdm9pZCBjcmVhdGVQ
bGF5ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5Kik7CiAgICAg
dm9pZCBjcmVhdGVQbGF5ZXJJdGVtKCk7CiAgICAgCiAgICAgdm9pZCBjaGVja1BsYXlhYmlsaXR5
KCk7CkBAIC0xMzcsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwogCiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xh
eWVyQ2xpZW50OworICAgIENPTVB0cjxJRGlyZWN0M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOwog
fTsKIAogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKQEAg
LTMzOSw3ICszNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CiAgICAgCiAgICAgc2V0RGVsYXlDYWxsYmFja3Mo
dHJ1ZSk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVQbGF5ZXIoKTsKKyAgICBtX2F2ZldyYXBw
ZXItPmNyZWF0ZVBsYXllcihyZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5
ZXIoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkpKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhm
YWxzZSk7CiB9CiAKQEAgLTM1NSw4ICszNTksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
cmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVCghbV9h
dmZXcmFwcGVyKTsKLSAgICAKKwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOworCiAgICAg
bV9hdmZXcmFwcGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7CiAgICAgbV9hdmZXcmFwcGVyLT5j
cmVhdGVBc3NldEZvclVSTCh1cmwpOwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKQEAg
LTk1NSwyMCArOTYwLDM3IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFW
RlcKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiB1cmxSZWYoQWRvcHRDRiwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZV
UkwoKSk7CisKICAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVh
dGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIDAs
IG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldC5hZG9wdENGKGFzc2V0UmVmKTsK
IH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIoKQordm9pZCBBVkZXcmFwcGVyOjpj
cmVhdGVQbGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogewogICAgIEFTU0VSVCgh
YXZQbGF5ZXIoKSAmJiBhdlBsYXllckl0ZW0oKSk7CiAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChkM2REZXZp
Y2UpIHsKKyAgICAgICAgLy8gUUkgZm9yIGFuIElEaXJlY3QzRERldmljZTlFeCBpbnRlcmZhY2Us
IGl0IGlzIHJlcXVpcmVkIHRvIGRvIEhXIHZpZGVvIGRlY29kaW5nLgorICAgICAgICBDT01QdHI8
SURpcmVjdDNERGV2aWNlOUV4PiBkM2RFeChRdWVyeSwgZDNkRGV2aWNlKTsKKyAgICAgICAgbV9k
M2REZXZpY2UgPSBkM2RFeDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBtX2QzZERldmljZSA9
IDA7CisKKyAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJlQWNj
ZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKG9w
dGlvbnNSZWYuZ2V0KCksIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9E
ZWNvZGVyS2V5LCBrQ0ZCb29sZWFuVHJ1ZSk7CisKICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHdh
eSB0byBjcmVhdGUgYSBBVlBsYXllciB3aXRob3V0IGFuIEFWUGxheWVySXRlbSwgc2VlIDxyZGFy
Oi8vcHJvYmxlbS85ODc3NzMwPi4KLSAgICBBVkNGUGxheWVyUmVmIHBsYXllclJlZiA9IEFWQ0ZQ
bGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YXZQbGF5ZXJJdGVtKCksIDAsIG1fbm90aWZpY2F0aW9uUXVldWUpOworICAgIEFWQ0ZQbGF5ZXJS
ZWYgcGxheWVyUmVmID0gQVZDRlBsYXllckNyZWF0ZVdpdGhQbGF5ZXJJdGVtQW5kT3B0aW9ucyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBhdlBsYXllckl0ZW0oKSwgb3B0aW9uc1JlZi5nZXQoKSwgbV9u
b3RpZmljYXRpb25RdWV1ZSk7CiAgICAgbV9hdlBsYXllci5hZG9wdENGKHBsYXllclJlZik7CiAK
KyAgICBpZiAobV9kM2REZXZpY2UgJiYgQVZDRlBsYXllclNldERpcmVjdDNERGV2aWNlUHRyKCkp
CisgICAgICAgIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKHBsYXllclJlZiwgbV9k
M2REZXZpY2UuZ2V0KCkpOworCiAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0g
Q0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpOwogICAgIEFTU0VSVChjZW50ZXIp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDEwIEBAIHN0cnVjdCBXS0NBQ0ZD
b250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKK3N0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQUNGTGF5ZXJUcmVlSG9zdENsaWVudDsKQEAg
LTY2LDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNpemUoKSA9IDA7CiAg
ICAgdm9pZCBmbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOworICAgIHZpcnR1YWwgR3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKICAgICAvLyBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0CiAgICAgdmlydHVhbCB2b2lk
IGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlc05vdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xlZ2FjeUNBQ0ZMYXllclRyZWVIb3N0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xlZ2FjeUNBQ0ZM
YXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9MZWdhY3lDQUNGTGF5ZXJUcmVlSG9zdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02NCw2ICs2NCwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludCgpOwog
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoY29uc3QgVmVjdG9yPENHUmVjdD4mIGRpcnR5UmVjdHMg
PSBWZWN0b3I8Q0dSZWN0PigpKTsKIAorI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVh
bCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgVGltZXI8TGVnYWN5Q0FDRkxheWVy
VHJlZUhvc3Q+IG1fcmVuZGVyVGltZXI7CiAgICAgQ09NUHRyPElEaXJlY3QzRERldmljZTk+IG1f
ZDNkRGV2aWNlOwogICAgIFdLQ0FDRkNvbnRleHQqIG1fY29udGV4dDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsNyBAQCBTT0ZUX0xJTksoV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucywgV0tDCiBTT0ZUX0xJTksoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywg
V0tDQUNGVmlld0dldExhc3RDb21taXRUaW1lLCBDRlRpbWVJbnRlcnZhbCwgX19jZGVjbCwgKFdL
Q0FDRlZpZXdSZWYgdmlldyksICh2aWV3KSkKIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zLCBXS0NBQ0ZWaWV3U2V0Q29udGV4dFVzZXJEYXRhLCB2b2lkLCBfX2NkZWNsLCAoV0tD
QUNGVmlld1JlZiB2aWV3LCB2b2lkKiB1c2VyRGF0YSksICh2aWV3LCB1c2VyRGF0YSkpCiBTT0ZU
X0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucywgV0tDQUNGVmlld1NldFNo
b3VsZEludmVydENvbG9ycywgdm9pZCwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3LCBib29s
IHNob3VsZEludmVydENvbG9ycykpCitTT0ZUX0xJTktfT1BUSU9OQUwoV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucywgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBf
Y2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQogCiBQYXNzUmVmUHRyPFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0PiBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkKIHsKQEAgLTE3NSw2
ICsxNzYsMTQgQEAgdm9pZCBXS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdDo6c2V0U2hvdWxkSQogICAg
ICAgICBXS0NBQ0ZWaWV3U2V0U2hvdWxkSW52ZXJ0Q29sb3JzUHRyKCkobV92aWV3LmdldCgpLCBz
aG91bGRJbnZlcnRDb2xvcnMpOwogfQogCitHcmFwaGljc0RldmljZUFkYXB0ZXIqIFdLQ0FDRlZp
ZXdMYXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlm
ICghV0tDQUNGVmlld0dldEQzRERldmljZTlQdHIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0RldmljZUFkYXB0ZXIqPihXS0NBQ0ZW
aWV3R2V0RDNERGV2aWNlOVB0cigpKG1fdmlldy5nZXQoKSkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRy
ZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiBkaXJ0eVJlY3RzID0gVmVjdG9y
PENHUmVjdD4oKSk7CiAgICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCBsYXN0Q29tbWl0VGltZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgUmV0YWluUHRyPFdLQ0FDRlZpZXdSZWY+IG1fdmlldzsK
ICAgICBib29sIG1fdmlld05lZWRzVXBkYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NvZnRMaW5raW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NvZnRMaW5raW5nLmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwy
MyBAQAogICAgICAgICByZXR1cm4gcHRyOyBcCiAgICAgfVwKIAorI2RlZmluZSBTT0ZUX0xJTktf
TE9BREVEX0xJQlJBUlkobGlicmFyeSwgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBjYWxsaW5n
Q29udmVudGlvbiwgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBcCisgICAgdHlwZWRlZiByZXN1bHRU
eXBlIChjYWxsaW5nQ29udmVudGlvbiAqZnVuY3Rpb25OYW1lIyNQdHJUeXBlKSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnM7IFwKKyAgICBzdGF0aWMgZnVuY3Rpb25OYW1lIyNQdHJUeXBlIGZ1bmN0aW9u
TmFtZSMjUHRyKCkgXAorICAgIHsgXAorICAgICAgICBzdGF0aWMgZnVuY3Rpb25OYW1lIyNQdHJU
eXBlIHB0cjsgXAorICAgICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsgXAorICAgICAgICBc
CisgICAgICAgIGlmIChpbml0aWFsaXplZCkgXAorICAgICAgICAgICAgcmV0dXJuIHB0cjsgXAor
ICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7IFwKKyAgICAgICAgXAorICAgICAgICBzdGF0aWMg
SElOU1RBTkNFIGxpYnJhcnlJbnN0YW5jZSA9IDo6R2V0TW9kdWxlSGFuZGxlKEwjbGlicmFyeSk7
IFwKKyAgICAgICAgXAorICAgICAgICBwdHIgPSByZWludGVycHJldF9jYXN0PGZ1bmN0aW9uTmFt
ZSMjUHRyVHlwZT4oU09GVF9MSU5LX0dFVFBST0NBRERSRVNTKGxpYnJhcnlJbnN0YW5jZSwgI2Z1
bmN0aW9uTmFtZSkpOyBcCisgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICB9XAorCiAvKgogICAg
IEluIG9yZGVyIHRvIHNvZnQgbGluayBhZ2FpbnN0IGZ1bmN0aW9ucyBkZWNvcmF0ZWQgd2l0aCBf
X2RlY2xzcGVjKGRsbGltcG9ydCksIHdlIHByZXBlbmQgInNvZnRMaW5rXyIgdG8gdGhlIGZ1bmN0
aW9uIG5hbWVzLgogICAgIElmIHlvdSB1c2UgU09GVF9MSU5LX0RMTF9JTVBPUlQoKSwgeW91IHdp
bGwgYWxzbyBuZWVkIHRvICNkZWZpbmUgdGhlIGZ1bmN0aW9uIG5hbWUgdG8gYWNjb3VudCBmb3Ig
dGhpcywgZS5nLjoKQEAgLTEwMiw2ICsxMTksMjEgQEAKICAgICAgICAgcmV0dXJuIHNvZnRMaW5r
IyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKICAgICB9CiAKKyNkZWZpbmUgU09GVF9M
SU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwobGlicmFyeSwgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBl
LCBjYWxsaW5nQ29udmVudGlvbiwgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBcCisgICAgdHlwZWRl
ZiByZXN1bHRUeXBlIChjYWxsaW5nQ29udmVudGlvbiAqZnVuY3Rpb25OYW1lIyNQdHJUeXBlKSBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKKyAgICBzdGF0aWMgZnVuY3Rpb25OYW1lIyNQdHJUeXBl
IGZ1bmN0aW9uTmFtZSMjUHRyKCkgXAorICAgIHsgXAorICAgICAgICBzdGF0aWMgZnVuY3Rpb25O
YW1lIyNQdHJUeXBlIHB0cjsgXAorICAgICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsgXAor
ICAgICAgICBcCisgICAgICAgIGlmIChpbml0aWFsaXplZCkgXAorICAgICAgICAgICAgcmV0dXJu
IHB0cjsgXAorICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7IFwKKyAgICAgICAgXAorICAgICAg
ICBwdHIgPSByZWludGVycHJldF9jYXN0PHJlc3VsdFR5cGUgKGNhbGxpbmdDb252ZW50aW9uKilw
YXJhbWV0ZXJEZWNsYXJhdGlvbnM+KFNPRlRfTElOS19HRVRQUk9DQUREUkVTUyhsaWJyYXJ5IyNM
aWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpKTsgXAorICAgICAgICByZXR1cm4gcHRyOyBcCisgICAg
fVwKKwogLyoKICAgICBWYXJpYWJsZXMgZXhwb3J0ZWQgYnkgYSBETEwgbmVlZCB0byBiZSBhY2Nl
c3NlZCB0aHJvdWdoIGEgZnVuY3Rpb24uCiAgICAgSWYgeW91IHVzZSBTT0ZUX0xJTktfVkFSSUFC
TEVfRExMX0lNUE9SVCgpLCB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gI2RlZmluZSB0aGUgdmFyaWFi
bGUgbmFtZSB0byBhY2NvdW50IGZvciB0aGlzLCBlLmcuOgpAQCAtMTE3LDQgKzE0OSwxNiBAQAog
ICAgICAgICByZXR1cm4gKnB0cjsgXAogICAgIH1cCiAKKy8qCisgICAgTm90ZSB0aGF0IHRoaXMg
d2lsbCBvbmx5IHdvcmsgZm9yIHZhcmlhYmxlIHR5cGVzIGZvciB3aGljaCBhIHJldHVybiB2YWx1
ZSBvZiAwIGNhbiBzaWduYWwgYW4gZXJyb3IuCisgKi8KKyNkZWZpbmUgU09GVF9MSU5LX1ZBUklB
QkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwobGlicmFyeSwgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5
cGUpIFwKKyAgICBzdGF0aWMgdmFyaWFibGVUeXBlIGdldF8jI3ZhcmlhYmxlTmFtZSgpIFwKKyAg
ICB7IFwKKyAgICAgICAgc3RhdGljIHZhcmlhYmxlVHlwZSogcHRyID0gcmVpbnRlcnByZXRfY2Fz
dDx2YXJpYWJsZVR5cGUqPihTT0ZUX0xJTktfR0VUUFJPQ0FERFJFU1MobGlicmFyeSMjTGlicmFy
eSgpLCAjdmFyaWFibGVOYW1lKSk7IFwKKyAgICAgICAgaWYgKCFwdHIpIFwKKyAgICAgICAgICAg
IHJldHVybiAwOyBcCisgICAgICAgIHJldHVybiAqcHRyOyBcCisgICAgfVwKKwogI2VuZGlmIC8v
IFNvZnRMaW5raW5nX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEy
LTA3LTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBBVkNGIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTA3NzAzMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEZWZpbmUgSEFWRV9BVkNGIGlmIG5lY2Vzc2Fy
eS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKTogTmV3LCByZXR1cm4gdGhlIGxheWVyIHRyZWUgaG9z
dCdzCisgICAgICAgICAgICBncmFwaGljcyBhZGFwdGVyLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGll
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVy
VHJlZUhvc3RDQVdpbi5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdENBV2luKToKKwogMjAxMi0w
Ny0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMjEwNy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ2LDUgKzE0Niw2IEBAIGFsbCA6IEhlYWRlckRl
dGVjdGlvbi5oCiAKIEhlYWRlckRldGVjdGlvbi5oIDogRGVyaXZlZFNvdXJjZXMubWFrZQogCWlm
IFsgLWYgIiQoV0VCS0lUTElCUkFSSUVTRElSKS9pbmNsdWRlL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9uc0Jhc2UuaCIgXSAmJiBbICEgLWYgIiQoV0VC
S0lUTElCUkFSSUVTRElSKS9pbmNsdWRlL2NhaXJvL2NhaXJvLmgiIF07IHRoZW4gZWNobyAiI2Rl
ZmluZSBIQVZFX1dLUUNBIDEiID4gJEA7IGVsc2UgZWNobyA+ICRAOyBmaQorCWlmIFsgLWYgIiQo
V0VCS0lUTElCUkFSSUVTRElSKS9pbmNsdWRlL0FWRm91bmRhdGlvbkNGL0FWQ0ZCYXNlLmgiIF07
IHRoZW4gZWNobyAiI2RlZmluZSBIQVZFX0FWQ0YgMSIgPj4gJEA7IGVsc2UgZWNobyA+PiAkQDsg
ZmkKIAogZW5kaWYgIyBXaW5kb3dzX05UCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShy
ZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjk2LDYg
KzY5NiwxNSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluCiAKICNl
bmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorV2ViQ29yZTo6
R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUhv
c3QoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wg
bmVlZFRvdWNoRXZlbnRzKQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAx
MjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE4OSw2ICsxODksMTAgQEAgcHJpdmF0
ZToKICAgICB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElP
TikKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSBPVkVSUklE
RTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVy
VHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0
MSwxMCBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBHcmFwaGljc0xheWVyOworCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQorc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKKyNlbmRpZgogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTk3LDYgKzEwMSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgeyB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBMYXllclRy
ZWVIb3N0KFdlYlBhZ2UqKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcAko
cmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ0EuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0xheWVyQ2hhbmdlc0ZsdXNoZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FM
YXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYktpdFF1YXJ0ekNvcmVB
ZGRpdGlvbnMvV0tDQUNGSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL1dLQ0FDRlZpZXcuaD4KQEAgLTQzLDExICs0NCwxNSBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKICNpZmRlZiBERUJVR19BTEwKLSNwcmFnbWEgY29tbWVudChsaWIsICJXZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zX2RlYnVnIikKKyNkZWZpbmUgTU9EVUxFX05BTUUgIldlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnNfZGVidWciCiAjZWxzZQotI3ByYWdtYSBjb21tZW50KGxpYiwg
IldlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMiKQorI2RlZmluZSBNT0RVTEVfTkFNRSAiV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucyIKICNlbmRpZgogCisjcHJhZ21hIGNvbW1lbnQobGliLCBNT0RV
TEVfTkFNRSkKKworU09GVF9MSU5LX0xPQURFRF9MSUJSQVJZKE1PRFVMRV9OQU1FLCBXS0NBQ0ZW
aWV3R2V0RDNERGV2aWNlOSwgSURpcmVjdDNERGV2aWNlOSosIF9jZGVjbCwgKFdLQ0FDRlZpZXdS
ZWYgdmlldykpCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI1OCw2ICsyNjMsMTUgQEAgdm9pZCBMYXllclRyZWVIb3N0Q0FXaW46OnNldFJvb3RD
b21wb3NpdAogICAgIExheWVyVHJlZUhvc3RDQTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3Jh
cGhpY3NMYXllcik7CiB9CiAKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogTGF5ZXJU
cmVlSG9zdENBV2luOjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlmICgh
V0tDQUNGVmlld0dldEQzRERldmljZTlQdHIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0RldmljZUFkYXB0ZXIqPihXS0NBQ0ZWaWV3
R2V0RDNERGV2aWNlOVB0cigpKG1fdmlldy5nZXQoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAorCiAjZW5kaWYgLy8gSEFWRShXS1FDQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0
Q0FXaW4uaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyVHJlZUhvc3RD
QVdpbj4gY3JlYXRlKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5MYXllclRyZWVIb3N0Q0FXaW4o
KTsKIAorI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGlj
c0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9WRVJSSURFOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9zdENBV2luKFdlYlBh
Z2UqKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTgzLDYgKzIxODMsMjIgQEAKIAkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3Nc
V2ViUGFnZVxjYVx3aW5cTGF5ZXJUcmVlSG9zdENBV2luLmNwcCIKIAkJCQkJCQk+CiAJCQkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJCQk+
CisJCQkJCQkJCTxUb29sCisJCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
CQkJR2VuZXJhdGVQcmVwcm9jZXNzZWRGaWxlPSIwIgorCQkJCQkJCQkvPgorCQkJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCQkJCT4KKwkJCQkJCQkJPFRvb2wKKwkJCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkJCQlHZW5lcmF0ZVByZXByb2Nlc3NlZEZpbGU9IjEi
CisJCQkJCQkJCS8+CisJCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KIAkJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgogCQkJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKIAkJCQkJCQkJPgpJbmRleDogU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDctMDkgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIEFWQ0YgaGFyZHdhcmUg
dmlkZW8gZGVjb2RpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwMDE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDc3MDMxNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNz
RGV2aWNlQWRhcHRlcik6IE5ldywgcmV0dXJuIHRoZSB2aWV3J3MgZ3JhcGhpY3MgYWRhcHRlci4K
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNocm9tZUNsaWVudCk6CisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5ldywgcmV0dXJuIHRoZSBsYXllciB0cmVlIGhv
c3QncyBncmFwaGljcyBhZGFwdGVyLgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViVmlldyk6CisKIDIwMTItMDctMDMgIE1paGFpIEJhbGFuICA8
bWliYWxhbkBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdpb25zXSBFbmFibGluZyByZWdp
b25zIG9uIFdpbmRvd3MgbGVhZCB0byBjcmFzaC1vbi1sYXVuY2ggZm9yIFdlYktpdC5leGUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgQXBwY2VsZXJhdG9yLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hh
bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC02NTM2LDYgKzY1MzYsMTUgQEAgdm9pZCBX
ZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKAogfQogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCitXZWJDb3JlOjpHcmFwaGljc0RldmljZUFk
YXB0ZXIqIFdlYlZpZXc6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2xheWVy
VHJlZUhvc3QtPmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpOworfQorI2VuZGlmCisKIEhSRVNVTFQg
V2ViVmlldzo6dW51c2VkMSgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBBcHBjZWxlcmF0b3IsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBCcmVudCBGdWxnaGFtLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTU1LDYgKzU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENBQ0ZMYXllclRyZWVIb3N0OwogI2VuZGlmCiAgICAgY2xhc3MgRnVsbFNjcmVlbkNv
bnRyb2xsZXI7CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0
cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTQ3LDYgKzk1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSb290Q2hpbGRM
YXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0
ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0OworI2VuZGlmCisKICAgICB2b2lkIGVu
dGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZvaWQgZXhpdEZ1bGxz
Y3JlZW4oKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NTIsNyArNzUyLDEzIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBv
c2l0aW4KIHsKICAgICBtX3dlYlZpZXctPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2Vz
U29vbigpOwogfQorI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJ
T04pCitXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIqIFdlYkNocm9tZUNsaWVudDo6Z3Jh
cGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5ncmFw
aGljc0RldmljZUFkYXB0ZXIoKTsKK30KICNlbmRpZgogCiBDT01QdHI8SVdlYlVJRGVsZWdhdGU+
IFdlYkNocm9tZUNsaWVudDo6dWlEZWxlZ2F0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsMTAgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpH
cmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9WRVJS
SURFOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCB7IH0KIAogI2lmIEVOQUJMRShWSURFTykK
</data>
<flag name="commit-queue"
          id="159684"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151265</attachid>
            <date>2012-07-09 10:11:33 -0700</date>
            <delta_ts>2012-07-09 10:40:47 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>avcf_hw_accel_patch_24.txt</filename>
            <type>text/plain</type>
            <size>32912</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA3LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhh
cmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5l
dywgcmV0dXJuIHRoZSBjbGllbnQncyBncmFwaGljcyAKKyAgICAgICAgICAgIGRldmljZSBhZGFw
dGVyLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Z3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2
aWNlQWRhcHRlcik6IE5ldywgYXNrIHRoZSBtZWRpYSBlbGVtZW50IGZvciB0aGUgZ3JhcGhpY3MK
KyAgICAgICAgICAgIGRldmljZSBhZGFwdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oOiBTb2Z0LWxpbmsgQVZDRlBsYXllclNl
dERpcmVjdDNERGV2aWNlCisgICAgICAgICAgICBhbmQgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKTogUGFzcyB0aGUgY3VycmVudCBkM2Q5CisgICAgICAgICAgICBkZXZp
Y2UgaW50ZXJmYWNlIHRvIHRoZSBBVkZXcmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwpOiBJZiB0aGUgZDNkOSBkZXZpY2UgaW1wbGVtZW50cyBJ
RGlyZWN0M0REZXZpY2U5RXgsCisgICAgICAgICAgICB0ZWxsIHRoZSBBVkFzc2V0IHRvIGVuYWJs
ZSBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OmNyZWF0ZVBsYXllcik6IFBhc3MgdGhlIGQzZDkgZGV2aWNlIHRvIHRoZSBwbGF5ZXIgaWYgaXQg
aW1wbGVtZW50cyBJRGlyZWN0M0REZXZpY2U5RXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZM
YXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNBQ0ZMYXllclRyZWVI
b3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpncmFw
aGljc0RldmljZUFkYXB0ZXIpOiBOZXcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U29mdExpbmtpbmcuaDogRGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMLCBTT0ZU
X0xJTktfTE9BREVEX0xJQlJBUlksCisgICAgICAgICAgICBhbmQgU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwuCisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0ODEsNiArMzQ4MSwxNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5
ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNiArNDMyLDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qg
T1ZFUlJJREU7CiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogICAg
IHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lk
IHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAg
dm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50Piop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODEsNiArODEsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0cnVjdCBHcmFw
aGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpA
QCAtMjc2LDYgKzI4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oQWxsVHJpZ2dl
cnMpOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFZlY3RvcjxN
ZWRpYVBsYXllckZhY3RvcnkqPiYgaW5zdAogICAgICAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7
CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgICAgICBpZiAoU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICgxIC8qIEBAU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpIEBAICovKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShh
ZGRNZWRpYUVuZ2luZSk7CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC0xMDY4LDYgKzEwNjgsMTYg
QEAgU3RyaW5nIE1lZGlhUGxheWVyOjp1c2VyQWdlbnQoKSBjb25zdAogICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclVzZXJBZ2VudCgpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBNZWRp
YVBsYXllcjo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcih0aGlzKTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSw2ICs5OSwx
MCBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
c3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKKyNlbmRpZgorCiBjbGFzcyBNZWRpYVBsYXll
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBDT1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9u
eW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07CkBAIC0xNjUsNiArMTY5LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllclNvdXJjZU9wZW5lZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291
cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0K
QEAgLTM1Niw2ICszNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorICAgIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91
bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5o
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzcsNiArMTc3LDggQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
QwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldENyZWF0
ZVdpdGhVUkxBbmRPcHRpb25zLCBBVkNGVVJMQXNzZXRSZWYsIF9fY2RlY2wsIChDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIFVSTCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIGRp
c3BhdGNoX3F1ZXVlX3Qgbm90aWZpY2F0aW9uUXVldWUpLCAoYWxsb2NhdG9yLCBVUkwsIG9wdGlv
bnMsIG5vdGlmaWNhdGlvblF1ZXVlKSkKICNkZWZpbmUgQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVS
TEFuZE9wdGlvbnMgc29mdExpbmtfQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMK
IAorU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
LCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEltYWdlR2Vu
ZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwpAQCAt
MjQ0LDMgKzI0Niw2IEBAIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkK
IAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBB
VkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJSYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDUsNiAr
NDYsOCBAQAogI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CiAjaW5j
bHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogCisjaW5jbHVkZSA8ZDNkOS5oPgorI2luY2x1
ZGUgPGQzZHg5Lmg+CiAjaW5jbHVkZSA8ZGVsYXlpbXAuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9k
aXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04Nyw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHNldEFzc2V0KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCi0gICAgdm9pZCBjcmVhdGVQ
bGF5ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5Kik7CiAgICAg
dm9pZCBjcmVhdGVQbGF5ZXJJdGVtKCk7CiAgICAgCiAgICAgdm9pZCBjaGVja1BsYXlhYmlsaXR5
KCk7CkBAIC0xMzcsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwogCiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xh
eWVyQ2xpZW50OworICAgIENPTVB0cjxJRGlyZWN0M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOwog
fTsKIAogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKQEAg
LTMzOSw3ICszNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CiAgICAgCiAgICAgc2V0RGVsYXlDYWxsYmFja3Mo
dHJ1ZSk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVQbGF5ZXIoKTsKKyAgICBtX2F2ZldyYXBw
ZXItPmNyZWF0ZVBsYXllcihyZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5
ZXIoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkpKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhm
YWxzZSk7CiB9CiAKQEAgLTM1NSw4ICszNTksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
cmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVCghbV9h
dmZXcmFwcGVyKTsKLSAgICAKKwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOworCiAgICAg
bV9hdmZXcmFwcGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7CiAgICAgbV9hdmZXcmFwcGVyLT5j
cmVhdGVBc3NldEZvclVSTCh1cmwpOwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKQEAg
LTk1NSwyMCArOTYwLDM2IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFW
RlcKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiB1cmxSZWYoQWRvcHRDRiwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZV
UkwoKSk7CisKICAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVh
dGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIDAs
IG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldC5hZG9wdENGKGFzc2V0UmVmKTsK
IH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIoKQordm9pZCBBVkZXcmFwcGVyOjpj
cmVhdGVQbGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogewogICAgIEFTU0VSVCgh
YXZQbGF5ZXIoKSAmJiBhdlBsYXllckl0ZW0oKSk7CiAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChkM2REZXZp
Y2UpIHsKKyAgICAgICAgLy8gUUkgZm9yIGFuIElEaXJlY3QzRERldmljZTlFeCBpbnRlcmZhY2Us
IGl0IGlzIHJlcXVpcmVkIHRvIGRvIEhXIHZpZGVvIGRlY29kaW5nLgorICAgICAgICBDT01QdHI8
SURpcmVjdDNERGV2aWNlOUV4PiBkM2RFeChRdWVyeSwgZDNkRGV2aWNlKTsKKyAgICAgICAgbV9k
M2REZXZpY2UgPSBkM2RFeDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9kM2REZXZpY2UgPSAwOwor
CisgICAgaWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9EZWNvZGVyS2V5KQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25z
UmVmLmdldCgpLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2Rl
cktleSwga0NGQm9vbGVhblRydWUpOworCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8g
Y3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3By
b2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVy
Q3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxh
eWVySXRlbSgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKKyAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIuYWRvcHRDRihwbGF5ZXJSZWYpOwogCisgICAg
aWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKQorICAg
ICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYsIG1fZDNkRGV2
aWNlLmdldCgpKTsKKwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90
aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0NiwxMCBAQCBzdHJ1Y3QgV0tDQUNGQ29udGV4
dDsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKIAorI2lmIFVTRShBVkZP
VU5EQVRJT04pCitzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOworI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQ7CkBAIC02Niw2
ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKCkgPSAwOwogICAgIHZv
aWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZEludmVydENvbG9ycyhib29sKTsKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
ICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVy
VHJlZUhvc3QKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vTGVnYWN5Q0FDRkxheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xlZ2FjeUNBQ0ZM
YXllclRyZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDYgKzY0LDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25zdCBW
ZWN0b3I8Q0dSZWN0PiYgZGlydHlSZWN0cyA9IFZlY3RvcjxDR1JlY3Q+KCkpOwogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorI2VuZGlmCisK
ICAgICBUaW1lcjxMZWdhY3lDQUNGTGF5ZXJUcmVlSG9zdD4gbV9yZW5kZXJUaW1lcjsKICAgICBD
T01QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZpY2U7CiAgICAgV0tDQUNGQ29udGV4dCog
bV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCShy
ZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw2ICs2MSw3
IEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0MKIFNPRlRfTElOSyhX
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0TGFzdENvbW1pdFRpbWUsIENG
VGltZUludGVydmFsLCBfX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3KSwgKHZpZXcpKQogU09G
VF9MSU5LKFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMsIFdLQ0FDRlZpZXdTZXRDb250ZXh0VXNl
ckRhdGEsIHZvaWQsIF9fY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcsIHZvaWQqIHVzZXJEYXRh
KSwgKHZpZXcsIHVzZXJEYXRhKSkKIFNPRlRfTElOS19PUFRJT05BTChXZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0U2hvdWxkSW52ZXJ0Q29sb3JzLCB2b2lkLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcsIGJvb2wgc2hvdWxkSW52ZXJ0Q29sb3JzKSkKK1NPRlRfTElO
S19PUFRJT05BTChXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0RDNERGV2
aWNlOSwgSURpcmVjdDNERGV2aWNlOSosIF9jZGVjbCwgKFdLQ0FDRlZpZXdSZWYgdmlldykpCiAK
IFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0OjpjcmVhdGUoKQogewpAQCAtMTc1LDYgKzE3NiwxNiBAQCB2b2lkIFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpzZXRTaG91bGRJCiAgICAgICAgIFdLQ0FDRlZpZXdTZXRTaG91bGRJbnZlcnRD
b2xvcnNQdHIoKShtX3ZpZXcuZ2V0KCksIHNob3VsZEludmVydENvbG9ycyk7CiB9CiAKKyNpZiBV
U0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXS0NBQ0ZWaWV3TGF5ZXJU
cmVlSG9zdDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIVdLQ0FD
RlZpZXdHZXREM0REZXZpY2U5UHRyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NEZXZpY2VBZGFwdGVyKj4oV0tDQUNGVmlld0dldEQz
RERldmljZTlQdHIoKShtX3ZpZXcuZ2V0KCkpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRy
ZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiBkaXJ0eVJlY3RzID0gVmVjdG9y
PENHUmVjdD4oKSk7CiAgICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCBsYXN0Q29tbWl0VGltZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7Cisj
aWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciog
Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NBQ0ZWaWV3UmVmPiBtX3ZpZXc7CiAgICAgYm9vbCBtX3ZpZXdOZWVkc1VwZGF0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCShyZXZp
c2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMjMgQEAKICAgICAgICAgcmV0dXJuIHB0cjsg
XAogICAgIH1cCiAKKyNkZWZpbmUgU09GVF9MSU5LX0xPQURFRF9MSUJSQVJZKGxpYnJhcnksIGZ1
bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFtZXRlckRlY2xh
cmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZlbnRpb24gKmZ1
bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisgICAgc3RhdGlj
IGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAgICB7IFwKKyAg
ICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5pdGlhbGl6ZWQp
IFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIEhJTlNUQU5DRSBsaWJyYXJ5SW5zdGFuY2Ug
PSA6OkdldE1vZHVsZUhhbmRsZShMI2xpYnJhcnkpOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdGlvbk5hbWUjI1B0clR5cGU+KFNPRlRfTElOS19HRVRQ
Uk9DQUREUkVTUyhsaWJyYXJ5SW5zdGFuY2UsICNmdW5jdGlvbk5hbWUpKTsgXAorICAgICAgICBy
ZXR1cm4gcHRyOyBcCisgICAgfVwKKwogLyoKICAgICBJbiBvcmRlciB0byBzb2Z0IGxpbmsgYWdh
aW5zdCBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggX19kZWNsc3BlYyhkbGxpbXBvcnQpLCB3ZSBw
cmVwZW5kICJzb2Z0TGlua18iIHRvIHRoZSBmdW5jdGlvbiBuYW1lcy4KICAgICBJZiB5b3UgdXNl
IFNPRlRfTElOS19ETExfSU1QT1JUKCksIHlvdSB3aWxsIGFsc28gbmVlZCB0byAjZGVmaW5lIHRo
ZSBmdW5jdGlvbiBuYW1lIHRvIGFjY291bnQgZm9yIHRoaXMsIGUuZy46CkBAIC0xMDIsNiArMTE5
LDIxIEBACiAgICAgICAgIHJldHVybiBzb2Z0TGluayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5h
bWVzOyBcCiAgICAgfQogCisjZGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFt
ZXRlckRlY2xhcmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZl
bnRpb24gKmZ1bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisg
ICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAg
ICB7IFwKKyAgICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5p
dGlhbGl6ZWQpIFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRyID0gcmVpbnRlcnByZXRfY2FzdDxy
ZXN1bHRUeXBlIChjYWxsaW5nQ29udmVudGlvbiopcGFyYW1ldGVyRGVjbGFyYXRpb25zPihTT0ZU
X0xJTktfR0VUUFJPQ0FERFJFU1MobGlicmFyeSMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1lKSk7
IFwKKyAgICAgICAgcmV0dXJuIHB0cjsgXAorICAgIH1cCisKIC8qCiAgICAgVmFyaWFibGVzIGV4
cG9ydGVkIGJ5IGEgRExMIG5lZWQgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaCBhIGZ1bmN0aW9uLgog
ICAgIElmIHlvdSB1c2UgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoKSwgeW91IHdpbGwg
YWxzbyBuZWVkIHRvICNkZWZpbmUgdGhlIHZhcmlhYmxlIG5hbWUgdG8gYWNjb3VudCBmb3IgdGhp
cywgZS5nLjoKQEAgLTExNyw0ICsxNDksMTYgQEAKICAgICAgICAgcmV0dXJuICpwdHI7IFwKICAg
ICB9XAogCisvKgorICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSB3b3JrIGZvciB2YXJpYWJs
ZSB0eXBlcyBmb3Igd2hpY2ggYSByZXR1cm4gdmFsdWUgb2YgMCBjYW4gc2lnbmFsIGFuIGVycm9y
LgorICovCisjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCisgICAgc3RhdGljIHZhcmlhYmxl
VHlwZSBnZXRfIyN2YXJpYWJsZU5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyB2YXJp
YWJsZVR5cGUqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dmFyaWFibGVUeXBlKj4oU09GVF9MSU5L
X0dFVFBST0NBRERSRVNTKGxpYnJhcnkjI0xpYnJhcnkoKSwgI3ZhcmlhYmxlTmFtZSkpOyBcCisg
ICAgICAgIGlmICghcHRyKSBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICByZXR1
cm4gKnB0cjsgXAorICAgIH1cCisKICNlbmRpZiAvLyBTb2Z0TGlua2luZ19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNy0wOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgQVZDRiBoYXJkd2FyZSB2aWRl
byBkZWNvZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzcwMzE3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogRGVmaW5lIEhBVkVfQVZDRiBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcik6
IE5ldywgcmV0dXJuIHRoZSBsYXllciB0cmVlIGhvc3QncworICAgICAgICAgICAgZ3JhcGhpY3Mg
YWRhcHRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKTogTmV3LCBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaDoKKyAgICAgICAg
KExheWVyVHJlZUhvc3RDQVdpbik6CisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEy
MjExMCkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE0Niw1ICsxNDYsNiBAQCBhbGwgOiBIZWFkZXJEZXRlY3Rpb24uaAogCiBIZWFkZXJEZXRlY3Rp
b24uaCA6IERlcml2ZWRTb3VyY2VzLm1ha2UKIAlpZiBbIC1mICIkKFdFQktJVExJQlJBUklFU0RJ
UikvaW5jbHVkZS9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnNCYXNlLmgiIF0gJiYgWyAhIC1mICIkKFdFQktJVExJQlJBUklFU0RJUikvaW5jbHVkZS9j
YWlyby9jYWlyby5oIiBdOyB0aGVuIGVjaG8gIiNkZWZpbmUgSEFWRV9XS1FDQSAxIiA+ICRAOyBl
bHNlIGVjaG8gPiAkQDsgZmkKKwlpZiBbIC1mICIkKFdFQktJVExJQlJBUklFU0RJUikvaW5jbHVk
ZS9BVkZvdW5kYXRpb25DRi9BVkNGQmFzZS5oIiBdOyB0aGVuIGVjaG8gIiNkZWZpbmUgSEFWRV9B
VkNGIDEiID4+ICRAOyBlbHNlIGVjaG8gPj4gJEA7IGZpCiAKIGVuZGlmICMgV2luZG93c19OVApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY5Niw2ICs2OTYsMTUgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbgogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKEFWRk9VTkRBVElPTikKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogV2Vi
Q2hyb21lQ2xpZW50OjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlmICgh
bV9wYWdlLT5kcmF3aW5nQXJlYSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9w
YWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVIb3N0KCktPmdyYXBoaWNzRGV2aWNlQWRhcHRl
cigpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6Om5lZWRUb3VjaEV2ZW50cyhib29sIG5lZWRUb3VjaEV2ZW50cykKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0xODksNiArMTg5LDEwIEBAIHByaXZhdGU6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpH
cmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9WRVJS
SURFOworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9p
ZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgT1ZFUlJJREU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAkocmV2aXNp
b24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsMTAgQEAgY2xhc3MgRmxvYXRQb2ludDsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKKwor
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKK3N0cnVjdCBHcmFwaGljc0Rl
dmljZUFkYXB0ZXI7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw2ICsx
MDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExh
eWVySG9zdGluZ01vZGUpIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShB
VkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIq
IGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENB
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5jcHAJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllckNBLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXllckNoYW5nZXNGbHVzaGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUu
aD4KICNpbmNsdWRlIDxXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dLQ0FDRkltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9XS0NBQ0ZWaWV3Lmg+CkBAIC00Mywx
MSArNDQsMTUgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAjaWZkZWYgREVCVUdf
QUxMCi0jcHJhZ21hIGNvbW1lbnQobGliLCAiV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9uc19kZWJ1
ZyIpCisjZGVmaW5lIE1PRFVMRV9OQU1FICJXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zX2RlYnVn
IgogI2Vsc2UKLSNwcmFnbWEgY29tbWVudChsaWIsICJXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
IikKKyNkZWZpbmUgTU9EVUxFX05BTUUgIldlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMiCiAjZW5k
aWYKIAorI3ByYWdtYSBjb21tZW50KGxpYiwgTU9EVUxFX05BTUUpCisKK1NPRlRfTElOS19MT0FE
RURfTElCUkFSWShNT0RVTEVfTkFNRSwgV0tDQUNGVmlld0dldEQzRERldmljZTksIElEaXJlY3Qz
RERldmljZTkqLCBfY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcpKQorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yNTgsNiArMjYzLDE3IEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdENBV2luOjpzZXRSb290Q29tcG9zaXQKICAgICBMYXllclRyZWVIb3N0
Q0E6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKGdyYXBoaWNzTGF5ZXIpOwogfQogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogTGF5ZXJUcmVl
SG9zdENBV2luOjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlmICghV0tD
QUNGVmlld0dldEQzRERldmljZTlQdHIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0RldmljZUFkYXB0ZXIqPihXS0NBQ0ZWaWV3R2V0
RDNERGV2aWNlOVB0cigpKG1fdmlldy5nZXQoKSkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCisKICNlbmRpZiAvLyBIQVZFKFdLUUNBKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJl
ZUhvc3RDQVdpbi5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5ZXJUcmVl
SG9zdENBV2luPiBjcmVhdGUoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkxheWVyVHJlZUhvc3RD
QVdpbigpOwogCisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okdy
YXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJ
REU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMYXllclRyZWVIb3N0Q0FXaW4o
V2ViUGFnZSopOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjIxMTApCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wNy0wOSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbmFibGUgQVZDRiBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwMTUKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNzcwMzE3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKTogTmV3LCByZXR1cm4g
dGhlIHZpZXcncyBncmFwaGljcyBhZGFwdGVyLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKworICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKTog
TmV3LCByZXR1cm4gdGhlIGxheWVyIHRyZWUgaG9zdCdzIGdyYXBoaWNzIGFkYXB0ZXIuCisgICAg
ICAgICogV2ViVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJWaWV3KToK
KwogMjAxMi0wNy0wMyAgTWloYWkgQmFsYW4gIDxtaWJhbGFuQGFkb2JlLmNvbT4KIAogICAgICAg
ICBbQ1NTIFJlZ2lvbnNdIEVuYWJsaW5nIHJlZ2lvbnMgb24gV2luZG93cyBsZWFkIHRvIGNyYXNo
LW9uLWxhdW5jaCBmb3IgV2ViS2l0LmV4ZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBB
cHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMSBBcHBjZWxlcmF0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMSBCcmVudCBGdWxnaGFtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTY1MzYsNiArNjUzNiwxNSBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElP
TikKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogV2ViVmlldzo6Z3JhcGhpY3NEZXZp
Y2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC0+Z3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCk7Cit9CisjZW5kaWYKKwogSFJFU1VMVCBXZWJWaWV3Ojp1bnVzZWQxKCkKIHsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDEyMjEx
MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIEFw
cGNlbGVyYXRvciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDExIEJyZW50IEZ1bGdoYW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNTUsNiArNTUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3Q7CiAj
ZW5kaWYKICAgICBjbGFzcyBGdWxsU2NyZWVuQ29udHJvbGxlcjsKKyNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgc3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsK
KyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NDcsNiArOTUwLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFJvb3RDaGlsZExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAg
IFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkg
Y29uc3Q7CisjZW5kaWYKKwogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3Jl
OjpOb2RlKik7CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1Miw3ICs3NTIsMTMgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbgogewogICAgIG1fd2ViVmlldy0+Zmx1
c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiB9CisjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNl
QWRhcHRlciogV2ViQ2hyb21lQ2xpZW50OjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX3dlYlZpZXctPmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpOworfQogI2Vu
ZGlmCiAKIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gV2ViQ2hyb21lQ2xpZW50Ojp1aURlbGVnYXRl
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0
MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5n
TGF5ZXJTeW5jKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRB
VElPTikKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IHsg
fQogCiAjaWYgRU5BQkxFKFZJREVPKQo=
</data>
<flag name="commit-queue"
          id="159693"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151272</attachid>
            <date>2012-07-09 10:40:47 -0700</date>
            <delta_ts>2012-07-09 11:44:12 -0700</delta_ts>
            <desc>Updated patch, again.</desc>
            <filename>avcf_hw_accel_patch_25.txt</filename>
            <type>text/plain</type>
            <size>32920</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA3LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhh
cmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5l
dywgcmV0dXJuIHRoZSBjbGllbnQncyBncmFwaGljcyAKKyAgICAgICAgICAgIGRldmljZSBhZGFw
dGVyLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Z3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2
aWNlQWRhcHRlcik6IE5ldywgYXNrIHRoZSBtZWRpYSBlbGVtZW50IGZvciB0aGUgZ3JhcGhpY3MK
KyAgICAgICAgICAgIGRldmljZSBhZGFwdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oOiBTb2Z0LWxpbmsgQVZDRlBsYXllclNl
dERpcmVjdDNERGV2aWNlCisgICAgICAgICAgICBhbmQgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKTogUGFzcyB0aGUgY3VycmVudCBkM2Q5CisgICAgICAgICAgICBkZXZp
Y2UgaW50ZXJmYWNlIHRvIHRoZSBBVkZXcmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwpOiBJZiB0aGUgZDNkOSBkZXZpY2UgaW1wbGVtZW50cyBJ
RGlyZWN0M0REZXZpY2U5RXgsCisgICAgICAgICAgICB0ZWxsIHRoZSBBVkFzc2V0IHRvIGVuYWJs
ZSBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OmNyZWF0ZVBsYXllcik6IFBhc3MgdGhlIGQzZDkgZGV2aWNlIHRvIHRoZSBwbGF5ZXIgaWYgaXQg
aW1wbGVtZW50cyBJRGlyZWN0M0REZXZpY2U5RXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZM
YXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNBQ0ZMYXllclRyZWVI
b3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpncmFw
aGljc0RldmljZUFkYXB0ZXIpOiBOZXcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U29mdExpbmtpbmcuaDogRGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMLCBTT0ZU
X0xJTktfTE9BREVEX0xJQlJBUlksCisgICAgICAgICAgICBhbmQgU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwuCisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0ODEsNiArMzQ4MSwxNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5
ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNiArNDMyLDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qg
T1ZFUlJJREU7CiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogICAg
IHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lk
IHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAg
dm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50Piop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODEsNiArODEsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0cnVjdCBHcmFw
aGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpA
QCAtMjc2LDYgKzI4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oQWxsVHJpZ2dl
cnMpOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFZlY3RvcjxN
ZWRpYVBsYXllckZhY3RvcnkqPiYgaW5zdAogICAgICAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7
CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgICAgICBpZiAoU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICgxIC8qIEBAU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpIEBAICovKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShh
ZGRNZWRpYUVuZ2luZSk7CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC0xMDY4LDYgKzEwNjgsMTYg
QEAgU3RyaW5nIE1lZGlhUGxheWVyOjp1c2VyQWdlbnQoKSBjb25zdAogICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclVzZXJBZ2VudCgpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBNZWRp
YVBsYXllcjo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcih0aGlzKTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSw2ICs5OSwx
MCBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
c3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKKyNlbmRpZgorCiBjbGFzcyBNZWRpYVBsYXll
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBDT1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9u
eW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07CkBAIC0xNjUsNiArMTY5LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllclNvdXJjZU9wZW5lZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291
cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0K
QEAgLTM1Niw2ICszNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorICAgIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91
bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5o
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzcsNiArMTc3LDggQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
QwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldENyZWF0
ZVdpdGhVUkxBbmRPcHRpb25zLCBBVkNGVVJMQXNzZXRSZWYsIF9fY2RlY2wsIChDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIFVSTCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIGRp
c3BhdGNoX3F1ZXVlX3Qgbm90aWZpY2F0aW9uUXVldWUpLCAoYWxsb2NhdG9yLCBVUkwsIG9wdGlv
bnMsIG5vdGlmaWNhdGlvblF1ZXVlKSkKICNkZWZpbmUgQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVS
TEFuZE9wdGlvbnMgc29mdExpbmtfQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMK
IAorU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
LCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEltYWdlR2Vu
ZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwpAQCAt
MjQ0LDMgKzI0Niw2IEBAIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkK
IAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBB
VkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJSYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDUsNiAr
NDYsOCBAQAogI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CiAjaW5j
bHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogCisjaW5jbHVkZSA8ZDNkOS5oPgorI2luY2x1
ZGUgPGQzZHg5Lmg+CiAjaW5jbHVkZSA8ZGVsYXlpbXAuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9k
aXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04Nyw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHNldEFzc2V0KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCi0gICAgdm9pZCBjcmVhdGVQ
bGF5ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5Kik7CiAgICAg
dm9pZCBjcmVhdGVQbGF5ZXJJdGVtKCk7CiAgICAgCiAgICAgdm9pZCBjaGVja1BsYXlhYmlsaXR5
KCk7CkBAIC0xMzcsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwogCiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xh
eWVyQ2xpZW50OworICAgIENPTVB0cjxJRGlyZWN0M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOwog
fTsKIAogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKQEAg
LTMzOSw3ICszNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CiAgICAgCiAgICAgc2V0RGVsYXlDYWxsYmFja3Mo
dHJ1ZSk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVQbGF5ZXIoKTsKKyAgICBtX2F2ZldyYXBw
ZXItPmNyZWF0ZVBsYXllcihyZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5
ZXIoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkpKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhm
YWxzZSk7CiB9CiAKQEAgLTM1NSw4ICszNTksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
cmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVCghbV9h
dmZXcmFwcGVyKTsKLSAgICAKKwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOworCiAgICAg
bV9hdmZXcmFwcGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7CiAgICAgbV9hdmZXcmFwcGVyLT5j
cmVhdGVBc3NldEZvclVSTCh1cmwpOwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKQEAg
LTk1NSwyMCArOTYwLDM2IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFW
RlcKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiB1cmxSZWYoQWRvcHRDRiwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZV
UkwoKSk7CisKICAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVh
dGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIDAs
IG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldC5hZG9wdENGKGFzc2V0UmVmKTsK
IH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIoKQordm9pZCBBVkZXcmFwcGVyOjpj
cmVhdGVQbGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogewogICAgIEFTU0VSVCgh
YXZQbGF5ZXIoKSAmJiBhdlBsYXllckl0ZW0oKSk7CiAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChkM2REZXZp
Y2UpIHsKKyAgICAgICAgLy8gUUkgZm9yIGFuIElEaXJlY3QzRERldmljZTlFeCBpbnRlcmZhY2Us
IGl0IGlzIHJlcXVpcmVkIHRvIGRvIEhXIHZpZGVvIGRlY29kaW5nLgorICAgICAgICBDT01QdHI8
SURpcmVjdDNERGV2aWNlOUV4PiBkM2RFeChRdWVyeSwgZDNkRGV2aWNlKTsKKyAgICAgICAgbV9k
M2REZXZpY2UgPSBkM2RFeDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9kM2REZXZpY2UgPSAwOwor
CisgICAgaWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9EZWNvZGVyS2V5KQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25z
UmVmLmdldCgpLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2Rl
cktleSwga0NGQm9vbGVhblRydWUpOworCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8g
Y3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3By
b2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVy
Q3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxh
eWVySXRlbSgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKKyAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIuYWRvcHRDRihwbGF5ZXJSZWYpOwogCisgICAg
aWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKQorICAg
ICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYsIG1fZDNkRGV2
aWNlLmdldCgpKTsKKwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90
aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0NiwxMCBAQCBzdHJ1Y3QgV0tDQUNGQ29udGV4
dDsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKIAorI2lmIFVTRShBVkZP
VU5EQVRJT04pCitzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOworI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQ7CkBAIC02Niw2
ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKCkgPSAwOwogICAgIHZv
aWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZEludmVydENvbG9ycyhib29sKTsKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
ICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVy
VHJlZUhvc3QKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vTGVnYWN5Q0FDRkxheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xlZ2FjeUNBQ0ZM
YXllclRyZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDYgKzY0LDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25zdCBW
ZWN0b3I8Q0dSZWN0PiYgZGlydHlSZWN0cyA9IFZlY3RvcjxDR1JlY3Q+KCkpOwogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorI2VuZGlmCisK
ICAgICBUaW1lcjxMZWdhY3lDQUNGTGF5ZXJUcmVlSG9zdD4gbV9yZW5kZXJUaW1lcjsKICAgICBD
T01QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZpY2U7CiAgICAgV0tDQUNGQ29udGV4dCog
bV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCShy
ZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw2ICs2MSw3
IEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0MKIFNPRlRfTElOSyhX
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0TGFzdENvbW1pdFRpbWUsIENG
VGltZUludGVydmFsLCBfX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3KSwgKHZpZXcpKQogU09G
VF9MSU5LKFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMsIFdLQ0FDRlZpZXdTZXRDb250ZXh0VXNl
ckRhdGEsIHZvaWQsIF9fY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcsIHZvaWQqIHVzZXJEYXRh
KSwgKHZpZXcsIHVzZXJEYXRhKSkKIFNPRlRfTElOS19PUFRJT05BTChXZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0U2hvdWxkSW52ZXJ0Q29sb3JzLCB2b2lkLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcsIGJvb2wgc2hvdWxkSW52ZXJ0Q29sb3JzKSkKK1NPRlRfTElO
S19PUFRJT05BTChXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0RDNERGV2
aWNlOSwgSURpcmVjdDNERGV2aWNlOSosIF9jZGVjbCwgKFdLQ0FDRlZpZXdSZWYgdmlldykpCiAK
IFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0OjpjcmVhdGUoKQogewpAQCAtMTc1LDYgKzE3NiwxNiBAQCB2b2lkIFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpzZXRTaG91bGRJCiAgICAgICAgIFdLQ0FDRlZpZXdTZXRTaG91bGRJbnZlcnRD
b2xvcnNQdHIoKShtX3ZpZXcuZ2V0KCksIHNob3VsZEludmVydENvbG9ycyk7CiB9CiAKKyNpZiBV
U0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXS0NBQ0ZWaWV3TGF5ZXJU
cmVlSG9zdDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIVdLQ0FD
RlZpZXdHZXREM0REZXZpY2U5UHRyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NEZXZpY2VBZGFwdGVyKj4oV0tDQUNGVmlld0dldEQz
RERldmljZTlQdHIoKShtX3ZpZXcuZ2V0KCkpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRy
ZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiBkaXJ0eVJlY3RzID0gVmVjdG9y
PENHUmVjdD4oKSk7CiAgICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCBsYXN0Q29tbWl0VGltZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7Cisj
aWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciog
Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NBQ0ZWaWV3UmVmPiBtX3ZpZXc7CiAgICAgYm9vbCBtX3ZpZXdOZWVkc1VwZGF0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCShyZXZp
c2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMjMgQEAKICAgICAgICAgcmV0dXJuIHB0cjsg
XAogICAgIH1cCiAKKyNkZWZpbmUgU09GVF9MSU5LX0xPQURFRF9MSUJSQVJZKGxpYnJhcnksIGZ1
bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFtZXRlckRlY2xh
cmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZlbnRpb24gKmZ1
bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisgICAgc3RhdGlj
IGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAgICB7IFwKKyAg
ICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5pdGlhbGl6ZWQp
IFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIEhJTlNUQU5DRSBsaWJyYXJ5SW5zdGFuY2Ug
PSA6OkdldE1vZHVsZUhhbmRsZShMI2xpYnJhcnkpOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdGlvbk5hbWUjI1B0clR5cGU+KFNPRlRfTElOS19HRVRQ
Uk9DQUREUkVTUyhsaWJyYXJ5SW5zdGFuY2UsICNmdW5jdGlvbk5hbWUpKTsgXAorICAgICAgICBy
ZXR1cm4gcHRyOyBcCisgICAgfVwKKwogLyoKICAgICBJbiBvcmRlciB0byBzb2Z0IGxpbmsgYWdh
aW5zdCBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggX19kZWNsc3BlYyhkbGxpbXBvcnQpLCB3ZSBw
cmVwZW5kICJzb2Z0TGlua18iIHRvIHRoZSBmdW5jdGlvbiBuYW1lcy4KICAgICBJZiB5b3UgdXNl
IFNPRlRfTElOS19ETExfSU1QT1JUKCksIHlvdSB3aWxsIGFsc28gbmVlZCB0byAjZGVmaW5lIHRo
ZSBmdW5jdGlvbiBuYW1lIHRvIGFjY291bnQgZm9yIHRoaXMsIGUuZy46CkBAIC0xMDIsNiArMTE5
LDIxIEBACiAgICAgICAgIHJldHVybiBzb2Z0TGluayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5h
bWVzOyBcCiAgICAgfQogCisjZGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFt
ZXRlckRlY2xhcmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZl
bnRpb24gKmZ1bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisg
ICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAg
ICB7IFwKKyAgICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5p
dGlhbGl6ZWQpIFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRyID0gcmVpbnRlcnByZXRfY2FzdDxy
ZXN1bHRUeXBlIChjYWxsaW5nQ29udmVudGlvbiopcGFyYW1ldGVyRGVjbGFyYXRpb25zPihTT0ZU
X0xJTktfR0VUUFJPQ0FERFJFU1MobGlicmFyeSMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1lKSk7
IFwKKyAgICAgICAgcmV0dXJuIHB0cjsgXAorICAgIH1cCisKIC8qCiAgICAgVmFyaWFibGVzIGV4
cG9ydGVkIGJ5IGEgRExMIG5lZWQgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaCBhIGZ1bmN0aW9uLgog
ICAgIElmIHlvdSB1c2UgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoKSwgeW91IHdpbGwg
YWxzbyBuZWVkIHRvICNkZWZpbmUgdGhlIHZhcmlhYmxlIG5hbWUgdG8gYWNjb3VudCBmb3IgdGhp
cywgZS5nLjoKQEAgLTExNyw0ICsxNDksMTYgQEAKICAgICAgICAgcmV0dXJuICpwdHI7IFwKICAg
ICB9XAogCisvKgorICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgb25seSB3b3JrIGZvciB2YXJpYWJs
ZSB0eXBlcyBmb3Igd2hpY2ggYSByZXR1cm4gdmFsdWUgb2YgMCBjYW4gc2lnbmFsIGFuIGVycm9y
LgorICovCisjZGVmaW5lIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCisgICAgc3RhdGljIHZhcmlhYmxl
VHlwZSBnZXRfIyN2YXJpYWJsZU5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyB2YXJp
YWJsZVR5cGUqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dmFyaWFibGVUeXBlKj4oU09GVF9MSU5L
X0dFVFBST0NBRERSRVNTKGxpYnJhcnkjI0xpYnJhcnkoKSwgI3ZhcmlhYmxlTmFtZSkpOyBcCisg
ICAgICAgIGlmICghcHRyKSBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICByZXR1
cm4gKnB0cjsgXAorICAgIH1cCisKICNlbmRpZiAvLyBTb2Z0TGlua2luZ19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wNy0wOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgQVZDRiBoYXJkd2FyZSB2aWRl
byBkZWNvZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNzcwMzE3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogRGVmaW5lIEhBVkVfQVZDRiBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcik6
IE5ldywgcmV0dXJuIHRoZSBsYXllciB0cmVlIGhvc3QncworICAgICAgICAgICAgZ3JhcGhpY3Mg
YWRhcHRlci4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKTogTmV3LCBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaDoKKyAgICAgICAg
KExheWVyVHJlZUhvc3RDQVdpbik6CisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEy
MjExMCkKKysrIFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE0Niw1ICsxNDYsNiBAQCBhbGwgOiBIZWFkZXJEZXRlY3Rpb24uaAogCiBIZWFkZXJEZXRlY3Rp
b24uaCA6IERlcml2ZWRTb3VyY2VzLm1ha2UKIAlpZiBbIC1mICIkKFdFQktJVExJQlJBUklFU0RJ
UikvaW5jbHVkZS9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnNCYXNlLmgiIF0gJiYgWyAhIC1mICIkKFdFQktJVExJQlJBUklFU0RJUikvaW5jbHVkZS9j
YWlyby9jYWlyby5oIiBdOyB0aGVuIGVjaG8gIiNkZWZpbmUgSEFWRV9XS1FDQSAxIiA+ICRAOyBl
bHNlIGVjaG8gPiAkQDsgZmkKKwlpZiBbIC1mICIkKFdFQktJVExJQlJBUklFU0RJUikvaW5jbHVk
ZS9BVkZvdW5kYXRpb25DRi9BVkNGQmFzZS5oIiBdOyB0aGVuIGVjaG8gIiNkZWZpbmUgSEFWRV9B
VkNGIDEiID4+ICRAOyBlbHNlIGVjaG8gPj4gJEA7IGZpCiAKIGVuZGlmICMgV2luZG93c19OVApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTY5Niw2ICs2OTYsMTUgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnNjaGVkdWxlQ29tcG9zaXRpbgogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikg
JiYgVVNFKEFWRk9VTkRBVElPTikKK1dlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogV2Vi
Q2hyb21lQ2xpZW50OjpncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlmICgh
bV9wYWdlLT5kcmF3aW5nQXJlYSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9w
YWdlLT5kcmF3aW5nQXJlYSgpLT5sYXllclRyZWVIb3N0KCktPmdyYXBoaWNzRGV2aWNlQWRhcHRl
cigpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6Om5lZWRUb3VjaEV2ZW50cyhib29sIG5lZWRUb3VjaEV2ZW50cykKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0xODksNiArMTg5LDEwIEBAIHByaXZhdGU6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpH
cmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9WRVJS
SURFOworI2VuZGlmCisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9p
ZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgT1ZFUlJJREU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAkocmV2aXNp
b24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJl
ZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsMTAgQEAgY2xhc3MgRmxvYXRQb2ludDsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgR3JhcGhpY3NMYXllcjsKKwor
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKK3N0cnVjdCBHcmFwaGljc0Rl
dmljZUFkYXB0ZXI7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Nyw2ICsx
MDEsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExh
eWVySG9zdGluZ01vZGUpIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShB
VkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIq
IGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENB
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Y2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5jcHAJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllckNBLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXllckNoYW5nZXNGbHVzaGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NvZnRMaW5raW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUu
aD4KICNpbmNsdWRlIDxXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dLQ0FDRkltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9XS0NBQ0ZWaWV3Lmg+CkBAIC00Myw5
ICs0NCwxNSBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpZmRlZiBERUJVR19B
TEwKLSNwcmFnbWEgY29tbWVudChsaWIsICJXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zX2RlYnVn
IikKKyNkZWZpbmUgTU9EVUxFX05BTUUgIldlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnNfZGVidWci
CiAjZWxzZQotI3ByYWdtYSBjb21tZW50KGxpYiwgIldlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMi
KQorI2RlZmluZSBNT0RVTEVfTkFNRSAiV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucyIKKyNlbmRp
ZgorCisjcHJhZ21hIGNvbW1lbnQobGliLCBNT0RVTEVfTkFNRSkKKworI2lmIFVTRShBVkZPVU5E
QVRJT04pCitTT0ZUX0xJTktfTE9BREVEX0xJQlJBUlkoTU9EVUxFX05BTUUsIFdLQ0FDRlZpZXdH
ZXREM0REZXZpY2U5LCBJRGlyZWN0M0REZXZpY2U5KiwgX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2
aWV3KSkKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI1OCw2ICsyNjUs
MTcgQEAgdm9pZCBMYXllclRyZWVIb3N0Q0FXaW46OnNldFJvb3RDb21wb3NpdAogICAgIExheWVy
VHJlZUhvc3RDQTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoZ3JhcGhpY3NMYXllcik7CiB9CiAK
KyNpZiBVU0UoQVZGT1VOREFUSU9OKQorV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBM
YXllclRyZWVIb3N0Q0FXaW46OmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0Cit7CisgICAg
aWYgKCFXS0NBQ0ZWaWV3R2V0RDNERGV2aWNlOVB0cigpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdyYXBoaWNzRGV2aWNlQWRhcHRlcio+KFdLQ0FD
RlZpZXdHZXREM0REZXZpY2U5UHRyKCkobV92aWV3LmdldCgpKSk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKKwogI2VuZGlmIC8vIEhBVkUoV0tRQ0EpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4v
TGF5ZXJUcmVlSG9zdENBV2luLmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
YXllclRyZWVIb3N0Q0FXaW4+IGNyZWF0ZShXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+TGF5ZXJU
cmVlSG9zdENBV2luKCk7CiAKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHZpcnR1YWwgV2Vi
Q29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25z
dCBPVkVSUklERTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IExheWVyVHJlZUhv
c3RDQVdpbihXZWJQYWdlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjEx
MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDEyLTA3LTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcs
IHJldHVybiB0aGUgdmlldydzIGdyYXBoaWNzIGFkYXB0ZXIuCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCisg
ICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpncmFwaGljc0RldmljZUFk
YXB0ZXIpOiBOZXcsIHJldHVybiB0aGUgbGF5ZXIgdHJlZSBob3N0J3MgZ3JhcGhpY3MgYWRhcHRl
ci4KKyAgICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YlZpZXcpOgorCiAyMDEyLTA3LTAzICBNaWhhaSBCYWxhbiAgPG1pYmFsYW5AYWRvYmUuY29tPgog
CiAgICAgICAgIFtDU1MgUmVnaW9uc10gRW5hYmxpbmcgcmVnaW9ucyBvbiBXaW5kb3dzIGxlYWQg
dG8gY3Jhc2gtb24tbGF1bmNoIGZvciBXZWJLaXQuZXhlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
LCAyMDEyIEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwLCAyMDExIEFwcGNlbGVyYXRvciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDExIEJyZW50IEZ1bGdoYW0uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtNjUzNiw2ICs2NTM2LDE1IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZygKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXZWJWaWV3OjpncmFw
aGljc0RldmljZUFkYXB0ZXIoKSBjb25zdAoreworICAgIGlmICghbV9sYXllclRyZWVIb3N0KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9sYXllclRyZWVIb3N0LT5ncmFwaGljc0Rl
dmljZUFkYXB0ZXIoKTsKK30KKyNlbmRpZgorCiBIUkVTVUxUIFdlYlZpZXc6OnVudXNlZDEoKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNp
b24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTEgQXBwY2VsZXJhdG9yLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC01
NSw2ICs1NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDQUNGTGF5ZXJUcmVl
SG9zdDsKICNlbmRpZgogICAgIGNsYXNzIEZ1bGxTY3JlZW5Db250cm9sbGVyOworI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyOworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk0Nyw2ICs5NTAs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Um9vdENoaWxkTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJ
T04pCisgICAgV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFk
YXB0ZXIoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2Rl
KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUyLDcgKzc1MiwxMyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2NoZWR1bGVDb21wb3NpdGluCiB7CiAgICAgbV93ZWJW
aWV3LT5mbHVzaFBlbmRpbmdHcmFwaGljc0xheWVyQ2hhbmdlc1Nvb24oKTsKIH0KKyNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorV2ViQ29yZTo6R3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKiBXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7
Cit9CiAjZW5kaWYKIAogQ09NUHRyPElXZWJVSURlbGVnYXRlPiBXZWJDaHJvbWVDbGllbnQ6OnVp
RGVsZWdhdGUoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDIsNiArMTQyLDEwIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllclN5bmMoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVy
KiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCiAgICAg
dmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
Y29uc3QgeyB9CiAKICNpZiBFTkFCTEUoVklERU8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151288</attachid>
            <date>2012-07-09 11:44:12 -0700</date>
            <delta_ts>2012-07-10 09:59:03 -0700</delta_ts>
            <desc>Fix the style-bot nit.</desc>
            <filename>avcf_hw_accel_patch_26.txt</filename>
            <type>text/plain</type>
            <size>32919</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA3LTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhh
cmR3YXJlIHZpZGVvIGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5l
dywgcmV0dXJuIHRoZSBjbGllbnQncyBncmFwaGljcyAKKyAgICAgICAgICAgIGRldmljZSBhZGFw
dGVyLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorCisgICAgICAgICogcGFn
ZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Z3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmdyYXBoaWNzRGV2
aWNlQWRhcHRlcik6IE5ldywgYXNrIHRoZSBtZWRpYSBlbGVtZW50IGZvciB0aGUgZ3JhcGhpY3MK
KyAgICAgICAgICAgIGRldmljZSBhZGFwdGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oOiBTb2Z0LWxpbmsgQVZDRlBsYXllclNl
dERpcmVjdDNERGV2aWNlCisgICAgICAgICAgICBhbmQgQVZDRlBsYXllckVuYWJsZUhhcmR3YXJl
QWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOiAK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVh
dGVBVkFzc2V0Rm9yVVJMKTogUGFzcyB0aGUgY3VycmVudCBkM2Q5CisgICAgICAgICAgICBkZXZp
Y2UgaW50ZXJmYWNlIHRvIHRoZSBBVkZXcmFwcGVyLgorICAgICAgICAoV2ViQ29yZTo6QVZGV3Jh
cHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwpOiBJZiB0aGUgZDNkOSBkZXZpY2UgaW1wbGVtZW50cyBJ
RGlyZWN0M0REZXZpY2U5RXgsCisgICAgICAgICAgICB0ZWxsIHRoZSBBVkFzc2V0IHRvIGVuYWJs
ZSBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6
OmNyZWF0ZVBsYXllcik6IFBhc3MgdGhlIGQzZDkgZGV2aWNlIHRvIHRoZSBwbGF5ZXIgaWYgaXQg
aW1wbGVtZW50cyBJRGlyZWN0M0REZXZpY2U5RXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZM
YXllclRyZWVIb3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNBQ0ZMYXllclRyZWVI
b3N0OjpncmFwaGljc0RldmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FDRlZpZXdMYXllclRyZWVIb3N0OjpncmFw
aGljc0RldmljZUFkYXB0ZXIpOiBOZXcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U29mdExpbmtpbmcuaDogRGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMLCBTT0ZU
X0xJTktfTE9BREVEX0xJQlJBUlksCisgICAgICAgICAgICBhbmQgU09GVF9MSU5LX1ZBUklBQkxF
X0RMTF9JTVBPUlRfT1BUSU9OQUwuCisKIDIwMTItMDctMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjIxMDcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0ODEsNiArMzQ4MSwxNiBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKK0dyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7Cit9CisjZW5kaWYKKwog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5
ZXIqKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5n
aW5lVXBkYXRlZCIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsNiArNDMyLDEwIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qg
T1ZFUlJJREU7CiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCisgICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwogICAg
IHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKTsKICAgICB2b2lk
IHByb2dyZXNzRXZlbnRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRpYUVsZW1lbnQ+Kik7CiAgICAg
dm9pZCBwbGF5YmFja1Byb2dyZXNzVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50Piop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODEsNiArODEsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbG9yQ2hvb3NlckNsaWVudDsKICNlbmRpZgog
CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0cnVjdCBHcmFw
aGljc0RldmljZUFkYXB0ZXI7CisjZW5kaWYKKwogICAgIGNsYXNzIENocm9tZUNsaWVudCB7CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgPSAwOwpA
QCAtMjc2LDYgKzI4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgYWxsb3dlZENvbXBvc2l0aW5nVHJpZ2dlcnMoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4oQWxsVHJpZ2dl
cnMpOyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
KyAgICAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFZlY3RvcjxN
ZWRpYVBsYXllckZhY3RvcnkqPiYgaW5zdAogICAgICAgICBlbmdpbmVzUXVlcmllZCA9IHRydWU7
CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQotICAgICAgICBpZiAoU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICgxIC8qIEBAU2V0dGluZ3M6OmlzQVZGb3Vu
ZGF0aW9uRW5hYmxlZCgpIEBAICovKSB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShh
ZGRNZWRpYUVuZ2luZSk7CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC0xMDY4LDYgKzEwNjgsMTYg
QEAgU3RyaW5nIE1lZGlhUGxheWVyOjp1c2VyQWdlbnQoKSBjb25zdAogICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllclVzZXJBZ2VudCgpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBNZWRp
YVBsYXllcjo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWVk
aWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBtX21l
ZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcih0aGlzKTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OSw2ICs5OSwx
MCBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQor
c3RydWN0IEdyYXBoaWNzRGV2aWNlQWRhcHRlcjsKKyNlbmRpZgorCiBjbGFzcyBNZWRpYVBsYXll
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZW51bSBDT1JTTW9kZSB7IFVuc3BlY2lmaWVkLCBBbm9u
eW1vdXMsIFVzZUNyZWRlbnRpYWxzIH07CkBAIC0xNjUsNiArMTY5LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZChNZWRpYVBsYXll
ciopIHsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CisgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgeyByZXR1cm4gMDsgfQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllclNvdXJjZU9wZW5lZCgpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyU291
cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gIngtbWVkaWEtc291cmNlLXVuc3VwcG9ydGVkOiI7IH0K
QEAgLTM1Niw2ICszNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZG
T1VOREFUSU9OKQorICAgIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFw
dGVyKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdDsKIAogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0FWRm91
bmRhdGlvbkNGU29mdExpbmtpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5o
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNzcsNiArMTc3LDggQEAgU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFW
QwogU09GVF9MSU5LX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZVUkxBc3NldENyZWF0
ZVdpdGhVUkxBbmRPcHRpb25zLCBBVkNGVVJMQXNzZXRSZWYsIF9fY2RlY2wsIChDRkFsbG9jYXRv
clJlZiBhbGxvY2F0b3IsIENGVVJMUmVmIFVSTCwgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMsIGRp
c3BhdGNoX3F1ZXVlX3Qgbm90aWZpY2F0aW9uUXVldWUpLCAoYWxsb2NhdG9yLCBVUkwsIG9wdGlv
bnMsIG5vdGlmaWNhdGlvblF1ZXVlKSkKICNkZWZpbmUgQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVS
TEFuZE9wdGlvbnMgc29mdExpbmtfQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMK
IAorU09GVF9MSU5LX0RMTF9JTVBPUlRfT1BUSU9OQUwoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJTZXREaXJlY3QzRERldmljZSwgdm9pZCwgX19jZGVjbCwgKEFWQ0ZQbGF5ZXJSZWYgcGxheWVy
LCBJRGlyZWN0M0REZXZpY2U5KiBkM2REZXZpY2UpKQorCiAvLyBWYXJpYWJsZXMKIAogU09GVF9M
SU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZBc3NldEltYWdlR2Vu
ZXJhdG9yQXBlcnR1cmVNb2RlQ2xlYW5BcGVydHVyZSwgY29uc3QgQ0ZTdHJpbmdSZWYpOwpAQCAt
MjQ0LDMgKzI0Niw2IEBAIFNPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUKEFWRm91bmRhdGkK
IAogU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlQoQVZGb3VuZGF0aW9uQ0YsIEFWQ0ZQbGF5
ZXJSYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgY29uc3QgQ0ZTdHJpbmdSZWYpOwogI2RlZmluZSBB
VkNGUGxheWVyUmF0ZUNoYW5nZWROb3RpZmljYXRpb24gZ2V0X0FWQ0ZQbGF5ZXJSYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpCisKK1NPRlRfTElOS19WQVJJQUJMRV9ETExfSU1QT1JUX09QVElPTkFM
KEFWRm91bmRhdGlvbkNGLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVv
RGVjb2RlcktleSwgY29uc3QgQ0ZTdHJpbmdSZWYpOworI2RlZmluZSBBVkNGUGxheWVyRW5hYmxl
SGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlcktleSBnZXRfQVZDRlBsYXllckVuYWJsZUhh
cmR3YXJlQWNjZWxlcmF0ZWRWaWRlb0RlY29kZXJLZXkoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIgor
I2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDUsNiAr
NDYsOCBAQAogI2luY2x1ZGUgPEFWRm91bmRhdGlvbkNGL0FWRm91bmRhdGlvbkNGLmg+CiAjaW5j
bHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogCisjaW5jbHVkZSA8ZDNkOS5oPgorI2luY2x1
ZGUgPGQzZHg5Lmg+CiAjaW5jbHVkZSA8ZGVsYXlpbXAuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9k
aXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC04Nyw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNyZWF0ZUFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICB2b2lkIHNldEFzc2V0KEFWQ0ZVUkxBc3NldFJlZik7CiAgICAgCi0gICAgdm9pZCBjcmVhdGVQ
bGF5ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZVBsYXllcihJRGlyZWN0M0REZXZpY2U5Kik7CiAgICAg
dm9pZCBjcmVhdGVQbGF5ZXJJdGVtKCk7CiAgICAgCiAgICAgdm9pZCBjaGVja1BsYXlhYmlsaXR5
KCk7CkBAIC0xMzcsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxh
eWVyPiBtX3ZpZGVvTGF5ZXJXcmFwcGVyOwogCiAgICAgT3duUHRyPExheWVyQ2xpZW50PiBtX2xh
eWVyQ2xpZW50OworICAgIENPTVB0cjxJRGlyZWN0M0REZXZpY2U5RXg+IG1fZDNkRGV2aWNlOwog
fTsKIAogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKQEAg
LTMzOSw3ICszNDMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
CiAgICAgQVNTRVJUKG1fYXZmV3JhcHBlcik7CiAgICAgCiAgICAgc2V0RGVsYXlDYWxsYmFja3Mo
dHJ1ZSk7Ci0gICAgbV9hdmZXcmFwcGVyLT5jcmVhdGVQbGF5ZXIoKTsKKyAgICBtX2F2ZldyYXBw
ZXItPmNyZWF0ZVBsYXllcihyZWludGVycHJldF9jYXN0PElEaXJlY3QzRERldmljZTkqPihwbGF5
ZXIoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkpKTsKICAgICBzZXREZWxheUNhbGxiYWNrcyhm
YWxzZSk7CiB9CiAKQEAgLTM1NSw4ICszNTksOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpjCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpj
cmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVCghbV9h
dmZXcmFwcGVyKTsKLSAgICAKKwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOworCiAgICAg
bV9hdmZXcmFwcGVyID0gbmV3IEFWRldyYXBwZXIodGhpcyk7CiAgICAgbV9hdmZXcmFwcGVyLT5j
cmVhdGVBc3NldEZvclVSTCh1cmwpOwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKQEAg
LTk1NSwyMCArOTYwLDM2IEBAIHZvaWQgQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFW
RlcKIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGVVJM
UmVmPiB1cmxSZWYoQWRvcHRDRiwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZV
UkwoKSk7CisKICAgICBBVkNGVVJMQXNzZXRSZWYgYXNzZXRSZWYgPSBBVkNGVVJMQXNzZXRDcmVh
dGVXaXRoVVJMQW5kT3B0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxSZWYuZ2V0KCksIDAs
IG1fbm90aWZpY2F0aW9uUXVldWUpOwogICAgIG1fYXZBc3NldC5hZG9wdENGKGFzc2V0UmVmKTsK
IH0KIAotdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVQbGF5ZXIoKQordm9pZCBBVkZXcmFwcGVyOjpj
cmVhdGVQbGF5ZXIoSURpcmVjdDNERGV2aWNlOSogZDNkRGV2aWNlKQogewogICAgIEFTU0VSVCgh
YXZQbGF5ZXIoKSAmJiBhdlBsYXllckl0ZW0oKSk7CiAKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gb3B0aW9uc1JlZihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIGlmIChkM2REZXZp
Y2UpIHsKKyAgICAgICAgLy8gUUkgZm9yIGFuIElEaXJlY3QzRERldmljZTlFeCBpbnRlcmZhY2Us
IGl0IGlzIHJlcXVpcmVkIHRvIGRvIEhXIHZpZGVvIGRlY29kaW5nLgorICAgICAgICBDT01QdHI8
SURpcmVjdDNERGV2aWNlOUV4PiBkM2RFeChRdWVyeSwgZDNkRGV2aWNlKTsKKyAgICAgICAgbV9k
M2REZXZpY2UgPSBkM2RFeDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9kM2REZXZpY2UgPSAwOwor
CisgICAgaWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJFbmFibGVIYXJkd2FyZUFjY2VsZXJh
dGVkVmlkZW9EZWNvZGVyS2V5KQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShvcHRpb25z
UmVmLmdldCgpLCBBVkNGUGxheWVyRW5hYmxlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2Rl
cktleSwga0NGQm9vbGVhblRydWUpOworCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSB3YXkgdG8g
Y3JlYXRlIGEgQVZQbGF5ZXIgd2l0aG91dCBhbiBBVlBsYXllckl0ZW0sIHNlZSA8cmRhcjovL3By
b2JsZW0vOTg3NzczMD4uCi0gICAgQVZDRlBsYXllclJlZiBwbGF5ZXJSZWYgPSBBVkNGUGxheWVy
Q3JlYXRlV2l0aFBsYXllckl0ZW1BbmRPcHRpb25zKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF2UGxh
eWVySXRlbSgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKKyAgICBBVkNGUGxheWVyUmVmIHBs
YXllclJlZiA9IEFWQ0ZQbGF5ZXJDcmVhdGVXaXRoUGxheWVySXRlbUFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYXZQbGF5ZXJJdGVtKCksIG9wdGlvbnNSZWYuZ2V0KCksIG1fbm90aWZp
Y2F0aW9uUXVldWUpOwogICAgIG1fYXZQbGF5ZXIuYWRvcHRDRihwbGF5ZXJSZWYpOwogCisgICAg
aWYgKG1fZDNkRGV2aWNlICYmIEFWQ0ZQbGF5ZXJTZXREaXJlY3QzRERldmljZVB0cigpKQorICAg
ICAgICBBVkNGUGxheWVyU2V0RGlyZWN0M0REZXZpY2VQdHIoKShwbGF5ZXJSZWYsIG1fZDNkRGV2
aWNlLmdldCgpKTsKKwogICAgIENGTm90aWZpY2F0aW9uQ2VudGVyUmVmIGNlbnRlciA9IENGTm90
aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKTsKICAgICBBU1NFUlQoY2VudGVyKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRy
ZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0NiwxMCBAQCBzdHJ1Y3QgV0tDQUNGQ29udGV4
dDsKIAogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKIAorI2lmIFVTRShBVkZP
VU5EQVRJT04pCitzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOworI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FDRkxheWVyVHJlZUhvc3RDbGllbnQ7CkBAIC02Niw2
ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzaXplKCkgPSAwOwogICAgIHZv
aWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZEludmVydENvbG9ycyhib29sKTsKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQor
ICAgIHZpcnR1YWwgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIo
KSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYKIAogICAgIC8vIEFic3RyYWN0Q0FDRkxheWVy
VHJlZUhvc3QKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGVnYWN5Q0FD
RkxheWVyVHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vTGVnYWN5Q0FDRkxheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xlZ2FjeUNBQ0ZM
YXllclRyZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDYgKzY0LDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25zdCBW
ZWN0b3I8Q0dSZWN0PiYgZGlydHlSZWN0cyA9IFZlY3RvcjxDR1JlY3Q+KCkpOwogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhp
Y3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorI2VuZGlmCisK
ICAgICBUaW1lcjxMZWdhY3lDQUNGTGF5ZXJUcmVlSG9zdD4gbV9yZW5kZXJUaW1lcjsKICAgICBD
T01QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9kM2REZXZpY2U7CiAgICAgV0tDQUNGQ29udGV4dCog
bV9jb250ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCShy
ZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw2ICs2MSw3
IEBAIFNPRlRfTElOSyhXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0MKIFNPRlRfTElOSyhX
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0TGFzdENvbW1pdFRpbWUsIENG
VGltZUludGVydmFsLCBfX2NkZWNsLCAoV0tDQUNGVmlld1JlZiB2aWV3KSwgKHZpZXcpKQogU09G
VF9MSU5LKFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMsIFdLQ0FDRlZpZXdTZXRDb250ZXh0VXNl
ckRhdGEsIHZvaWQsIF9fY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZpZXcsIHZvaWQqIHVzZXJEYXRh
KSwgKHZpZXcsIHVzZXJEYXRhKSkKIFNPRlRfTElOS19PUFRJT05BTChXZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zLCBXS0NBQ0ZWaWV3U2V0U2hvdWxkSW52ZXJ0Q29sb3JzLCB2b2lkLCBfY2RlY2ws
IChXS0NBQ0ZWaWV3UmVmIHZpZXcsIGJvb2wgc2hvdWxkSW52ZXJ0Q29sb3JzKSkKK1NPRlRfTElO
S19PUFRJT05BTChXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zLCBXS0NBQ0ZWaWV3R2V0RDNERGV2
aWNlOSwgSURpcmVjdDNERGV2aWNlOSosIF9jZGVjbCwgKFdLQ0FDRlZpZXdSZWYgdmlldykpCiAK
IFBhc3NSZWZQdHI8V0tDQUNGVmlld0xheWVyVHJlZUhvc3Q+IFdLQ0FDRlZpZXdMYXllclRyZWVI
b3N0OjpjcmVhdGUoKQogewpAQCAtMTc1LDYgKzE3NiwxNiBAQCB2b2lkIFdLQ0FDRlZpZXdMYXll
clRyZWVIb3N0OjpzZXRTaG91bGRJCiAgICAgICAgIFdLQ0FDRlZpZXdTZXRTaG91bGRJbnZlcnRD
b2xvcnNQdHIoKShtX3ZpZXcuZ2V0KCksIHNob3VsZEludmVydENvbG9ycyk7CiB9CiAKKyNpZiBV
U0UoQVZGT1VOREFUSU9OKQorR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXS0NBQ0ZWaWV3TGF5ZXJU
cmVlSG9zdDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIVdLQ0FD
RlZpZXdHZXREM0REZXZpY2U5UHRyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NEZXZpY2VBZGFwdGVyKj4oV0tDQUNGVmlld0dldEQz
RERldmljZTlQdHIoKShtX3ZpZXcuZ2V0KCkpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuaAkocmV2aXNpb24gMTIyMTEwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRy
ZWVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcmVuZGVyKGNvbnN0IFZlY3RvcjxDR1JlY3Q+JiBkaXJ0eVJlY3RzID0gVmVjdG9y
PENHUmVjdD4oKSk7CiAgICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCBsYXN0Q29tbWl0VGltZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7Cisj
aWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciog
Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAgIFJl
dGFpblB0cjxXS0NBQ0ZWaWV3UmVmPiBtX3ZpZXc7CiAgICAgYm9vbCBtX3ZpZXdOZWVkc1VwZGF0
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Tb2Z0TGlua2luZy5oCShyZXZp
c2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU29mdExpbmtpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMjMgQEAKICAgICAgICAgcmV0dXJuIHB0cjsg
XAogICAgIH1cCiAKKyNkZWZpbmUgU09GVF9MSU5LX0xPQURFRF9MSUJSQVJZKGxpYnJhcnksIGZ1
bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFtZXRlckRlY2xh
cmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZlbnRpb24gKmZ1
bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisgICAgc3RhdGlj
IGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAgICB7IFwKKyAg
ICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAgICAgc3RhdGlj
IGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5pdGlhbGl6ZWQp
IFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OyBcCisgICAgICAgIFwKKyAgICAgICAgc3RhdGljIEhJTlNUQU5DRSBsaWJyYXJ5SW5zdGFuY2Ug
PSA6OkdldE1vZHVsZUhhbmRsZShMI2xpYnJhcnkpOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRy
ID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdGlvbk5hbWUjI1B0clR5cGU+KFNPRlRfTElOS19HRVRQ
Uk9DQUREUkVTUyhsaWJyYXJ5SW5zdGFuY2UsICNmdW5jdGlvbk5hbWUpKTsgXAorICAgICAgICBy
ZXR1cm4gcHRyOyBcCisgICAgfVwKKwogLyoKICAgICBJbiBvcmRlciB0byBzb2Z0IGxpbmsgYWdh
aW5zdCBmdW5jdGlvbnMgZGVjb3JhdGVkIHdpdGggX19kZWNsc3BlYyhkbGxpbXBvcnQpLCB3ZSBw
cmVwZW5kICJzb2Z0TGlua18iIHRvIHRoZSBmdW5jdGlvbiBuYW1lcy4KICAgICBJZiB5b3UgdXNl
IFNPRlRfTElOS19ETExfSU1QT1JUKCksIHlvdSB3aWxsIGFsc28gbmVlZCB0byAjZGVmaW5lIHRo
ZSBmdW5jdGlvbiBuYW1lIHRvIGFjY291bnQgZm9yIHRoaXMsIGUuZy46CkBAIC0xMDIsNiArMTE5
LDIxIEBACiAgICAgICAgIHJldHVybiBzb2Z0TGluayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlck5h
bWVzOyBcCiAgICAgfQogCisjZGVmaW5lIFNPRlRfTElOS19ETExfSU1QT1JUX09QVElPTkFMKGxp
YnJhcnksIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFt
ZXRlckRlY2xhcmF0aW9ucykgXAorICAgIHR5cGVkZWYgcmVzdWx0VHlwZSAoY2FsbGluZ0NvbnZl
bnRpb24gKmZ1bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisg
ICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKKyAg
ICB7IFwKKyAgICAgICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHI7IFwKKyAgICAg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7IFwKKyAgICAgICAgXAorICAgICAgICBpZiAoaW5p
dGlhbGl6ZWQpIFwKKyAgICAgICAgICAgIHJldHVybiBwdHI7IFwKKyAgICAgICAgaW5pdGlhbGl6
ZWQgPSB0cnVlOyBcCisgICAgICAgIFwKKyAgICAgICAgcHRyID0gcmVpbnRlcnByZXRfY2FzdDxy
ZXN1bHRUeXBlKGNhbGxpbmdDb252ZW50aW9uKilwYXJhbWV0ZXJEZWNsYXJhdGlvbnM+KFNPRlRf
TElOS19HRVRQUk9DQUREUkVTUyhsaWJyYXJ5IyNMaWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpKTsg
XAorICAgICAgICByZXR1cm4gcHRyOyBcCisgICAgfVwKKwogLyoKICAgICBWYXJpYWJsZXMgZXhw
b3J0ZWQgYnkgYSBETEwgbmVlZCB0byBiZSBhY2Nlc3NlZCB0aHJvdWdoIGEgZnVuY3Rpb24uCiAg
ICAgSWYgeW91IHVzZSBTT0ZUX0xJTktfVkFSSUFCTEVfRExMX0lNUE9SVCgpLCB5b3Ugd2lsbCBh
bHNvIG5lZWQgdG8gI2RlZmluZSB0aGUgdmFyaWFibGUgbmFtZSB0byBhY2NvdW50IGZvciB0aGlz
LCBlLmcuOgpAQCAtMTE3LDQgKzE0OSwxNiBAQAogICAgICAgICByZXR1cm4gKnB0cjsgXAogICAg
IH1cCiAKKy8qCisgICAgTm90ZSB0aGF0IHRoaXMgd2lsbCBvbmx5IHdvcmsgZm9yIHZhcmlhYmxl
IHR5cGVzIGZvciB3aGljaCBhIHJldHVybiB2YWx1ZSBvZiAwIGNhbiBzaWduYWwgYW4gZXJyb3Iu
CisgKi8KKyNkZWZpbmUgU09GVF9MSU5LX1ZBUklBQkxFX0RMTF9JTVBPUlRfT1BUSU9OQUwobGli
cmFyeSwgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5cGUpIFwKKyAgICBzdGF0aWMgdmFyaWFibGVU
eXBlIGdldF8jI3ZhcmlhYmxlTmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIHZhcmlh
YmxlVHlwZSogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx2YXJpYWJsZVR5cGUqPihTT0ZUX0xJTktf
R0VUUFJPQ0FERFJFU1MobGlicmFyeSMjTGlicmFyeSgpLCAjdmFyaWFibGVOYW1lKSk7IFwKKyAg
ICAgICAgaWYgKCFwdHIpIFwKKyAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgIHJldHVy
biAqcHRyOyBcCisgICAgfVwKKwogI2VuZGlmIC8vIFNvZnRMaW5raW5nX2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyMjExMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA3LTA5ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBBVkNGIGhhcmR3YXJlIHZpZGVv
IGRlY29kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MDAxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3NzAzMTc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OiBEZWZpbmUgSEFWRV9BVkNGIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKTog
TmV3LCByZXR1cm4gdGhlIGxheWVyIHRyZWUgaG9zdCdzCisgICAgICAgICAgICBncmFwaGljcyBh
ZGFwdGVyLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExh
eWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpncmFwaGljc0Rl
dmljZUFkYXB0ZXIpOiBOZXcsIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvY2Evd2luL0xheWVyVHJlZUhvc3RDQVdpbi5oOgorICAgICAgICAo
TGF5ZXJUcmVlSG9zdENBV2luKToKKwogMjAxMi0wNy0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyMjEwNy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTIy
MTEwKQorKysgU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTQ2LDUgKzE0Niw2IEBAIGFsbCA6IEhlYWRlckRldGVjdGlvbi5oCiAKIEhlYWRlckRldGVjdGlv
bi5oIDogRGVyaXZlZFNvdXJjZXMubWFrZQogCWlmIFsgLWYgIiQoV0VCS0lUTElCUkFSSUVTRElS
KS9pbmNsdWRlL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9uc0Jhc2UuaCIgXSAmJiBbICEgLWYgIiQoV0VCS0lUTElCUkFSSUVTRElSKS9pbmNsdWRlL2Nh
aXJvL2NhaXJvLmgiIF07IHRoZW4gZWNobyAiI2RlZmluZSBIQVZFX1dLUUNBIDEiID4gJEA7IGVs
c2UgZWNobyA+ICRAOyBmaQorCWlmIFsgLWYgIiQoV0VCS0lUTElCUkFSSUVTRElSKS9pbmNsdWRl
L0FWRm91bmRhdGlvbkNGL0FWQ0ZCYXNlLmgiIF07IHRoZW4gZWNobyAiI2RlZmluZSBIQVZFX0FW
Q0YgMSIgPj4gJEA7IGVsc2UgZWNobyA+PiAkQDsgZmkKIAogZW5kaWYgIyBXaW5kb3dzX05UCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjk2LDYgKzY5NiwxNSBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6c2NoZWR1bGVDb21wb3NpdGluCiAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQorV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBXZWJD
aHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3BhZ2UtPmRyYXdpbmdBcmVhKCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3Bh
Z2UtPmRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUhvc3QoKS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVy
KCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZFRvdWNoRXZlbnRzKQogewpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTE4OSw2ICsxODksMTAgQEAgcHJpdmF0ZToKICAgICB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okdy
YXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgT1ZFUlJJ
REU7CisjZW5kaWYKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgdmlydHVhbCB2b2lk
IG5lZWRUb3VjaEV2ZW50cyhib29sKSBPVkVSUklERTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lv
biAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0MSwxMCBAQCBjbGFzcyBGbG9hdFBvaW50Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBHcmFwaGljc0xheWVyOworCisj
aWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorc3RydWN0IEdyYXBoaWNzRGV2
aWNlQWRhcHRlcjsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk3LDYgKzEw
MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5
ZXJIb3N0aW5nTW9kZSkgeyB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFW
Rk9VTkRBVElPTikKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciog
Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBMYXllclRyZWVIb3N0KFdlYlBhZ2UqKTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9j
YS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmNwcAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0xheWVyQ0EuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyQ2hhbmdlc0ZsdXNoZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U29mdExpbmtpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVJbnN0YW5jZUhhbmRsZS5o
PgogI2luY2x1ZGUgPFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvV0tDQUNGSW1hZ2UuaD4KICNp
bmNsdWRlIDxXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL1dLQ0FDRlZpZXcuaD4KQEAgLTQzLDkg
KzQ0LDE1IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmZGVmIERFQlVHX0FM
TAotI3ByYWdtYSBjb21tZW50KGxpYiwgIldlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnNfZGVidWci
KQorI2RlZmluZSBNT0RVTEVfTkFNRSAiV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9uc19kZWJ1ZyIK
ICNlbHNlCi0jcHJhZ21hIGNvbW1lbnQobGliLCAiV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucyIp
CisjZGVmaW5lIE1PRFVMRV9OQU1FICJXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zIgorI2VuZGlm
CisKKyNwcmFnbWEgY29tbWVudChsaWIsIE1PRFVMRV9OQU1FKQorCisjaWYgVVNFKEFWRk9VTkRB
VElPTikKK1NPRlRfTElOS19MT0FERURfTElCUkFSWShNT0RVTEVfTkFNRSwgV0tDQUNGVmlld0dl
dEQzRERldmljZTksIElEaXJlY3QzRERldmljZTkqLCBfY2RlY2wsIChXS0NBQ0ZWaWV3UmVmIHZp
ZXcpKQogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjU4LDYgKzI2NSwx
NyBAQCB2b2lkIExheWVyVHJlZUhvc3RDQVdpbjo6c2V0Um9vdENvbXBvc2l0CiAgICAgTGF5ZXJU
cmVlSG9zdENBOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xheWVyKTsKIH0KIAor
I2lmIFVTRShBVkZPVU5EQVRJT04pCitXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIqIExh
eWVyVHJlZUhvc3RDQVdpbjo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3QKK3sKKyAgICBp
ZiAoIVdLQ0FDRlZpZXdHZXREM0REZXZpY2U5UHRyKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NEZXZpY2VBZGFwdGVyKj4oV0tDQUNG
Vmlld0dldEQzRERldmljZTlQdHIoKShtX3ZpZXcuZ2V0KCkpKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAorCiAjZW5kaWYgLy8gSEFWRShXS1FDQSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS93aW4vTGF5ZXJUcmVlSG9zdENBV2luLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9M
YXllclRyZWVIb3N0Q0FXaW4uaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2NhL3dpbi9MYXllclRyZWVIb3N0Q0FXaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExh
eWVyVHJlZUhvc3RDQVdpbj4gY3JlYXRlKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5MYXllclRy
ZWVIb3N0Q0FXaW4oKTsKIAorI2lmIFVTRShBVkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJD
b3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0
IE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTGF5ZXJUcmVlSG9z
dENBV2luKFdlYlBhZ2UqKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyMTEw
KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTItMDctMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRW5hYmxlIEFWQ0YgaGFyZHdhcmUgdmlkZW8gZGVjb2RpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDE1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xMDc3MDMxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmdyYXBoaWNzRGV2aWNlQWRhcHRlcik6IE5ldywg
cmV0dXJuIHRoZSB2aWV3J3MgZ3JhcGhpY3MgYWRhcHRlci4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudCk6CisKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmdyYXBoaWNzRGV2aWNlQWRh
cHRlcik6IE5ldywgcmV0dXJuIHRoZSBsYXllciB0cmVlIGhvc3QncyBncmFwaGljcyBhZGFwdGVy
LgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Vmlldyk6CisKIDIwMTItMDctMDMgIE1paGFpIEJhbGFuICA8bWliYWxhbkBhZG9iZS5jb20+CiAK
ICAgICAgICAgW0NTUyBSZWdpb25zXSBFbmFibGluZyByZWdpb25zIG9uIFdpbmRvd3MgbGVhZCB0
byBjcmFzaC1vbi1sYXVuY2ggZm9yIFdlYktpdC5leGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEs
IDIwMTIgQXBwbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTEgQXBwY2VsZXJhdG9yLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC02NTM2LDYgKzY1MzYsMTUgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKAogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZP
VU5EQVRJT04pCitXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIqIFdlYlZpZXc6OmdyYXBo
aWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3QtPmdyYXBoaWNzRGV2
aWNlQWRhcHRlcigpOworfQorI2VuZGlmCisKIEhSRVNVTFQgV2ViVmlldzo6dW51c2VkMSgpCiB7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lv
biAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwg
MjAxMSBBcHBjZWxlcmF0b3IsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMSBCcmVudCBGdWxnaGFtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTU1
LDYgKzU1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENBQ0ZMYXllclRyZWVI
b3N0OwogI2VuZGlmCiAgICAgY2xhc3MgRnVsbFNjcmVlbkNvbnRyb2xsZXI7CisjaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorICAgIHN0cnVjdCBHcmFwaGljc0RldmljZUFk
YXB0ZXI7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTQ3LDYgKzk1MCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSb290Q2hpbGRMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKik7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElP
TikKKyAgICBXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIqIGdyYXBoaWNzRGV2aWNlQWRh
cHRlcigpIGNvbnN0OworI2VuZGlmCisKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUo
V2ViQ29yZTo6Tm9kZSopOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIApJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCShyZXZpc2lvbiAxMjIxMTApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNyArNzUyLDEzIEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW4KIHsKICAgICBtX3dlYlZp
ZXctPmZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzU29vbigpOwogfQorI2VuZGlmCiAK
KyNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCitXZWJDb3JlOjpHcmFwaGlj
c0RldmljZUFkYXB0ZXIqIFdlYkNocm9tZUNsaWVudDo6Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5ncmFwaGljc0RldmljZUFkYXB0ZXIoKTsK
K30KICNlbmRpZgogCiBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IFdlYkNocm9tZUNsaWVudDo6dWlE
ZWxlZ2F0ZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMTIyMTEwKQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw2ICsxNDIsMTAgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21w
b3NpdGluZ0xheWVyU3luYygpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShB
VkZPVU5EQVRJT04pCisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0RldmljZUFkYXB0ZXIq
IGdyYXBoaWNzRGV2aWNlQWRhcHRlcigpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBj
b25zdCB7IH0KIAogI2lmIEVOQUJMRShWSURFTykK
</data>
<flag name="review"
          id="159712"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>