<?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>200046</bug_id>
          
          <creation_ts>2019-07-23 14:11:07 -0700</creation_ts>
          <short_desc>[WebGPU] Implement errors for GPURenderPipeline creation</short_desc>
          <delta_ts>2019-07-23 18:52:52 -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>WebGPU</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>commit-queue</cc>
    
    <cc>dino</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>1555139</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-23 14:11:07 -0700</bug_when>
    <thetext>[WebGPU] Implement errors for GPURenderPipeline creation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555140</commentid>
    <comment_count>1</comment_count>
      <attachid>374707</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-07-23 14:15:30 -0700</bug_when>
    <thetext>Created attachment 374707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555264</commentid>
    <comment_count>2</comment_count>
      <attachid>374707</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-07-23 18:06:39 -0700</bug_when>
    <thetext>Comment on attachment 374707
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/GPUErrorScopes.cpp:68
&gt; +    generateError(m_prefix + message, filter);

makeString()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555272</commentid>
    <comment_count>3</comment_count>
      <attachid>374707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 18:42:44 -0700</bug_when>
    <thetext>Comment on attachment 374707
Patch

Clearing flags on attachment: 374707

Committed r247764: &lt;https://trac.webkit.org/changeset/247764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555273</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 18:42:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555277</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-23 18:49:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/53476237&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374707</attachid>
            <date>2019-07-23 14:15:30 -0700</date>
            <delta_ts>2019-07-23 18:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200046-20190723141530.patch</filename>
            <type>text/plain</type>
            <size>36242</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Njk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3ZTM2YmRjNWVlOTlk
