<?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>198591</bug_id>
          
          <creation_ts>2019-06-05 18:06:14 -0700</creation_ts>
          <short_desc>[WebGPU] Remove GPUBuffer.setSubData and implement GPUDevice.createBufferMapped</short_desc>
          <delta_ts>2019-06-07 15:25:02 -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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1542245</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-05 18:06:14 -0700</bug_when>
    <thetext>[WebGPU] Remove GPUBuffer.setSubData and implement GPUDevice.createBufferMapped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542246</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-05 18:06:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/50951309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542259</commentid>
    <comment_count>2</comment_count>
      <attachid>371464</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-06-05 18:52:16 -0700</bug_when>
    <thetext>Created attachment 371464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542958</commentid>
    <comment_count>3</comment_count>
      <attachid>371464</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-07 15:00:11 -0700</bug_when>
    <thetext>Comment on attachment 371464
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUBufferMetal.mm:226
&gt; +    if (!m_device-&gt;tryGetQueue() || !(queue = m_device-&gt;tryGetQueue()-&gt;platformQueue()))

The group will investigate and probably add the idea of multiple queues. We should figure out how this will work in that world.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUBufferMetal.mm:233
&gt; +    stagingMtlBuffer = adoptNS([m_device-&gt;platformDevice() newBufferWithLength:static_cast&lt;NSUInteger&gt;(m_byteLength) options:MTLResourceCPUCacheModeDefaultCache]);

Can we cache these somehow? It seems silly to continually create and destroy these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542975</commentid>
    <comment_count>4</comment_count>
      <attachid>371464</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 15:25:01 -0700</bug_when>
    <thetext>Comment on attachment 371464
Patch

Clearing flags on attachment: 371464

Committed r246217: &lt;https://trac.webkit.org/changeset/246217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1542976</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-07 15:25:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371464</attachid>
            <date>2019-06-05 18:52:16 -0700</date>
            <delta_ts>2019-06-07 15:25:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198591-20190605185215.patch</filename>
            <type>text/plain</type>
            <size>39846</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmOTE4Nzk2MzJkYTc2
