<?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>199740</bug_id>
          
          <creation_ts>2019-07-11 17:39:49 -0700</creation_ts>
          <short_desc>[WebGPU] Move error scopes out of GPUDevice for more portable error generation</short_desc>
          <delta_ts>2019-07-16 17:04:36 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1552310</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-11 17:39:49 -0700</bug_when>
    <thetext>[WebGPU] Move error scopes out of GPUDevice for more portable error generation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552313</commentid>
    <comment_count>1</comment_count>
      <attachid>373984</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-11 17:54:00 -0700</bug_when>
    <thetext>Created attachment 373984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552317</commentid>
    <comment_count>2</comment_count>
      <attachid>373984</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-07-11 18:05:17 -0700</bug_when>
    <thetext>Comment on attachment 373984
Patch

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

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:90
&gt; +    auto buffer = m_device-&gt;tryCreateBuffer(descriptor, false, m_errorGenerator.copyRef());

It&apos;s not obvious what &quot;false&quot; means here. Usually we use two-value enums to make this more readable.

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:189
&gt; -void WebGPUDevice::pushErrorScope(GPUErrorFilter filter) const
&gt; +void WebGPUDevice::popErrorScope(ErrorPromise&amp;&amp; promise)

wat

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUBufferMetal.mm:105
&gt; +        errorGenerator-&gt;generateError(&quot;&quot;, GPUErrorFilter::OutOfMemory);

&quot;generator&quot; isn&apos;t really the best name. It doesn&apos;t actually generate errors...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552327</commentid>
    <comment_count>3</comment_count>
      <attachid>373984</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-11 18:15:22 -0700</bug_when>
    <thetext>Comment on attachment 373984
Patch

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

&gt;&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:189
&gt;&gt; +void WebGPUDevice::popErrorScope(ErrorPromise&amp;&amp; promise)
&gt; 
&gt; wat

Moved implementation of pushErrorScope to header since it&apos;s trivial and we need to include GPUErrorGenerator anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552501</commentid>
    <comment_count>4</comment_count>
      <attachid>374030</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-12 13:21:08 -0700</bug_when>
    <thetext>Created attachment 374030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552516</commentid>
    <comment_count>5</comment_count>
      <attachid>374030</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-12 14:07:55 -0700</bug_when>
    <thetext>Comment on attachment 374030
Patch

Clearing flags on attachment: 374030

Committed r247397: &lt;https://trac.webkit.org/changeset/247397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552517</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-12 14:07:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552518</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-12 14:08:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/53025854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552945</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-15 13:38:09 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/r247442 because it conflicted with the rollout of https://bugs.webkit.org/show_bug.cgi?id=199655, which broke the watchOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552946</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-07-15 13:38:21 -0700</bug_when>
    <thetext>Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553392</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-16 17:04:18 -0700</bug_when>
    <thetext>Re-landed in https://trac.webkit.org/changeset/247500/webkit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373984</attachid>
            <date>2019-07-11 17:54:00 -0700</date>
            <delta_ts>2019-07-12 13:21:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199740-20190711175359.patch</filename>
            <type>text/plain</type>
            <size>29864</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM0Mjc3NDI5N2EzNDcw