YzIwMjUxMzgwZWRjZTg3ZDhjMzM2Y2YyZi4uM2FhZDNhYzdmNThlZWE2MjY4YmU0ZjE2MGVhZDU3
NWNiZjBlM2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTA3LTIzICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1wbGVt
ZW50IGVycm9ycyBmb3IgR1BVUmVuZGVyUGlwZWxpbmUgY3JlYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDA0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2luZyBlcnJvciBsb2dnaW5n
IGluIEdQVVJlbmRlclBpcGVsaW5lIGNyZWF0aW9uIHdpdGggR1BVRXJyb3IgZ2VuZXJhdGlvbi4g
CisgICAgICAgIFVwZGF0ZSBHUFVFcnJvclNjb3BlcyB0byByZS11c2UgYW4gZXJyb3IgbWVzc2Fn
ZSBwcmVmaXggZm9yIGxlc3MgYm9pbGVyLXBsYXRlLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9y
ZW5kZXItcGlwZWxpbmUtZXJyb3JzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJl
bmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5kZXJQaXBlbGluZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHUFVFcnJvclNjb3Blczo6Z2VuZXJhdGVQcmVmaXhlZEVycm9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdQVUVycm9yU2NvcGVzOjpzZXRFcnJvclByZWZpeCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06CisgICAgICAgIChX
ZWJDb3JlOjp0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlTZXRWZXJ0ZXhJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjp0cnlTZXRDb2xvclN0YXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlTZXRNZXRhbEZ1bmN0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjp0cnlTZXRGdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjp0cnlDcmVhdGVNdGxSZW5k
ZXJQaXBlbGluZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjp0
cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRl
clBpcGVsaW5lKToKKwogMjAxOS0wNy0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFnZTogbWFyayBhbnkgV2ViQ29yZTo6U2V0
dGluZyBpbnNwZWN0b3Igb3ZlcnJpZGUgYXMgVU5MSUtFTFkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IDEzYTBjZjBiMmM5MTRhMWNlZDZj
NGIyN2FkYTFkOWI0MmVhYjAzMDMuLjlkYjBiNGM0NWVkZTZhODkzM2EzMGVkM2NhNjQ2YjNjYzli
Y2UwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcApAQCAtMTU0LDExICsxNTQsMTMgQEAgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BV
RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgV2ViR1BVU2hhZGVyTW9kdWwKIAogUmVm
PFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5l
KGNvbnN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QK
IHsKLSAgICBhdXRvIGdwdURlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcigpOworICAgIG1fZXJyb3JTY29wZXMtPnNldEVycm9yUHJlZml4
KCJHUFVEZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKTogIik7CisKKyAgICBhdXRvIGdwdURl
c2NyaXB0b3IgPSBkZXNjcmlwdG9yLnRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihtX2Vycm9yU2NvcGVzKTsKICAgICBpZiAoIWdwdURlc2NyaXB0b3IpCiAgICAgICAgIHJldHVy
biBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG51bGxwdHIpOwogCi0gICAgYXV0byBwaXBl
bGluZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVSZW5kZXJQaXBlbGluZSgqZ3B1RGVzY3JpcHRvcik7
CisgICAgYXV0byBwaXBlbGluZSA9IG1fZGV2aWNlLT50cnlDcmVhdGVSZW5kZXJQaXBlbGluZSgq
Z3B1RGVzY3JpcHRvciwgbV9lcnJvclNjb3Blcyk7CiAgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBp
cGVsaW5lOjpjcmVhdGUoV1RGTW92ZShwaXBlbGluZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmNwcAppbmRleCBiZDVjNWQ2NDhhOTczMmU3ZDU4Y2IzZDcyODJkYTdhYjNlNTY4
ZTY2Li5lNDI4YjY1ZTUzYmFlNmY4YTQ3OGVhYzJlZjUxZmE2MTdiOTBkYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTI4LDExICsyOCwxMSBAQAogCiAjaWYgRU5BQkxF
KFdFQkdQVSkKIAotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJHUFVFcnJvclNjb3Bl
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSBjb25zdAorT3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpIGNv
bnN0CiB7CiAgICAgYXV0byBwaXBlbGluZUxheW91dCA9IGxheW91dCA/IG1ha2VSZWZQdHIobGF5
b3V0LT5waXBlbGluZUxheW91dCgpKSA6IG51bGxwdHI7CiAKQEAgLTQzLDcgKzQzLDcgQEAgT3B0
aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3I6OnRyeUNyZWF0ZUcKICAgICAgICAgZnJhZ21lbnQgPSBmcmFnbWVudFN0YWdlLT50
cnlDcmVhdGVHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcigpOwogCiAgICAgaWYgKCF2ZXJ0ZXgg
fHwgKGZyYWdtZW50U3RhZ2UgJiYgIWZyYWdtZW50KSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSgpOiBJbnZhbGlkIEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yISIpOworICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVk
RXJyb3IoIkludmFsaWQgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IhIik7CiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmlu
ZGV4IDBiZGE1ZDdlMDMzMjhjNWYzZGExNjE4OTAwODMxMjRhNzc5MmQyNGMuLmI4ODAxOTAwNTNi
OTY2OTI4MTA2ZDQ2YjBiMTNkNWRjYjVkNDI5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCkBAIC0zNCw4ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdQ
VUVycm9yU2NvcGVzOworCiBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDog
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZSB7Ci0gICAgT3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiB0cnlDcmVh
dGVHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKSBjb25zdDsKKyAgICBPcHRpb25hbDxHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IHRyeUNyZWF0ZUdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcihHUFVFcnJvclNjb3BlcyYpIGNvbnN0OwogCiAgICAgV2ViR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3IgdmVydGV4U3RhZ2U7CiAgICAgT3B0aW9uYWw8V2ViR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3I+IGZyYWdtZW50U3RhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCmluZGV4IDZkYmYyODQ0YWQ0ODczNmI0NTBmM2M0
ZDY1OWE3YzM2OWNmMzdhZDguLjMwY2VmNjg3Zjk0NjZjOTVmYTQ1ZDlmYmI1MjlhY2VjYTMwMWJm
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuY3BwCkBAIC04Miw5ICs4Miw5IEBAIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVURl
dmljZTo6dHJ5Q3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IEdQVVNoYWRlck1vZHVsZURlCiAgICAg
cmV0dXJuIEdQVVNoYWRlck1vZHVsZTo6dHJ5Q3JlYXRlKCp0aGlzLCBkZXNjcmlwdG9yKTsKIH0K
IAotUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVEZXZpY2U6OnRyeUNyZWF0ZVJlbmRlclBp
cGVsaW5lKGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29u
c3QKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQ
VUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykgY29uc3QKIHsKLSAgICByZXR1cm4gR1BVUmVuZGVy
UGlwZWxpbmU6OnRyeUNyZWF0ZSgqdGhpcywgZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIEdQVVJl
bmRlclBpcGVsaW5lOjp0cnlDcmVhdGUoKnRoaXMsIGRlc2NyaXB0b3IsIGVycm9yU2NvcGVzKTsK
IH0KIAogUmVmUHRyPEdQVUNvbXB1dGVQaXBlbGluZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVDb21w
dXRlUGlwZWxpbmUoY29uc3QgR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgUmVmPEdQVUVycm9yU2NvcGVzPiYmIGVycm9yU2NvcGVzKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCmluZGV4IDZkMTlkYTBh
ODE5MmU2NDk5ZjE4N2Y2NTUyMGNhNWIzZDQ5Yzk0MjYuLmI5NDhjOGE2MjU4MjlkMTk5YzE1ODFl
NzU4YmNmOTEzOTI1ODQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRGV2aWNlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIFJlZjxH
UFVQaXBlbGluZUxheW91dD4gY3JlYXRlUGlwZWxpbmVMYXlvdXQoR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gdHJ5Q3Jl
YXRlU2hhZGVyTW9kdWxlKGNvbnN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImKSBjb25zdDsK
LSAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IHRyeUNyZWF0ZVJlbmRlclBpcGVsaW5lKGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpIGNvbnN0OworICAgIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4gdHJ5Q3JlYXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiwgR1BVRXJyb3JTY29wZXMmKSBjb25zdDsKICAgICBSZWZQdHI8R1BV
Q29tcHV0ZVBpcGVsaW5lPiB0cnlDcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgR1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvciYsIFJlZjxHUFVFcnJvclNjb3Blcz4mJikgY29uc3Q7CiAKICAg
ICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gdHJ5Q3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVy
cm9yU2NvcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVF
cnJvclNjb3Blcy5jcHAKaW5kZXggZmEwM2Q3OWQxODFjYzJhNTEyNWUwZDRjZjQwMmU0NzIzZWNj
YTNiYS4uYzEyNTZhOTFhMjY3MGIwYTY4NWE2MDQ5YmZhNDIyZDFmYWFhNTNlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29w
ZXMuY3BwCkBAIC02Myw2ICs2MywxMSBAQCB2b2lkIEdQVUVycm9yU2NvcGVzOjpnZW5lcmF0ZUVy
cm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQogICAgIGl0
ZXJhdG9yLT5lcnJvciA9IGNyZWF0ZUVycm9yKGZpbHRlciwgbWVzc2FnZSk7CiB9CiAKK3ZvaWQg
R1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlUHJlZml4ZWRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEdQVUVycm9yRmlsdGVyIGZpbHRlcikKK3sKKyAgICBnZW5lcmF0ZUVycm9yKG1fcHJlZml4
ICsgbWVzc2FnZSwgZmlsdGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmgKaW5kZXggZTE2MWY3MDQ4MmQxNzBhNDE2OWM4
NDcyM2RhMTdmNTRlN2Q2ZjJlNi4uZTllZTZlYWRjMGY2YWQ1MTE0ZjMwYTAwNWEwZmU4Njg0NTRh
YzBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yU2NvcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUVycm9yU2NvcGVzLmgKQEAgLTQzLDcgKzQzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIpOwogICAgIE9wdGlvbmFsPEdQVUVycm9yPiBw
b3BFcnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpOworCiAgICAgdm9pZCBnZW5lcmF0ZUVy
cm9yKGNvbnN0IFN0cmluZyYsIEdQVUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlk
YXRpb24pOworICAgIHZvaWQgZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGNvbnN0IFN0cmluZyYsIEdQ
VUVycm9yRmlsdGVyID0gR1BVRXJyb3JGaWx0ZXI6OlZhbGlkYXRpb24pOworICAgIHZvaWQgc2V0
RXJyb3JQcmVmaXgoY29uc3QgU3RyaW5nJiBwcmVmaXgpIHsgbV9wcmVmaXggPSBwcmVmaXg7IH0K
IAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRXJyb3JTY29wZSB7CkBAIC01NCw2ICs1Nyw3IEBAIHBy
aXZhdGU6CiAgICAgR1BVRXJyb3JTY29wZXMoKSA9IGRlZmF1bHQ7CiAKICAgICBWZWN0b3I8RXJy
b3JTY29wZT4gbV9lcnJvclNjb3BlczsKKyAgICBTdHJpbmcgbV9wcmVmaXg7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4IDZlMTY1MzJhOTVkNWZkOWI4
ZDIzMzYyNDBlYzJjMTg4MGM2OTJlOWIuLjM5ZWVjMWYwYWJkMzM5YmQyN2FiMjQwNjc0MWRhYTRl
YmZhYTYyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVSZW5kZXJQaXBlbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVT2JqZWN0QmFzZS5oIgogI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NSw5ICs0Niw5IEBAIGNsYXNzIEdQVURldmlj
ZTsKIHVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRl
OwogdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFJl
bmRlclBpcGVsaW5lU3RhdGU+OwogCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZSA6
IHB1YmxpYyBHUFVPYmplY3RCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lPiB0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYsIEdQVUVycm9yU2NvcGVzJik7CiAKICNpZiBVU0UoTUVUQUwpCiAgICAgTVRMRGVw
dGhTdGVuY2lsU3RhdGUgKmRlcHRoU3RlbmNpbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0
aFN0ZW5jaWxTdGF0ZS5nZXQoKTsgfQpAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAjaWYgVVNFKE1FVEFMKQotICAgIEdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExE
ZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYsIEdQ
VVByaW1pdGl2ZVRvcG9sb2d5LCBPcHRpb25hbDxHUFVJbmRleEZvcm1hdD4pOworICAgIEdQVVJl
bmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiwgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYsIEdQVVByaW1pdGl2ZVRvcG9sb2d5LCBPcHRpb25hbDxH
UFVJbmRleEZvcm1hdD4sIEdQVUVycm9yU2NvcGVzJik7CiAKICAgICBSZXRhaW5QdHI8TVRMRGVw
dGhTdGVuY2lsU3RhdGU+IG1fZGVwdGhTdGVuY2lsU3RhdGU7CiAjZW5kaWYgLy8gVVNFKE1FVEFM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQppbmRleCBmNTY2NjFkNmMy
ODBjMDMxY2ZmMDJhNjY0ZTg2NWRiZDgxMTdmMDVmLi5hODNjMGZhMDEyZjhiMzg5NjMxZjFmYjJj
MDNhMzExYmFlMWVlMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiR1BVTGltaXRzLmgiCiAjaW1wb3J0ICJHUFVQ
aXBlbGluZU1ldGFsQ29udmVydExheW91dC5oIgogI2ltcG9ydCAiR1BVVXRpbHMuaCIKLSNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldITFNMUHJlcGFyZS5oIgogI2ltcG9ydCAiV0hMU0xW
ZXJ0ZXhCdWZmZXJJbmRleENhbGN1bGF0b3IuaCIKICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CkBA
IC00MSwxNCArNDAsMTIgQEAKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYv
T3B0aW9uU2V0Lmg+CiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFJl
dGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gdHJ5Q3JlYXRlTXRsRGVwdGhTdGVuY2lsU3Rh
dGUoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQorc3Rh
dGljIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gdHJ5Q3JlYXRlTXRsRGVwdGhTdGVu
Y2lsU3RhdGUoY29uc3QgR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQog
ewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2Vu
ZGlmCiAgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbERlc2NyaXB0b3I+IG10bERlc2NyaXB0
b3I7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC01OCw3ICs1NSw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhTdGVuY2lsU3RhdGU+IHRyeUNyZWF0ZU10bERlcHRo
U3RlbmNpbFN0YXRlKGNvbnN0IGNoYXIqCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAogICAgIGlmICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVu
YWJsZSB0byBjcmVhdGUgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUp
OworICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlVuYWJsZSB0byBj
cmVhdGUgTVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciEiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCkBAIC03Nyw3ICs3NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TVRMRGVwdGhT
dGVuY2lsU3RhdGU+IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGNoYXIqCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIGlmICghc3RhdGUpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExEZXB0aFN0ZW5jaWxTdGF0ZSEi
LCBmdW5jdGlvbk5hbWUpOworICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJy
b3IoIkVycm9yIGNyZWF0aW5nIE1UTERlcHRoU3RlbmNpbFN0YXRlISIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1MCwxNSArMTQ3LDEyIEBAIHN0YXRpYyBNVExWZXJ0
ZXhTdGVwRnVuY3Rpb24gbXRsU3RlcEZ1bmN0aW9uRm9yR1BVSW5wdXRTdGVwTW9kZShHUFVJbnB1
dFN0ZXBNb2RlCiAvLyBGSVhNRTogTW92ZSB0aGlzIGludG8gR1BVTGltaXRzIHdoZW4gdGhhdCBp
cyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhWZXJ0ZXhBdHRy
aWJ1dGVzID0gMTY7CiAKLXN0YXRpYyBib29sIHRyeVNldFZlcnRleElucHV0KGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVVmVydGV4SW5wdXREZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIE9wdGlv
bmFsPFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IpCitz
dGF0aWMgYm9vbCB0cnlTZXRWZXJ0ZXhJbnB1dChjb25zdCBHUFVWZXJ0ZXhJbnB1dERlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRv
ciwgT3B0aW9uYWw8V0hMU0w6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4mIHdobHNsRGVzY3Jp
cHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewotI2lmIExPR19ESVNBQkxFRAot
ICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCiAgICAgY29uc3QgYXV0byYg
YnVmZmVycyA9IGRlc2NyaXB0b3IudmVydGV4QnVmZmVyczsKIAogICAgIGlmIChidWZmZXJzLnNp
emUoKSA+IG1heFZlcnRleEJ1ZmZlcnMpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUb28g
bWFueSB2ZXJ0ZXggaW5wdXQgYnVmZmVycyEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICBlcnJv
clNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVVZlcnRleEJ1ZmZlckRl
c2NyaXB0b3JzISIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNzgsMTMg
KzE3MiwxMyBAQCBzdGF0aWMgYm9vbCB0cnlTZXRWZXJ0ZXhJbnB1dChjb25zdCBjaGFyKiBjb25z
dCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVZlcnRleElucAogICAgICAgICBjb25zdCBhdXRvJiBh
dHRyaWJ1dGVzID0gYnVmZmVyc1tpbmRleF0tPmF0dHJpYnV0ZVNldDsKIAogICAgICAgICBpZiAo
YXR0cmlidXRlcy5zaXplKCkgKyBhdHRyaWJ1dGVJbmRleCA+IG1heFZlcnRleEF0dHJpYnV0ZXMp
IHsKLSAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogVG9vIG1hbnkgdmVydGV4IGF0dHJpYnV0
ZXMhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJl
Zml4ZWRFcnJvcigiVG9vIG1hbnkgR1BVVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvcnMhIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBOU1VJbnRlZ2Vy
IGlucHV0U3RyaWRlID0gMDsKICAgICAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoYnVmZmVy
c1tpbmRleF0tPnN0cmlkZSwgaW5wdXRTdHJpZGUpKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IFN0cmlkZSBmb3IgdmVydGV4IGlucHV0IGJ1ZmZlciAldSBpcyB0b28gbGFyZ2UhIiwg
ZnVuY3Rpb25OYW1lLCBpbmRleCk7CisgICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IobWFrZVN0cmluZygiU3RyaWRlIGZvciBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlw
dG9yICIsIGluZGV4LCAiIGlzIHRvbyBsYXJnZSEiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KIApAQCAtMTk4LDEzICsxOTIsMTMgQEAgc3RhdGljIGJvb2wgdHJ5U2V0
VmVydGV4SW5wdXQoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVWZXJ0
ZXhJbnAKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZXMp
IHsKICAgICAgICAgICAgIGlmICghbG9jYXRpb25zLmFkZChhdHRyaWJ1dGUuc2hhZGVyTG9jYXRp
b24pLmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IER1cGxp
Y2F0ZSBzaGFkZXJMb2NhdGlvbiAldSBmb3IgdmVydGV4IGF0dHJpYnV0ZSEiLCBmdW5jdGlvbk5h
bWUsIGF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbik7CisgICAgICAgICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkR1cGxpY2F0ZSBzaGFkZXJMb2Nh
dGlvbiAiLCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24sICIgZm9yIHZlcnRleCBhdHRyaWJ1dGUh
IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgTlNVSW50ZWdlciBvZmZzZXQgPSAwOwogICAgICAgICAgICAgaWYgKCFXVEY6OmNv
bnZlcnRTYWZlbHkoYXR0cmlidXRlLm9mZnNldCwgb2Zmc2V0KSkgewotICAgICAgICAgICAgICAg
IExPRyhXZWJHUFUsICIlczogQnVmZmVyIG9mZnNldCBmb3IgdmVydGV4IGF0dHJpYnV0ZSAldSBp
cyB0b28gbGFyZ2UhIiwgZnVuY3Rpb25OYW1lLCBhdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24pOwor
ICAgICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihtYWtlU3Ry
aW5nKCJCdWZmZXIgb2Zmc2V0IGZvciB2ZXJ0ZXggYXR0cmlidXRlICIsIGF0dHJpYnV0ZS5zaGFk
ZXJMb2NhdGlvbiwgIiBpcyB0b28gbGFyZ2UhIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KIApAQCAtMjk5LDE0ICsyOTMsMTEgQEAgc3RhdGljIE1UTEJs
ZW5kRmFjdG9yIG10bEJsZW5kRmFjdG9yRm9yR1BVQmxlbmRGYWN0b3IoR1BVQmxlbmRGYWN0b3Ig
ZmFjdG9yKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgYm9vbCB0cnlT
ZXRDb2xvclN0YXRlcyhjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IFZlY3Rv
cjxHUFVDb2xvclN0YXRlRGVzY3JpcHRvcj4mIGNvbG9yU3RhdGVzLCBNVExSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JBcnJheSogYXJyYXksIE9wdGlvbmFsPFdITFNMOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+JiB3aGxzbERlc2NyaXB0b3IpCitzdGF0aWMgYm9vbCB0
cnlTZXRDb2xvclN0YXRlcyhjb25zdCBWZWN0b3I8R1BVQ29sb3JTdGF0ZURlc2NyaXB0b3I+JiBj
b2xvclN0YXRlcywgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQXJy
YXkqIGFycmF5LCBPcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hs
c2xEZXNjcmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCiB7Ci0jaWYgTE9HX0RJ
U0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKICAgICAvLyBG
SVhNRTogUmVwbGFjZSB3aXRoIG1heGltdW0gbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnRzIHBl
ciByZW5kZXIgcGFzcyBmcm9tIEdQVUxpbWl0cy4KICAgICBpZiAoY29sb3JTdGF0ZXMuc2l6ZSgp
ID4gNCkgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgbnVtYmVyIG9mIEdQVUNv
bG9yU3RhdGVEZXNjcmlwdG9ycyEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIlRvbyBtYW55IEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9y
cyEiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzI5LDcgKzMyMCw3IEBA
IHN0YXRpYyBib29sIHRyeVNldENvbG9yU3RhdGVzKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9u
TmFtZSwgY29uc3QgVmVjdG9yPEdQVUNvCiAgICAgICAgICAgICBpZiAoYXV0byBmb3JtYXQgPSBj
b252ZXJ0VGV4dHVyZUZvcm1hdChzdGF0ZS5mb3JtYXQpKQogICAgICAgICAgICAgICAgIHdobHNs
RGVzY3JpcHRvci0+YXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0
b3JzLmFwcGVuZCh7KmZvcm1hdCwgaX0pOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIHRleHR1cmUgZm9ybWF0IGZvciBjb2xvciBh
dHRhY2htZW50ICV1ISIsIGZ1bmN0aW9uTmFtZSwgaSk7CisgICAgICAgICAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIkludmFsaWQgR1BVVGV4dHVy
ZUZvcm1hdCBmb3IgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3IgIiwgaSwgIiEiKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDAs
MjQgKzMzMSwyMCBAQCBzdGF0aWMgYm9vbCB0cnlTZXRDb2xvclN0YXRlcyhjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IFZlY3RvcjxHUFVDbwogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCB0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb25zdCBjaGFyKiBjb25zdCBm
dW5jdGlvbk5hbWUsIE1UTExpYnJhcnkgKnZlcnRleE1ldGFsTGlicmFyeSwgTVRMTGlicmFyeSAq
ZnJhZ21lbnRNZXRhbExpYnJhcnksIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVz
Y3JpcHRvciwgY29uc3QgU3RyaW5nJiB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgY29uc3QgU3RyaW5n
JiBmcmFnbWVudEVudHJ5UG9pbnROYW1lKQorc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlv
bnMoTVRMTGlicmFyeSAqdmVydGV4TWV0YWxMaWJyYXJ5LCBNVExMaWJyYXJ5ICpmcmFnbWVudE1l
dGFsTGlicmFyeSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNjcmlwdG9yLCBj
b25zdCBTdHJpbmcmIHZlcnRleEVudHJ5UG9pbnROYW1lLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50
RW50cnlQb2ludE5hbWUsIEdQVUVycm9yU2NvcGVzJiBlcnJvclNjb3BlcykKIHsKLSNpZiBMT0df
RElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCiAgICAg
ewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKICAgICAgICAgLy8gTWV0
YWwgcmVxdWlyZXMgYSB2ZXJ0ZXggc2hhZGVyIGluIGFsbCByZW5kZXIgcGlwZWxpbmVzLgogICAg
ICAgICBpZiAoIXZlcnRleE1ldGFsTGlicmFyeSkgewotICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBNVExMaWJyYXJ5IGZvciB2ZXJ0ZXggc3RhZ2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rp
b25OYW1lKTsKKyAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
TVRMTGlicmFyeSBmb3IgdmVydGV4IHN0YWdlIGRvZXMgbm90IGV4aXN0ISIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBmdW5jdGlvbiA9IGFk
b3B0TlMoW3ZlcnRleE1ldGFsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnZlcnRleEVudHJ5
UG9pbnROYW1lXSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgICAgIExPRyhX
ZWJHUFUsICIlczogQ2Fubm90IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gXCIlc1wiISIsIGZ1
bmN0aW9uTmFtZSwgdmVydGV4RW50cnlQb2ludE5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiQ2Fubm90
IGNyZWF0ZSB2ZXJ0ZXggTVRMRnVuY3Rpb24gXCIiLCB2ZXJ0ZXhFbnRyeVBvaW50TmFtZSwgIlwi
ISIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0zNzYsNyAr
MzYzLDcgQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlvbnMoY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lLCBNVExMaWJyYXJ5ICp2ZXIKICAgICAgICAgYXV0byBmdW5jdGlvbiA9
IGFkb3B0TlMoW2ZyYWdtZW50TWV0YWxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6ZnJhZ21l
bnRFbnRyeVBvaW50TmFtZV0pOwogCiAgICAgICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAg
ICAgIExPRyhXZWJHUFUsICIlczogQ2Fubm90IGNyZWF0ZSBmcmFnbWVudCBNVExGdW5jdGlvbiBc
IiVzXCIhIiwgZnVuY3Rpb25OYW1lLCBmcmFnbWVudEVudHJ5UG9pbnROYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VT
dHJpbmcoIkNhbm5vdCBjcmVhdGUgZnJhZ21lbnQgTVRMRnVuY3Rpb24gXCIiLCBmcmFnbWVudEVu
dHJ5UG9pbnROYW1lLCAiXCIhIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTM4OSwxMSArMzc2LDggQEAgc3RhdGljIGJvb2wgdHJ5U2V0TWV0YWxGdW5jdGlv
bnMoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExMaWJyYXJ5ICp2ZXIKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHRyeVNldEZ1bmN0aW9ucyhjb25zdCBjaGFy
KiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yJiB2
ZXJ0ZXhTdGFnZSwgY29uc3QgT3B0aW9uYWw8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiBm
cmFnbWVudFN0YWdlLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yKiBtdGxEZXNjcmlwdG9yLCBPcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yPiYgd2hsc2xEZXNjcmlwdG9yKQorc3RhdGljIGJvb2wgdHJ5U2V0RnVuY3Rpb25z
KGNvbnN0IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yJiB2ZXJ0ZXhTdGFnZSwgY29uc3QgT3B0
aW9uYWw8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiBmcmFnbWVudFN0YWdlLCBjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBtdGxEZXNjcmlw
dG9yLCBPcHRpb25hbDxXSExTTDo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiYgd2hsc2xEZXNj
cmlwdG9yLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMpCiB7Ci0jaWYgTE9HX0RJU0FCTEVE
Ci0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYKICAgICBSZXRhaW5QdHI8
TVRMTGlicmFyeT4gdmVydGV4TGlicmFyeSwgZnJhZ21lbnRMaWJyYXJ5OwogICAgIFN0cmluZyB2
ZXJ0ZXhFbnRyeVBvaW50LCBmcmFnbWVudEVudHJ5UG9pbnQ7CiAKQEAgLTQwNyw4ICszOTEsMTAg
QEAgc3RhdGljIGJvb2wgdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9u
TmFtZSwgY29uc3QgR1BVUGlwZWxpbmVTdGEKICAgICAgICAgICAgIHdobHNsRGVzY3JpcHRvci0+
ZnJhZ21lbnRFbnRyeVBvaW50TmFtZSA9IGZyYWdtZW50U3RhZ2UtPmVudHJ5UG9pbnQ7CiAKICAg
ICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSh3aGxzbFNvdXJj
ZSwgKndobHNsRGVzY3JpcHRvcik7Ci0gICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KQor
ICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgeworICAgICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJXSExTTCBjb21waWxhdGlvbiBmYWlsZWQhIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBOU0Vycm9yICpl
cnJvciA9IG5pbDsKIApAQCAtNDE2LDEwICs0MDIsMTMgQEAgc3RhdGljIGJvb2wgdHJ5U2V0RnVu
Y3Rpb25zKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVUGlwZWxpbmVT
dGEKICAgICAgICAgdmVydGV4TGlicmFyeSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmlj
ZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOndobHNsQ29tcGlsZVJlc3VsdC0+bWV0YWxTb3VyY2Ug
b3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKKyAgICAgICAgaWYgKCF2ZXJ0ZXhMaWJyYXJ5ICYmIGVycm9yKSB7CisgICAgICAg
ICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24uVVRGOFN0cmluZyk7CiAjaWZuZGVmIE5ERUJVRwotICAgICAgICBpZiAoIXZlcnRl
eExpYnJhcnkpCiAgICAgICAgICAgICBOU0xvZyhAIiVAIiwgZXJyb3IpOwogI2VuZGlmCisgICAg
ICAgIH0KKwogICAgICAgICBBU1NFUlQodmVydGV4TGlicmFyeSk7CiAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1NzcxIE9uY2Ugd2Ug
emVyby1maWxsIHZhcmlhYmxlcywgdGhlcmUgc2hvdWxkIGJlIG5vIHdhcm5pbmdzLCBzbyB3ZSBz
aG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWVycm9yKSBoZXJlLgogCkBAIC00MzUsMTAgKzQyNCwx
MCBAQCBzdGF0aWMgYm9vbCB0cnlTZXRGdW5jdGlvbnMoY29uc3QgY2hhciogY29uc3QgZnVuY3Rp
b25OYW1lLCBjb25zdCBHUFVQaXBlbGluZVN0YQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIHRyeVNldE1ldGFsRnVuY3Rpb25zKGZ1bmN0aW9uTmFtZSwgdmVydGV4TGlicmFyeS5nZXQo
KSwgZnJhZ21lbnRMaWJyYXJ5LmdldCgpLCBtdGxEZXNjcmlwdG9yLCB2ZXJ0ZXhFbnRyeVBvaW50
LCBmcmFnbWVudEVudHJ5UG9pbnQpOworICAgIHJldHVybiB0cnlTZXRNZXRhbEZ1bmN0aW9ucyh2
ZXJ0ZXhMaWJyYXJ5LmdldCgpLCBmcmFnbWVudExpYnJhcnkuZ2V0KCksIG10bERlc2NyaXB0b3Is
IHZlcnRleEVudHJ5UG9pbnQsIGZyYWdtZW50RW50cnlQb2ludCwgZXJyb3JTY29wZXMpOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNv
bnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UpCitzdGF0aWMgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4gY29udmVydFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJv
clNjb3BlcyYgZXJyb3JTY29wZXMpCiB7CiAgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKIApAQCAtNDQ5LDcgKzQzOCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjb252ZXJ0UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKGNvCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIGlm
ICghbXRsRGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0
aW5nIE1UTERlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgZXJyb3JTY29wZXMu
Z2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjcmVhdGluZyBNVExEZXNjcmlwdG9yISIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ2NSwzNSArNDU0LDM1IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBjb252ZXJ0UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKGNvCiAgICAgaWYgKGlzV2hsc2wpCiAgICAgICAgIHdobHNsRGVz
Y3JpcHRvciA9IFdITFNMOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKIAotICAgIGlmICgh
dHJ5U2V0VmVydGV4SW5wdXQoZnVuY3Rpb25OYW1lLCBkZXNjcmlwdG9yLnZlcnRleElucHV0LCBt
dGxEZXNjcmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IpKQorICAgIGlmICghdHJ5U2V0VmVy
dGV4SW5wdXQoZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCwgbXRsRGVzY3JpcHRvci5nZXQoKSwgd2hs
c2xEZXNjcmlwdG9yLCBlcnJvclNjb3BlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgaWYgKCF0cnlTZXRDb2xvclN0YXRlcyhmdW5jdGlvbk5hbWUsIGRlc2NyaXB0b3IuY29sb3JT
dGF0ZXMsIG10bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50cywgd2hsc2xEZXNjcmlw
dG9yKSkKKyAgICBpZiAoIXRyeVNldENvbG9yU3RhdGVzKGRlc2NyaXB0b3IuY29sb3JTdGF0ZXMs
IG10bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50cywgd2hsc2xEZXNjcmlwdG9yLCBl
cnJvclNjb3BlcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGRlc2NyaXB0
b3IubGF5b3V0ICYmIHdobHNsRGVzY3JpcHRvcikgewogICAgICAgICBpZiAoYXV0byBsYXlvdXQg
PSBjb252ZXJ0TGF5b3V0KCpkZXNjcmlwdG9yLmxheW91dCkpCiAgICAgICAgICAgICB3aGxzbERl
c2NyaXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91dCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjb252ZXJ0aW5nIEdQVVBpcGVsaW5lTGF5
b3V0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVBy
ZWZpeGVkRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgR1BVUGlwZWxpbmVMYXlvdXQhIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghdHJ5
U2V0RnVuY3Rpb25zKGZ1bmN0aW9uTmFtZSwgdmVydGV4U3RhZ2UsIGZyYWdtZW50U3RhZ2UsIGRl
dmljZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgd2hsc2xEZXNjcmlwdG9yKSkKKyAgICBpZiAoIXRy
eVNldEZ1bmN0aW9ucyh2ZXJ0ZXhTdGFnZSwgZnJhZ21lbnRTdGFnZSwgZGV2aWNlLCBtdGxEZXNj
cmlwdG9yLmdldCgpLCB3aGxzbERlc2NyaXB0b3IsIGVycm9yU2NvcGVzKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gbXRsRGVzY3JpcHRvcjsKIH0KIAotc3RhdGljIFJl
dGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGlu
ZVN0YXRlKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKK3N0
YXRpYyBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gdHJ5Q3JlYXRlTXRsUmVuZGVy
UGlwZWxpbmVTdGF0ZShjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVFcnJvclNjb3BlcyYgZXJyb3JTY29wZXMp
CiB7CiAgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVQ29tcHV0ZVBpcGVsaW5lOjp0cnlDcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2Uh
Iik7CisgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBH
UFVEZXZpY2UhIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8g
bXRsRGVzY3JpcHRvciA9IGNvbnZlcnRSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25O
YW1lLCBkZXNjcmlwdG9yLCBkZXZpY2UpOworICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IGNvbnZl
cnRSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJvclNjb3Bl
cyk7CiAgICAgaWYgKCFtdGxEZXNjcmlwdG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApA
QCAtNTA0LDM4ICs0OTMsMzcgQEAgc3RhdGljIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0
YXRlPiB0cnlDcmVhdGVNdGxSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IGMKICAgICBOU0Vycm9y
ICplcnJvciA9IG5pbDsKICAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURl
dmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9y
LmdldCgpIGVycm9yOiZlcnJvcl0pOwogICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIExPRyhX
ZWJHUFUsICIlczogJXMhIiwgZnVuY3Rpb25OYW1lLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bi5VVEY4U3RyaW5nKTsKKyAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9y
KGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwogCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAogICAgIHJldHVybiBwaXBlbGluZTsKIH0KIAotUmVmUHRyPEdQ
VVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURl
dmljZSYgZGV2aWNlLCBjb25zdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IpCitSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJlbmRlclBpcGVsaW5lOjp0cnlDcmVh
dGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgR1BVRXJyb3JTY29wZXMmIGVycm9yU2NvcGVzKQogewotICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRl
KCkiOwotCiAgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IEludmFsaWQgR1BVRGV2aWNlISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAg
IGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJldGFpblB0cjxNVExEZXB0
aFN0ZW5jaWxTdGF0ZT4gZGVwdGhTdGVuY2lsOwogCi0gICAgaWYgKGRlc2NyaXB0b3IuZGVwdGhT
dGVuY2lsU3RhdGUgJiYgIShkZXB0aFN0ZW5jaWwgPSB0cnlDcmVhdGVNdGxEZXB0aFN0ZW5jaWxT
dGF0ZShmdW5jdGlvbk5hbWUsICpkZXNjcmlwdG9yLmRlcHRoU3RlbmNpbFN0YXRlLCBkZXZpY2Up
KSkKKyAgICBpZiAoZGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxTdGF0ZSAmJiAhKGRlcHRoU3RlbmNp
bCA9IHRyeUNyZWF0ZU10bERlcHRoU3RlbmNpbFN0YXRlKCpkZXNjcmlwdG9yLmRlcHRoU3RlbmNp
bFN0YXRlLCBkZXZpY2UsIGVycm9yU2NvcGVzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgzODcgZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IgaXNuJ3QgaW1wbGVtZW50ZWQg
eWV0IGZvciBXSExTTCBjb21waWxlci4KIAotICAgIGF1dG8gcGlwZWxpbmUgPSB0cnlDcmVhdGVN
dGxSZW5kZXJQaXBlbGluZVN0YXRlKGZ1bmN0aW9uTmFtZSwgZGVzY3JpcHRvciwgZGV2aWNlKTsK
KyAgICBhdXRvIHBpcGVsaW5lID0gdHJ5Q3JlYXRlTXRsUmVuZGVyUGlwZWxpbmVTdGF0ZShkZXNj
cmlwdG9yLCBkZXZpY2UsIGVycm9yU2NvcGVzKTsKICAgICBpZiAoIXBpcGVsaW5lKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlw
ZWxpbmUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRv
ci5wcmltaXRpdmVUb3BvbG9neSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXB0
aFN0ZW5jaWwpLCBXVEZNb3ZlKHBpcGVsaW5lKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9n
eSwgZGVzY3JpcHRvci52ZXJ0ZXhJbnB1dC5pbmRleEZvcm1hdCwgZXJyb3JTY29wZXMpKTsKIH0K
IAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFJldGFpblB0cjxNVExEZXB0
aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9neSB0b3BvbG9neSwgT3B0aW9u
YWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1hdCkKLSAgICA6IG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RG
TW92ZShkZXB0aFN0ZW5jaWwpKQorR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5l
KFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4mJiBkZXB0aFN0ZW5jaWwsIFJldGFpblB0
cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPiYmIHBpcGVsaW5lLCBHUFVQcmltaXRpdmVUb3BvbG9n
eSB0b3BvbG9neSwgT3B0aW9uYWw8R1BVSW5kZXhGb3JtYXQ+IGZvcm1hdCwgR1BVRXJyb3JTY29w
ZXMmIGVycm9yU2NvcGVzKQorICAgIDogR1BVT2JqZWN0QmFzZShtYWtlUmVmKGVycm9yU2NvcGVz
KSkKKyAgICAsIG1fZGVwdGhTdGVuY2lsU3RhdGUoV1RGTW92ZShkZXB0aFN0ZW5jaWwpKQogICAg
ICwgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQogICAgICwgbV9w
cmltaXRpdmVUb3BvbG9neSh0b3BvbG9neSkKICAgICAsIG1faW5kZXhGb3JtYXQoZm9ybWF0KQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGZhMGE2NjQwNDJlNzExMjBhMzRlZDliODEwYTBjY2U4ZGI5Y2FjN2UuLjk5MmNhNzRl
YWMyOTllYWMyYjJmYzExMzgzYzEwYmI1YzAyOTNkMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wNy0yMyAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWJHUFVdIEltcGxlbWVudCBlcnJvcnMgZm9yIEdQVVJlbmRlclBpcGVsaW5lIGNyZWF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVz
dCB0byBjb3ZlciByZXByb2R1Y2libGUgcmVuZGVyIHBpcGVsaW5lIGNyZWF0aW9uIGVycm9ycy4K
KworICAgICAgICAqIHdlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzOgorICAgICAgICAocnVu
VGVzdHNXaXRoRGV2aWNlKToKKyAgICAgICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9y
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmUt
ZXJyb3JzLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA3LTIyICBUcnVpdHQgU2F2ZWxsICA8dHNhdmVs
bEBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNb2phdmUgRGVidWcgV0sxIF0gTGF5b3V0IFRlc3Qg
aW1wb3J0ZWQvYmxpbmsvc3RvcmFnZS9pbmRleGVkZGIvYmxvYi1iYXNpY3MtbWV0YWRhdGEuaHRt
bCBpcyBUaW1pbmcgb3V0ICgyMDAwMDIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUv
anMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVu
Y3Rpb25zLmpzCmluZGV4IDhhMWFlZjU4Mzc2NjhiZTUzNGY4MDViZDNiZGQ3ZDc3ZjhmMTk0Mzcu
LjJiOTZhYmZmZjZlM2FmMmMxNTI5ZTgxYzlkYTRiYWVlMzVjMTMwNWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdwdS9qcy93ZWJncHUtZnVuY3Rpb25zLmpzCkBAIC0xNTgsOCArMTU4LDEwIEBAIGZ1bmN0
aW9uIHJ1blRlc3RzV2l0aERldmljZSh0ZXN0cykgewogICAgICAgICAgICAgdmFyIGRldmljZSA9
IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsgLyogV2ViR1BV
IGlzIG5vdCBzdXBwb3J0ZWQuICovIH0KICAgICAKLSAgICAgICAgZm9yIChsZXQgbmFtZSBpbiB0
ZXN0cykKLSAgICAgICAgICAgIGRldmljZVByb21pc2VUZXN0KGRldmljZSwgdGVzdHNbbmFtZV0s
IG5hbWUpOworICAgICAgICBmb3IgKGxldCBuYW1lIGluIHRlc3RzKSB7CisgICAgICAgICAgICBp
ZiAoIW5hbWUuc3RhcnRzV2l0aCgiXyIpKQorICAgICAgICAgICAgICAgIGRldmljZVByb21pc2VU
ZXN0KGRldmljZSwgdGVzdHNbbmFtZV0sIG5hbWUpOworICAgICAgICB9CiAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmUtZXJyb3JzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDFmY2QxYzQxZGQyODg1NDI0ZmRhMTQ5MDkwMmZmZGI1
NmNjOTYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBl
bGluZS1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBHUFVSZW5k
ZXJQaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkcyB3aXRoIG5vIGVycm9ycy4gCitQQVNTIEludmFs
aWQgR1BVU2hhZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3RhZ2Ugc2hvdWxkIGZhaWwuIAorUEFTUyBJ
bnZhbGlkIEdQVVNoYWRlck1vZHVsZSBmb3IgZnJhZ21lbnQgc3RhZ2Ugc2hvdWxkIGZhaWwuIAor
UEFTUyBFbXB0eSBlbnRyeSBwb2ludCBmb3IgdmVydGV4IHN0YWdlIHNob3VsZCBmYWlsLiAKK1BB
U1MgSW52YWxpZCBHUFVUZXh0dXJlRm9ybWF0IGluIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHNo
b3VsZCBmYWlsLiAKK1BBU1MgVG9vIG1hbnkgR1BVQ29sb3JTdGF0ZURlc2NyaXB0b3JzIHNob3Vs
ZCBmYWlsLiAKK1BBU1MgVG9vIG1hbnkgR1BVVmVydGV4QnVmZmVyRGVzY3JpcHRvcnMgc2hvdWxk
IGZhaWwuIAorUEFTUyBUb28gbWFueSBHUFVWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9ycyBzaG91
bGQgZmFpbC4gCitQQVNTIER1cGxpY2F0ZSBzaGFkZXJMb2NhdGlvbiBmb3IgdmVydGV4IGF0dHJp
YnV0ZXMgc2hvdWxkIGZhaWwuIAorUEFTUyBJbnZhbGlkIGVudHJ5IHBvaW50IHN0cmluZyBzaG91
bGQgZmFpbC4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxp
bmUtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lLWVycm9y
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0OTNlMTE4NzBjMTFlMGZkZTNmMDMxMjQ5M2VkM2Y4YTFhMGJl
NzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5l
LWVycm9ycy5odG1sCkBAIC0wLDAgKzEsMTkwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9dXRmLTg+Cis8dGl0bGU+VGVzdCBFcnJvciBTY29wZXMuPC90aXRsZT4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citj
b25zdCBwb3NpdGlvbkxvY2F0aW9uID0gMDsKK2NvbnN0IGNvbG9yTG9jYXRpb24gPSAxOworCitj
b25zdCBjb2xvck9mZnNldCA9IDQgKiA0OworY29uc3QgdmVydGV4U3RyaWRlID0gOCAqIDQ7CisK
K2NvbnN0IHdobHNsU291cmNlID0gYAorc3RydWN0IEZyYWdtZW50RGF0YSB7CisgICAgZmxvYXQ0
IHBvc2l0aW9uIDogU1ZfUG9zaXRpb247CisgICAgZmxvYXQ0IGNvbG9yIDogYXR0cmlidXRlKCR7
Y29sb3JMb2NhdGlvbn0pOworfQorCit2ZXJ0ZXggRnJhZ21lbnREYXRhIHZlcnRleE1haW4oZmxv
YXQ0IHBvc2l0aW9uIDogYXR0cmlidXRlKCR7cG9zaXRpb25Mb2NhdGlvbn0pLCBmbG9hdDQgY29s
b3IgOiBhdHRyaWJ1dGUoJHtjb2xvckxvY2F0aW9ufSkpCit7CisgICAgRnJhZ21lbnREYXRhIG91
dDsKKworICAgIG91dC5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIG91dC5jb2xvciA9IGNvbG9y
OworCisgICAgcmV0dXJuIG91dDsKK30KKworZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50TWFpbihm
bG9hdDQgY29sb3IgOiBhdHRyaWJ1dGUoJHtjb2xvckxvY2F0aW9ufSkpIDogU1ZfVGFyZ2V0IDAK
K3sKKyAgICByZXR1cm4gY29sb3I7Cit9CitgOworCitsZXQgZ29vZFJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciwgZ29vZE1vZHVsZTsKKworbGV0IHRlc3RzID0ge307CisKK3Rlc3RzWyJHUFVSZW5k
ZXJQaXBlbGluZSBjcmVhdGlvbiBzdWNjZWVkcyB3aXRoIG5vIGVycm9ycy4iXSA9IGFzeW5jIGRl
dmljZSA9PiB7CisgICAgZ29vZE1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBj
b2RlOiB3aGxzbFNvdXJjZSwgaXNXSExTTDogdHJ1ZSB9KTsKKyAgICAKKyAgICBnb29kUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICB2ZXJ0ZXhTdGFnZTogeyBtb2R1bGU6IGdv
b2RNb2R1bGUsIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhNYWluIiB9LAorICAgICAgICBmcmFnbWVudFN0
YWdlOiB7IG1vZHVsZTogZ29vZE1vZHVsZSwgZW50cnlQb2ludDogImZyYWdtZW50TWFpbiIgfSwK
KyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZS1saXN0IiwKKyAgICAgICAgY29s
b3JTdGF0ZXM6IFt7CisgICAgICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKKyAgICAgICAg
ICAgIGFscGhhQmxlbmQ6IHt9LAorICAgICAgICAgICAgY29sb3JCbGVuZDoge30KKyAgICAgICAg
fV0sCisgICAgICAgIHZlcnRleElucHV0OiB7CisgICAgICAgICAgICB2ZXJ0ZXhCdWZmZXJzOiBb
eworICAgICAgICAgICAgICAgIHN0cmlkZTogdmVydGV4U3RyaWRlLAorICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZVNldDogW3sKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyTG9jYXRpb246IHBv
c2l0aW9uTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIKKyAg
ICAgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBj
b2xvckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IGNvbG9yT2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJmbG9hdDQiCisgICAgICAgICAgICAgICAgfV0K
KyAgICAgICAgICAgIH1dCisgICAgICAgIH0KKyAgICB9OworICAgIE9iamVjdC5mcmVlemUoZ29v
ZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7CisKKyAgICBkZXZpY2UucHVzaEVycm9yU2NvcGUo
InZhbGlkYXRpb24iKTsKKyAgICBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZ29vZFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHBvcE51bGxFcnJvcihkZXZpY2UpOwor
fTsKKwordGVzdHNbIkludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciB2ZXJ0ZXggc3RhZ2Ugc2hv
dWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4geworICAgIGxldCBiYWREZXNjcmlwdG9yID0g
T2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgbGV0
IGJhZFNoYWRlck1vZHVsZSA9IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiAiRm9v
IiwgaXNXSExTTDogdHJ1ZSB9KTsKKyAgICBiYWREZXNjcmlwdG9yLnZlcnRleFN0YWdlID0geyBt
b2R1bGU6IGJhZFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogInZlcnRleE1haW4iIH07CisKKyAg
ICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwor
fTsKKwordGVzdHNbIkludmFsaWQgR1BVU2hhZGVyTW9kdWxlIGZvciBmcmFnbWVudCBzdGFnZSBz
aG91bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7CisgICAgbGV0IGJhZERlc2NyaXB0b3Ig
PSBPYmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBs
ZXQgYmFkU2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6ICJG
b28iLCBpc1dITFNMOiB0cnVlICB9KTsKKyAgICBiYWREZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2Ug
PSB7IG1vZHVsZTogYmFkU2hhZGVyTW9kdWxlLCBlbnRyeVBvaW50OiAidmVydGV4TWFpbiIgfTsK
KworICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRv
cik7Cit9OworCit0ZXN0c1siRW1wdHkgZW50cnkgcG9pbnQgZm9yIHZlcnRleCBzdGFnZSBzaG91
bGQgZmFpbC4iXSA9IGFzeW5jIGRldmljZSA9PiB7CisgICAgbGV0IGJhZERlc2NyaXB0b3IgPSBP
YmplY3QuYXNzaWduKHt9LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBsZXQg
YmFkU2hhZGVyTW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6ICJGb28i
LCBpc1dITFNMOiB0cnVlICB9KTsKKyAgICBiYWREZXNjcmlwdG9yLnZlcnRleFN0YWdlID0geyBt
b2R1bGU6IGJhZFNoYWRlck1vZHVsZSwgZW50cnlQb2ludDogIiIgfTsKKworICAgIHJldHVybiBj
cmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Cit9OworCit0ZXN0
c1siSW52YWxpZCBHUFVUZXh0dXJlRm9ybWF0IGluIEdQVUNvbG9yU3RhdGVEZXNjcmlwdG9yIHNo
b3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKKyAgICBsZXQgYmFkRGVzY3JpcHRvciA9
IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworICAgIGJh
ZERlc2NyaXB0b3IuY29sb3JTdGF0ZXMgPSBbeworICAgICAgICBmb3JtYXQ6ICJkZXB0aDMyZmxv
YXQtc3RlbmNpbDgiLAorICAgICAgICBhbHBoYUJsZW5kOiB7fSwKKyAgICAgICAgY29sb3JCbGVu
ZDoge30KKyAgICB9XTsKKworICAgIHJldHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmlj
ZSwgYmFkRGVzY3JpcHRvcik7Cit9OworCit0ZXN0c1siVG9vIG1hbnkgR1BVQ29sb3JTdGF0ZURl
c2NyaXB0b3JzIHNob3VsZCBmYWlsLiJdID0gYXN5bmMgZGV2aWNlID0+IHsKKyAgICBsZXQgYmFk
RGVzY3JpcHRvciA9IE9iamVjdC5hc3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IpOworICAgIGxldCBiYWRDb2xvclN0YXRlcyA9IG5ldyBBcnJheSgxMDApOworICAgIGJhZENv
bG9yU3RhdGVzLmZpbGwoeworICAgICAgICBmb3JtYXQ6ICJiZ3JhOHVub3JtIiwKKyAgICAgICAg
YWxwaGFCbGVuZDoge30sCisgICAgICAgIGNvbG9yQmxlbmQ6IHt9CisgICAgfSk7CisgICAgYmFk
RGVzY3JpcHRvci5jb2xvclN0YXRlcyA9IGJhZENvbG9yU3RhdGVzOworCisgICAgcmV0dXJuIGNy
ZWF0ZVBpcGVsaW5lQW5kRXJyb3IoZGV2aWNlLCBiYWREZXNjcmlwdG9yKTsKK307CisKK3Rlc3Rz
WyJUb28gbWFueSBHUFVWZXJ0ZXhCdWZmZXJEZXNjcmlwdG9ycyBzaG91bGQgZmFpbC4iXSA9IGFz
eW5jIGRldmljZSA9PiB7CisgICAgbGV0IGJhZERlc2NyaXB0b3IgPSBPYmplY3QuYXNzaWduKHt9
LCBnb29kUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBsZXQgYmFkVmVydGV4QnVmZmVy
cyA9IG5ldyBBcnJheSgxMDApOworICAgIGJhZFZlcnRleEJ1ZmZlcnMuZmlsbCh7CisgICAgICAg
IHN0cmlkZTogdmVydGV4U3RyaWRlLAorICAgICAgICBhdHRyaWJ1dGVTZXQ6IFt7CisgICAgICAg
ICAgICBzaGFkZXJMb2NhdGlvbjogcG9zaXRpb25Mb2NhdGlvbiwKKyAgICAgICAgICAgIGZvcm1h
dDogImZsb2F0NCIKKyAgICAgICAgfV0KKyAgICB9KTsKKyAgICBiYWREZXNjcmlwdG9yLnZlcnRl
eElucHV0ID0geyB2ZXJ0ZXhCdWZmZXJzOiBiYWRWZXJ0ZXhCdWZmZXJzIH07CisKKyAgICByZXR1
cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOworfTsKKwor
dGVzdHNbIlRvbyBtYW55IEdQVVZlcnRleEF0dHJpYnV0ZURlc2NyaXB0b3JzIHNob3VsZCBmYWls
LiJdID0gYXN5bmMgZGV2aWNlID0+IHsKKyAgICBsZXQgYmFkRGVzY3JpcHRvciA9IE9iamVjdC5h
c3NpZ24oe30sIGdvb2RSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOworICAgIGxldCBiYWRBdHRy
aWJ1dGVzID0gbmV3IEFycmF5KDEwMCk7CisgICAgYmFkQXR0cmlidXRlcy5maWxsKHsKKyAgICAg
ICAgc2hhZGVyTG9jYXRpb246IHBvc2l0aW9uTG9jYXRpb24sCisgICAgICAgIGZvcm1hdDogImZs
b2F0NCIKKyAgICB9KTsKKworICAgIGJhZERlc2NyaXB0b3IudmVydGV4SW5wdXQgPSB7CisgICAg
ICAgIHZlcnRleEJ1ZmZlcnM6IFt7CisgICAgICAgICAgICBzdHJpZGU6IHZlcnRleFN0cmlkZSwK
KyAgICAgICAgICAgIGF0dHJpYnV0ZVNldDogYmFkQXR0cmlidXRlcworICAgICAgICB9XQorICAg
IH07CisKKyAgICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2Ny
aXB0b3IpOworfTsKKwordGVzdHNbIkR1cGxpY2F0ZSBzaGFkZXJMb2NhdGlvbiBmb3IgdmVydGV4
IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwuIl0gPSBhc3luYyBkZXZpY2UgPT4geworICAgIGxldCBi
YWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwgZ29vZFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcik7CisgICAgYmFkRGVzY3JpcHRvci52ZXJ0ZXhJbnB1dCA9IHsKKyAgICAgICAgdmVydGV4
QnVmZmVyczogW3sKKyAgICAgICAgICAgIHN0cmlkZTogdmVydGV4U3RyaWRlLAorICAgICAgICAg
ICAgYXR0cmlidXRlU2V0OiBbeworICAgICAgICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiBjb2xv
ckxvY2F0aW9uLAorICAgICAgICAgICAgICAgIGZvcm1hdDogImZsb2F0NCIKKyAgICAgICAgICAg
IH0sIHsKKyAgICAgICAgICAgICAgICBzaGFkZXJMb2NhdGlvbjogY29sb3JMb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICBvZmZzZXQ6IGNvbG9yT2Zmc2V0LAorICAgICAgICAgICAgICAgIGZvcm1h
dDogImZsb2F0NCIKKyAgICAgICAgICAgIH1dCisgICAgICAgIH1dCisgICAgfTsKKworICAgIHJl
dHVybiBjcmVhdGVQaXBlbGluZUFuZEVycm9yKGRldmljZSwgYmFkRGVzY3JpcHRvcik7Cit9Owor
Cit0ZXN0c1siSW52YWxpZCBlbnRyeSBwb2ludCBzdHJpbmcgc2hvdWxkIGZhaWwuIl0gPSBhc3lu
YyBkZXZpY2UgPT4geworICAgIGxldCBiYWREZXNjcmlwdG9yID0gT2JqZWN0LmFzc2lnbih7fSwg
Z29vZFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgYmFkRGVzY3JpcHRvci5mcmFnbWVu
dFN0YWdlID0geyBtb2R1bGU6IGdvb2RNb2R1bGUsIGVudHJ5UG9pbnQ6ICJiYXIiIH07CisKKyAg
ICByZXR1cm4gY3JlYXRlUGlwZWxpbmVBbmRFcnJvcihkZXZpY2UsIGJhZERlc2NyaXB0b3IpOwor
fTsKKworcnVuVGVzdHNXaXRoRGV2aWNlKHRlc3RzKTsKKworY29uc3QgY3JlYXRlUGlwZWxpbmVB
bmRFcnJvciA9IChkZXZpY2UsIGRlc2NyaXB0b3IpID0+IHsKKyAgICBkZXZpY2UucHVzaEVycm9y
U2NvcGUoInZhbGlkYXRpb24iKTsKKyAgICBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVz
Y3JpcHRvcik7CisgICAgcmV0dXJuIHBvcFZhbGlkYXRpb25FcnJvcihkZXZpY2UpOworfTsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>