OTQ2MDEyYzk5NmU2YzUwNjgxMjg5ZmQ2YS4uMmFiMTNjMDE3OTI1MjJjMDczZGU3MTJhMDM4MWUy
YjBhMmU2YzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA2LTA1ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVtb3Zl
IEdQVUJ1ZmZlci5zZXRTdWJEYXRhIGFuZCBpbXBsZW1lbnQgR1BVRGV2aWNlLmNyZWF0ZUJ1ZmZl
ck1hcHBlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIEdQVUJ1ZmZlci5zZXRTdWJEYXRhIGZyb20gdGhlIFdlYkdQVSBBUEkuCisgICAgICAg
IEFkZCBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkIHRvIHRoZSBXZWJHUFUgQVBJLiAKKwor
ICAgICAgICBFeGlzdGluZyB0ZXN0cyBoYXZlIGJlZW4gdXBkYXRlZC4KKworICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVC
dWZmZXI6OnNldFN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlQnVmZmVyTWFwcGVkIGNvbnN0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjp0cnlDcmVhdGVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVC
dWZmZXI6OnRyeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OkdQVUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVUJ1ZmZlcjo6bWFwT25DcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
UFVCdWZmZXI6OmNvbW1hbmRCdWZmZXJDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R1BV
QnVmZmVyOjpjb3B5U3RhZ2luZ0J1ZmZlclRvR1BVKToKKyAgICAgICAgICAgICAgICBSZXF1aXJl
ZCB0byB1bm1hcCBHUFVCdWZmZXJzIGNyZWF0ZWQgd2l0aCBHUFUtcHJpdmF0ZSBzdG9yYWdlLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjp1bm1hcCk6CisgICAgICAgIChXZWJDb3JlOjpH
UFVCdWZmZXI6OnNldFN1YkRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVm
ZmVyOjpyZXVzZVN1YkRhdGFCdWZmZXIpOiBEZWxldGVkLgorCiAyMDE5LTA1LTMwICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIFZlcnRleCBC
dWZmZXJzL0lucHV0IFN0YXRlIEFQSSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQnVmZmVyLmNwcAppbmRleCAxZjA4MmVjYWZiZjgyNGRjMDEyOTQyYmE2
ZGQ3OTk4YWM4ZWY4OGExLi5jMjIyZTM1NTc1OTFhNjgwZDhiMzg2MDNkODc3MzI3NDBkNTczNjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5jcHAK
QEAgLTQyLDE0ICs0Miw2IEBAIFdlYkdQVUJ1ZmZlcjo6V2ViR1BVQnVmZmVyKFJlZlB0cjxHUFVC
dWZmZXI+JiYgYnVmZmVyKQogewogfQogCi12b2lkIFdlYkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSh1
aW50NjRfdCBvZmZzZXQsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGRhdGEpCi17Ci0gICAgaWYg
KCFtX2J1ZmZlcikKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSgp
OiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5zZXRT
dWJEYXRhKG9mZnNldCwgZGF0YSk7Ci19Ci0KIHZvaWQgV2ViR1BVQnVmZmVyOjptYXBSZWFkQXN5
bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJiBwcm9taXNlKQogewogICAgIHJlamVjdE9yUmVnaXN0
ZXJQcm9taXNlQ2FsbGJhY2soV1RGTW92ZShwcm9taXNlKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZlci5oCmluZGV4IGQ0MWU5MTcwZGY1ZmEzMTEx
MzI2NjA4YTk5NTU2NzIwMTY3NWRlMjkuLjU4Nzk3MGQ5MTcxM2FjODBhOTk3NDg3ZjQ4ZWYyZjBm
Y2MyNTIxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJ1ZmZl
ci5oCkBAIC00OCw3ICs0OCw2IEBAIHB1YmxpYzoKICAgICBHUFVCdWZmZXIqIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAgICAgY29uc3QgR1BVQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRTdWJEYXRhKHVp
bnQ2NF90LCBjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7CiAgICAgdXNpbmcgQnVmZmVyTWFwcGlu
Z1Byb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZm
ZXI+PjsKICAgICB2b2lkIG1hcFJlYWRBc3luYyhCdWZmZXJNYXBwaW5nUHJvbWlzZSYmKTsKICAg
ICB2b2lkIG1hcFdyaXRlQXN5bmMoQnVmZmVyTWFwcGluZ1Byb21pc2UmJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQnVmZmVyLmlkbAppbmRleCBhODcwNTQ3YjM4
ZTAyNWUwY2NiYWUzNmM0YjM0NmU4YTQ3NTVhMDIwLi43ZWY4Y2JhOTZmYzE4MDVlMGNkZjAzOWRi
NjA5MzhkNmRmYzFhMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUJ1ZmZlci5pZGwKQEAgLTMyLDggKzMyLDYgQEAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcgdTY0OwogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFt
ZT1HUFVCdWZmZXIKIF0gaW50ZXJmYWNlIFdlYkdQVUJ1ZmZlciB7Ci0gICAgdm9pZCBzZXRTdWJE
YXRhKHU2NCBvZmZzZXQsIEFycmF5QnVmZmVyIGRhdGEpOwotCiAgICAgUHJvbWlzZTxBcnJheUJ1
ZmZlcj4gbWFwUmVhZEFzeW5jKCk7CiAgICAgUHJvbWlzZTxBcnJheUJ1ZmZlcj4gbWFwV3JpdGVB
c3luYygpOwogICAgIHZvaWQgdW5tYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGE0Nzg1Mjk3ZmM5N2FjZTliYjFiNmQzNjhkZDEx
MWQ0MGQ0ZDY0ZmEuLmYwNTlhZDg5ZTA5ZDRmNGE3NGY4YjhlODEzZjQ0ZjVhMGE5YjllMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAt
NDEsMTIgKzQxLDEzIEBACiAjaW5jbHVkZSAiR1BVU2FtcGxlckRlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCIKKyNpbmNs
dWRlICJKU1dlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJX
ZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXBCaW5kaW5nLmgiCiAj
aW5jbHVkZSAiV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVUJp
bmRHcm91cExheW91dC5oIgotI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgIldl
YkdQVUJ1ZmZlckJpbmRpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVDb21tYW5kRW5jb2Rlci5oIgog
I2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgpAQCAtODQsNiArODUsMjIgQEAgUmVm
PFdlYkdQVUJ1ZmZlcj4gV2ViR1BVRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVy
RGVzY3JpcHRvciYgZGVzY3JpcHQKICAgICByZXR1cm4gV2ViR1BVQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAorVmVjdG9yPEpTQzo6SlNWYWx1ZT4gV2ViR1BVRGV2aWNlOjpj
cmVhdGVCdWZmZXJNYXBwZWQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBHUFVCdWZmZXJE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIEpTQzo6SlNWYWx1ZSB3cmFwcGVk
QXJyYXlCdWZmZXIgPSBKU0M6OmpzTnVsbCgpOworCisgICAgYXV0byBidWZmZXIgPSBtX2Rldmlj
ZS0+dHJ5Q3JlYXRlQnVmZmVyKGRlc2NyaXB0b3IsIHRydWUpOworICAgIGlmIChidWZmZXIpIHsK
KyAgICAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGJ1ZmZlci0+bWFwT25DcmVhdGlvbigpOworICAg
ICAgICB3cmFwcGVkQXJyYXlCdWZmZXIgPSB0b0pTKCZzdGF0ZSwgSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZlcik7
CisgICAgfQorCisgICAgYXV0byB3ZWJCdWZmZXIgPSBXZWJHUFVCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOworICAgIGF1dG8gd3JhcHBlZFdlYkJ1ZmZlciA9IHRvSlMoJnN0YXRlLCBK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3Qo
KSksIHdlYkJ1ZmZlcik7CisKKyAgICByZXR1cm4geyB3cmFwcGVkV2ViQnVmZmVyLCB3cmFwcGVk
QXJyYXlCdWZmZXIgfTsKK30KKwogUmVmPFdlYkdQVVRleHR1cmU+IFdlYkdQVURldmljZTo6Y3Jl
YXRlVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QK
IHsKICAgICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShkZXNjcmlw
dG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKaW5k
ZXggNjUzZjA3NjEzMDJkMDkzOTg1ZmFlYTAwNjBkOWNmZGExZGI0NzM1NS4uMjFkMzcxYTAzYTc1
MTU0NGE5MWQ3YzhhMWFkMGNkNjIxNTk1YWExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBB
cnJheUJ1ZmZlcjsKK2NsYXNzIEpTVmFsdWU7Cit9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjksNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBj
b25zdCB7IHJldHVybiBtX2RldmljZS5nZXQoKTsgfQogCiAgICAgUmVmPFdlYkdQVUJ1ZmZlcj4g
Y3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImKSBjb25zdDsKKyAgICBWZWN0
b3I8SlNDOjpKU1ZhbHVlPiBjcmVhdGVCdWZmZXJNYXBwZWQoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBHUFVCdWZmZXJEZXNjcmlwdG9yJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVRleHR1cmU+IGNy
ZWF0ZVRleHR1cmUoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImKSBjb25zdDsKICAgICBSZWY8
V2ViR1BVU2FtcGxlcj4gY3JlYXRlU2FtcGxlcihjb25zdCBHUFVTYW1wbGVyRGVzY3JpcHRvciYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmlkbAppbmRleCAwNTcyNjBlZjQ0MWU2Y2Y2NzQxMmY5MzM1OTk1NjdkY2JiMTRjNjU2Li5kODMx
NGU3NmQ0MzAyYzE1YjE4M2VmNTM2NDYwZjk0N2M1NzI4N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTI0LDYgKzI0LDggQEAKICAq
LwogLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKIAordHlwZWRlZiBzZXF1ZW5jZTxhbnk+IEdQVU1hcHBlZEJ1ZmZlcjsg
IC8vIFtHUFVCdWZmZXIsIEFycmF5QnVmZmVyXQorCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR1BV
LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLApAQCAtMzMsNiArMzUsNyBAQAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVBZGFwdGVyIGFkYXB0ZXI7CiAKICAgICBXZWJHUFVCdWZm
ZXIgY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisgICAgW0Nh
bGxXaXRoPUV4ZWNTdGF0ZV0gR1BVTWFwcGVkQnVmZmVyIGNyZWF0ZUJ1ZmZlck1hcHBlZChHUFVC
dWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4
dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVTYW1wbGVy
IGNyZWF0ZVNhbXBsZXIoR1BVU2FtcGxlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAppbmRleCBl
NDZhOWE0ZDQ0MmVjYzY5YjQ1YmQyODVhNmY3ZjdhNjIwYjU2ZTYzLi40MjUwOGJjNzYxNzA1YmYx
YTBlNjYxMTc5MWY1ZWE2NzA5N2I1NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAog
ICAgIH5HUFVCdWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVh
dGUoUmVmPEdQVURldmljZT4mJiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYpOworICAgIHN0
YXRpYyBSZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiwgY29uc3Qg
R1BVQnVmZmVyRGVzY3JpcHRvciYsIGJvb2wgaXNNYXBwZWRPbkNyZWF0aW9uKTsKIAogICAgIFBs
YXRmb3JtQnVmZmVyICpwbGF0Zm9ybUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1C
dWZmZXIuZ2V0KCk7IH0KICAgICBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZUxlbmd0aDsgfQpAQCAtODIsMTQgKzgyLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWFw
cGFibGUoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNh
Z2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pOyB9
CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKIAorICAgIEpTQzo6QXJyYXlCdWZmZXIqIG1hcE9u
Q3JlYXRpb24oKTsKKwogI2lmIFVTRShNRVRBTCkKICAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21t
aXR0ZWQoTVRMQ29tbWFuZEJ1ZmZlciAqKTsKICAgICB2b2lkIGNvbW1hbmRCdWZmZXJDb21wbGV0
ZWQoKTsKLQotICAgIHZvaWQgcmV1c2VTdWJEYXRhQnVmZmVyKFJldGFpblB0cjxNVExCdWZmZXI+
JiYpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFN1YkRhdGEodWludDY0X3QsIGNvbnN0IEpTQzo6
QXJyYXlCdWZmZXImKTsKICAgICB1c2luZyBNYXBwaW5nQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoSlNDOjpBcnJheUJ1ZmZlciopPjsKICAgICB2b2lkIHJlZ2lzdGVyTWFwcGluZ0NhbGxi
YWNrKE1hcHBpbmdDYWxsYmFjayYmLCBib29sKTsKICAgICB2b2lkIHVubWFwKCk7CkBAIC0xMDgs
MTMgKzEwNywxMyBAQCBwcml2YXRlOgogICAgICAgICBQZW5kaW5nTWFwcGluZ0NhbGxiYWNrKE1h
cHBpbmdDYWxsYmFjayYmKTsKICAgICB9OwogCisgICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVy
U21hcnRQdHImJiwgUmVmPEdQVURldmljZT4mJiwgc2l6ZV90LCBPcHRpb25TZXQ8R1BVQnVmZmVy
VXNhZ2U6OkZsYWdzPiwgYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2Fn
ZShjb25zdCBHUFVEZXZpY2UmLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPik7CiAK
LSAgICBHUFVCdWZmZXIoUGxhdGZvcm1CdWZmZXJTbWFydFB0ciYmLCBzaXplX3QsIE9wdGlvblNl
dDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBSZWY8R1BVRGV2aWNlPiYmKTsKLQogICAgIEpTQzo6
QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JSZWFkKCk7CiAgICAgSlNDOjpBcnJheUJ1ZmZl
ciogc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7CiAgICAgdm9pZCBydW5NYXBwaW5nQ2FsbGJhY2so
KTsKKyAgICB2b2lkIGNvcHlTdGFnaW5nQnVmZmVyVG9HUFUoKTsKIAogICAgIGJvb2wgaXNNYXBX
cml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZs
YWdzOjpNYXBXcml0ZSk7IH0KICAgICBib29sIGlzTWFwUmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkKTsgfQpAQCAtMTI0
LDEwICsxMjMsNiBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtQnVmZmVyU21hcnRQdHIgbV9wbGF0
Zm9ybUJ1ZmZlcjsKICAgICBSZWY8R1BVRGV2aWNlPiBtX2RldmljZTsKIAotI2lmIFVTRShNRVRB
TCkKLSAgICBWZWN0b3I8UmV0YWluUHRyPE1UTEJ1ZmZlcj4+IG1fc3ViRGF0YUJ1ZmZlcnM7Ci0j
ZW5kaWYKLQogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX3N0YWdpbmdCdWZmZXI7CiAg
ICAgUmVmUHRyPFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2s+IG1fbWFwcGluZ0NhbGxiYWNrOwogICAg
IERlZmVycmFibGVUYXNrPFRpbWVyPiBtX21hcHBpbmdDYWxsYmFja1Rhc2s7CkBAIC0xMzUsNiAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9ieXRlTGVuZ3RoOwogICAgIE9wdGlvblNl
dDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IG1fdXNhZ2U7CiAgICAgdW5zaWduZWQgbV9udW1TY2hl
ZHVsZWRDb21tYW5kQnVmZmVycyB7IDAgfTsKKyAgICBib29sIG1faXNNYXBwZWRGcm9tQ3JlYXRp
b24geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgK
aW5kZXggYWZiNTI3Nzg4NzJiYzA5NTE1Y2RkZTRlMjQ2NzgwMWQyNWY1ODkwYi4uOTRjNDYzMzcx
YzgzZTYzMjg1NThlMzJkODNkYTAzM2Y5Njk3ZWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0xMDgs
NyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBt
X3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsKICAgICBWZWN0b3I8UmVmPEdQVUJ1ZmZlcj4+IG1fdXNl
ZEJ1ZmZlcnM7CiAgICAgVmVjdG9yPFJlZjxHUFVUZXh0dXJlPj4gbV91c2VkVGV4dHVyZXM7Ci0g
ICAgYm9vbCBtX2lzRW5jb2RpbmdQYXNzID0gZmFsc2U7CisgICAgYm9vbCBtX2lzRW5jb2RpbmdQ
YXNzIHsgZmFsc2UgfTsKICNpZiBVU0UoTUVUQUwpCiAgICAgTVRMQmxpdENvbW1hbmRFbmNvZGVy
ICpibGl0RW5jb2RlcigpIGNvbnN0OwogICAgIG11dGFibGUgUmV0YWluUHRyPE1UTEJsaXRDb21t
YW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggMDgzYTc3YzM1YTI3ODgzODMzYTg4
ZjY0MzgwYmM2ZjY4NDYyMGU4Ni4uYTY0OWE2MDcxOTE5YjZkNWMyNDFhNzJmMjY4ODI1YTBlNjUx
ZTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VURldmljZS5jcHAKQEAgLTUwLDkgKzUwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWZQdHI8R1BVQnVmZmVyPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZUJ1ZmZlcihjb25zdCBHUFVCdWZm
ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjp0
cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9v
bCBpc01hcHBlZE9uQ3JlYXRpb24pCiB7Ci0gICAgcmV0dXJuIEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRl
KG1ha2VSZWYoKnRoaXMpLCBkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gR1BVQnVmZmVyOjp0cnlD
cmVhdGUobWFrZVJlZigqdGhpcyksIGRlc2NyaXB0b3IsIGlzTWFwcGVkT25DcmVhdGlvbik7CiB9
CiAKIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUoY29uc3Qg
R1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKaW5kZXggYzkxM2RlZmUzMTgz
MmUzNjJkNDVjMTRjNmI3YWM2MmI1YTNkZDVmNi4uYTcxMzk1NDFkMGJmZDE0ZGIyOGZhOTU5ZmZi
MDE5NDMwZjgwM2JiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXZpY2UuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBHUFVEZXZpY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVRGV2aWNl
PgogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiB0cnlDcmVhdGUoY29uc3Qg
T3B0aW9uYWw8R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zPiYpOwogCi0gICAgUmVmUHRyPEdQVUJ1
ZmZlcj4gdHJ5Q3JlYXRlQnVmZmVyKGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImKTsKKyAgICBS
ZWZQdHI8R1BVQnVmZmVyPiB0cnlDcmVhdGVCdWZmZXIoY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRv
ciYsIGJvb2wgaXNNYXBwZWRPbkNyZWF0aW9uID0gZmFsc2UpOwogICAgIFJlZlB0cjxHUFVUZXh0
dXJlPiB0cnlDcmVhdGVUZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJikgY29uc3Q7
CiAgICAgUmVmUHRyPEdQVVNhbXBsZXI+IHRyeUNyZWF0ZVNhbXBsZXIoY29uc3QgR1BVU2FtcGxl
ckRlc2NyaXB0b3ImKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDhhM2Vk
MzI4ZjkyMmJmMzE2ZDMzMDdmYTU4ZWZjYmI2YjQ5MmFmYWYuLjU5YTA3ZmY5Y2ViN2Q4ZWE1MmQz
Y2I2Y2QxYWMzYzdkZjVmYzJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTYyLDcg
KzYyLDcgQEAgYm9vbCBHUFVCdWZmZXI6OnZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIE9wdGlvblNldDxHUFVCdWZmZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UmVmUHRyPEdQVUJ1ZmZlcj4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiBk
ZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitSZWZQdHI8R1BV
QnVmZmVyPiBHUFVCdWZmZXI6OnRyeUNyZWF0ZShSZWY8R1BVRGV2aWNlPiYmIGRldmljZSwgY29u
c3QgR1BVQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc01hcHBlZE9uQ3JlYXRp
b24pCiB7CiAgICAgLy8gTVRMQnVmZmVyIHNpemUgKE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24g
c29tZSBwbGF0Zm9ybXMuCiAgICAgTlNVSW50ZWdlciBzaXplID0gMDsKQEAgLTc1LDYgKzc1LDE3
IEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+
JiYgZGV2aWNlLCBjb25zdCBHUFVCdWZmZXJECiAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdl
KGRldmljZS5nZXQoKSwgdXNhZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAvLyBjb3B5QnVmZmVyVG9CdWZmZXIgY2FsbHMgcmVxdWlyZSA0LWJ5
dGUgYWxpZ25tZW50LiAiVW5tYXBwaW5nIiBhIG1hcHBlZC1vbi1jcmVhdGlvbiBHUFVCdWZmZXIK
KyAgICAvLyB0aGF0IGlzIG90aGVyd2lzZSB1bm1hcHBhYmxlIHJlcXVpcmVzIHN1Y2ggYSBjb3B5
IHRvIHVwbG9hZCBkYXRhLgorICAgIGlmIChpc01hcHBlZE9uQ3JlYXRpb24KKyAgICAgICAgJiYg
IXVzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BV
QnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pCisgICAgICAgICYmIGRlc2NyaXB0b3Iuc2l6
ZSAlIDQpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKCk6IERh
dGEgbXVzdCBiZSBhbGlnbmVkIHRvIGEgbXVsdGlwbGUgb2YgNCBieXRlcyEiKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBGSVhNRTogTWV0YWwgYmVz
dCBwcmFjdGljZXM6IFJlYWQtb25seSBvbmUtdGltZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBz
aG91bGQgbm90IGFsbG9jYXRlIGEgTVRMQnVmZmVyIGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5k
RW5jb2RlciBzZXQqQnl0ZXNdIGNhbGxzIGluc3RlYWQuCiAKICAgICBNVExSZXNvdXJjZU9wdGlv
bnMgcmVzb3VyY2VPcHRpb25zID0gTVRMUmVzb3VyY2VDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7
CkBAIC05NSwxNCArMTA2LDE1IEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlLCBjb25zdCBHUFVCdWZmZXJECiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZl
cihXVEZNb3ZlKG10bEJ1ZmZlciksIHNpemUsIHVzYWdlLCBXVEZNb3ZlKGRldmljZSkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVCdWZmZXIoV1RGTW92ZShtdGxCdWZmZXIpLCBXVEZN
b3ZlKGRldmljZSksIHNpemUsIHVzYWdlLCBpc01hcHBlZE9uQ3JlYXRpb24pKTsKIH0KIAotR1BV
QnVmZmVyOjpHUFVCdWZmZXIoUmV0YWluUHRyPE1UTEJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBz
aXplLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgUmVmPEdQVURldmlj
ZT4mJiBkZXZpY2UpCitHUFVCdWZmZXI6OkdQVUJ1ZmZlcihSZXRhaW5QdHI8TVRMQnVmZmVyPiYm
IGJ1ZmZlciwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIHNpemVfdCBzaXplLCBPcHRpb25TZXQ8
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiB1c2FnZSwgYm9vbCBpc01hcHBlZCkKICAgICA6IG1fcGxh
dGZvcm1CdWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9kZXZpY2UoV1RGTW92ZShkZXZp
Y2UpKQogICAgICwgbV9ieXRlTGVuZ3RoKHNpemUpCiAgICAgLCBtX3VzYWdlKHVzYWdlKQorICAg
ICwgbV9pc01hcHBlZEZyb21DcmVhdGlvbihpc01hcHBlZCkKIHsKIH0KIApAQCAtMTIwLDY5ICsx
MzIsMTYgQEAgR1BVQnVmZmVyOjpTdGF0ZSBHUFVCdWZmZXI6OnN0YXRlKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcGxhdGZvcm1CdWZmZXIpCiAgICAgICAgIHJldHVybiBTdGF0ZTo6RGVzdHJveWVk
OwotICAgIGlmIChtX21hcHBpbmdDYWxsYmFjaykKKyAgICBpZiAobV9pc01hcHBlZEZyb21DcmVh
dGlvbiB8fCBtX21hcHBpbmdDYWxsYmFjaykKICAgICAgICAgcmV0dXJuIFN0YXRlOjpNYXBwZWQ7
CiAKICAgICByZXR1cm4gU3RhdGU6OlVubWFwcGVkOwogfQogCi12b2lkIEdQVUJ1ZmZlcjo6c2V0
U3ViRGF0YSh1aW50NjRfdCBvZmZzZXQsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGRhdGEpCitK
U0M6OkFycmF5QnVmZmVyKiBHUFVCdWZmZXI6Om1hcE9uQ3JlYXRpb24oKQogewotICAgIE1UTENv
bW1hbmRRdWV1ZSAqcXVldWU7Ci0gICAgaWYgKCFtX2RldmljZS0+dHJ5R2V0UXVldWUoKSB8fCAh
KHF1ZXVlID0gbV9kZXZpY2UtPnRyeUdldFF1ZXVlKCktPnBsYXRmb3JtUXVldWUoKSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWlzVHJhbnNmZXJEZXN0aW5hdGlvbigpIHx8IHN0
YXRlKCkgIT0gU3RhdGU6OlVubWFwcGVkKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZm
ZXI6OnNldFN1YkRhdGEoKTogSW52YWxpZCBvcGVyYXRpb24hIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKG9mZnNldCAlIDQgfHwgZGF0YS5i
eXRlTGVuZ3RoKCkgJSA0KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnNldFN1
YkRhdGEoKTogRGF0YSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgLy8gTVRMQnVmZmVyIHNpemUg
KE5TVUludGVnZXIpIGlzIDMyIGJpdHMgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgYXV0byBzdWJE
YXRhTGVuZ3RoID0gY2hlY2tlZFN1bTxOU1VJbnRlZ2VyPihkYXRhLmJ5dGVMZW5ndGgoKSwgb2Zm
c2V0KTsKLSAgICBpZiAoc3ViRGF0YUxlbmd0aC5oYXNPdmVyZmxvd2VkKCkgfHwgc3ViRGF0YUxl
bmd0aC51bnNhZmVHZXQoKSA+IG1fYnl0ZUxlbmd0aCkgewotICAgICAgICBMT0coV2ViR1BVLCAi
R1BVQnVmZmVyOjpzZXRTdWJEYXRhKCk6IEludmFsaWQgb2Zmc2V0IG9yIGRhdGEgc2l6ZSEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3N1YkRhdGFCdWZmZXJzLmlzRW1w
dHkoKSkgewotICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgICAgIG1f
c3ViRGF0YUJ1ZmZlcnMuYXBwZW5kKGFkb3B0TlMoW21fcGxhdGZvcm1CdWZmZXIuZ2V0KCkuZGV2
aWNlIG5ld0J1ZmZlcldpdGhMZW5ndGg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9ieXRlTGVu
Z3RoKSBvcHRpb25zOk1UTFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlXSkpOwotICAg
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIH0KLQotICAgIF9fYmxvY2sgYXV0
byBzdGFnaW5nTXRsQnVmZmVyID0gbV9zdWJEYXRhQnVmZmVycy50YWtlTGFzdCgpOwotCi0gICAg
aWYgKCFzdGFnaW5nTXRsQnVmZmVyIHx8IHN0YWdpbmdNdGxCdWZmZXIuZ2V0KCkubGVuZ3RoIDwg
ZGF0YS5ieXRlTGVuZ3RoKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6c2V0
U3ViRGF0YSgpOiBVbmFibGUgdG8gZ2V0IHN0YWdpbmcgYnVmZmVyIGZvciBwcm92aWRlZCBkYXRh
ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbWVtY3B5KHN0YWdpbmdNdGxCdWZm
ZXIuZ2V0KCkuY29udGVudHMsIGRhdGEuZGF0YSgpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBhdXRvIGNvbW1hbmRCdWZmZXIg
PSByZXRhaW5QdHIoW3F1ZXVlIGNvbW1hbmRCdWZmZXJdKTsKLSAgICBhdXRvIGJsaXRFbmNvZGVy
ID0gcmV0YWluUHRyKFtjb21tYW5kQnVmZmVyIGJsaXRDb21tYW5kRW5jb2Rlcl0pOwotCi0gICAg
W2JsaXRFbmNvZGVyIGNvcHlGcm9tQnVmZmVyOnN0YWdpbmdNdGxCdWZmZXIuZ2V0KCkgc291cmNl
T2Zmc2V0OjAgdG9CdWZmZXI6bV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKSBkZXN0aW5hdGlvbk9mZnNl
dDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihvZmZzZXQpIHNpemU6c3RhZ2luZ010bEJ1ZmZlci5n
ZXQoKS5sZW5ndGhdOwotICAgIFtibGl0RW5jb2RlciBlbmRFbmNvZGluZ107Ci0KLSAgICBpZiAo
aXNNYXBwYWJsZSgpKQotICAgICAgICBjb21tYW5kQnVmZmVyQ29tbWl0dGVkKGNvbW1hbmRCdWZm
ZXIuZ2V0KCkpOwotCi0gICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKTsK
LSAgICBbY29tbWFuZEJ1ZmZlciBhZGRDb21wbGV0ZWRIYW5kbGVyOl4oaWQ8TVRMQ29tbWFuZEJ1
ZmZlcj4pIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmV1c2VTdWJEYXRhQnVmZmVyKFdURk1v
dmUoc3RhZ2luZ010bEJ1ZmZlcikpOwotICAgIH1dOwotICAgIFtjb21tYW5kQnVmZmVyIGNvbW1p
dF07Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworICAgIEFTU0VSVChtX2lzTWFw
cGVkRnJvbUNyZWF0aW9uKTsKKyAgICByZXR1cm4gc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7CiB9
CiAKICNpZiBVU0UoTUVUQUwpCkBAIC0yMTAsMTEgKzE2OSw2IEBAIHZvaWQgR1BVQnVmZmVyOjpj
b21tYW5kQnVmZmVyQ29tcGxldGVkKCkKIAogICAgIC0tbV9udW1TY2hlZHVsZWRDb21tYW5kQnVm
ZmVyczsKIH0KLQotdm9pZCBHUFVCdWZmZXI6OnJldXNlU3ViRGF0YUJ1ZmZlcihSZXRhaW5QdHI8
TVRMQnVmZmVyPiYmIGJ1ZmZlcikKLXsKLSAgICBtX3N1YkRhdGFCdWZmZXJzLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwotfQogI2VuZGlmIC8vIFVTRShNRVRBTCkKIAogdm9pZCBHUFVCdWZmZXI6
OnJlZ2lzdGVyTWFwcGluZ0NhbGxiYWNrKE1hcHBpbmdDYWxsYmFjayYmIGNhbGxiYWNrLCBib29s
IGlzUmVhZCkKQEAgLTI2NiwxNiArMjIwLDU0IEBAIEpTQzo6QXJyYXlCdWZmZXIqIEdQVUJ1ZmZl
cjo6c3RhZ2luZ0J1ZmZlckZvcldyaXRlKCkKICAgICByZXR1cm4gbV9zdGFnaW5nQnVmZmVyLmdl
dCgpOwogfQogCit2b2lkIEdQVUJ1ZmZlcjo6Y29weVN0YWdpbmdCdWZmZXJUb0dQVSgpCit7Cisg
ICAgTVRMQ29tbWFuZFF1ZXVlICpxdWV1ZTsKKyAgICBpZiAoIW1fZGV2aWNlLT50cnlHZXRRdWV1
ZSgpIHx8ICEocXVldWUgPSBtX2RldmljZS0+dHJ5R2V0UXVldWUoKS0+cGxhdGZvcm1RdWV1ZSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gc3RhZ2luZ010
bEJ1ZmZlcjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICAvLyBHUFVC
dWZmZXIgY3JlYXRpb24gdmFsaWRhdGlvbiBlbnN1cmVzIG1fYnl0ZVNpemUgZml0cyBpbiBOU1VJ
bnRlZ2VyLgorICAgIHN0YWdpbmdNdGxCdWZmZXIgPSBhZG9wdE5TKFttX2RldmljZS0+cGxhdGZv
cm1EZXZpY2UoKSBuZXdCdWZmZXJXaXRoTGVuZ3RoOnN0YXRpY19jYXN0PE5TVUludGVnZXI+KG1f
Ynl0ZUxlbmd0aCkgb3B0aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZV0p
OworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXN0YWdpbmdNdGxC
dWZmZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6dW5tYXAoKTogVW5hYmxl
IHRvIGNyZWF0ZSBzdGFnaW5nIGJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1lbWNweShzdGFnaW5nTXRsQnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX3N0YWdpbmdCdWZm
ZXItPmRhdGEoKSwgbV9ieXRlTGVuZ3RoKTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKworICAgIGF1dG8gY29tbWFuZEJ1ZmZlciA9IHJldGFpblB0cihbcXVldWUgY29tbWFu
ZEJ1ZmZlcl0pOworICAgIGF1dG8gYmxpdEVuY29kZXIgPSByZXRhaW5QdHIoW2NvbW1hbmRCdWZm
ZXIgYmxpdENvbW1hbmRFbmNvZGVyXSk7CisKKyAgICBbYmxpdEVuY29kZXIgY29weUZyb21CdWZm
ZXI6c3RhZ2luZ010bEJ1ZmZlci5nZXQoKSBzb3VyY2VPZmZzZXQ6MCB0b0J1ZmZlcjptX3BsYXRm
b3JtQnVmZmVyLmdldCgpIGRlc3RpbmF0aW9uT2Zmc2V0OjAgc2l6ZTpzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihtX2J5dGVMZW5ndGgpXTsKKyAgICBbYmxpdEVuY29kZXIgZW5kRW5jb2RpbmddOwor
ICAgIFtjb21tYW5kQnVmZmVyIGNvbW1pdF07CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworfQorCiB2b2lkIEdQVUJ1ZmZlcjo6dW5tYXAoKQogewotICAgIGlmICghaXNNYXBwYWJs
ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnVubWFwKCk6IEJ1ZmZlciBp
cyBub3QgbWFwcGFibGUhIik7CisgICAgaWYgKCFtX2lzTWFwcGVkRnJvbUNyZWF0aW9uICYmICFp
c01hcHBhYmxlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6dW5tYXAoKTog
SW52YWxpZCBvcGVyYXRpb246IGJ1ZmZlciBpcyBub3QgbWFwcGFibGUhIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV9zdGFnaW5nQnVmZmVyICYmIGlzTWFwV3JpdGUoKSkg
ewotICAgICAgICBBU1NFUlQobV9wbGF0Zm9ybUJ1ZmZlcik7Ci0gICAgICAgIG1lbWNweShtX3Bs
YXRmb3JtQnVmZmVyLmdldCgpLmNvbnRlbnRzLCBtX3N0YWdpbmdCdWZmZXItPmRhdGEoKSwgbV9i
eXRlTGVuZ3RoKTsKKyAgICBpZiAobV9zdGFnaW5nQnVmZmVyKSB7CisgICAgICAgIGlmIChpc01h
cHBhYmxlKCkpIHsKKyAgICAgICAgICAgIC8vIE1BUF9XUklURSBhbmQgTUFQX1JFQUQgYnVmZmVy
cyBoYXZlIHNoYXJlZCwgQ1BVLWFjY2Vzc2libGUgc3RvcmFnZS4KKyAgICAgICAgICAgIEFTU0VS
VChtX3BsYXRmb3JtQnVmZmVyICYmIG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkuY29udGVudHMpOwor
ICAgICAgICAgICAgbWVtY3B5KG1fcGxhdGZvcm1CdWZmZXIuZ2V0KCkuY29udGVudHMsIG1fc3Rh
Z2luZ0J1ZmZlci0+ZGF0YSgpLCBtX2J5dGVMZW5ndGgpOworICAgICAgICB9IGVsc2UgaWYgKG1f
aXNNYXBwZWRGcm9tQ3JlYXRpb24pCisgICAgICAgICAgICBjb3B5U3RhZ2luZ0J1ZmZlclRvR1BV
KCk7CisKKyAgICAgICAgbV9pc01hcHBlZEZyb21DcmVhdGlvbiA9IGZhbHNlOwogICAgICAgICBt
X3N0YWdpbmdCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc4NDg1ZGY4MDUzMGE3
YmQ1ZDFiOWRlOWZiZmFkYjIxMGRhZGY5ZTAuLjRlY2RiN2FjZjFkNzM5NTM0NjIyODkyY2YyYTVh
ZTU1ZjQ2N2JiZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxOS0wNi0wNSAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFJlbW92ZSBHUFVC
dWZmZXIuc2V0U3ViRGF0YSBhbmQgaW1wbGVtZW50IEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBw
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODU5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdQVUJ1
ZmZlci5zZXRTdWJEYXRhIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgV2ViR1BVIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkIGhhcyBiZWVuIGFk
ZGVkIHRvIHRoZSBXZWJHUFUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIFJlcGxhY2UgYWxsIHNl
dFN1YkRhdGEgY2FsbHMgd2l0aCBhcHByb3ByaWF0ZSByZXBsYWNlbWVudHMuCisKKyAgICAgICAg
KiB3ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvYmxp
dC1jb21tYW5kcy5odG1sOgorICAgICAgICAqIHdlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXIt
cmFjZXMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5o
dG1sOgorICAgICAgICAqIHdlYmdwdS9jb21wdXRlLXNxdWFyZXMuaHRtbDoKKyAgICAgICAgKiB3
ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sOgorICAgICAgICAqIHdlYmdw
dS9kcmF3LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L2pzL3dlYmdw
dS1mdW5jdGlvbnMuanM6CisgICAgICAgIChjcmVhdGVCdWZmZXJXaXRoRGF0YSk6CisgICAgICAg
IChhc3luYy5tYXBXcml0ZURhdGFUb0J1ZmZlcik6CisgICAgICAgICogd2ViZ3B1L21hcC1yZWFk
LWJ1ZmZlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS9tYXAtcmVhZC1idWZmZXJz
Lmh0bWw6CisgICAgICAgICogd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbDoKKyAg
ICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sOgorCiAyMDE5
LTA1LTMwICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YiBHUFVdIFZlcnRleCBCdWZmZXJzL0lucHV0IFN0YXRlIEFQSSB1cGRhdGVzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvYmxlbmQtdHJpYW5nbGUtc3RyaXAuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJpcC5odG1sCmluZGV4IGRkN2ZkYTY3NDg5YmIz
ZTM3YTQ0Y2I4ODJiOGFjMGEyNjUwYzIyYTMuLmNhYmVmNjllNzlkMmIzMjhkNzNhNjMyM2JmMmNj
ZjBkZjg5YzExNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmds
ZS1zdHJpcC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGVuZC10cmlhbmdsZS1zdHJp
cC5odG1sCkBAIC03NSw4ICs3NSw3IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAg
IDEsIDEsIDAsIDEsCiAgICAgICAgIDEsIC0xLCAwLCAxCiAgICAgXSk7Ci0gICAgY29uc3QgdmVy
dGV4QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IHZlcnRleERhdGEuYnl0ZUxl
bmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLlRSQU5T
RkVSX0RTVCB9KTsKLSAgICB2ZXJ0ZXhCdWZmZXIuc2V0U3ViRGF0YSgwLCB2ZXJ0ZXhEYXRhLmJ1
ZmZlcik7CisgICAgY29uc3QgdmVydGV4QnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2
aWNlLCB7IHNpemU6IHZlcnRleERhdGEuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB9LCB2ZXJ0ZXhEYXRhLmJ1ZmZlcik7CiAKICAgICBjb25zdCBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoImdwdSIpOwogICAgIGNvbnN0IHN3YXBDaGFpbiA9IGNvbnRleHQuY29u
ZmlndXJlU3dhcENoYWluKHsgZGV2aWNlOiBkZXZpY2UsIGZvcm1hdDogImJncmE4dW5vcm0iIH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKaW5kZXggZDdlYTIyNWIxMzFmNzk3
ZjkzYmM4Mzg4MjdiZmM0MzIxZmRiYzJiNi4uOGRlYWExOTMxMWM1ZGUzNTk2YzY1ZTU4MzUxNmQ4
Mzc4OTkzNDZhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sCkBAIC0zMCwx
MSArMzAsMTEgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdChpbWFnZSkgewogCiAgICAgY29uc3QgYnVm
ZmVyRGVzY3JpcHRvciA9IHsKICAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0
aCwKLSAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlRSQU5TRkVSX1NSQyB8IEdQVUJ1ZmZl
clVzYWdlLlRSQU5TRkVSX0RTVAorICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVFJBTlNG
RVJfU1JDCiAgICAgfTsKLSAgICBjb25zdCBidWZmZXJBID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihi
dWZmZXJEZXNjcmlwdG9yKTsKLSAgICBidWZmZXJBLnNldFN1YkRhdGEoMCwgaW1hZ2VEYXRhLmRh
dGEuYnVmZmVyKTsKKyAgICBidWZmZXJBID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCBi
dWZmZXJEZXNjcmlwdG9yLCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOwogCisgICAgYnVmZmVyRGVz
Y3JpcHRvci51c2FnZSB8PSBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1Q7CiAgICAgY29uc3Qg
YnVmZmVyQiA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7CiAgICAgY29u
c3QgYnVmZmVyVmlld0IgPSB7CiAgICAgICAgIGJ1ZmZlcjogYnVmZmVyQiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbAppbmRleCAy
YWVjZGE0MmE2YzdlZjlmZDI0MDk0NGU2YTM5YjhlY2M0OWFiMjAwLi44NjRjNWVmMjljZjI3NzJi
YjgzNTEwNDgxOTk2YzkzZWQ3YjUwZjg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
YnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sCkBAIC02MywxMCArNjMsOCBAQCBmdW5j
dGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0
ZUFuZFNldFZlcnRleEJ1ZmZlcihkZXZpY2UsIHZlcnRpY2VzKSB7Ci0gICAgY29uc3QgZmxvYXRB
cnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpOwotICAgIGNvbnN0IGJ1ZmZlciA9IGRl
dmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiBmbG9hdEFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfSk7Ci0g
ICAgYnVmZmVyLnNldFN1YkRhdGEoMCwgZmxvYXRBcnJheS5idWZmZXIpOwotICAgIHJldHVybiBi
dWZmZXI7CisgICAgY29uc3QgdmVydGV4QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2Vz
KQorICAgIHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4
QXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhB
cnJheS5idWZmZXIpOwogfQogCiBmdW5jdGlvbiBkcmF3QW5kU3VibWl0Q29tbWFuZHMoZGV2aWNl
LCBwaXBlbGluZSwgYXR0YWNobWVudCwgdmVydGV4QnVmZmVyLCBjb2xvckJ1ZmZlcikgewpAQCAt
OTcsOCArOTUsNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGNvbnN0IGdyZWVuQXJy
YXkgPSBuZXcgRmxvYXQzMkFycmF5KGdyZWVuKTsKICAgICBjb25zdCBibHVlQXJyYXkgPSBuZXcg
RmxvYXQzMkFycmF5KGJsdWUpOwogCi0gICAgY29uc3QgY29sb3JCdWZmZXIgPSBkZXZpY2UuY3Jl
YXRlQnVmZmVyKHsgc2l6ZTogZ3JlZW5BcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIHwgR1BVQnVmZmVyVXNh
Z2UuTUFQX1dSSVRFIH0pOwotICAgIGNvbG9yQnVmZmVyLnNldFN1YkRhdGEoMCwgZ3JlZW5BcnJh
eS5idWZmZXIpOworICAgIGNvbnN0IGNvbG9yQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEo
ZGV2aWNlLCB7IHNpemU6IGdyZWVuQXJyYXkuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVz
YWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9LCBncmVlbkFycmF5LmJ1ZmZl
cik7CiAKICAgICBjb25zdCBhdHRhY2htZW50ID0gewogICAgICAgICBhdHRhY2htZW50OiBzd2Fw
Q2hhaW4uZ2V0Q3VycmVudFRleHR1cmUoKS5jcmVhdGVEZWZhdWx0VmlldygpLApAQCAtMTI2LDEy
ICsxMjMsMTIgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAvKiBjb2xvckJ1ZmZlciBk
b2VzIG5vdCBhY3R1YWxseSBjb250YWluICJncmVlbiIgYWdhaW4gdW50aWwgdGhpcyBjYWxsLiAq
LwogICAgIGNvbG9yQnVmZmVyLnVubWFwKCk7CiAKLSAgICAvKiBzZXRTdWJEYXRhIGltbWVkaWF0
ZWx5IGFmdGVyIGEgc3VibWl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBwcmVjZWRpbmcgZHJhdyBj
YWxsLiAqLworICAgIC8qIFdyaXRpbmcgZGF0YSBpbW1lZGlhdGVseSBhZnRlciBhIHN1Ym1pdCBz
aG91bGQgbm90IGFmZmVjdCB0aGUgcHJlY2VkaW5nIGRyYXcgY2FsbC4gKi8KICAgICBkcmF3QW5k
U3VibWl0Q29tbWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwgbWlkZGxlQnVmZmVy
LCBjb2xvckJ1ZmZlcik7Ci0gICAgY29sb3JCdWZmZXIuc2V0U3ViRGF0YSgwLCBibHVlQXJyYXku
YnVmZmVyKTsKKyAgICBhd2FpdCBtYXBXcml0ZURhdGFUb0J1ZmZlcihjb2xvckJ1ZmZlciwgYmx1
ZUFycmF5LmJ1ZmZlcik7CiAKICAgICAvKiBkZXN0cm95IHJpZ2h0IGFmdGVyIGEgc3VibWl0IHNo
b3VsZCBub3QgYWZmZWN0IHRoZSBkcmF3IGNhbGwuICovCi0gICAgY29sb3JCdWZmZXIuc2V0U3Vi
RGF0YSgwLCBncmVlbkFycmF5LmJ1ZmZlcik7CisgICAgYXdhaXQgbWFwV3JpdGVEYXRhVG9CdWZm
ZXIoY29sb3JCdWZmZXIsIGdyZWVuQXJyYXkuYnVmZmVyKTsKICAgICBkcmF3QW5kU3VibWl0Q29t
bWFuZHMoZGV2aWNlLCBwaXBlbGluZSwgYXR0YWNobWVudCwgdXBwZXJSaWdodEJ1ZmZlciwgY29s
b3JCdWZmZXIpOwogICAgIHVwcGVyUmlnaHRCdWZmZXIuZGVzdHJveSgpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1yZXNvdXJjZS10cmlhbmdsZXMuaHRtbAppbmRleCBiZDA2
YzQ1N2Q0OTdlNmIzODQ0MWY3OTE2MTY5N2I3YjA4YzY4MjRkLi5lMmU2ZDM0ZGVkYjI3ODQ4ZTY2
NTFlNDdlMGY3Njg2ODg5YTJkMzkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVm
ZmVyLXJlc291cmNlLXRyaWFuZ2xlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZm
ZXItcmVzb3VyY2UtdHJpYW5nbGVzLmh0bWwKQEAgLTgxLDE3ICs4MSwxMyBAQCBmdW5jdGlvbiBj
cmVhdGVVbmlmb3JtQnVmZmVyQmluZEdyb3VwTGF5b3V0KGJpbmROdW0sIHN0YWdlID0gR1BVU2hh
ZGVyU3RhZ2VCaXQuVgogfQogCiBjb25zdCB2ZXJ0ZXhTaXplID0gNCAqIDQ7Ci1jb25zdCB2ZXJ0
aWNlc0J1ZmZlclNpemUgPSB2ZXJ0ZXhTaXplICogMzsKIGZ1bmN0aW9uIGNyZWF0ZUFuZFVwbG9h
ZFZlcnRpY2VzQnVmZmVyKGRldmljZSkgewotICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIoeyBzaXplOnZlcnRpY2VzQnVmZmVyU2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdl
LlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLlRSQU5TRkVSX0RTVCB9KTsKLSAgICBjb25zdCBhcnJh
eUJ1ZmZlciA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgIGNvbnN0IHZlcnRleEFycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShbCiAgICAgICAgIDAsIDEsIDAsIDEsCiAgICAgICAgIC0xLCAtMSwgMCwg
MSwKICAgICAgICAgMSwgLTEsIDAsIDEKLSAgICBdKS5idWZmZXI7Ci0KLSAgICBidWZmZXIuc2V0
U3ViRGF0YSgwLCBhcnJheUJ1ZmZlcik7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICBdKTsKKyAg
ICByZXR1cm4gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7IHNpemU6IHZlcnRleEFycmF5
LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5WRVJURVggfSwgdmVydGV4QXJyYXku
YnVmZmVyKTsKIH0KIAogZnVuY3Rpb24gY3JlYXRlRmxvYXQ0QnVmZmVyKGRldmljZSwgYSwgYiwg
cHJvbWlzZXMpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXNxdWFy
ZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9jb21wdXRlLXNxdWFyZXMuaHRtbAppbmRleCBm
Y2FjZjkyZDcyZDc1MzU1OGEzMjkxNjVmZTk0MTI4ZmE2ZDgwMjEzLi4zOWJmZmMwOGQyYWIwOTYx
YzRlYWE2NWU2OTIyNGZiNmJjNWNhMzIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
Y29tcHV0ZS1zcXVhcmVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2NvbXB1dGUtc3F1
YXJlcy5odG1sCkBAIC0zOSw4ICszOSw3IEBAIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CiAg
ICAgY29uc3QgY29tcHV0ZVN0YWdlRGVzY3JpcHRvciA9IHsgbW9kdWxlOiBzaGFkZXJNb2R1bGUs
IGVudHJ5UG9pbnQ6ICJjb21wdXRlIiB9OwogICAgIGNvbnN0IHBpcGVsaW5lID0gZGV2aWNlLmNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSh7IGNvbXB1dGVTdGFnZTogY29tcHV0ZVN0YWdlRGVzY3JpcHRv
ciB9KTsKICAgICAKLSAgICBjb25zdCBkYXRhQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
IHNpemU6IGRhdGEuYnl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UgfCBH
UFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsK
LSAgICBkYXRhQnVmZmVyLnNldFN1YkRhdGEoMCwgZGF0YS5idWZmZXIpOworICAgIGNvbnN0IGRh
dGFCdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogZGF0YS5ieXRl
TGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSB8IEdQVUJ1ZmZlclVzYWdlLk1B
UF9SRUFEIH0sIGRhdGEuYnVmZmVyKTsKICAgICAKICAgICBjb25zdCBiZ0xheW91dEJpbmRpbmcg
PSB7IGJpbmRpbmc6IGRhdGFCaW5kaW5nLCB2aXNpYmlsaXR5OiBHUFVTaGFkZXJTdGFnZUJpdC5D
T01QVVRFLCB0eXBlOiAic3RvcmFnZS1idWZmZXIiIH07CiAgICAgY29uc3QgYmdMYXlvdXQgPSBk
ZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsgYmluZGluZ3M6IFtiZ0xheW91dEJpbmRpbmdd
IH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5n
bGUtc3RyaXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9kZXB0aC1lbmFibGVkLXRyaWFuZ2xl
LXN0cmlwLmh0bWwKaW5kZXggOTI1YzRjOGRkZWZjM2U1ZGMzZDg0MWE0MjRmY2IyMDg3OTFmMzk3
Yy4uZTkwM2IxYjFiZGI4NmFlNTVlYzgxNzRiZDk2NDJlMzUzZWE2NDE5ZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L2RlcHRoLWVuYWJsZWQtdHJpYW5nbGUtc3RyaXAuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvZGVwdGgtZW5hYmxlZC10cmlhbmdsZS1zdHJpcC5odG1sCkBA
IC00OCwxOCArNDgsMTQgQEAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVydGV4T3V0
IHYgW1tzdGFnZV9pbl1dKQogYAogCiBmdW5jdGlvbiBjcmVhdGVWZXJ0ZXhCdWZmZXIoZGV2aWNl
KSB7Ci0gICAgY29uc3QgYnVmZmVyU2l6ZSA9IDQgKiA0ICogNDsKLSAgICBjb25zdCBidWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogYnVmZmVyU2l6ZSwgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLlZFUlRFWCB8IEdQVUJ1ZmZlclVzYWdlLlRSQU5TRkVSX0RTVCB9KTsKLSAgICBjb25z
dCBhcnJheUJ1ZmZlciA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAgIGNvbnN0IHZlcnRleEFycmF5
ID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAgICAgIC8vIGZsb2F0NCB4eXp3CiAgICAgICAgIC0x
LCAxLCAwLCAxLAogICAgICAgICAtMSwgLTEsIDAsIDEsCiAgICAgICAgIDEsIDEsIDAsIDEsCiAg
ICAgICAgIDEsIC0xLCAwLCAxCi0gICAgXSkuYnVmZmVyOwotICAgIAotICAgIGJ1ZmZlci5zZXRT
dWJEYXRhKDAsIGFycmF5QnVmZmVyKTsKLSAgICByZXR1cm4gYnVmZmVyOworICAgIF0pOworICAg
IHJldHVybiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTogdmVydGV4QXJyYXku
Ynl0ZUxlbmd0aCwgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB9LCB2ZXJ0ZXhBcnJheS5i
dWZmZXIpOwogfQogCiBmdW5jdGlvbiBjcmVhdGVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IoKSB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2RyYXctaW5kZXhlZC10cmlhbmdsZXMuaHRtbAppbmRleCAy
ODllM2JmZmZmMzhjYWIzNDJlYzliY2IxNTdhYWY5Y2UzNmE4OWQ0Li4zNzMxZjBiMTU3MjUyNWJk
OWIxYjNmYzNjYThlMWFlZmMxMWViNjM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUv
ZHJhdy1pbmRleGVkLXRyaWFuZ2xlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9kcmF3
LWluZGV4ZWQtdHJpYW5nbGVzLmh0bWwKQEAgLTUzLDEwICs1Myw3IEBAIGZ1bmN0aW9uIGNyZWF0
ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKICAgICAgICAgMSwgLTEsIDAsIDEsIDAsCiAgICAgICAg
IDEsIC0xLCAwLCAxLCAxCiAgICAgXSk7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0
ZUJ1ZmZlcih7IHNpemU6IHZlcnRleEFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfSk7Ci0gICAgYnVmZmVy
LnNldFN1YkRhdGEoMCwgdmVydGV4QXJyYXkuYnVmZmVyKTsKLQotICAgIHJldHVybiBidWZmZXI7
CisgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKGRldmljZSwgeyBzaXplOiB2ZXJ0ZXhB
cnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0sIHZlcnRleEFy
cmF5LmJ1ZmZlcik7CiB9CiAKIGNvbnN0IGluZGV4QnVmZmVyT2Zmc2V0ID0gMjA0ODsgLy8gVGVz
dCBhIGJ1ZmZlciBvZmZzZXQgZm9yIGluZGV4IGFycmF5LgpAQCAtNjUsOCArNjIsMTUgQEAgY29u
c3QgaW5kZXhPZmZzZXQgPSAtOTAwMTsgLy8gVGVzdCBhIGJhc2UgaW5kZXggdG8gYWRkIHRvIGlu
ZGV4IGFycmF5IHZhbHVlcy4KIGZ1bmN0aW9uIGNyZWF0ZUluZGV4QnVmZmVyKGRldmljZSkgewog
ICAgIGNvbnN0IG9mZnNldEFycmF5ID0gWzEsIDMsIDUsIDMsIDUsIDddLm1hcCh2ID0+IHsgcmV0
dXJuIHYgLSBpbmRleE9mZnNldDsgfSk7CiAgICAgY29uc3QgaW5kZXhBcnJheSA9IG5ldyBVaW50
MzJBcnJheShbMSwgMywgNSwgMywgNSwgN10ubWFwKHYgPT4geyByZXR1cm4gdiAtIGluZGV4T2Zm
c2V0OyB9KSk7Ci0gICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6
IGluZGV4QXJyYXkuYnl0ZUxlbmd0aCArIGluZGV4QnVmZmVyT2Zmc2V0LCB1c2FnZTogR1BVQnVm
ZmVyVXNhZ2UuSU5ERVggfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfSk7Ci0gICAgYnVm
ZmVyLnNldFN1YkRhdGEoaW5kZXhCdWZmZXJPZmZzZXQsIGluZGV4QXJyYXkuYnVmZmVyKTsKKyAg
ICBjb25zdCBidWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YSgKKyAgICAgICAgZGV2aWNlLCAK
KyAgICAgICAgeyAKKyAgICAgICAgICAgIHNpemU6IGluZGV4QXJyYXkuYnl0ZUxlbmd0aCArIGlu
ZGV4QnVmZmVyT2Zmc2V0LCAKKyAgICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5JTkRF
WCAKKyAgICAgICAgfSwKKyAgICAgICAgaW5kZXhBcnJheS5idWZmZXIsCisgICAgICAgIGluZGV4
QnVmZmVyT2Zmc2V0CisgICAgKTsKIAogICAgIHJldHVybiBidWZmZXI7CiB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJncHUvanMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3Rz
L3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCmluZGV4IDFjYzZkNmUyNzk4ZmI0NGY3MDVm
YTk2ZjcxYThhMDUxYTZmMzZhY2YuLjhhNTNiZDdjZjY0OWI5NjRiODAyNGE4MjI0NmI1NGM2YmM5
ZDZlNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25z
LmpzCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCkBAIC04
Nyw0ICs4NywxOSBAQCBmdW5jdGlvbiBlbmNvZGVCYXNpY0NvbW1hbmRzKHJlbmRlclBhc3NFbmNv
ZGVyLCByZW5kZXJQaXBlbGluZSwgdmVydGV4QnVmZmVyKSB7CiAgICAgcmVuZGVyUGFzc0VuY29k
ZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOwogICAgIHJlbmRlclBhc3NFbmNvZGVyLmRy
YXcoNCwgMSwgMCwgMCk7CiAgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworfQorCitm
dW5jdGlvbiBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIGRlc2NyaXB0b3IsIGRhdGEsIG9m
ZnNldCA9IDApIHsKKyAgICBjb25zdCBtYXBwZWRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
TWFwcGVkKGRlc2NyaXB0b3IpOworICAgIGNvbnN0IGRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5
KG1hcHBlZEJ1ZmZlclsxXSk7CisgICAgZGF0YUFycmF5LnNldChuZXcgVWludDhBcnJheShkYXRh
KSwgb2Zmc2V0KTsKKyAgICBtYXBwZWRCdWZmZXJbMF0udW5tYXAoKTsKKyAgICByZXR1cm4gbWFw
cGVkQnVmZmVyWzBdOworfQorCithc3luYyBmdW5jdGlvbiBtYXBXcml0ZURhdGFUb0J1ZmZlcihi
dWZmZXIsIGRhdGEsIG9mZnNldCA9IDApIHsKKyAgICBjb25zdCBhcnJheUJ1ZmZlciA9IGF3YWl0
IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCk7CisgICAgY29uc3Qgd3JpdGVBcnJheSA9IG5ldyBVaW50
OEFycmF5KGFycmF5QnVmZmVyKTsKKyAgICB3cml0ZUFycmF5LnNldChuZXcgVWludDhBcnJheShk
YXRhKSwgb2Zmc2V0KTsKKyAgICBidWZmZXIudW5tYXAoKTsKIH0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVy
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy1leHBl
Y3RlZC50eHQKaW5kZXggZTM3OTU3OTRkMzJmNGIxNWM1ZTdjM2NlMmRjNjA0NzhmYWVhMTg4ZS4u
NjAxNWUwY2UxZTc2ZWNhMWZiNDNiYWFjZTBiOWNjYTUyMWFmZGViNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDYg
QEAKIAotUEFTUyBzZXRTdWJEYXRhLCBtYXBSZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBv
biBhIEdQVUJ1ZmZlci4gCitQQVNTIG1hcFJlYWRBc3luYywgdW5tYXAsIGFuZCBkZXN0cm95IG9u
IGEgR1BVQnVmZmVyLiAKK1BBU1MgR1BVQnVmZmVyLm1hcFJlYWRBc3luYyBvbiBhIGJ1ZmZlciBj
cmVhdGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkLiAKIFBBU1MgUmVqZWN0IGEg
bWFwIHJlYWQgb24gYSBidWZmZXIgbm90IGNyZWF0ZWQgd2l0aCBNQVBfUkVBRCB1c2FnZS4gCiBQ
QVNTIFJlamVjdCBhIG1hcCByZWFkIG9uIGEgbWFwcGVkIEdQVUJ1ZmZlci4gCiBQQVNTIFJlamVj
dCBhIHBlbmRpbmcgbWFwIHJlYWQgaWYgR1BVQnVmZmVyIGlzIHVubWFwcGVkLiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJncHUvbWFwLXJlYWQtYnVmZmVycy5odG1sCmluZGV4IDU4Y2UwOTE5ODg5MmU3NThkOTQ0
Y2JjNWI4MGRiY2FiMGQ4MjU2NTAuLjQ0MjU0OWRkNGY0OGRiMWI5NDMyN2YzZmMzMWQxYjNjMzMx
YjU2MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9tYXAtcmVhZC1idWZmZXJzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L21hcC1yZWFkLWJ1ZmZlcnMuaHRtbApAQCAtMSw2
ICsxLDYgQEAKIDwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJp
bWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgogPG1ldGEgY2hhcnNldD11dGYtOD4KLTx0
aXRsZT5UZXN0cyBmb3Igc2V0U3ViRGF0YSBhbmQgbWFwUmVhZEFzeW5jIG9uIGEgR1BVQnVmZmVy
LjwvdGl0bGU+Cis8dGl0bGU+VGVzdHMgZm9yIGNyZWF0ZUJ1ZmZlck1hcHBlZCBhbmQgbWFwUmVh
ZEFzeW5jIG9uIGEgR1BVQnVmZmVyLjwvdGl0bGU+CiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CkBAIC0xMSwyNCArMTEsMTQgQEAg
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdHMoKSB7CiAKICAgICAvLyBCYXNpYyBtYXBSZWFkQXN5bmMg
ZnVuY3Rpb25hbGl0eQogICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7Ci0gICAgICAgIGNv
bnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiAxNiwgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLlRSQU5TRkVSX0RTVCB8IEdQVUJ1ZmZlclVzYWdlLk1BUF9SRUFEIH0pOworICAg
ICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogMTYsIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9KTsKICAgICAgICAgYXNzZXJ0X3RydWUoYnVmZmVy
IGluc3RhbmNlb2YgR1BVQnVmZmVyLCAiY3JlYXRlQnVmZmVyIHJldHVybmVkIGEgR1BVQnVmZmVy
Iik7CiAKLSAgICAgICAgbGV0IGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbMSwgMiwgMywgNF0p
OwotICAgICAgICBidWZmZXIuc2V0U3ViRGF0YSgwLCBhcnJheS5idWZmZXIpOwotCiAgICAgICAg
IGxldCBhcnJheUJ1ZmZlciA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKICAgICAgICAg
YXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciwgImZpcnN0IG1h
cFJlYWRBc3luYyByZXNvbHZlZCBzdWNjZXNzZnVsbHkiKTsKIAogICAgICAgICBjb25zdCByZWFk
QXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKLSAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZWFkQXJyYXlbM10sIDQsICJzdWNjZXNzZnVsbHkgbWFwLXJlYWQgdmFsdWUgc2V0IGJ5
IHNldFN1YkRhdGEiKTsKLQotICAgICAgICBidWZmZXIudW5tYXAoKTsKLQotICAgICAgICBidWZm
ZXIuc2V0U3ViRGF0YSg0ICogMywgYXJyYXkuc2xpY2UoMCwgMSkuYnVmZmVyKTsKLSAgICAgICAg
bGV0IGFycmF5QnVmZmVyMSA9IGF3YWl0IGJ1ZmZlci5tYXBSZWFkQXN5bmMoKTsKLSAgICAgICAg
Y29uc3QgcmVhZEFycmF5MSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIxKTsKLSAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyZWFkQXJyYXlbM10sIDEsICJzdWNjZXNzZnVsbHkgc2V0U3ViRGF0
YSB3aXRoIGFuIG9mZnNldCIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWRBcnJheVswXSwg
MCwgInN1Y2Nlc3NmdWxseSBhY2Nlc3MgYSB2YWx1ZSBmcm9tIGEgbWFwIHJlYWQiKTsKIAogICAg
ICAgICBidWZmZXIudW5tYXAoKTsKIApAQCAtNDAsNyArMzAsNDEgQEAgYXN5bmMgZnVuY3Rpb24g
cnVuVGVzdHMoKSB7CiAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIGRl
c3Ryb3llZCEiKTsKICAgICAgICAgfSwgKCkgPT4ge30pOwogCi0gICAgfSwgInNldFN1YkRhdGEs
IG1hcFJlYWRBc3luYywgdW5tYXAsIGFuZCBkZXN0cm95IG9uIGEgR1BVQnVmZmVyLiIpOworICAg
IH0sICJtYXBSZWFkQXN5bmMsIHVubWFwLCBhbmQgZGVzdHJveSBvbiBhIEdQVUJ1ZmZlci4iKTsK
KworICAgIC8vIEdQVURldmljZS5jcmVhdGVCdWZmZXJNYXBwZWQKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgKCkgPT4geworICAgICAgICBjb25zdCBidWZmZXJSZXN1bHQgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyTWFwcGVkKHsgc2l6ZTogMTYsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRCB9
KTsKKyAgICAgICAgY29uc3QgYnVmZmVyID0gYnVmZmVyUmVzdWx0WzBdOworICAgICAgICBjb25z
dCBhcnJheUJ1ZmZlciA9IGJ1ZmZlclJlc3VsdFsxXTsKKworICAgICAgICBhc3NlcnRfdHJ1ZShi
dWZmZXIgaW5zdGFuY2VvZiBHUFVCdWZmZXIsICJjcmVhdGVCdWZmZXJNYXBwZWQgcmV0dXJuZWQg
YSBHUFVCdWZmZXIiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYXJyYXlCdWZmZXIgaW5zdGFuY2Vv
ZiBBcnJheUJ1ZmZlciwgImNyZWF0ZUJ1ZmZlck1hcHBlZCByZXR1cm5lZCBhbiBBcnJheUJ1ZmZl
ciIpOworCisgICAgICAgIGxldCBhcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIp
OworICAgICAgICBhcnJheS5zZXQoWzEsIDIsIDMsIDRdKTsKKworICAgICAgICAvLyBCdWZmZXIg
c2hvdWxkIGFscmVhZHkgYmUgIm1hcHBlZCIuCisgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBSZWFk
QXN5bmMoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkdQVUJ1
ZmZlciBjcmVhdGVkIHZpYSBHUFVCdWZmZXJNYXBwZWQgY2Fubm90IGJlIG1hcHBlZCB1bnRpbCBh
ZnRlciBmaXJzdCB1bm1hcCEiKTsKKyAgICAgICAgfSwgKCkgPT4ge30pOworCisgICAgICAgIGJ1
ZmZlci51bm1hcCgpOworCisgICAgICAgIC8vIEJ1ZmZlciBzaG91bGQgbm90IGJlIHJlLW1hcHBh
YmxlIGZvciB3cml0ZXMuCisgICAgICAgIGF3YWl0IGJ1ZmZlci5tYXBXcml0ZUFzeW5jKCkudGhl
bigoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJCdWZmZXIgd2FzIG5vdCBj
cmVhdGVkIHdpdGggTUFQX1dSSVRFISIpOworICAgICAgICB9LCAoKSA9PiB7fSk7CisKKyAgICAg
ICAgLy8gUmVhZCByZXN1bHRzIG9mIG9yaWdpbmFsIHdyaXRlcy4KKyAgICAgICAgbGV0IHJlc3Vs
dEFycmF5QnVmZmVyID0gYXdhaXQgYnVmZmVyLm1hcFJlYWRBc3luYygpOworICAgICAgICBjb25z
dCByZXN1bHRBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkocmVzdWx0QXJyYXlCdWZmZXIpOworICAg
ICAgICByZXN1bHRBcnJheS5mb3JFYWNoKCh2LCBpKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHYsIGFycmF5W2ldLCAiU3VjY2Vzc2Z1bGx5IG1hcC1yZWFkIHZhbHVlIHdyaXR0ZW4g
dG8gR1BVQnVmZmVyIG1hcHBlZCBvbiBjcmVhdGlvbiIpOworICAgICAgICB9KQorICAgICAgICAK
KyAgICAgICAgYnVmZmVyLmRlc3Ryb3koKTsKKyAgICB9LCAiR1BVQnVmZmVyLm1hcFJlYWRBc3lu
YyBvbiBhIGJ1ZmZlciBjcmVhdGVkIHZpYSBHUFVEZXZpY2UuY3JlYXRlQnVmZmVyTWFwcGVkLiIp
OwogCiAgICAgLyogQmFzaWMgdmFsaWRhdGlvbiAqLwogICAgIC8vIEZJWE1FOiBUZXN0IGludmFs
aWQgY29tYmluYXRpb25zIG9mIEdQVUJ1ZmZlclVzYWdlIGFmdGVyIGltcGxlbWVudGluZyBlcnJv
ciBoYW5kbGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlLXRyaWFu
Z2xlLXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZS10cmlhbmdsZS1zdHJp
cC5odG1sCmluZGV4IDMzYTBlNjU5OTU5YTFiOTlhZmY0NmNmYTgyNjUxZGZjNmYxMTlhNTguLjg4
ZTJjYWQ0ZTI3NjBjODViNDcyNmFmZDlmZDZhYjFiMTU3MzBhNDggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS90ZXh0dXJlLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3RleHR1cmUtdHJpYW5nbGUtc3RyaXAuaHRtbApAQCAtODksOCArODksNyBAQCBh
c3luYyBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAxLCAxLCAwLCAxLCAKICAgICAgICAgMSwg
LTEsIDAsIDEKICAgICBdKTsKLSAgICBjb25zdCBwb3NpdGlvbkJ1ZmZlciA9IGRldmljZS5jcmVh
dGVCdWZmZXIoeyBzaXplOiBwb3NpdGlvbkFycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5WRVJURVggfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QgfSk7Ci0gICAgcG9z
aXRpb25CdWZmZXIuc2V0U3ViRGF0YSgwLCBwb3NpdGlvbkFycmF5LmJ1ZmZlcik7CisgICAgY29u
c3QgcG9zaXRpb25CdWZmZXIgPSBjcmVhdGVCdWZmZXJXaXRoRGF0YShkZXZpY2UsIHsgc2l6ZTog
cG9zaXRpb25BcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIH0s
IHBvc2l0aW9uQXJyYXkuYnVmZmVyKTsKIAogICAgIGNvbnN0IHRleENvb3Jkc0FycmF5ID0gbmV3
IEZsb2F0MzJBcnJheShbCiAgICAgICAgIC8vIGZsb2F0MiB0ZXhDb29yZHMKQEAgLTk5LDggKzk4
LDcgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgMSwgMCwKICAgICAgICAgMSwg
MQogICAgIF0pOwotICAgIGNvbnN0IHRleHR1cmVDb29yZEJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIoeyBzaXplOiB0ZXhDb29yZHNBcnJheS5ieXRlTGVuZ3RoLCB1c2FnZTogR1BVQnVmZmVy
VXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIH0pOwotICAgIHRleHR1
cmVDb29yZEJ1ZmZlci5zZXRTdWJEYXRhKDAsIHRleENvb3Jkc0FycmF5LmJ1ZmZlcik7CisgICAg
Y29uc3QgdGV4dHVyZUNvb3JkQnVmZmVyID0gY3JlYXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB7
IHNpemU6IHRleENvb3Jkc0FycmF5LmJ5dGVMZW5ndGgsIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5W
RVJURVggfSwgdGV4Q29vcmRzQXJyYXkuYnVmZmVyKTsKIAogICAgIGNvbnN0IHZlcnRleElucHV0
RGVzY3JpcHRvciA9IGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigpOwogCkBAIC0xMjIsMTAg
KzEyMCw5IEBAIGFzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7CiAKICAgICBjb25zdCB0ZXh0dXJlQnVm
ZmVyRGVzY3JpcHRvciA9IHsKICAgICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEubGVuZ3RoLAot
ICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfU1JDIHwgR1BVQnVmZmVyVXNh
Z2UuVFJBTlNGRVJfRFNUCisgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9T
UkMKICAgICB9OwotICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVy
KHRleHR1cmVCdWZmZXJEZXNjcmlwdG9yKTsKLSAgICB0ZXh0dXJlQnVmZmVyLnNldFN1YkRhdGEo
MCwgaW1hZ2VEYXRhLmRhdGEuYnVmZmVyKTsKKyAgICBjb25zdCB0ZXh0dXJlQnVmZmVyID0gY3Jl
YXRlQnVmZmVyV2l0aERhdGEoZGV2aWNlLCB0ZXh0dXJlQnVmZmVyRGVzY3JpcHRvciwgaW1hZ2VE
YXRhLmRhdGEuYnVmZmVyKTsKIAogICAgIC8vIENyZWF0ZSBHUFVUZXh0dXJlCiAgICAgY29uc3Qg
dGV4dHVyZVNpemUgPSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1
ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZm
ZXItdHJpYW5nbGUtc3RyaXAuaHRtbAppbmRleCBhY2Q0Y2VlMmIyNzdkZTc1Zjc4MGFkZmU1YjJj
NTRmYTMzYjRiZGY3Li5mMWZjYWE5ZjMwNjMzNTUzNmFkMDI0Zjg3ZjU0ZTc5MTg3NWI4NzgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJp
cC5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0
cmlwLmh0bWwKQEAgLTQyLDIyICs0MiwyMiBAQCBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFp
bihWZXJ0ZXhPdXQgdiBbW3N0YWdlX2luXV0pCiBgCiAKIGZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1
ZmZlcihkZXZpY2UpIHsKLSAgICBjb25zdCBidWZmZXJTaXplID0gNCAqIDUgKiA0OwotICAgIGNv
bnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeyBzaXplOiBidWZmZXJTaXplLCB1c2Fn
ZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIH0p
OwotICAgIGNvbnN0IHZlcnRleEFycmF5QnVmZmVyMCA9IG5ldyBGbG9hdDMyQXJyYXkoWworICAg
IGNvbnN0IHZlcnRleEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShbCiAgICAgICAgIC8vIGZsb2F0
NCB4eXp3LCBmbG9hdCBnCiAgICAgICAgIC0xLCAxLCAwLCAxLCAxLAotICAgICAgICAtMSwgLTEs
IDAsIDEsIDEKLSAgICBdKS5idWZmZXI7Ci0gICAgY29uc3QgdmVydGV4QXJyYXlCdWZmZXIxID0g
bmV3IEZsb2F0MzJBcnJheShbCisgICAgICAgIC0xLCAtMSwgMCwgMSwgMSwKICAgICAgICAgMSwg
MSwgMCwgMSwgMSwKICAgICAgICAgMSwgLTEsIDAsIDEsIDEKLSAgICBdKS5idWZmZXI7CisgICAg
XSk7CiAKLSAgICBidWZmZXIuc2V0U3ViRGF0YSgwLCB2ZXJ0ZXhBcnJheUJ1ZmZlcjApOwotICAg
IGJ1ZmZlci5zZXRTdWJEYXRhKDQgKiA1ICogMiwgdmVydGV4QXJyYXlCdWZmZXIxKTsKLQotICAg
IHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcldpdGhEYXRhKAorICAgICAg
ICBkZXZpY2UsIAorICAgICAgICB7IAorICAgICAgICAgICAgc2l6ZTogdmVydGV4QXJyYXkuYnl0
ZUxlbmd0aCwgCisgICAgICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1dSSVRFCisgICAgICAgIH0sCisgICAgICAgIHZlcnRleEFycmF5LmJ1
ZmZlcgorICAgICk7CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZVZlcnRleElucHV0RGVzY3JpcHRvcigp
IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>