OWFkZWM4YjAzMDU4MDM5OTZlNDQ1NDZkOS4uY2Q5ZTM5NzE2YmM4NjJjZDcwNDVjYmMwMzMzYjMw
NGQ5NTExZjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA3LTExICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gTW92ZSBl
cnJvciBzY29wZXMgb3V0IG9mIEdQVURldmljZSBmb3IgbW9yZSBwb3J0YWJsZSBlcnJvciBnZW5l
cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTk3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
b3ZlIGVycm9yIGdlbmVyYXRpb24gaW50byBhIHNlcGFyYXRlIFJlZkNvdW50ZWQgY2xhc3MgdG8g
YWxsb3cgR1BVIG9iamVjdHMgdG8gZ2VuZXJhdGUgCisgICAgICAgIGVycm9ycyBpbmRlcGVuZGVu
dCBvZiBhbnkgR1BVRGV2aWNlLgorICAgICAgICBDcmVhdGUgR1BVT2JqZWN0QmFzZSB0byBkZWxl
Z2F0ZSBlcnJvciBnZW5lcmF0aW9uIGFuZCByZWZhY3RvciBHUFVCdWZmZXIgdG8gaW5oZXJpdCBm
cm9tIEdQVU9iamVjdEJhc2UuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlIG9yIG5ldyB0
ZXN0cy4gRXJyb3Igc2NvcGVzIGNvdmVyZWQgYnkgZXJyb3Itc2NvcGVzLXRlc3QuaHRtbC4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZSk6IE5vdyBjcmVhdGVzIGEgR1BVRXJyb3JH
ZW5lcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZlciBj
b25zdCk6IFBhc3MgdGhlIEdQVUVycm9yR2VuZXJhdG9yIHRvIGFueSBjcmVhdGVkIEdQVUJ1ZmZl
ci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkIGNv
bnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OnBvcEVycm9yU2Nv
cGUpOiBTaG91bGRuJ3QgYmUgY29uc3QuIENhbiBqdXN0IGFzayBmb3IgdGhlIEdQVUVycm9yIHJh
dGhlciB0aGFuIHBhc3NpbmcgYSBsYW1iZGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZp
Y2U6OnB1c2hFcnJvclNjb3BlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVURldmljZTo6cG9wRXJyb3JTY29wZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZp
Y2U6OnB1c2hFcnJvclNjb3BlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUJ1ZmZlci5oOiBOb3cgaW5oZXJpdHMgZnJvbSBHUFVPYmplY3RCYXNlIGZv
ciBlcnJvciBnZW5lcmF0aW9uIGVhc2UuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1
ZmZlcik6IEVuc3VyZSBHUFVCdWZmZXJzIHJlZmVyZW5jZSB0aGUgR1BVRXJyb3JHZW5lcmF0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKTogRGVsZXRlZC4g
Tm8gbG9uZ2VyIG5lZWRlZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpwb3BF
cnJvclNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6cmVnaXN0
ZXJFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5oOiBNb3ZlIGVycm9yIHNjb3BlIGxvZ2ljIG91dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3JHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUVycm9yR2VuZXJhdG9yOjpwdXNoRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVFcnJvckdlbmVyYXRvcjo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpH
UFVFcnJvckdlbmVyYXRvcjo6Z2VuZXJhdGVFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUVycm9yR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R1BVRXJyb3JHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVU9iamVjdEJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVPYmplY3RC
YXNlOjpnZW5lcmF0ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVU9iamVjdEJhc2U6OkdQ
VU9iamVjdEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVC
dWZmZXJNZXRhbC5tbTogVXNlIHRoZSBHUFVFcnJvckdlbmVyYXRvciBkaXJlY3RseSBkdXJpbmcg
YnVmZmVyIGNyZWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjp2YWxpZGF0ZUJ1
ZmZlclVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkdQVVF1ZXVlOjpzdWJtaXQpOiBQcmV2ZW50IHBvc3NpYmxlIG51bGwgZGVyZWZlcmVuY2UuCisK
IDIwMTktMDctMTEgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV1bR1RLXSBCdWlsZCBmYWlsdXJlIHdpdGggRU5BQkxFX0FDQ0VTU0lCSUxJVFk9
T0ZGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApp
bmRleCBlMzE5ZTIxOTU1MDQzOGU4YzJhY2JiZDIyY2ZmODUxNWI0NzdiNmQyLi41MTE2YmYwYmY0
NDc0YWZlMWNmODZlNmMzNTk1MjQ1ZmYwYjZjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRl
ICJXZWJHUFVTd2FwQ2hhaW4uaCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlLmgiCiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODAsMTIgKzgxLDEzIEBAIFJlZlB0cjxXZWJHUFVEZXZp
Y2U+IFdlYkdQVURldmljZTo6dHJ5Q3JlYXRlKFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFk
YXB0ZXIpCiBXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8Y29uc3QgV2ViR1BVQWRhcHRl
cj4mJiBhZGFwdGVyLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKICAgICA6IG1fYWRhcHRlcihX
VEZNb3ZlKGFkYXB0ZXIpKQogICAgICwgbV9kZXZpY2UoV1RGTW92ZShkZXZpY2UpKQorICAgICwg
bV9lcnJvckdlbmVyYXRvcihHUFVFcnJvckdlbmVyYXRvcjo6Y3JlYXRlKCkpCiB7CiB9CiAKIFJl
ZjxXZWJHUFVCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZl
ckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiB7Ci0gICAgYXV0byBidWZmZXIgPSBtX2Rl
dmljZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IpOworICAgIGF1dG8gYnVmZmVyID0gbV9k
ZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCBmYWxzZSwgbV9lcnJvckdlbmVyYXRv
ci5jb3B5UmVmKCkpOwogICAgIHJldHVybiBXZWJHUFVCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCkBAIC05Myw3ICs5NSw3IEBAIFZlY3RvcjxKU0M6OkpTVmFsdWU+IFdlYkdQ
VURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uCiB7
CiAgICAgSlNDOjpKU1ZhbHVlIHdyYXBwZWRBcnJheUJ1ZmZlciA9IEpTQzo6anNOdWxsKCk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwg
dHJ1ZSk7CisgICAgYXV0byBidWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2Ny
aXB0b3IsIHRydWUsIG1fZXJyb3JHZW5lcmF0b3IuY29weVJlZigpKTsKICAgICBpZiAoYnVmZmVy
KSB7CiAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBidWZmZXItPm1hcE9uQ3JlYXRpb24oKTsK
ICAgICAgICAgd3JhcHBlZEFycmF5QnVmZmVyID0gdG9KUygmc3RhdGUsIEpTQzo6anNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgYXJyYXlCdWZm
ZXIpOwpAQCAtMTg0LDE5ICsxODYsMTQgQEAgUmVmPFdlYkdQVVF1ZXVlPiBXZWJHUFVEZXZpY2U6
OmdldFF1ZXVlKCkgY29uc3QKICAgICByZXR1cm4gbWFrZVJlZigqbV9xdWV1ZS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViR1BVRGV2aWNlOjpwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlciBmaWx0
ZXIpIGNvbnN0Cit2b2lkIFdlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZShFcnJvclByb21pc2Um
JiBwcm9taXNlKQogewotICAgIG1fZGV2aWNlLT5wdXNoRXJyb3JTY29wZShmaWx0ZXIpOwotfQot
Ci12b2lkIFdlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJiBwcm9taXNl
KSBjb25zdAotewotICAgIG1fZGV2aWNlLT5wb3BFcnJvclNjb3BlKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKE9wdGlvbmFsPEdQVUVycm9yPiYmIGVycm9yLCBjb25zdCBTdHJpbmcmIGZh
aWxNZXNzYWdlKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGZhaWxNZXNzYWdlLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShlcnJvcik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBmYWlsTWVz
c2FnZSB9KTsKLSAgICB9KTsKKyAgICBTdHJpbmcgZmFpbE1lc3NhZ2U7CisgICAgT3B0aW9uYWw8
R1BVRXJyb3I+IGVycm9yID0gbV9lcnJvckdlbmVyYXRvci0+cG9wRXJyb3JTY29wZShmYWlsTWVz
c2FnZSk7CisgICAgaWYgKGZhaWxNZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKGVycm9yKTsKKyAgICBlbHNlCisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yLCAiR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKCk6ICIgKyBmYWls
TWVzc2FnZSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCBjYzI2ZDJkZGFhOWNiYzU4YjIx
YWU3NzMyOTI1YjM4ZTJhOTczNDhkLi4wNDY4OTE5M2M2OWQzZjYxYjUwNzIyY2JiMjc2MTQ4NDVl
MWJlZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKKyNpbmNsdWRlICJHUFVFcnJvckdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgogI2luY2x1ZGUg
IldlYkdQVVF1ZXVlLmgiCkBAIC05OSw4ICsxMDAsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2Vi
R1BVUXVldWU+IGdldFF1ZXVlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQ
VUVycm9yRmlsdGVyKSBjb25zdDsKLSAgICB2b2lkIHBvcEVycm9yU2NvcGUoRXJyb3JQcm9taXNl
JiYpIGNvbnN0OworICAgIHZvaWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVy
KSB7IG1fZXJyb3JHZW5lcmF0b3ItPnB1c2hFcnJvclNjb3BlKGZpbHRlcik7IH0KKyAgICB2b2lk
IHBvcEVycm9yU2NvcGUoRXJyb3JQcm9taXNlJiYpOwogCiBwcml2YXRlOgogICAgIFdlYkdQVURl
dmljZShSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4mJiwgUmVmPEdQVURldmljZT4mJik7CkBAIC0x
MDgsNiArMTA5LDggQEAgcHJpdmF0ZToKICAgICBSZWY8Y29uc3QgV2ViR1BVQWRhcHRlcj4gbV9h
ZGFwdGVyOwogICAgIFJlZjxHUFVEZXZpY2U+IG1fZGV2aWNlOwogICAgIG11dGFibGUgUmVmUHRy
PFdlYkdQVVF1ZXVlPiBtX3F1ZXVlOworCisgICAgUmVmPEdQVUVycm9yR2VuZXJhdG9yPiBtX2Vy
cm9yR2VuZXJhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCA4OGFlMjZhYzA1YzAzN2RhOTczNDg5OWQ3MzQwZTdjYTRlNDYzODYzLi5mMzVlZDhiNzIw
MTg5MGM5OTE5YjMyZGFlMmM1MmQ0ZjAzYTcwYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgyOSw2
ICsxODI5LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3Bw
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRXJyb3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JHZW5lcmF0
b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmFsaWRhdGlvbkVycm9yLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lTGF5b3V0LmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2MTMwMmVlYTE3ZGU2
YzhmMjg1ZmU3NzBmMmViMGFmNWE0M2RjY2UuLjQ1YTkzOTNmMDYyNTc3ZWY1NWY0MzM4NGIwMWE0
MTg1YzQ5ZDljMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzOTU0LDYgKzEzOTU0LDggQEAKIAkJRDAzMjExQ0UyMUFDOTU0
RTAwNzYzQ0YyIC8qIEdQVVJlbmRlclBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJl
bmRlclBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMzIxMUNG
MjFBQzk1NEUwMDc2M0NGMiAvKiBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDMyMTFEMDIxQUM5NTRGMDA3NjNDRjIgLyogR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAzNTg2QjEyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVy
cm9yR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUVycm9yR2VuZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVF
cnJvckdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVFcnJvckdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMzZERDhEMjA4RkZDMEMwMEY5RjRC
MiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFTVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDNDODQ5QTIx
RkZDNjY3MDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMDNDODQ5QzIxRkZDN0ZDMDAwMjIyN0YgLyogR1BVQ29tcGFyZUZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUNvbXBhcmVGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQwMzEsNiArMTQwMzMsNyBAQAogCQlEMDlBRkIxNzIyRDY2
OTRFMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVT3V0T2ZNZW1v
cnlFcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOUFGQjE5MjJENjY5
OEEwMEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVU91
dE9mTWVtb3J5RXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5QUZCMkQy
MkQ2QzAxNDAwQzQ1MzhDIC8qIEdQVUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUVy
cm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA5QUZCMzcyMkQ3RDVDNjAw
QzQ1MzhDIC8qIEdQVU9iamVjdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT2JqZWN0QmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NDIwOTJBMEE2MDBFMEMyNTkg
LyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDBBMjBENTYyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MzM3LDkgKzE4MzQwLDEyIEBACiAJCQkJRDA5
QUZCMkQyMkQ2QzAxNDAwQzQ1MzhDIC8qIEdQVUVycm9yLmNwcCAqLywKIAkJCQlEMDlBRkIwNzIy
RDUzOTFCMDBDNDUzOEMgLyogR1BVRXJyb3IuaCAqLywKIAkJCQlEMDlBRkIwMjIyRDA0NzE5MDBD
NDUzOEMgLyogR1BVRXJyb3JGaWx0ZXIuaCAqLywKKwkJCQlEMDM1ODZCMjIyRDdGMkVBMDBEQTAy
ODQgLyogR1BVRXJyb3JHZW5lcmF0b3IuY3BwICovLAorCQkJCUQwMzU4NkIxMjJEN0YyRUEwMERB
MDI4NCAvKiBHUFVFcnJvckdlbmVyYXRvci5oICovLAogCQkJCUQwMjZGNDdEMjIwQTJBQzYwMEFD
NUY0OSAvKiBHUFVFeHRlbnQzRC5oICovLAogCQkJCUQwRjc1NTlGMjIwM0JBMTQwMDExODA1OCAv
KiBHUFVMaW1pdHMuaCAqLywKIAkJCQlEMDhBQTAyRjIyMEQwQkQ1MDA1OEM1MDIgLyogR1BVTG9h
ZE9wLmggKi8sCisJCQkJRDA5QUZCMzcyMkQ3RDVDNjAwQzQ1MzhDIC8qIEdQVU9iamVjdEJhc2Uu
aCAqLywKIAkJCQlEMDlBRkIxOTIyRDY2OThBMDBDNDUzOEMgLyogR1BVT3V0T2ZNZW1vcnlFcnJv
ci5oICovLAogCQkJCTMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmggKi8sCiAJCQkJRDAwMzI4ODcyMUM5QTRFNTAwNjIyQUE2IC8qIEdQVVBpcGVs
aW5lTGF5b3V0LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVCdWZmZXIuaAppbmRleCA4ZGEwNDMyMzY5YTcxNDc1NDllZDg1YzUzYmY3MzQzNDE0
NmFlOGRkLi4zN2NmMTQ2NGZhY2Q0ZWU2OWQwMjVjNGNjZTRmY2Y5NDAyM2Q0NTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJEZWZlcnJhYmxlVGFzay5oIgogI2luY2x1ZGUgIkdQ
VUJ1ZmZlclVzYWdlLmgiCisjaW5jbHVkZSAiR1BVT2JqZWN0QmFzZS5oIgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CkBAIC01OCw3ICs1OSw3IEBAIHVzaW5nIFBsYXRmb3JtQnVmZmVyID0gdm9pZDsKICNl
bmRpZgogdXNpbmcgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciA9IFJldGFpblB0cjxQbGF0Zm9ybUJ1
ZmZlcj47CiAKLWNsYXNzIEdQVUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlcj4g
eworY2xhc3MgR1BVQnVmZmVyIDogcHVibGljIEdQVU9iamVjdEJhc2UgewogcHVibGljOgogICAg
IGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBNYXBwZWQsCkBAIC02OCw3ICs2OSw3IEBAIHB1
YmxpYzoKIAogICAgIH5HUFVCdWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVy
PiB0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYs
IGJvb2wgaXNNYXBwZWRPbkNyZWF0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEdQVUJ1ZmZlcj4g
dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBi
b29sIGlzTWFwcGVkT25DcmVhdGlvbiwgUmVmPEdQVUVycm9yR2VuZXJhdG9yPiYmKTsKIAogICAg
IFBsYXRmb3JtQnVmZmVyICpwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1CdWZmZXIuZ2V0KCk7IH0KICAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fYnl0ZUxlbmd0aDsgfQpAQCAtMTA3LDggKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFBl
bmRpbmdNYXBwaW5nQ2FsbGJhY2soTWFwcGluZ0NhbGxiYWNrJiYpOwogICAgIH07CiAKLSAgICBH
UFVCdWZmZXIoUGxhdGZvcm1CdWZmZXJTbWFydFB0ciYmLCBSZWY8R1BVRGV2aWNlPiYmLCBzaXpl
X3QsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBib29sKTsKLSAgICBzdGF0aWMg
Ym9vbCB2YWxpZGF0ZUJ1ZmZlclVzYWdlKEdQVURldmljZSYsIE9wdGlvblNldDxHUFVCdWZmZXJV
c2FnZTo6RmxhZ3M+KTsKKyAgICBHUFVCdWZmZXIoUGxhdGZvcm1CdWZmZXJTbWFydFB0ciYmLCBS
ZWY8R1BVRGV2aWNlPiYmLCBzaXplX3QsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+
LCBib29sLCBSZWY8R1BVRXJyb3JHZW5lcmF0b3I+JiYpOworICAgIHN0YXRpYyBib29sIHZhbGlk
YXRlQnVmZmVyVXNhZ2UoR1BVRGV2aWNlJiwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFn
cz4sIEdQVUVycm9yR2VuZXJhdG9yJik7CiAKICAgICBKU0M6OkFycmF5QnVmZmVyKiBzdGFnaW5n
QnVmZmVyRm9yUmVhZCgpOwogICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JX
cml0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmNwcAppbmRleCBkNjNmNTZjYWJhMjMxOTQyM2Y3NjgzOWFmNGViYmE1OTZkMzc0NzI1
Li42N2NiNmJhNTg3N2JmZGFmODExYWVkYTM4M2FjNTA4NzY0ZjU4NzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKICNpbmNsdWRlICJHUFVD
b21wdXRlUGlwZWxpbmUuaCIKICNpbmNsdWRlICJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiR1BVRXJyb3JHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJHUFVQaXBlbGlu
ZUxheW91dC5oIgogI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCkBAIC01MSw5ICs1Miw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCdWZm
ZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc01hcHBlZE9u
Q3JlYXRpb24pCitSZWZQdHI8R1BVQnVmZmVyPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihj
b25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzTWFwcGVkT25DcmVh
dGlvbiwgUmVmPEdQVUVycm9yR2VuZXJhdG9yPiYmIGVycm9yR2VuZXJhdG9yKQogewotICAgIHJl
dHVybiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShtYWtlUmVmKCp0aGlzKSwgZGVzY3JpcHRvciwgaXNN
YXBwZWRPbkNyZWF0aW9uKTsKKyAgICByZXR1cm4gR1BVQnVmZmVyOjp0cnlDcmVhdGUobWFrZVJl
ZigqdGhpcyksIGRlc2NyaXB0b3IsIGlzTWFwcGVkT25DcmVhdGlvbiwgV1RGTW92ZShlcnJvckdl
bmVyYXRvcikpOwogfQogCiBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVU
ZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdApAQCAt
MTA5LDQwICsxMTAsNiBAQCB2b2lkIEdQVURldmljZTo6c2V0U3dhcENoYWluKFJlZlB0cjxHUFVT
d2FwQ2hhaW4+JiYgc3dhcENoYWluKQogICAgIG1fc3dhcENoYWluID0gV1RGTW92ZShzd2FwQ2hh
aW4pOwogfQogCi12b2lkIEdQVURldmljZTo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIg
ZmlsdGVyKQotewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIs
IFdURjo6bnVsbG9wdCB9KTsKLX0KLQotdm9pZCBHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUoRXJy
b3JDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGlmICghbV9wbGF0Zm9ybURldmljZSkKLSAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCAiR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKCk6
IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAgIGVsc2UgaWYgKG1fZXJyb3JTY29wZXMuaXNFbXB0
eSgpKQotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsICJHUFVEZXZpY2U6OnBvcEVycm9y
U2NvcGUoKTogTm8gZXJyb3Igc2NvcGUgZXhpc3RzISIpOwotICAgIGVsc2UgewotICAgICAgICBh
dXRvIHNjb3BlID0gbV9lcnJvclNjb3Blcy50YWtlTGFzdCgpOwotICAgICAgICBjYWxsYmFjayhz
Y29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUgPyBXVEY6Om51bGxvcHQgOiBXVEZN
b3ZlKHNjb3BlLmVycm9yKSwgeyB9KTsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVRGV2aWNlOjpyZWdp
c3RlckVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQot
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OmZpbmRfaWYobV9lcnJvclNjb3Blcy5yYmVnaW4o
KSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtmaWx0ZXJdKGNvbnN0IEVycm9yU2NvcGUmIHNjb3Bl
KSB7Ci0gICAgICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUg
fHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsKLSAgICB9KTsKLQotICAgIC8vIEZJWE1FOiBodHRw
czovL3dlYmtpdC5vcmcvYi8xOTk2NzYgVW5jYXB0dXJlZCBlcnJvcnMgbmVlZCB0byBiZSBmaXJl
ZCBhcyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudHMuCi0gICAgaWYgKGl0ZXJhdG9yID09IG1fZXJy
b3JTY29wZXMucmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiB0aGUgc2NvcGUg
aGFzIGFscmVhZHkgY2FwdHVyZWQgYW4gZXJyb3IsIGlnbm9yZSB0aGlzIG5ldyBvbmUuCi0gICAg
aWYgKGl0ZXJhdG9yLT5lcnJvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaXRlcmF0b3ItPmVy
cm9yID0gY3JlYXRlRXJyb3IoZmlsdGVyLCBtZXNzYWdlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAppbmRleCA5MGI0NjFhMTc0NjAyZDU4
NTczMDM3ZDVjYTU5M2MwZjUxYjZhNmEzLi4wMjZmMWVlMmI3Yzc4MjhhMjUyNzAyNjNkZGZmNTg1
MGZhYjRmOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVURldmljZS5oCkBAIC0yNywxNyArMjcsMTMgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAK
LSNpbmNsdWRlICJHUFVFcnJvci5oIgotI2luY2x1ZGUgIkdQVUVycm9yRmlsdGVyLmgiCiAjaW5j
bHVkZSAiR1BVUXVldWUuaCIKICNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogT0JKQ19QUk9UT0NPTChNVExEZXZpY2UpOwogCkBAIC00Nyw2ICs0Myw3
IEBAIGNsYXNzIEdQVUJpbmRHcm91cExheW91dDsKIGNsYXNzIEdQVUJ1ZmZlcjsKIGNsYXNzIEdQ
VUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBHUFVDb21wdXRlUGlwZWxpbmU7CitjbGFzcyBHUFVFcnJv
ckdlbmVyYXRvcjsKIGNsYXNzIEdQVVBpcGVsaW5lTGF5b3V0OwogY2xhc3MgR1BVUmVuZGVyUGlw
ZWxpbmU7CiBjbGFzcyBHUFVTYW1wbGVyOwpAQCAtNzEsNyArNjgsNyBAQCBjbGFzcyBHUFVEZXZp
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
R1BVRGV2aWNlPgogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiB0cnlDcmVh
dGUoY29uc3QgT3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwogCi0gICAgUmVm
UHRyPEdQVUJ1ZmZlcj4gdHJ5Q3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3Im
LCBib29sIGlzTWFwcGVkT25DcmVhdGlvbiA9IGZhbHNlKTsKKyAgICBSZWZQdHI8R1BVQnVmZmVy
PiB0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIGJvb2wgaXNNYXBw
ZWRPbkNyZWF0aW9uLCBSZWY8R1BVRXJyb3JHZW5lcmF0b3I+JiYpOwogICAgIFJlZlB0cjxHUFVU
ZXh0dXJlPiB0cnlDcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJikgY29u
c3Q7CiAgICAgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2Ft
cGxlckRlc2NyaXB0b3ImKSBjb25zdDsKIApAQCAtOTAsMjUgKzg3LDEyIEBAIHB1YmxpYzoKICAg
ICBHUFVTd2FwQ2hhaW4qIHN3YXBDaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3dhcENoYWluLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRTd2FwQ2hhaW4oUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7CiAK
LSAgICB2b2lkIHB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyKTsKLQotICAgIHVzaW5nIEVy
cm9yQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8R1BVRXJyb3I+JiYsIGNv
bnN0IFN0cmluZyYpPjsKLSAgICB2b2lkIHBvcEVycm9yU2NvcGUoRXJyb3JDYWxsYmFjayYmKTsK
LSAgICB2b2lkIHJlZ2lzdGVyRXJyb3IoY29uc3QgU3RyaW5nJiwgR1BVRXJyb3JGaWx0ZXIgPSBH
UFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbik7Ci0KIHByaXZhdGU6Ci0gICAgc3RydWN0IEVycm9y
U2NvcGUgewotICAgICAgICBjb25zdCBHUFVFcnJvckZpbHRlciBmaWx0ZXI7Ci0gICAgICAgIE9w
dGlvbmFsPEdQVUVycm9yPiBlcnJvcjsKLSAgICB9OwotCiAgICAgZXhwbGljaXQgR1BVRGV2aWNl
KFBsYXRmb3JtRGV2aWNlU21hcnRQdHImJik7CiAKICAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRy
IG1fcGxhdGZvcm1EZXZpY2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7
CiAgICAgUmVmUHRyPEdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47Ci0KLSAgICBWZWN0b3I8RXJy
b3JTY29wZT4gbV9lcnJvclNjb3BlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvckdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JHZW5lcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkM2I2NmEzYzE2NTRhMTgyZWRmZDM5MzdhZWVh
ZTBjYjA0YzljOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3JHZW5lcmF0b3IuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVRXJyb3JHZW5lcmF0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBH
UFVFcnJvckdlbmVyYXRvcjo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQor
eworICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIFdURjo6bnVs
bG9wdCB9KTsKK30KKworT3B0aW9uYWw8R1BVRXJyb3I+IEdQVUVycm9yR2VuZXJhdG9yOjpwb3BF
cnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpCit7CisgICAgaWYgKG1fZXJyb3JTY29wZXMu
aXNFbXB0eSgpKSB7CisgICAgICAgIGZhaWxNZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0
cyEiOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIGF1dG8gc2Nv
cGUgPSBtX2Vycm9yU2NvcGVzLnRha2VMYXN0KCk7CisgICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9
PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSA/IFdURjo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOworfQor
Cit2b2lkIEdQVUVycm9yR2VuZXJhdG9yOjpnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6
OmZpbmRfaWYobV9lcnJvclNjb3Blcy5yYmVnaW4oKSwgbV9lcnJvclNjb3Blcy5yZW5kKCksIFtm
aWx0ZXJdKGNvbnN0IEVycm9yU2NvcGUmIHNjb3BlKSB7CisgICAgICAgIHJldHVybiBzY29wZS5m
aWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUgfHwgc2NvcGUuZmlsdGVyID09IGZpbHRlcjsK
KyAgICB9KTsKKworICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi8xOTk2NzYgVW5j
YXB0dXJlZCBlcnJvcnMgbmVlZCB0byBiZSBmaXJlZCBhcyBHUFVVbmNhcHR1cmVkRXJyb3JFdmVu
dHMuCisgICAgaWYgKGl0ZXJhdG9yID09IG1fZXJyb3JTY29wZXMucmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBJZiB0aGUgc2NvcGUgaGFzIGFscmVhZHkgY2FwdHVyZWQgYW4gZXJy
b3IsIGlnbm9yZSB0aGlzIG5ldyBvbmUuCisgICAgaWYgKGl0ZXJhdG9yLT5lcnJvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaXRlcmF0b3ItPmVycm9yID0gY3JlYXRlRXJyb3IoZmlsdGVyLCBt
ZXNzYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVFcnJvckdlbmVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUVycm9yR2VuZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRmMTQ2OGM5Y2QzMzQ0NGUwODA3
Yjc2MjM1ODg4NjAzNzVlZjU1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvckdlbmVyYXRvci5oCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlICJHUFVFcnJvci5oIgorI2luY2x1ZGUgIkdQVUVycm9yRmlsdGVyLmgiCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUVycm9yR2VuZXJh
dG9yIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRXJyb3JHZW5lcmF0b3I+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPEdQVUVycm9yR2VuZXJhdG9yPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEdQVUVycm9yR2VuZXJhdG9yKTsgfQorCisgICAgdm9pZCBwdXNoRXJyb3JTY29wZShH
UFVFcnJvckZpbHRlcik7CisgICAgT3B0aW9uYWw8R1BVRXJyb3I+IHBvcEVycm9yU2NvcGUoU3Ry
aW5nJiBmYWlsTWVzc2FnZSk7CisgICAgdm9pZCBnZW5lcmF0ZUVycm9yKGNvbnN0IFN0cmluZyYs
IEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOworCitwcml2YXRl
OgorICAgIHN0cnVjdCBFcnJvclNjb3BlIHsKKyAgICAgICAgY29uc3QgR1BVRXJyb3JGaWx0ZXIg
ZmlsdGVyOworICAgICAgICBPcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7CisgICAgfTsKKworICAg
IEdQVUVycm9yR2VuZXJhdG9yKCkgPSBkZWZhdWx0OworCisgICAgVmVjdG9yPEVycm9yU2NvcGU+
IG1fZXJyb3JTY29wZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZjNDBkMjAyYzZiMTMzZGM1Zjlh
ZGY5NDQ4Y2Y2MGNhOWVmZDZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
IkdQVUVycm9yR2VuZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVPYmplY3RCYXNlIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVT2JqZWN0QmFzZT4geworcHVibGljOgorICAgIHZvaWQgZ2VuZXJhdGVFcnJvcihjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEdQVUVycm9yRmlsdGVyIGZpbHRlciA9IEdQVUVycm9yRmlsdGVy
OjpWYWxpZGF0aW9uKQorICAgIHsKKyAgICAgICAgbV9lcnJvckdlbmVyYXRvci0+Z2VuZXJhdGVF
cnJvcihtZXNzYWdlLCBmaWx0ZXIpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIEdQVU9iamVj
dEJhc2UoUmVmPEdQVUVycm9yR2VuZXJhdG9yPiYmIHJlcG9ydGVyKQorICAgICAgICA6IG1fZXJy
b3JHZW5lcmF0b3IoV1RGTW92ZShyZXBvcnRlcikpIHsgfQorCitwcml2YXRlOgorICAgIFJlZjxH
UFVFcnJvckdlbmVyYXRvcj4gbV9lcnJvckdlbmVyYXRvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwu
bW0KaW5kZXggMDI0NjAzMTBjZmNlYjBiMmYxMDI5ZDZjZjE0NWEwOWY5MDQ2Yzg0Mi4uMmZiNWU0
NTZhMjQzOGViZDQ5YTg1NDgwZmNlZGZlZWVhZTQyODA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRh
bC5tbQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gcmVhZE9ubHlGbGFncyA9IE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+
IHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpJbmRleCwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpW
ZXJ0ZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSwgR1BVQnVmZmVyVXNhZ2U6OkZs
YWdzOjpUcmFuc2ZlclNvdXJjZSB9OwogCiAKLWJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZl
clVzYWdlKEdQVURldmljZSYgZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdz
PiB1c2FnZSkKK2Jvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlclVzYWdlKEdQVURldmljZSYg
ZGV2aWNlLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgR1BVRXJyb3JH
ZW5lcmF0b3ImIGVycm9yR2VuZXJhdG9yKQogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKCk6IElu
dmFsaWQgR1BVRGV2aWNlISIpOwpAQCAtNTAsNyArNTAsNyBAQCBib29sIEdQVUJ1ZmZlcjo6dmFs
aWRhdGVCdWZmZXJVc2FnZShHUFVEZXZpY2UmIGRldmljZSwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVz
YWdlOgogICAgIH0KIAogICAgIGlmICh1c2FnZS5jb250YWluc0FsbCh7IEdQVUJ1ZmZlclVzYWdl
OjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVhZCB9KSkgewot
ICAgICAgICBkZXZpY2UucmVnaXN0ZXJFcnJvcigiR1BVQnVmZmVyOjp0cnlDcmVhdGUoKTogQnVm
ZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEiKTsKKyAg
ICAgICAgZXJyb3JHZW5lcmF0b3IuZ2VuZXJhdGVFcnJvcigiR1BVQnVmZmVyOjp0cnlDcmVhdGUo
KTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjIsMTcgKzYyLDE3IEBAIGJv
b2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlclVzYWdlKEdQVURldmljZSYgZGV2aWNlLCBPcHRp
b25TZXQ8R1BVQnVmZmVyVXNhZ2U6CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxHUFVC
dWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlLCBjb25z
dCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzTWFwcGVkT25DcmVhdGlv
bikKK1JlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+
JiYgZGV2aWNlLCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlz
TWFwcGVkT25DcmVhdGlvbiwgUmVmPEdQVUVycm9yR2VuZXJhdG9yPiYmIGVycm9yR2VuZXJhdG9y
KQogewogICAgIC8vIE1UTEJ1ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNv
bWUgcGxhdGZvcm1zLgogICAgIE5TVUludGVnZXIgc2l6ZSA9IDA7CiAgICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoZGVzY3JpcHRvci5zaXplLCBzaXplKSkgewotICAgICAgICBkZXZpY2UtPnJl
Z2lzdGVyRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7CisgICAgICAgIGVy
cm9yR2VuZXJhdG9yLT5nZW5lcmF0ZUVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1v
cnkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvIHVzYWdlID0g
T3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2Fn
ZSk7Ci0gICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZS5nZXQoKSwgdXNhZ2UpKQor
ICAgIGlmICghdmFsaWRhdGVCdWZmZXJVc2FnZShkZXZpY2UuZ2V0KCksIHVzYWdlLCBlcnJvckdl
bmVyYXRvcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtMTAyLDE1ICsxMDIsMTYgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVh
dGUoUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckQKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogCiAgICAgaWYgKCFtdGxCdWZmZXIpIHsKLSAgICAgICAgZGV2
aWNlLT5yZWdpc3RlckVycm9yKCIiLCBHUFVFcnJvckZpbHRlcjo6T3V0T2ZNZW1vcnkpOworICAg
ICAgICBlcnJvckdlbmVyYXRvci0+Z2VuZXJhdGVFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91
dE9mTWVtb3J5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR1BVQnVmZmVyKFdURk1vdmUobXRsQnVmZmVyKSwgV1RGTW92ZShkZXZp
Y2UpLCBzaXplLCB1c2FnZSwgaXNNYXBwZWRPbkNyZWF0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgR1BVQnVmZmVyKFdURk1vdmUobXRsQnVmZmVyKSwgV1RGTW92ZShkZXZpY2UpLCBz
aXplLCB1c2FnZSwgaXNNYXBwZWRPbkNyZWF0aW9uLCBXVEZNb3ZlKGVycm9yR2VuZXJhdG9yKSkp
OwogfQogCi1HUFVCdWZmZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYmIGJ1ZmZl
ciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8R1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgYm9vbCBpc01hcHBlZCkKLSAgICA6IG1fcGxhdGZvcm1C
dWZmZXIoV1RGTW92ZShidWZmZXIpKQorR1BVQnVmZmVyOjpHUFVCdWZmZXIoUmV0YWluUHRyPE1U
TEJ1ZmZlcj4mJiBidWZmZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlLCBzaXplX3Qgc2l6ZSwg
T3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gdXNhZ2UsIGJvb2wgaXNNYXBwZWQsIFJl
ZjxHUFVFcnJvckdlbmVyYXRvcj4mJiBlcnJvckdlbmVyYXRvcikKKyAgICA6IEdQVU9iamVjdEJh
c2UoV1RGTW92ZShlcnJvckdlbmVyYXRvcikpCisgICAgLCBtX3BsYXRmb3JtQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSkKICAgICAsIG1fZGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKICAgICAsIG1fYnl0
ZUxlbmd0aChzaXplKQogICAgICwgbV91c2FnZSh1c2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0K
aW5kZXggYTllYTNjYmVlNThjODM5NzMxN2M3NTg0YWVlZjg0MTVjMDc2NDczNi4uMTc0ZDg2NGRl
NDA3ODA1MTVmMmM5NzAyODI1NTUxYWUyY2Y0ZmMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0K
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBHUFVRdWV1ZTo6c3VibWl0KFZlY3RvcjxSZWY8R1BVQ29t
bWFuZEJ1ZmZlcj4+JiYgY29tbWFuZEJ1ZmZlcnMpCiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAgICAgfQogCi0gICAgaWYgKG1fcHJlc2VudFRhc2suaGFzUGVuZGluZ1Rhc2so
KSB8fCAhbV9kZXZpY2UtPnN3YXBDaGFpbigpKQorICAgIGlmIChtX3ByZXNlbnRUYXNrLmhhc1Bl
bmRpbmdUYXNrKCkgfHwgIW1fZGV2aWNlIHx8ICFtX2RldmljZS0+c3dhcENoYWluKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElmIGEgR1BVU3dhcENoYWluIGV4aXN0cywgZW5zdXJlIHRo
YXQgYSBwcmVzZW50IGlzIHNjaGVkdWxlZCBhZnRlciBhbGwgY29tbWFuZCBidWZmZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374030</attachid>
            <date>2019-07-12 13:21:08 -0700</date>
            <delta_ts>2019-07-12 13:21:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199740-20190712132107.patch</filename>
            <type>text/plain</type>
            <size>31378</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJmOTJhNmVjNDA5YzIz
YjFkZjgzYmM0YzFmMjBkMDhjMjdiY2MyZi4uOGZiOWY3ZjU0YThmMWUwM2E1NzQ2N2NjZWYzZWFi
M2VkZGFkODZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE5LTA3LTExICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gTW92ZSBl
cnJvciBzY29wZXMgb3V0IG9mIEdQVURldmljZSBmb3IgbW9yZSBwb3J0YWJsZSBlcnJvciBnZW5l
cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTk3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAg
ICBNb3ZlIGVycm9yIGdlbmVyYXRpb24gaW50byBhIHNlcGFyYXRlIFJlZkNvdW50ZWQgY2xhc3Mg
dG8gYWxsb3cgR1BVIG9iamVjdHMgdG8gZ2VuZXJhdGUgCisgICAgICAgIGVycm9ycyBpbmRlcGVu
ZGVudCBvZiBhbnkgR1BVRGV2aWNlLgorICAgICAgICBDcmVhdGUgR1BVT2JqZWN0QmFzZSB0byBk
ZWxlZ2F0ZSBlcnJvciBnZW5lcmF0aW9uIGFuZCByZWZhY3RvciBHUFVCdWZmZXIgdG8gaW5oZXJp
dCBmcm9tIEdQVU9iamVjdEJhc2UuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlIG9yIG5l
dyB0ZXN0cy4gRXJyb3Igc2NvcGVzIGNvdmVyZWQgYnkgZXJyb3Itc2NvcGVzLXRlc3QuaHRtbC4K
KworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZSk6IE5vdyBjcmVhdGVzIGEgR1BVRXJy
b3JHZW5lcmF0b3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZUJ1ZmZl
ciBjb25zdCk6IFBhc3MgdGhlIEdQVUVycm9yR2VuZXJhdG9yIHRvIGFueSBjcmVhdGVkIEdQVUJ1
ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVk
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OnBvcEVycm9y
U2NvcGUpOiBTaG91bGRuJ3QgYmUgY29uc3QuIENhbiBqdXN0IGFzayBmb3IgdGhlIEdQVUVycm9y
IHJhdGhlciB0aGFuIHBhc3NpbmcgYSBsYW1iZGEuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVE
ZXZpY2U6OnB1c2hFcnJvclNjb3BlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkdQVURldmljZTo6cG9wRXJyb3JTY29wZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVE
ZXZpY2U6OnB1c2hFcnJvclNjb3BlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oOiBOb3cgaW5oZXJpdHMgZnJvbSBHUFVPYmplY3RCYXNl
IGZvciBlcnJvciBnZW5lcmF0aW9uIGVhc2UuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0
ZUJ1ZmZlcik6IEVuc3VyZSBHUFVCdWZmZXJzIHJlZmVyZW5jZSB0aGUgR1BVRXJyb3JHZW5lcmF0
b3IuCisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKTogRGVsZXRl
ZC4gTm8gbG9uZ2VyIG5lZWRlZCBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpw
b3BFcnJvclNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6cmVn
aXN0ZXJFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURldmljZS5oOiBNb3ZlIGVycm9yIHNjb3BlIGxvZ2ljIG91dC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVRXJyb3JHZW5lcmF0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdQVUVycm9yR2VuZXJhdG9yOjpwdXNoRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVFcnJvckdlbmVyYXRvcjo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVFcnJvckdlbmVyYXRvcjo6Z2VuZXJhdGVFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yR2VuZXJhdG9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R1BVRXJyb3JHZW5lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVU9iamVjdEJhc2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVPYmpl
Y3RCYXNlOjpnZW5lcmF0ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVU9iamVjdEJhc2U6
OkdQVU9iamVjdEJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCdWZmZXJNZXRhbC5tbTogVXNlIHRoZSBHUFVFcnJvckdlbmVyYXRvciBkaXJlY3RseSBkdXJp
bmcgYnVmZmVyIGNyZWF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjp2YWxpZGF0
ZUJ1ZmZlclVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVF1ZXVlOjpzdWJtaXQpOiBQcmV2ZW50IHBvc3NpYmxlIG51bGwgZGVyZWZlcmVuY2Uu
CisKIDIwMTktMDctMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN0b3BwaW5nIGEgY2xvbmVkIE1lZGlhU3RyZWFtIHZpZGVvIHRyYWNrIHNob3VsZCBub3Qg
c3RvcCBhbnkgb3RoZXIgdmlkZW8gdHJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGUzMTllMjE5NTUwNDM4ZThjMmFjYmJkMjJjZmY4
NTE1YjQ3N2I2ZDIuLmQzOTQyNzYwNWVhYWFiODA4MWRiYjc5OWYyYWFhZjYzOTY0M2RiNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAt
NjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbi5oIgogI2luY2x1ZGUgIldl
YkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04MCwxMiArODEs
MTMgQEAgUmVmUHRyPFdlYkdQVURldmljZT4gV2ViR1BVRGV2aWNlOjp0cnlDcmVhdGUoUmVmPGNv
bnN0IFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNl
KFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2
aWNlKQogICAgIDogbV9hZGFwdGVyKFdURk1vdmUoYWRhcHRlcikpCiAgICAgLCBtX2RldmljZShX
VEZNb3ZlKGRldmljZSkpCisgICAgLCBtX2Vycm9yU2NvcGVzKEdQVUVycm9yU2NvcGVzOjpjcmVh
dGUoKSkKIHsKIH0KIAogUmVmPFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZm
ZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKIHsKLSAgICBh
dXRvIGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvcik7CisgICAg
YXV0byBidWZmZXIgPSBtX2RldmljZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IsIEdQVUJ1
ZmZlck1hcHBlZE9wdGlvbjo6Tm90TWFwcGVkLCBtX2Vycm9yU2NvcGVzLmNvcHlSZWYoKSk7CiAg
ICAgcmV0dXJuIFdlYkdQVUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKQEAg
LTkzLDcgKzk1LDcgQEAgVmVjdG9yPEpTQzo6SlNWYWx1ZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVC
dWZmZXJNYXBwZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb24KIHsKICAgICBKU0M6OkpTVmFs
dWUgd3JhcHBlZEFycmF5QnVmZmVyID0gSlNDOjpqc051bGwoKTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gbV9kZXZpY2UtPnRyeUNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1fZGV2aWNlLT50cnlDcmVhdGVCdWZmZXIoZGVzY3JpcHRvciwgR1BVQnVmZmVy
TWFwcGVkT3B0aW9uOjpJc01hcHBlZCwgbV9lcnJvclNjb3Blcy5jb3B5UmVmKCkpOwogICAgIGlm
IChidWZmZXIpIHsKICAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGJ1ZmZlci0+bWFwT25DcmVh
dGlvbigpOwogICAgICAgICB3cmFwcGVkQXJyYXlCdWZmZXIgPSB0b0pTKCZzdGF0ZSwgSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBh
cnJheUJ1ZmZlcik7CkBAIC0xODQsMTkgKzE4NiwxNCBAQCBSZWY8V2ViR1BVUXVldWU+IFdlYkdQ
VURldmljZTo6Z2V0UXVldWUoKSBjb25zdAogICAgIHJldHVybiBtYWtlUmVmKCptX3F1ZXVlLmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJHUFVEZXZpY2U6OnB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmls
dGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgV2ViR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKEVycm9y
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgbV9kZXZpY2UtPnB1c2hFcnJvclNjb3BlKGZpbHRl
cik7Ci19Ci0KLXZvaWQgV2ViR1BVRGV2aWNlOjpwb3BFcnJvclNjb3BlKEVycm9yUHJvbWlzZSYm
IHByb21pc2UpIGNvbnN0Ci17Ci0gICAgbV9kZXZpY2UtPnBvcEVycm9yU2NvcGUoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoT3B0aW9uYWw8R1BVRXJyb3I+JiYgZXJyb3IsIGNvbnN0IFN0
cmluZyYgZmFpbE1lc3NhZ2UpIG11dGFibGUgewotICAgICAgICBpZiAoZmFpbE1lc3NhZ2UuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGVycm9yKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Is
IGZhaWxNZXNzYWdlIH0pOwotICAgIH0pOworICAgIFN0cmluZyBmYWlsTWVzc2FnZTsKKyAgICBP
cHRpb25hbDxHUFVFcnJvcj4gZXJyb3IgPSBtX2Vycm9yU2NvcGVzLT5wb3BFcnJvclNjb3BlKGZh
aWxNZXNzYWdlKTsKKyAgICBpZiAoZmFpbE1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBwcm9t
aXNlLnJlc29sdmUoZXJyb3IpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJHUFVEZXZpY2U6OnBvcEVycm9yU2NvcGUoKTogIiAr
IGZhaWxNZXNzYWdlIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCmluZGV4IGNjMjZkMmRkYWE5Y2Jj
NThiMjFhZTc3MzI5MjViMzhlMmE5NzM0OGQuLmY0ZTQzZjIzNTQ3ZTdiZTBjOWZmYTA0NDM0MWZj
NmE4NjAwZTM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUg
IkdQVURldmljZS5oIgorI2luY2x1ZGUgIkdQVUVycm9yU2NvcGVzLmgiCiAjaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVUXVldWUuaCIKQEAgLTk5LDggKzEwMCw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxX
ZWJHUFVRdWV1ZT4gZ2V0UXVldWUoKSBjb25zdDsKIAotICAgIHZvaWQgcHVzaEVycm9yU2NvcGUo
R1BVRXJyb3JGaWx0ZXIpIGNvbnN0OwotICAgIHZvaWQgcG9wRXJyb3JTY29wZShFcnJvclByb21p
c2UmJikgY29uc3Q7CisgICAgdm9pZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlciBmaWx0
ZXIpIHsgbV9lcnJvclNjb3Blcy0+cHVzaEVycm9yU2NvcGUoZmlsdGVyKTsgfQorICAgIHZvaWQg
cG9wRXJyb3JTY29wZShFcnJvclByb21pc2UmJik7CiAKIHByaXZhdGU6CiAgICAgV2ViR1BVRGV2
aWNlKFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiYmLCBSZWY8R1BVRGV2aWNlPiYmKTsKQEAgLTEw
OCw2ICsxMDksOCBAQCBwcml2YXRlOgogICAgIFJlZjxjb25zdCBXZWJHUFVBZGFwdGVyPiBtX2Fk
YXB0ZXI7CiAgICAgUmVmPEdQVURldmljZT4gbV9kZXZpY2U7CiAgICAgbXV0YWJsZSBSZWZQdHI8
V2ViR1BVUXVldWU+IG1fcXVldWU7CisKKyAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JT
Y29wZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDg4
YWUyNmFjMDVjMDM3ZGE5NzM0ODk5ZDczNDBlN2NhNGU0NjM4NjMuLjY4ZmU1NGM0MjUzYjY3ZmYz
M2NmOTk2YjVlOWVmZDc1YmE3MWQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xODI5LDYgKzE4Mjks
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKIAogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWYWxpZGF0aW9uRXJyb3IuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUGlwZWxpbmVMYXlvdXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjYxMzAyZWVhMTdkZTZjOGYyODVmZTc3
MGYyZWIwYWY1YTQzZGNjZS4uMmJjODA5YWMxMzBiOTUzMDU4NmUxOGI1Mjg2ZWU3MzMxM2Q0NTQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTM5NTQsNiArMTM5NTQsOCBAQAogCQlEMDMyMTFDRTIxQUM5NTRFMDA3NjNDRjIg
LyogR1BVUmVuZGVyUGFzc0VuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGFzc0Vu
Y29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAzMjExQ0YyMUFDOTU0RTAw
NzYzQ0YyIC8qIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwMzIxMUQwMjFBQzk1NEYwMDc2M0NGMiAvKiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlEMDM1ODZCMTIyRDdGMkVBMDBEQTAyODQgLyogR1BVRXJyb3JTY29wZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVRXJyb3JTY29wZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDAzNTg2QjIyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUVycm9yU2NvcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDAzNkREOEQyMDhGRkMwQzAwRjlGNEIyIC8qIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwM0M4NDlBMjFGRkM2NjcwMDAyMjI3RiAvKiBHUFVE
ZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVRGVwdGhTdGVu
Y2lsU3RhdGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwM0M4
NDlDMjFGRkM3RkMwMDAyMjI3RiAvKiBHUFVDb21wYXJlRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVQ29tcGFyZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDAzMSw2ICsxNDAzMyw3IEBACiAJCUQwOUFGQjE3MjJENjY5NEUwMEM0NTM4QyAvKiBHUFVPdXRP
Zk1lbW9yeUVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHUFVPdXRPZk1lbW9yeUVycm9yLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5QUZCMTkyMkQ2Njk4QTAwQzQ1MzhDIC8qIEdQVU91dE9m
TWVtb3J5RXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVT3V0T2ZNZW1vcnlFcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMgLyogR1BV
RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMDlBRkIzNzIyRDdENUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NjIw
OTJBMEE2MDBFMEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEzQTczMDE0MDVBMzk4MDBGQjhF
RDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc291cmNlTG9hZGVyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgzMzcsOSArMTgzNDAsMTIgQEAKIAkJCQlEMDlBRkIyRDIyRDZDMDE0MDBDNDUzOEMg
LyogR1BVRXJyb3IuY3BwICovLAogCQkJCUQwOUFGQjA3MjJENTM5MUIwMEM0NTM4QyAvKiBHUFVF
cnJvci5oICovLAogCQkJCUQwOUFGQjAyMjJEMDQ3MTkwMEM0NTM4QyAvKiBHUFVFcnJvckZpbHRl
ci5oICovLAorCQkJCUQwMzU4NkIyMjJEN0YyRUEwMERBMDI4NCAvKiBHUFVFcnJvclNjb3Blcy5j
cHAgKi8sCisJCQkJRDAzNTg2QjEyMkQ3RjJFQTAwREEwMjg0IC8qIEdQVUVycm9yU2NvcGVzLmgg
Ki8sCiAJCQkJRDAyNkY0N0QyMjBBMkFDNjAwQUM1RjQ5IC8qIEdQVUV4dGVudDNELmggKi8sCiAJ
CQkJRDBGNzU1OUYyMjAzQkExNDAwMTE4MDU4IC8qIEdQVUxpbWl0cy5oICovLAogCQkJCUQwOEFB
MDJGMjIwRDBCRDUwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaCAqLywKKwkJCQlEMDlBRkIzNzIyRDdE
NUM2MDBDNDUzOEMgLyogR1BVT2JqZWN0QmFzZS5oICovLAogCQkJCUQwOUFGQjE5MjJENjY5OEEw
MEM0NTM4QyAvKiBHUFVPdXRPZk1lbW9yeUVycm9yLmggKi8sCiAJCQkJMzEyRkY4QzQyMUE0QzJG
NDAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKIAkJCQlEMDAzMjg4
NzIxQzlBNEU1MDA2MjJBQTYgLyogR1BVUGlwZWxpbmVMYXlvdXQuY3BwICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCmluZGV4IDhkYTA0
MzIzNjlhNzE0NzU0OWVkODVjNTNiZjczNDM0MTQ2YWU4ZGQuLjkyYmFhMjE0YWUwMmNiNGVjMWRh
ZGQ3MDMzMGM4MDA3ZWQxODY1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkRl
ZmVycmFibGVUYXNrLmgiCiAjaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKKyNpbmNsdWRlICJH
UFVPYmplY3RCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTUxLDYgKzUyLDggQEAgY2xh
c3MgR1BVRGV2aWNlOwogCiBzdHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvcjsKIAorZW51bSBjbGFz
cyBHUFVCdWZmZXJNYXBwZWRPcHRpb247CisKICNpZiBVU0UoTUVUQUwpCiB1c2luZyBQbGF0Zm9y
bUJ1ZmZlciA9IE1UTEJ1ZmZlcjsKICNlbHNlCkBAIC01OCw3ICs2MSw3IEBAIHVzaW5nIFBsYXRm
b3JtQnVmZmVyID0gdm9pZDsKICNlbmRpZgogdXNpbmcgUGxhdGZvcm1CdWZmZXJTbWFydFB0ciA9
IFJldGFpblB0cjxQbGF0Zm9ybUJ1ZmZlcj47CiAKLWNsYXNzIEdQVUJ1ZmZlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVUJ1ZmZlcj4geworY2xhc3MgR1BVQnVmZmVyIDogcHVibGljIEdQVU9iamVj
dEJhc2UgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBNYXBwZWQs
CkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIH5HUFVCdWZmZXIoKTsKIAotICAgIHN0
YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiwgY29uc3Qg
R1BVQnVmZmVyRGVzY3JpcHRvciYsIGJvb2wgaXNNYXBwZWRPbkNyZWF0aW9uKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEdQVUJ1ZmZlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYsIGNvbnN0IEdQ
VUJ1ZmZlckRlc2NyaXB0b3ImLCBHUFVCdWZmZXJNYXBwZWRPcHRpb24sIFJlZjxHUFVFcnJvclNj
b3Blcz4mJik7CiAKICAgICBQbGF0Zm9ybUJ1ZmZlciAqcGxhdGZvcm1CdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtQnVmZmVyLmdldCgpOyB9CiAgICAgc2l6ZV90IGJ5dGVMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KQEAgLTEwNyw4ICsxMTAsOCBAQCBwcml2
YXRlOgogICAgICAgICBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmKTsK
ICAgICB9OwogCi0gICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQdHImJiwgUmVmPEdQ
VURldmljZT4mJiwgc2l6ZV90LCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwgYm9v
bCk7Ci0gICAgc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2FnZShHUFVEZXZpY2UmLCBPcHRp
b25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPik7CisgICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVm
ZmVyU21hcnRQdHImJiwgUmVmPEdQVURldmljZT4mJiwgc2l6ZV90LCBPcHRpb25TZXQ8R1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzPiwgR1BVQnVmZmVyTWFwcGVkT3B0aW9uLCBSZWY8R1BVRXJyb3JTY29w
ZXM+JiYpOworICAgIHN0YXRpYyBib29sIHZhbGlkYXRlQnVmZmVyVXNhZ2UoR1BVRGV2aWNlJiwg
T3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4sIEdQVUVycm9yU2NvcGVzJik7CiAKICAg
ICBKU0M6OkFycmF5QnVmZmVyKiBzdGFnaW5nQnVmZmVyRm9yUmVhZCgpOwogICAgIEpTQzo6QXJy
YXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJEZXNjcmlwdG9yLmgKaW5k
ZXggZmY1YzVhYjdmNTVjNDZiMDdkZDVjZjRhOWE4MmY4MGI1NTU2M2EwOC4uMzIwNzJkOWVmZjAy
N2QyOWU5Mzc3OWJjOGYwNmJkNjQyYzQzODU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlckRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyRGVzY3JpcHRvci5oCkBAIC0z
Niw2ICszNiwxMSBAQCBzdHJ1Y3QgR1BVQnVmZmVyRGVzY3JpcHRvciB7CiAgICAgR1BVQnVmZmVy
VXNhZ2VGbGFncyB1c2FnZTsKIH07CiAKK2VudW0gY2xhc3MgR1BVQnVmZmVyTWFwcGVkT3B0aW9u
IHsKKyAgICBJc01hcHBlZCwKKyAgICBOb3RNYXBwZWQKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCmluZGV4IGQ2M2Y1NmNhYmEyMzE5
NDIzZjc2ODM5YWY0ZWJiYTU5NmQzNzQ3MjUuLmE2MWFmNjBiYzc4NDE4NmIzMmRjZDRlMjY1ZGQz
N2M4NzQ4MmE0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXZpY2UuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiR1BVQ29tbWFu
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdQVUNvbXB1dGVQaXBlbGluZS5oIgogI2luY2x1ZGUgIkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5o
IgogI2luY2x1ZGUgIkdQVVBpcGVsaW5lTGF5b3V0LmgiCiAjaW5jbHVkZSAiR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKQEAgLTUx
LDkgKzUyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8R1BVQnVmZmVyPiBH
UFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIGlzTWFwcGVkT25DcmVhdGlvbikKK1JlZlB0cjxHUFVCdWZmZXI+IEdQVURl
dmljZTo6dHJ5Q3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgUmVmPEdQVUVycm9yU2NvcGVzPiYm
IGVycm9yU2NvcGVzKQogewotICAgIHJldHVybiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShtYWtlUmVm
KCp0aGlzKSwgZGVzY3JpcHRvciwgaXNNYXBwZWRPbkNyZWF0aW9uKTsKKyAgICByZXR1cm4gR1BV
QnVmZmVyOjp0cnlDcmVhdGUobWFrZVJlZigqdGhpcyksIGRlc2NyaXB0b3IsIGlzTWFwcGVkLCBX
VEZNb3ZlKGVycm9yU2NvcGVzKSk7CiB9CiAKIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVEZXZpY2U6
OnRyeUNyZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
IGNvbnN0CkBAIC0xMDksNDAgKzExMCw2IEBAIHZvaWQgR1BVRGV2aWNlOjpzZXRTd2FwQ2hhaW4o
UmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCiAgICAgbV9zd2FwQ2hhaW4gPSBXVEZN
b3ZlKHN3YXBDaGFpbik7CiB9CiAKLXZvaWQgR1BVRGV2aWNlOjpwdXNoRXJyb3JTY29wZShHUFVF
cnJvckZpbHRlciBmaWx0ZXIpCi17Ci0gICAgbV9lcnJvclNjb3Blcy5hcHBlbmQoRXJyb3JTY29w
ZSB7IGZpbHRlciwgV1RGOjpudWxsb3B0IH0pOwotfQotCi12b2lkIEdQVURldmljZTo6cG9wRXJy
b3JTY29wZShFcnJvckNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFtX3BsYXRmb3Jt
RGV2aWNlKQotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsICJHUFVEZXZpY2U6OnBvcEVy
cm9yU2NvcGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgZWxzZSBpZiAobV9lcnJvclNj
b3Blcy5pc0VtcHR5KCkpCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgIkdQVURldmlj
ZTo6cG9wRXJyb3JTY29wZSgpOiBObyBlcnJvciBzY29wZSBleGlzdHMhIik7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGF1dG8gc2NvcGUgPSBtX2Vycm9yU2NvcGVzLnRha2VMYXN0KCk7Ci0gICAgICAg
IGNhbGxiYWNrKHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSA/IFdURjo6bnVs
bG9wdCA6IFdURk1vdmUoc2NvcGUuZXJyb3IpLCB7IH0pOwotICAgIH0KLX0KLQotdm9pZCBHUFVE
ZXZpY2U6OnJlZ2lzdGVyRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBHUFVFcnJvckZpbHRl
ciBmaWx0ZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6ZmluZF9pZihtX2Vycm9yU2Nv
cGVzLnJiZWdpbigpLCBtX2Vycm9yU2NvcGVzLnJlbmQoKSwgW2ZpbHRlcl0oY29uc3QgRXJyb3JT
Y29wZSYgc2NvcGUpIHsKLSAgICAgICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZp
bHRlcjo6Tm9uZSB8fCBzY29wZS5maWx0ZXIgPT0gZmlsdGVyOwotICAgIH0pOwotCi0gICAgLy8g
RklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5OTY3NiBVbmNhcHR1cmVkIGVycm9ycyBuZWVk
IHRvIGJlIGZpcmVkIGFzIEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50cy4KLSAgICBpZiAoaXRlcmF0
b3IgPT0gbV9lcnJvclNjb3Blcy5yZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElm
IHRoZSBzY29wZSBoYXMgYWxyZWFkeSBjYXB0dXJlZCBhbiBlcnJvciwgaWdub3JlIHRoaXMgbmV3
IG9uZS4KLSAgICBpZiAoaXRlcmF0b3ItPmVycm9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
dGVyYXRvci0+ZXJyb3IgPSBjcmVhdGVFcnJvcihmaWx0ZXIsIG1lc3NhZ2UpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCmluZGV4IDkwYjQ2
MWExNzQ2MDJkNTg1NzMwMzdkNWNhNTkzYzBmNTFiNmE2YTMuLjNlYmEzNDQ3MjhlYjMzNTg3YTk5
OTUyZWExN2UwODcyMjQ1NDk0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKQEAgLTI3LDE3ICsyNywxMyBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVUVycm9yLmgiCi0jaW5jbHVkZSAiR1BVRXJyb3JGaWx0
ZXIuaCIKICNpbmNsdWRlICJHUFVRdWV1ZS5oIgogI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CiAKQEAg
LTQ3LDYgKzQzLDcgQEAgY2xhc3MgR1BVQmluZEdyb3VwTGF5b3V0OwogY2xhc3MgR1BVQnVmZmVy
OwogY2xhc3MgR1BVQ29tbWFuZEJ1ZmZlcjsKIGNsYXNzIEdQVUNvbXB1dGVQaXBlbGluZTsKK2Ns
YXNzIEdQVUVycm9yU2NvcGVzOwogY2xhc3MgR1BVUGlwZWxpbmVMYXlvdXQ7CiBjbGFzcyBHUFVS
ZW5kZXJQaXBlbGluZTsKIGNsYXNzIEdQVVNhbXBsZXI7CkBAIC02NCw2ICs2MSw4IEBAIHN0cnVj
dCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwogc3RydWN0IEdQVVN3YXBDaGFpbkRlc2NyaXB0
b3I7CiBzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7CiAKK2VudW0gY2xhc3MgR1BVQnVmZmVy
TWFwcGVkT3B0aW9uOworCiB1c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKIHVzaW5n
IFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMRGV2aWNlPjsKIApAQCAtNzEs
NyArNzAsNyBAQCBjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNlPgogcHVibGljOgogICAgIHN0YXRpYyBS
ZWZQdHI8R1BVRGV2aWNlPiB0cnlDcmVhdGUoY29uc3QgT3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zPiYpOwogCi0gICAgUmVmUHRyPEdQVUJ1ZmZlcj4gdHJ5Q3JlYXRlQnVmZmVyKGNv
bnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBib29sIGlzTWFwcGVkT25DcmVhdGlvbiA9IGZhbHNl
KTsKKyAgICBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVy
RGVzY3JpcHRvciYsIEdQVUJ1ZmZlck1hcHBlZE9wdGlvbiwgUmVmPEdQVUVycm9yU2NvcGVzPiYm
KTsKICAgICBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlVGV4dHVyZShjb25zdCBHUFVUZXh0
dXJlRGVzY3JpcHRvciYpIGNvbnN0OwogICAgIFJlZlB0cjxHUFVTYW1wbGVyPiB0cnlDcmVhdGVT
YW1wbGVyKGNvbnN0IEdQVVNhbXBsZXJEZXNjcmlwdG9yJikgY29uc3Q7CiAKQEAgLTkwLDI1ICs4
OSwxMiBAQCBwdWJsaWM6CiAgICAgR1BVU3dhcENoYWluKiBzd2FwQ2hhaW4oKSBjb25zdCB7IHJl
dHVybiBtX3N3YXBDaGFpbi5nZXQoKTsgfQogICAgIHZvaWQgc2V0U3dhcENoYWluKFJlZlB0cjxH
UFVTd2FwQ2hhaW4+JiYpOwogCi0gICAgdm9pZCBwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRl
cik7Ci0KLSAgICB1c2luZyBFcnJvckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEdQVUVycm9yPiYmLCBjb25zdCBTdHJpbmcmKT47Ci0gICAgdm9pZCBwb3BFcnJvclNjb3Bl
KEVycm9yQ2FsbGJhY2smJik7Ci0gICAgdm9pZCByZWdpc3RlckVycm9yKGNvbnN0IFN0cmluZyYs
IEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOwotCiBwcml2YXRl
OgotICAgIHN0cnVjdCBFcnJvclNjb3BlIHsKLSAgICAgICAgY29uc3QgR1BVRXJyb3JGaWx0ZXIg
ZmlsdGVyOwotICAgICAgICBPcHRpb25hbDxHUFVFcnJvcj4gZXJyb3I7Ci0gICAgfTsKLQogICAg
IGV4cGxpY2l0IEdQVURldmljZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYpOwogCiAgICAgUGxh
dGZvcm1EZXZpY2VTbWFydFB0ciBtX3BsYXRmb3JtRGV2aWNlOwogICAgIG11dGFibGUgUmVmUHRy
PEdQVVF1ZXVlPiBtX3F1ZXVlOwogICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWlu
OwotCi0gICAgVmVjdG9yPEVycm9yU2NvcGU+IG1fZXJyb3JTY29wZXM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTAzZDc5ZDE4MWNjMmE1
MTI1ZTBkNGNmNDAyZTQ3MjNlY2NhM2JhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcApAQCAtMCwwICsxLDY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUVycm9y
U2NvcGVzLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgR1BVRXJyb3JTY29wZXM6OnB1c2hFcnJvclNjb3BlKEdQVUVycm9yRmlsdGVyIGZpbHRl
cikKK3sKKyAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBXVEY6
Om51bGxvcHQgfSk7Cit9CisKK09wdGlvbmFsPEdQVUVycm9yPiBHUFVFcnJvclNjb3Blczo6cG9w
RXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQoreworICAgIGlmIChtX2Vycm9yU2NvcGVz
LmlzRW1wdHkoKSkgeworICAgICAgICBmYWlsTWVzc2FnZSA9ICJObyBlcnJvciBzY29wZSBleGlz
dHMhIjsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIHNj
b3BlID0gbV9lcnJvclNjb3Blcy50YWtlTGFzdCgpOworICAgIHJldHVybiBzY29wZS5maWx0ZXIg
PT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUgPyBXVEY6Om51bGxvcHQgOiBzY29wZS5lcnJvcjsKK30K
Kwordm9pZCBHUFVFcnJvclNjb3Blczo6Z2VuZXJhdGVFcnJvcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEdQVUVycm9yRmlsdGVyIGZpbHRlcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjpm
aW5kX2lmKG1fZXJyb3JTY29wZXMucmJlZ2luKCksIG1fZXJyb3JTY29wZXMucmVuZCgpLCBbZmls
dGVyXShjb25zdCBFcnJvclNjb3BlJiBzY29wZSkgeworICAgICAgICByZXR1cm4gc2NvcGUuZmls
dGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lIHx8IHNjb3BlLmZpbHRlciA9PSBmaWx0ZXI7Cisg
ICAgfSk7CisKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvMTk5Njc2IFVuY2Fw
dHVyZWQgZXJyb3JzIG5lZWQgdG8gYmUgZmlyZWQgYXMgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnRz
LgorICAgIGlmIChpdGVyYXRvciA9PSBtX2Vycm9yU2NvcGVzLnJlbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gSWYgdGhlIHNjb3BlIGhhcyBhbHJlYWR5IGNhcHR1cmVkIGFuIGVycm9y
LCBpZ25vcmUgdGhpcyBuZXcgb25lLgorICAgIGlmIChpdGVyYXRvci0+ZXJyb3IpCisgICAgICAg
IHJldHVybjsKKworICAgIGl0ZXJhdG9yLT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVz
c2FnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVRXJyb3JTY29wZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvclNjb3Blcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxNjFmNzA0ODJkMTcwYTQxNjljODQ3MjNkYTE3
ZjU0ZTdkNmYyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVRXJy
b3IuaCIKKyNpbmNsdWRlICJHUFVFcnJvckZpbHRlci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVFcnJvclNjb3BlcyA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVUVycm9yU2NvcGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxHUFVF
cnJvclNjb3Blcz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVFcnJvclNjb3Bl
cyk7IH0KKworICAgIHZvaWQgcHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIpOworICAgIE9w
dGlvbmFsPEdQVUVycm9yPiBwb3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpOworICAg
IHZvaWQgZ2VuZXJhdGVFcnJvcihjb25zdCBTdHJpbmcmLCBHUFVFcnJvckZpbHRlciA9IEdQVUVy
cm9yRmlsdGVyOjpWYWxpZGF0aW9uKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRXJyb3JTY29w
ZSB7CisgICAgICAgIGNvbnN0IEdQVUVycm9yRmlsdGVyIGZpbHRlcjsKKyAgICAgICAgT3B0aW9u
YWw8R1BVRXJyb3I+IGVycm9yOworICAgIH07CisKKyAgICBHUFVFcnJvclNjb3BlcygpID0gZGVm
YXVsdDsKKworICAgIFZlY3RvcjxFcnJvclNjb3BlPiBtX2Vycm9yU2NvcGVzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVPYmplY3RCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT2JqZWN0QmFzZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY2NTNiY2Y3YWY4Y2Y5ZDM5NjRhZjhkNTI1MTJmZTFiNjM2NDdhZmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVT2Jq
ZWN0QmFzZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVFcnJvclNjb3Blcy5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
T2JqZWN0QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVU9iamVjdEJhc2U+IHsKK3B1YmxpYzoK
KyAgICB2b2lkIGdlbmVyYXRlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBHUFVFcnJvckZp
bHRlciBmaWx0ZXIgPSBHUFVFcnJvckZpbHRlcjo6VmFsaWRhdGlvbikKKyAgICB7CisgICAgICAg
IG1fZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IobWVzc2FnZSwgZmlsdGVyKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBHUFVPYmplY3RCYXNlKFJlZjxHUFVFcnJvclNjb3Blcz4mJiByZXBv
cnRlcikKKyAgICAgICAgOiBtX2Vycm9yU2NvcGVzKFdURk1vdmUocmVwb3J0ZXIpKSB7IH0KKwor
cHJpdmF0ZToKKyAgICBSZWY8R1BVRXJyb3JTY29wZXM+IG1fZXJyb3JTY29wZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZl
ck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUJ1ZmZlck1ldGFsLm1tCmluZGV4IDAyNDYwMzEwY2ZjZWIwYjJmMTAyOWQ2Y2YxNDVhMDlmOTA0
NmM4NDIuLmQyNjQ3M2I1OTZkMzdkMGQ1NjU3NjJlMzhjMDJhMzc0MWYyM2FhMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJN
ZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVQnVmZmVyTWV0YWwubW0KQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlYWRPbmx5RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVy
VXNhZ2U6OkZsYWdzPiB7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6VmVydGV4LCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1
ZmZlclVzYWdlOjpGbGFnczo6VHJhbnNmZXJTb3VyY2UgfTsKIAogCi1ib29sIEdQVUJ1ZmZlcjo6
dmFsaWRhdGVCdWZmZXJVc2FnZShHUFVEZXZpY2UmIGRldmljZSwgT3B0aW9uU2V0PEdQVUJ1ZmZl
clVzYWdlOjpGbGFncz4gdXNhZ2UpCitib29sIEdQVUJ1ZmZlcjo6dmFsaWRhdGVCdWZmZXJVc2Fn
ZShHUFVEZXZpY2UmIGRldmljZSwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gdXNh
Z2UsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKICAgICBpZiAoIWRldmljZS5wbGF0
Zm9ybURldmljZSgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnRyeUNyZWF0
ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBHUFVCdWZm
ZXI6OnZhbGlkYXRlQnVmZmVyVXNhZ2UoR1BVRGV2aWNlJiBkZXZpY2UsIE9wdGlvblNldDxHUFVC
dWZmZXJVc2FnZToKICAgICB9CiAKICAgICBpZiAodXNhZ2UuY29udGFpbnNBbGwoeyBHUFVCdWZm
ZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlLCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFJlYWQg
fSkpIHsKLSAgICAgICAgZGV2aWNlLnJlZ2lzdGVyRXJyb3IoIkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRl
KCk6IEJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNhZ2Uh
Iik7CisgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIkdQVUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKCk6IEJ1ZmZlciBjYW5ub3QgaGF2ZSBib3RoIE1BUF9SRUFEIGFuZCBNQVBfV1JJVEUgdXNh
Z2UhIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTYyLDIzICs2MiwyMyBA
QCBib29sIEdQVUJ1ZmZlcjo6dmFsaWRhdGVCdWZmZXJVc2FnZShHUFVEZXZpY2UmIGRldmljZSwg
T3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOgogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8
R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShSZWY8R1BVRGV2aWNlPiYmIGRldmljZSwg
Y29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc01hcHBlZE9uQ3Jl
YXRpb24pCitSZWZQdHI8R1BVQnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShSZWY8R1BVRGV2
aWNlPiYmIGRldmljZSwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BV
QnVmZmVyTWFwcGVkT3B0aW9uIGlzTWFwcGVkLCBSZWY8R1BVRXJyb3JTY29wZXM+JiYgZXJyb3JT
Y29wZXMpCiB7CiAgICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMg
b24gc29tZSBwbGF0Zm9ybXMuCiAgICAgTlNVSW50ZWdlciBzaXplID0gMDsKICAgICBpZiAoIVdU
Rjo6Y29udmVydFNhZmVseShkZXNjcmlwdG9yLnNpemUsIHNpemUpKSB7Ci0gICAgICAgIGRldmlj
ZS0+cmVnaXN0ZXJFcnJvcigiIiwgR1BVRXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKKyAgICAg
ICAgZXJyb3JTY29wZXMtPmdlbmVyYXRlRXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1l
bW9yeSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gdXNhZ2Ug
PSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPjo6ZnJvbVJhdyhkZXNjcmlwdG9yLnVz
YWdlKTsKLSAgICBpZiAoIXZhbGlkYXRlQnVmZmVyVXNhZ2UoZGV2aWNlLmdldCgpLCB1c2FnZSkp
CisgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZS5nZXQoKSwgdXNhZ2UsIGVycm9y
U2NvcGVzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLy8gY29weUJ1ZmZlclRvQnVmZmVyIGNhbGxzIHJlcXVpcmUgNC1ieXRlIGFsaWdubWVudC4g
IlVubWFwcGluZyIgYSBtYXBwZWQtb24tY3JlYXRpb24gR1BVQnVmZmVyCiAgICAgLy8gdGhhdCBp
cyBvdGhlcndpc2UgdW5tYXBwYWJsZSByZXF1aXJlcyBzdWNoIGEgY29weSB0byB1cGxvYWQgZGF0
YS4KLSAgICBpZiAoaXNNYXBwZWRPbkNyZWF0aW9uCisgICAgaWYgKGlzTWFwcGVkID09IEdQVUJ1
ZmZlck1hcHBlZE9wdGlvbjo6SXNNYXBwZWQKICAgICAgICAgJiYgIXVzYWdlLmNvbnRhaW5zQW55
KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdz
OjpNYXBSZWFkIH0pCiAgICAgICAgICYmIGRlc2NyaXB0b3Iuc2l6ZSAlIDQpIHsKICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKCk6IERhdGEgbXVzdCBiZSBhbGlnbmVk
IHRvIGEgbXVsdGlwbGUgb2YgNCBieXRlcyEiKTsKQEAgLTEwMiwxOSArMTAyLDIwIEBAIFJlZlB0
cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNl
LCBjb25zdCBHUFVCdWZmZXJECiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAg
IGlmICghbXRsQnVmZmVyKSB7Ci0gICAgICAgIGRldmljZS0+cmVnaXN0ZXJFcnJvcigiIiwgR1BV
RXJyb3JGaWx0ZXI6Ok91dE9mTWVtb3J5KTsKKyAgICAgICAgZXJyb3JTY29wZXMtPmdlbmVyYXRl
RXJyb3IoIiIsIEdQVUVycm9yRmlsdGVyOjpPdXRPZk1lbW9yeSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZN
b3ZlKG10bEJ1ZmZlciksIFdURk1vdmUoZGV2aWNlKSwgc2l6ZSwgdXNhZ2UsIGlzTWFwcGVkT25D
cmVhdGlvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10
bEJ1ZmZlciksIFdURk1vdmUoZGV2aWNlKSwgc2l6ZSwgdXNhZ2UsIGlzTWFwcGVkLCBXVEZNb3Zl
KGVycm9yU2NvcGVzKSkpOwogfQogCi1HUFVCdWZmZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRM
QnVmZmVyPiYmIGJ1ZmZlciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIHNpemVfdCBzaXplLCBP
cHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgYm9vbCBpc01hcHBlZCkKLSAg
ICA6IG1fcGxhdGZvcm1CdWZmZXIoV1RGTW92ZShidWZmZXIpKQorR1BVQnVmZmVyOjpHUFVCdWZm
ZXIoUmV0YWluUHRyPE1UTEJ1ZmZlcj4mJiBidWZmZXIsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNl
LCBzaXplX3Qgc2l6ZSwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gdXNhZ2UsIEdQ
VUJ1ZmZlck1hcHBlZE9wdGlvbiBpc01hcHBlZCwgUmVmPEdQVUVycm9yU2NvcGVzPiYmIGVycm9y
U2NvcGVzKQorICAgIDogR1BVT2JqZWN0QmFzZShXVEZNb3ZlKGVycm9yU2NvcGVzKSkKKyAgICAs
IG1fcGxhdGZvcm1CdWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9kZXZpY2UoV1RGTW92
ZShkZXZpY2UpKQogICAgICwgbV9ieXRlTGVuZ3RoKHNpemUpCiAgICAgLCBtX3VzYWdlKHVzYWdl
KQotICAgICwgbV9pc01hcHBlZEZyb21DcmVhdGlvbihpc01hcHBlZCkKKyAgICAsIG1faXNNYXBw
ZWRGcm9tQ3JlYXRpb24oaXNNYXBwZWQgPT0gR1BVQnVmZmVyTWFwcGVkT3B0aW9uOjpJc01hcHBl
ZCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQppbmRleCBhOWVhM2NiZWU1OGM4Mzk3MzE3
Yzc1ODRhZWVmODQxNWMwNzY0NzM2Li4xNzRkODY0ZGU0MDc4MDUxNWYyYzk3MDI4MjU1NTFhZTJj
ZjRmYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVUXVldWVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEdQ
VVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFJlZjxHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVm
ZmVycykKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICB9CiAKLSAgICBp
ZiAobV9wcmVzZW50VGFzay5oYXNQZW5kaW5nVGFzaygpIHx8ICFtX2RldmljZS0+c3dhcENoYWlu
KCkpCisgICAgaWYgKG1fcHJlc2VudFRhc2suaGFzUGVuZGluZ1Rhc2soKSB8fCAhbV9kZXZpY2Ug
fHwgIW1fZGV2aWNlLT5zd2FwQ2hhaW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYg
YSBHUFVTd2FwQ2hhaW4gZXhpc3RzLCBlbnN1cmUgdGhhdCBhIHByZXNlbnQgaXMgc2NoZWR1bGVk
IGFmdGVyIGFsbCBjb21tYW5kIGJ1ZmZlcnMuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>