<?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>201525</bug_id>
          
          <creation_ts>2019-09-05 15:58:23 -0700</creation_ts>
          <short_desc>[WHLSL] Ensure structs/arrays with pointers as fields are disallowed</short_desc>
          <delta_ts>2019-09-11 16:34:50 -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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568300</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-05 15:58:23 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569469</commentid>
    <comment_count>1</comment_count>
      <attachid>378445</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-10 00:50:28 -0700</bug_when>
    <thetext>Created attachment 378445
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569659</commentid>
    <comment_count>2</comment_count>
      <attachid>378445</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-09-10 14:07:03 -0700</bug_when>
    <thetext>Comment on attachment 378445
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569855</commentid>
    <comment_count>3</comment_count>
      <attachid>378445</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-11 00:17:23 -0700</bug_when>
    <thetext>Comment on attachment 378445
patch

Clearing flags on attachment: 378445

Committed r249758: &lt;https://trac.webkit.org/changeset/249758&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569856</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-11 00:17:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569857</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-11 00:18:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55252099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569937</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-09-11 09:01:39 -0700</bug_when>
    <thetext>Reverted r249758 for reason:

Breaks the watchOS build.

Committed r249765: &lt;https://trac.webkit.org/changeset/249765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569983</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-11 14:29:27 -0700</bug_when>
    <thetext>Gonna look at the build failure now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569984</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-11 14:29:56 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #7)
&gt; Gonna look at the build failure now

It&apos;s probably another missing include by changing the unified sources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570031</commentid>
    <comment_count>9</comment_count>
      <attachid>378586</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-11 15:44:26 -0700</bug_when>
    <thetext>Created attachment 378586
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570049</commentid>
    <comment_count>10</comment_count>
      <attachid>378586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-11 16:34:48 -0700</bug_when>
    <thetext>Comment on attachment 378586
patch for landing

Clearing flags on attachment: 378586

Committed r249787: &lt;https://trac.webkit.org/changeset/249787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570050</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-11 16:34:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378445</attachid>
            <date>2019-09-10 00:50:28 -0700</date>
            <delta_ts>2019-09-11 15:44:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>20757</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA5LTEwICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRW5zdXJlIHN0cnVj
dHMvYXJyYXlzIHdpdGggcG9pbnRlcnMgYXMgZmllbGRzIGFyZSBkaXNhbGxvd2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBwYXNzIHdoaWNoIGJvdGggZW5zdXJlcyB0aGF0IHJlZmVyZW5jZXMgYXJlIGFsd2F5cyBpbml0
aWFsaXplZCB3aXRoCisgICAgICAgIGNvbmNyZXRlIHZhbHVlcyBhbmQgdGhhdCB3ZSBzdXBwb3J0
IGxvZ2ljYWwgbW9kZSB2YWxpZGF0aW9uIGJ5IGRpc2FsbG93aW5nIG5lc3RlZCByZWZlcmVuY2Vz
LgorICAgICAgICAKKyAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgcGFzczoKKyAgICAgICAgCisg
ICAgICAgIDEuIERpc2FsbG93cyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFyZSByZWZl
cmVuY2VzLiBUaGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCisgICAgICAgIGZpZ3VyZSBv
dXQgaG93IHRvIGRlZmF1bHQgaW5pdGlhbGl6ZSBzdWNoIGEgc3RydWN0LiBXZSBjb3VsZCByZWxh
eCB0aGlzIGluIHRoZSBmdXR1cmUgaWYgd2UKKyAgICAgICAgZGlkIGFuIGFuYWx5c2lzIG9uIHdo
aWNoIHN0cnVjdHMgY29udGFpbiByZWZlcmVuY2UgZmllbGRzLCBhbmQgZW5zdXJlIHN1Y2ggc3Ry
dWN0IHZhcmlhYmxlcworICAgICAgICBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMgd291
bGQgYWxzbyByZXF1aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMgd2hp
Y2gKKyAgICAgICAgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLgorICAgICAgICAyLiBXZSBhbHNvIGRv
IHRoZSBzYW1lIGZvciBhcnJheXMuCisgICAgICAgIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUg
b25lIGxldmVsIGRlZXAuIFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2Vz
IHRvCisgICAgICAgIHJlZmVyZW5jZXMsIGV0Yy4gVGhpcyBpcyB0byBzdXBwb3J0IGxvZ2ljYWwg
bW9kZSB2YWxpZGF0aW9uIHJ1bGVzLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Y2hlY2tSZWZlcmVuY2VUeXBlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6Q2hlY2tlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNoYXJlZCk6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2RvLW5vdC1jYXB0dXJlLXN0YXRpc3RpY3MtZm9yLXNpbXBsZS10b3AtbmF2aWdhdGlvbnMu
aHRtbCBpcyBmcmVxdWVudGx5IHRpbWluZyBvdXQgb24gaU9TIEVXUyBib3RzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5j
ZXMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3Bw
CiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZl
cmVuY2VUeXBlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMQVNULmgiCisjaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUmVmZXJlbmNlVHlw
ZUNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7CitwdWJsaWM6CisgICAgUmVmZXJlbmNl
VHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+UmVmZXJlbmNlVHlwZUNoZWNr
ZXIoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNr
VHlwZShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBj
b25zdCBjaGFyKiBlcnJvcikKKyAgICB7CisgICAgICAgIGF1dG8mIHVuaWZpZWRUeXBlID0gdHlw
ZS51bmlmeU5vZGUoKTsKKyAgICAgICAgaWYgKGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4odW5pZmll
ZFR5cGUpKSB7CisgICAgICAgICAgICBzZXRFcnJvcihFcnJvcihlcnJvciwgY29kZUxvY2F0aW9u
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXM8QVNU
OjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKQorICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBlKSk7CisgICAgfQorCisg
ICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBjaGVja1R5cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpLCBy
ZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpLCAicmVmZXJlbmNlIHR5cGUgY2Fubm90IGhhdmUg
YW5vdGhlciByZWZlcmVuY2UgdHlwZSBhcyBhbiBpbm5lciB0eXBlIik7CisgICAgfQorCisgICAg
dm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY2hlY2tUeXBlKGFycmF5VHlwZS50eXBlKCksIGFycmF5VHlwZS5jb2RlTG9jYXRpb24o
KSwgImFycmF5IHR5cGUgY2Fubm90IGhhdmUgYSByZWZlcmVuY2UgdHlwZSBhcyBpdHMgaW5uZXIg
dHlwZSIpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBz
dHJ1Y3R1cmVFbGVtZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tUeXBlKHN0cnVj
dHVyZUVsZW1lbnQudHlwZSgpLCBzdHJ1Y3R1cmVFbGVtZW50LmNvZGVMb2NhdGlvbigpLCAiY2Fu
bm90IGhhdmUgYSBzdHJ1Y3R1cmUgZmllbGQgd2hpY2ggaXMgYSByZWZlcmVuY2UgdHlwZSIpOwor
ICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKKyAgICB9Cit9
OworCitFeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZlcmVuY2VUeXBlcyhQcm9ncmFtJiBw
cm9ncmFtKQoreworICAgIC8vIFRoaXMgcGFzcyBkb2VzIHRoZXNlIHRoaW5nczoKKyAgICAvLyAx
LiBEaXNhbGxvdyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFyZSByZWZlcmVuY2VzLiBU
aGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCisgICAgLy8gZmlndXJlIG91dCBob3cgdG8g
ZGVmYXVsdCBpbml0aWFsaXplIHN1Y2ggYSBzdHJ1Y3QuIFdlIGNvdWxkIHJlbGF4IHRoaXMgaW4g
dGhlIGZ1dHVyZSBpZiB3ZQorICAgIC8vIGRpZCBhbiBhbmFseXNpcyBvbiB3aGljaCBzdHJ1Y3Rz
IGNvbnRhaW4gcmVmZXJlbmNlIGZpZWxkcywgYW5kIGVuc3VyZSBzdWNoIHN0cnVjdCB2YXJpYWJs
ZXMKKyAgICAvLyBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMgd291bGQgYWxzbyByZXF1
aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMgd2hpY2gKKyAgICAvLyBp
bml0aWFsaXplIGVhY2ggZmllbGQuCisgICAgLy8gMi4gV2UgYWxzbyBkbyB0aGUgc2FtZSBmb3Ig
YXJyYXlzLgorICAgIC8vIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUgb25lIGxldmVsIGRlZXAu
IFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2VzIHRvCisgICAgLy8gcmVm
ZXJlbmNlcywgZXRjLiBUaGlzIGlzIHRvIHN1cHBvcnQgbG9naWNhbCBtb2RlLgorICAgIFJlZmVy
ZW5jZVR5cGVDaGVja2VyIHJlZmVyZW5jZVR5cGVDaGVja2VyOworICAgIHJlZmVyZW5jZVR5cGVD
aGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKKyAgICByZXR1cm4gcmVmZXJlbmNl
VHlwZUNoZWNrZXIucmVzdWx0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrUmVmZXJlbmNlVHlwZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFcnJvci5oIgorI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K2NsYXNzIFByb2dyYW07CisKK0V4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlZmVyZW5jZVR5
cGVzKFByb2dyYW0mKTsKKworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCShyZXZpc2lv
biAyNDk2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzYsNyArOTM2LDYgQEAgdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZQogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9
IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7CiAgICAgICAgIGlmIChpczxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHBvaW50
ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgxNjMgU2F2ZSB0aGUgZmFjdCB0aGF0IHdlJ3JlIG5vdCB0YXJnZXR0aW5nIHRoZSBpdGVtOyB3
ZSdyZSB0YXJnZXR0aW5nIHRoZSBpdGVtJ3MgaW5uZXIgZWxlbWVudC4KICAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpLCBwb2ludGVyVHlwZS5lbGVtZW50
VHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAko
cmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIldITFNMQVNURHVtcGVyLmgiCiAjaW5jbHVkZSAiV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0
aW9ucy5oIgogI2luY2x1ZGUgIldITFNMQ2hlY2tUZXh0dXJlUmVmZXJlbmNlcy5oIgorI2luY2x1
ZGUgIldITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgogI2luY2x1ZGUgIldITFNMQ2hlY2tlci5o
IgogI2luY2x1ZGUgIldITFNMQ29tcHV0ZURpbWVuc2lvbnMuaCIKICNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uU3RhZ2VDaGVja2VyLmgiCkBAIC0yMzEsNiArMjMyLDcgQEAgc3RhdGljIEV4cGVjdGVk
PFByb2dyYW0sIFN0cmluZz4gcHJlcGFyZQogCiAgICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlw
ZXMsIHByb2dyYW0pOwogICAgIENIRUNLX1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJv
Z3JhbSk7CisgICAgQ0hFQ0tfUEFTUyhjaGVja1JlZmVyZW5jZVR5cGVzLCBwcm9ncmFtKTsKICAg
ICBSVU5fUEFTUyhyZXNvbHZlUHJvcGVydGllcywgcHJvZ3JhbSk7CiAgICAgUlVOX1BBU1MoZmlu
ZEhpZ2hab21iaWVzLCBwcm9ncmFtKTsKICAgICBDSEVDS19QQVNTKGNoZWNrU3RhdGVtZW50QmVo
YXZpb3IsIHByb2dyYW0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04
MzMxLDYgKzgzMzEsOCBAQAogCQk1MjJEQTNEMzIyOUUxRDM5MDA0MkQxNTEgLyogV0hMU0xHbG9i
YWxWYXJpYWJsZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEdsb2JhbFZhcmlhYmxl
UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMkUxQTE3MjI5N0Q2
RDQwMEU1RDM2QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyRTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJl
c2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXNlcnZlVmFy
aWFibGVMaWZldGltZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI0QkQ0N0Uy
MzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVy
ZW5jZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyog
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0
YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjU1NzksNiArMjU1ODEsOCBAQAogCQkJCTFDODQwQjk3MjFFQzQwMDcw
MEQwNTAwRCAvKiBXSExTTENoZWNrZXIuaCAqLywKIAkJCQkxQzI4MUM2RDIyQjg3Qjk4MDA2OTFD
MDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLywKIAkJCQkxQzI4MUM2RTIy
Qjg3Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmggKi8sCisJCQkJ
NTI0QkQ0N0UyMzI3N0UxNTAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHAg
Ki8sCisJCQkJNTI0QkQ0ODAyMzI3N0UxNjAwOEY1NkMxIC8qIFdITFNMQ2hlY2tSZWZlcmVuY2VU
eXBlcy5oICovLAogCQkJCTUyMkJBQjk2MjJFNkEzNjIwMEM1NENFOSAvKiBXSExTTENvZGVMb2Nh
dGlvbi5oICovLAogCQkJCTFDODZDQTRCMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVE
aW1lbnNpb25zLmNwcCAqLywKIAkJCQkxQzg2Q0E0QzIyQUExOUZGMDAxQkY5NjEgLyogV0hMU0xD
b21wdXRlRGltZW5zaW9ucy5oICovLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NjY0KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTkt
MDktMTAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNM
XSBFbnN1cmUgc3RydWN0cy9hcnJheXMgd2l0aCBwb2ludGVycyBhcyBmaWVsZHMgYXJlIGRpc2Fs
bG93ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MTUyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gb3VyIHRlc3QgaGFybmVzcyB3aGVyZSB3ZSBmb3Jnb3Qg
dG8gd2FpdCBmb3IgdGhlIGdwdQorICAgICAgICBkZXZpY2UgdG8gbG9hZCBiZWZvcmUgcnVubmlu
ZyB0ZXN0IGhhcm5lc3MgdGVzdHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBvdmVyc2lnaHQKKyAg
ICAgICAgYW5kIGFzc2VydHMgdGhhdCB3ZSBoYXZlIGFsd2F5cyBmaW5pc2hlZCBsb2FkaW5nIGJl
Zm9yZSBydW5uaW5nIGEgdGVzdC4KKworICAgICAgICAqIHdlYmdwdS93aGxzbC9hcnJheS1zcGVj
LXRlc3RzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRl
ci11c2FnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3do
bHNsL2pzL3Rlc3QtaGFybmVzcy5qczoKKyAgICAgICAgKEhhcm5lc3MpOgorICAgICAgICAoSGFy
bmVzcy5wcm90b3R5cGUuYXN5bmMucmVxdWVzdERldmljZSk6CisgICAgICAgIChIYXJuZXNzLnBy
b3RvdHlwZS5hc3luYy5jYWxsVHlwZWRGdW5jdGlvbik6CisgICAgICAgIChIYXJuZXNzLnByb3Rv
dHlwZS5hc3luYy5jaGVja0NvbXBpbGVGYWlsKToKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvcG9p
bnRlci1zcGVjLXRlc3RzLmh0bWw6CisgICAgICAgICogd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVz
cy10ZXN0Lmh0bWw6CisKIDIwMTktMDktMDkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtdTJmLXNpbGVudC5odHRwcy5odG1sIGlzIGZsYWt5
CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvYXJyYXktc3BlYy10ZXN0cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0
bWwJKHJldmlzaW9uIDI0OTY2NCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1z
cGVjLXRlc3RzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgd2hsc2xUZXN0
cy5hcnJheVJlZlRvQXJyYXlSZWYgPSBhc3luYyAoKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgIGA7Ci0gICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsSW50RnVu
Y3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgNzYgKyAzOSArIDgzKTsKKyAgICBhd2FpdCBjaGVj
a0ZhaWwocHJvZ3JhbSk7CiB9CiAKIHdobHNsVGVzdHMuYXNzaWduTGVuZ3RoID0gYXN5bmMgKCkg
PT4gewpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRl
ci11c2FnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2Fn
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mgbm9Q
b2ludGVyc0luU3RydWN0T3JBcnJheSAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVy
LXVzYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91dCIg
Y29udGVudD0ibG9uZyI+Cis8dGl0bGU+Y29ycmVjdCBwb2ludGVyIHVzYWdlLjwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qg
d2hsc2xUZXN0cyA9IHt9OworCit3aGxzbFRlc3RzLm5vUG9pbnRlcnNJblN0cnVjdE9yQXJyYXkg
PSBhc3luYyAoKSA9PiB7CisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgc3RydWN0IFMg
eyBpbnQgeDsgdGhyZWFkIGludCogcHRyOyB9CisgICAgICAgIHZvaWQgZm9vKCkgeyB9CisgICAg
YCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQg
aW50KjsKKyAgICAgICAgc3RydWN0IFMgeyBpbnQgeDsgVCBwdHI7IH0KKyAgICAgICAgdm9pZCBm
b28oKSB7IH0KKyAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHN0cnVj
dCBTIHsgdGhyZWFkIGludCpbNDJdIGFycjsgfQorICAgICAgICB2b2lkIGZvbygpIHsgfQorICAg
IGApOworCisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB2b2lkIGZvbygpIHsKKyAg
ICAgICAgICAgIHRocmVhZCBpbnQqWzQyXSBhcnI7CisgICAgICAgIH0KKyAgICBgKTsKKworICAg
IGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBpbnQqOworICAg
ICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIFRbNDJdIGFycjsKKyAgICAgICAgfQorICAg
IGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFk
IGludCpbNDJdOworICAgICAgICB2b2lkIGZvbygpIHsgfQorICAgIGApOworCisgICAgYXdhaXQg
Y2hlY2tGYWlsKGAKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICBpbnQgeDsKKyAg
ICAgICAgICAgIHRocmVhZCBpbnQqIHB0ciA9ICZ4OworICAgICAgICAgICAgKCZwdHIpOworICAg
ICAgICB9CisgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB0eXBlZGVm
IFQgPSB0aHJlYWQgaW50KltdOworICAgICAgICB2b2lkIGZvbygpIHsgfQorICAgIGApOworCisg
ICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdHlwZWRlZiBJID0gaW50OworICAgICAgICB0
eXBlZGVmIFQgPSB0aHJlYWQgSSpbXTsKKyAgICAgICAgdm9pZCBmb28oKSB7IH0KKyAgICBgKTsK
KworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHR5cGVkZWYgSSA9IHRocmVhZCBpbnQq
OworICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOworICAgICAgICB2b2lkIGZvbygpIHsg
fQorICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdHlwZWRlZiBJID0g
dGhyZWFkIGludFtdOworICAgICAgICB0eXBlZGVmIFQgPSB0aHJlYWQgSVtdOworICAgICAgICB2
b2lkIGZvbygpIHsgfQorICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAg
dHlwZWRlZiBJID0gdGhyZWFkIGludCo7CisgICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJKjsK
KyAgICAgICAgdm9pZCBmb28oKSB7IH0KKyAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChg
CisgICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB0
aHJlYWQgaW50W10gYXJyID0gQHg7CisgICAgICAgICAgICAoQGFycik7CisgICAgICAgIH0KKyAg
ICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHZvaWQgZm9vKCkgeworICAg
ICAgICAgICAgaW50IHg7CisgICAgICAgICAgICB0aHJlYWQgaW50W10gYXJyID0gQHg7CisgICAg
ICAgICAgICAoJmFycik7CisgICAgICAgIH0KKyAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFp
bChgCisgICAgICAgIHR5cGVkZWYgSSA9IHRocmVhZCBpbnRbXTsKKyAgICAgICAgdHlwZWRlZiBU
ID0gdGhyZWFkIEkqOworICAgICAgICB2b2lkIGZvbygpIHsgfQorICAgIGApOworfTsKKworcnVu
VGVzdHMod2hsc2xUZXN0cyk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvcG9pbnRlci1zcGVjLXRlc3RzLmh0bWwJKHJldmlzaW9uIDI0
OTY2NCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQCB3aGxzbFRlc3RzLnBvaW50ZXJUb1Bv
aW50ZXIgPSBhc3luYyAoKSA9CiAgICAgICAgICAgICByZXN1bHQgKz0geDsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KLSAgICBgOzsKLSAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGNhbGxJbnRGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA3NiArIDM5ICsgODMpOwor
ICAgIGA7CisgICAgYXdhaXQgY2hlY2tGYWlsKHByb2dyYW0pOwogfQogCiB3aGxzbFRlc3RzLnBv
aW50ZXJUb01lbWJlciA9IGFzeW5jICgpID0+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJn
cHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbAkocmV2aXNpb24gMjQ5NjY0KQorKysgTGF5
b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3Rlc3QtaGFybmVzcy10ZXN0Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Niw4ICsxODYsOSBAQCB3aGxzbFRlc3RzLmNoZWNrRmFpbFRlc3RzID0gKCkgPT4g
ewogICAgIH0sICJTdWNjZXNzZnVsbHkgY29tcGlsaW5nIGNvZGUgaW4gY2hlY2tGYWlsIGlzIGFu
IGVycm9yLiIpCiB9OwogCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsK
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4gewogICAgIHRyeSB7
CisgICAgICAgIGF3YWl0IGhhcm5lc3MucmVxdWVzdERldmljZSgpOwogICAgICAgICBmb3IgKGNv
bnN0IG5hbWUgaW4gd2hsc2xUZXN0cykgewogICAgICAgICAgICAgaWYgKCFuYW1lLnN0YXJ0c1dp
dGgoIl8iKSkKICAgICAgICAgICAgICAgICB3aGxzbFRlc3RzW25hbWVdKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvanMvdGVzdC1oYXJuZXNzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMJKHJldmlzaW9uIDI0OTY2
NCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMJKHdvcmtp
bmcgY29weSkKQEAgLTE1OCw2ICsxNTgsNyBAQCBjbGFzcyBEYXRhIHsKIGNsYXNzIEhhcm5lc3Mg
ewogICAgIGNvbnN0cnVjdG9yICgpCiAgICAgeworICAgICAgICB0aGlzLl9sb2FkZWQgPSBmYWxz
ZTsKICAgICB9CiAKICAgICBhc3luYyByZXF1ZXN0RGV2aWNlKCkKQEAgLTE2OSw2ICsxNzAsOCBA
QCBjbGFzcyBIYXJuZXNzIHsKICAgICAgICAgICAgIC8vIFdlYkdQVSBpcyBub3Qgc3VwcG9ydGVk
LgogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBHUFVBZGFwdGVyUmVxdWVz
dE9wdGlvbnMgYW5kIEdQVURldmljZURlc2NyaXB0b3IsCiAgICAgICAgICAgICAvLyBhbmQgZGlm
ZmVyZW50aWF0ZSBiZXR3ZWVuIGRlc2NyaXB0b3IgdmFsaWRhdGlvbiBlcnJvcnMgYW5kIG5vIFdl
YkdQVSBzdXBwb3J0LgorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgdGhpcy5fbG9h
ZGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTgyLDYgKzE4NSw5IEBAIGNsYXNz
IEhhcm5lc3MgewogICAgICAqLwogICAgIGFzeW5jIGNhbGxUeXBlZEZ1bmN0aW9uKHR5cGUsIGZ1
bmN0aW9ucywgbmFtZSwgYXJncykKICAgICB7ICAgCisgICAgICAgIGlmICghdGhpcy5fbG9hZGVk
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBsb2FkZWQuIik7
CisKICAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAg
dGhyb3cgbmV3IFdlYkdQVVVuc3VwcG9ydGVkRXJyb3IoKTsKIApAQCAtMjYzLDggKzI2OSwxMSBA
QCBjb21wdXRlIHZvaWQgX2NvbXB1dGVfbWFpbigke2FyZ3NEZWNsYXJhCiAgICAgICovCiAgICAg
YXN5bmMgY2hlY2tDb21waWxlRmFpbChzb3VyY2UpCiAgICAgeworICAgICAgICBpZiAoIXRoaXMu
X2xvYWRlZCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR1BVIGRldmljZSBub3QgbG9h
ZGVkLiIpOworCiAgICAgICAgIGlmICh0aGlzLl9kZXZpY2UgPT09IHVuZGVmaW5lZCkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRocm93IG5ldyBXZWJHUFVVbnN1cHBvcnRlZEVy
cm9yKCk7CiAgICAgICAgIAogICAgICAgICBsZXQgZW50cnlQb2ludENvZGUgPSBgCiBbbnVtdGhy
ZWFkcygxLCAxLCAxKV0KQEAgLTUxOSw2ICs1MjgsNyBAQCBjb25zdCB3ZWJHUFVQcm9taXNlVGVz
dCA9ICh0ZXN0RnVuYywgbXNnCiAKIGZ1bmN0aW9uIHJ1blRlc3RzKG9iaikgewogICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgICAgICBhd2FpdCBo
YXJuZXNzLnJlcXVlc3REZXZpY2UoKTsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGZvciAo
Y29uc3QgbmFtZSBpbiBvYmopIHsKICAgICAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0
aCgiXyIpKSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378586</attachid>
            <date>2019-09-11 15:44:26 -0700</date>
            <delta_ts>2019-09-11 16:34:48 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>21215</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTcwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE5LTA5LTEwICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gRW5zdXJlIHN0cnVj
dHMvYXJyYXlzIHdpdGggcG9pbnRlcnMgYXMgZmllbGRzIGFyZSBkaXNhbGxvd2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBwYXNzIHdoaWNoIGJvdGggZW5zdXJlcyB0aGF0IHJlZmVyZW5jZXMgYXJlIGFsd2F5cyBpbml0
aWFsaXplZCB3aXRoCisgICAgICAgIGNvbmNyZXRlIHZhbHVlcyBhbmQgdGhhdCB3ZSBzdXBwb3J0
IGxvZ2ljYWwgbW9kZSB2YWxpZGF0aW9uIGJ5IGRpc2FsbG93aW5nIG5lc3RlZCByZWZlcmVuY2Vz
LgorICAgICAgICAKKyAgICAgICAgU3BlY2lmaWNhbGx5LCB0aGUgcGFzczoKKyAgICAgICAgCisg
ICAgICAgIDEuIERpc2FsbG93cyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFyZSByZWZl
cmVuY2VzLiBUaGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCisgICAgICAgIGZpZ3VyZSBv
dXQgaG93IHRvIGRlZmF1bHQgaW5pdGlhbGl6ZSBzdWNoIGEgc3RydWN0LiBXZSBjb3VsZCByZWxh
eCB0aGlzIGluIHRoZSBmdXR1cmUgaWYgd2UKKyAgICAgICAgZGlkIGFuIGFuYWx5c2lzIG9uIHdo
aWNoIHN0cnVjdHMgY29udGFpbiByZWZlcmVuY2UgZmllbGRzLCBhbmQgZW5zdXJlIHN1Y2ggc3Ry
dWN0IHZhcmlhYmxlcworICAgICAgICBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMgd291
bGQgYWxzbyByZXF1aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMgd2hp
Y2gKKyAgICAgICAgaW5pdGlhbGl6ZSBlYWNoIGZpZWxkLgorICAgICAgICAyLiBXZSBhbHNvIGRv
IHRoZSBzYW1lIGZvciBhcnJheXMuCisgICAgICAgIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUg
b25lIGxldmVsIGRlZXAuIFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2Vz
IHRvCisgICAgICAgIHJlZmVyZW5jZXMsIGV0Yy4gVGhpcyBpcyB0byBzdXBwb3J0IGxvZ2ljYWwg
bW9kZSB2YWxpZGF0aW9uIHJ1bGVzLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS93aGxzbC9lbnN1
cmUtcHJvcGVyLXBvaW50ZXItdXNhZ2UuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6Y2hlY2tSZWZlcmVuY2VUeXBlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmg6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6Q2hlY2tlcjo6dmlzaXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNoYXJlZCk6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE5LTA5LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL2RvLW5vdC1jYXB0dXJlLXN0YXRpc3RpY3MtZm9yLXNpbXBsZS10b3AtbmF2aWdhdGlvbnMu
aHRtbCBpcyBmcmVxdWVudGx5IHRpbWluZyBvdXQgb24gaU9TIEVXUyBib3RzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5j
ZXMuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3Bw
CiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEdhdGhlckVudHJ5UG9pbnRJdGVtcy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tSZWZl
cmVuY2VUeXBlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgIldITFNMQVNULmgiCisjaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUmVmZXJlbmNlVHlw
ZUNoZWNrZXIgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7CitwdWJsaWM6CisgICAgUmVmZXJlbmNl
VHlwZUNoZWNrZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+UmVmZXJlbmNlVHlwZUNoZWNr
ZXIoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNr
VHlwZShBU1Q6OlVubmFtZWRUeXBlJiB0eXBlLCBDb2RlTG9jYXRpb24gY29kZUxvY2F0aW9uLCBj
b25zdCBjaGFyKiBlcnJvcikKKyAgICB7CisgICAgICAgIGF1dG8mIHVuaWZpZWRUeXBlID0gdHlw
ZS51bmlmeU5vZGUoKTsKKyAgICAgICAgaWYgKGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4odW5pZmll
ZFR5cGUpKSB7CisgICAgICAgICAgICBzZXRFcnJvcihFcnJvcihlcnJvciwgY29kZUxvY2F0aW9u
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXM8QVNU
OjpVbm5hbWVkVHlwZT4odW5pZmllZFR5cGUpKQorICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZpZWRUeXBlKSk7CisgICAgfQorCisg
ICAgdm9pZCB2aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBjaGVja1R5cGUocmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpLCBy
ZWZlcmVuY2VUeXBlLmNvZGVMb2NhdGlvbigpLCAicmVmZXJlbmNlIHR5cGUgY2Fubm90IGhhdmUg
YW5vdGhlciByZWZlcmVuY2UgdHlwZSBhcyBhbiBpbm5lciB0eXBlIik7CisgICAgfQorCisgICAg
dm9pZCB2aXNpdChBU1Q6OkFycmF5VHlwZSYgYXJyYXlUeXBlKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY2hlY2tUeXBlKGFycmF5VHlwZS50eXBlKCksIGFycmF5VHlwZS5jb2RlTG9jYXRpb24o
KSwgImFycmF5IHR5cGUgY2Fubm90IGhhdmUgYSByZWZlcmVuY2UgdHlwZSBhcyBpdHMgaW5uZXIg
dHlwZSIpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50JiBz
dHJ1Y3R1cmVFbGVtZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tUeXBlKHN0cnVj
dHVyZUVsZW1lbnQudHlwZSgpLCBzdHJ1Y3R1cmVFbGVtZW50LmNvZGVMb2NhdGlvbigpLCAiY2Fu
bm90IGhhdmUgYSBzdHJ1Y3R1cmUgZmllbGQgd2hpY2ggaXMgYSByZWZlcmVuY2UgdHlwZSIpOwor
ICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChleHByZXNzaW9uLnJlc29sdmVkVHlwZSgpKTsKKyAgICB9Cit9
OworCitFeHBlY3RlZDx2b2lkLCBFcnJvcj4gY2hlY2tSZWZlcmVuY2VUeXBlcyhQcm9ncmFtJiBw
cm9ncmFtKQoreworICAgIC8vIFRoaXMgcGFzcyBkb2VzIHRoZXNlIHRoaW5nczoKKyAgICAvLyAx
LiBEaXNhbGxvdyBzdHJ1Y3RzIHRvIGhhdmUgZmllbGRzIHdoaWNoIGFyZSByZWZlcmVuY2VzLiBU
aGlzIHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvCisgICAgLy8gZmlndXJlIG91dCBob3cgdG8g
ZGVmYXVsdCBpbml0aWFsaXplIHN1Y2ggYSBzdHJ1Y3QuIFdlIGNvdWxkIHJlbGF4IHRoaXMgaW4g
dGhlIGZ1dHVyZSBpZiB3ZQorICAgIC8vIGRpZCBhbiBhbmFseXNpcyBvbiB3aGljaCBzdHJ1Y3Rz
IGNvbnRhaW4gcmVmZXJlbmNlIGZpZWxkcywgYW5kIGVuc3VyZSBzdWNoIHN0cnVjdCB2YXJpYWJs
ZXMKKyAgICAvLyBhbHdheXMgaGF2ZSBpbml0aWFsaXplcnMuIFRoaXMgd291bGQgYWxzbyByZXF1
aXJlIHVzIHRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgZm9yIHN0cnVjdHMgd2hpY2gKKyAgICAvLyBp
bml0aWFsaXplIGVhY2ggZmllbGQuCisgICAgLy8gMi4gV2UgYWxzbyBkbyB0aGUgc2FtZSBmb3Ig
YXJyYXlzLgorICAgIC8vIDMuIFJlZmVyZW5jZXMgY2FuIG9ubHkgYmUgb25lIGxldmVsIGRlZXAu
IFNvIG5vIHBvaW50ZXJzIHRvIHBvaW50ZXJzLiBObyByZWZlcmVuY2VzIHRvCisgICAgLy8gcmVm
ZXJlbmNlcywgZXRjLiBUaGlzIGlzIHRvIHN1cHBvcnQgbG9naWNhbCBtb2RlLgorICAgIFJlZmVy
ZW5jZVR5cGVDaGVja2VyIHJlZmVyZW5jZVR5cGVDaGVja2VyOworICAgIHJlZmVyZW5jZVR5cGVD
aGVja2VyLmNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtKTsKKyAgICByZXR1cm4gcmVmZXJlbmNl
VHlwZUNoZWNrZXIucmVzdWx0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrUmVmZXJlbmNlVHlwZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xFcnJvci5oIgorI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisK
K2NsYXNzIFByb2dyYW07CisKK0V4cGVjdGVkPHZvaWQsIEVycm9yPiBjaGVja1JlZmVyZW5jZVR5
cGVzKFByb2dyYW0mKTsKKworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCShyZXZpc2lv
biAyNDk2NjQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzYsNyArOTM2LDYgQEAgdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZQogICAgICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9
IGRvd25jYXN0PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7CiAgICAgICAgIGlmIChpczxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8mIHBvaW50
ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgxNjMgU2F2ZSB0aGUgZmFjdCB0aGF0IHdlJ3JlIG5vdCB0YXJnZXR0aW5nIHRoZSBpdGVtOyB3
ZSdyZSB0YXJnZXR0aW5nIHRoZSBpdGVtJ3MgaW5uZXIgZWxlbWVudC4KICAgICAgICAgICAgIGFz
c2lnbkNvbmNyZXRlVHlwZShtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBBU1Q6OkFycmF5
UmVmZXJlbmNlVHlwZTo6Y3JlYXRlKG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uY29kZUxv
Y2F0aW9uKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpLCBwb2ludGVyVHlwZS5lbGVtZW50
VHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAko
cmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiV0hMU0xBU1REdW1wZXIuaCIKICNpbmNsdWRlICJXSExTTENoZWNrRHVwbGljYXRlRnVu
Y3Rpb25zLmgiCisjaW5jbHVkZSAiV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmgiCiAjaW5jbHVk
ZSAiV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgiCiAjaW5jbHVkZSAiV0hMU0xDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV0hMU0xDb21wdXRlRGltZW5zaW9ucy5oIgpAQCAtMjMxLDYgKzIzMiw3
IEBAIHN0YXRpYyBFeHBlY3RlZDxQcm9ncmFtLCBTdHJpbmc+IHByZXBhcmUKIAogICAgIFJVTl9Q
QVNTKGNoZWNrTGl0ZXJhbFR5cGVzLCBwcm9ncmFtKTsKICAgICBDSEVDS19QQVNTKGNoZWNrVGV4
dHVyZVJlZmVyZW5jZXMsIHByb2dyYW0pOworICAgIENIRUNLX1BBU1MoY2hlY2tSZWZlcmVuY2VU
eXBlcywgcHJvZ3JhbSk7CiAgICAgUlVOX1BBU1MocmVzb2x2ZVByb3BlcnRpZXMsIHByb2dyYW0p
OwogICAgIFJVTl9QQVNTKGZpbmRIaWdoWm9tYmllcywgcHJvZ3JhbSk7CiAgICAgQ0hFQ0tfUEFT
UyhjaGVja1N0YXRlbWVudEJlaGF2aW9yLCBwcm9ncmFtKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNw
cAkocmV2aXNpb24gMjQ5NjY0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiV0hMU0xBU1QuaCIKICNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDk2NjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTgzMzEsNiArODMzMSw4IEBACiAJCTUyMkRBM0QzMjI5RTFEMzkwMDQyRDE1MSAvKiBXSExTTEds
b2JhbFZhcmlhYmxlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMR2xvYmFsVmFyaWFi
bGVSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIyRTFBMTcyMjk3
RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hMU0xQ
cmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlc2VydmVW
YXJpYWJsZUxpZmV0aW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjRCRDQ3
RTIzMjc3RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMQ2hlY2tSZWZlcmVuY2VUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUyNEJENDgwMjMyNzdFMTYwMDhGNTZDMSAvKiBXSExTTENoZWNrUmVm
ZXJlbmNlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAv
KiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRU
cmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MjZCM0YwMTIyRkI3QkREMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxl
U3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNTU3OSw2ICsyNTU4MSw4IEBACiAJCQkJMUM4NDBCOTcyMUVDNDAw
NzAwRDA1MDBEIC8qIFdITFNMQ2hlY2tlci5oICovLAogCQkJCTFDMjgxQzZEMjJCODdCOTgwMDY5
MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwICovLAogCQkJCTFDMjgxQzZF
MjJCODdCOTgwMDY5MUMwMCAvKiBXSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuaCAqLywKKwkJ
CQk1MjRCRDQ3RTIzMjc3RTE1MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5jZVR5cGVzLmNw
cCAqLywKKwkJCQk1MjRCRDQ4MDIzMjc3RTE2MDA4RjU2QzEgLyogV0hMU0xDaGVja1JlZmVyZW5j
ZVR5cGVzLmggKi8sCiAJCQkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxv
Y2F0aW9uLmggKi8sCiAJCQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0
ZURpbWVuc2lvbnMuY3BwICovLAogCQkJCTFDODZDQTRDMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExT
TENvbXB1dGVEaW1lbnNpb25zLmggKi8sCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDk2NjQpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAx
OS0wOS0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBbV0hM
U0xdIEVuc3VyZSBzdHJ1Y3RzL2FycmF5cyB3aXRoIHBvaW50ZXJzIGFzIGZpZWxkcyBhcmUgZGlz
YWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxNTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9iaW4gTW9yaXNzZXQuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBvdXIgdGVzdCBoYXJuZXNzIHdoZXJlIHdlIGZvcmdv
dCB0byB3YWl0IGZvciB0aGUgZ3B1CisgICAgICAgIGRldmljZSB0byBsb2FkIGJlZm9yZSBydW5u
aW5nIHRlc3QgaGFybmVzcyB0ZXN0cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIG92ZXJzaWdodAor
ICAgICAgICBhbmQgYXNzZXJ0cyB0aGF0IHdlIGhhdmUgYWx3YXlzIGZpbmlzaGVkIGxvYWRpbmcg
YmVmb3JlIHJ1bm5pbmcgYSB0ZXN0LgorCisgICAgICAgICogd2ViZ3B1L3dobHNsL2FycmF5LXNw
ZWMtdGVzdHMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2lu
dGVyLXVzYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3dobHNsL2Vu
c3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUv
d2hsc2wvanMvdGVzdC1oYXJuZXNzLmpzOgorICAgICAgICAoSGFybmVzcyk6CisgICAgICAgIChI
YXJuZXNzLnByb3RvdHlwZS5hc3luYy5yZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKEhhcm5lc3Mu
cHJvdG90eXBlLmFzeW5jLmNhbGxUeXBlZEZ1bmN0aW9uKToKKyAgICAgICAgKEhhcm5lc3MucHJv
dG90eXBlLmFzeW5jLmNoZWNrQ29tcGlsZUZhaWwpOgorICAgICAgICAqIHdlYmdwdS93aGxzbC9w
b2ludGVyLXNwZWMtdGVzdHMuaHRtbDoKKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdGVzdC1oYXJu
ZXNzLXRlc3QuaHRtbDoKKwogMjAxOS0wOS0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS11MmYtc2lsZW50Lmh0dHBzLmh0bWwgaXMgZmxh
a3kKSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9hcnJheS1zcGVjLXRlc3RzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5LXNwZWMtdGVzdHMu
aHRtbAkocmV2aXNpb24gMjQ5NjY0KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2FycmF5
LXNwZWMtdGVzdHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCB3aGxzbFRl
c3RzLmFycmF5UmVmVG9BcnJheVJlZiA9IGFzeW5jICgpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAgICAgYDsKLSAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxJbnRG
dW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCA3NiArIDM5ICsgODMpOworICAgIGF3YWl0IGNo
ZWNrRmFpbChwcm9ncmFtKTsKIH0KIAogd2hsc2xUZXN0cy5hc3NpZ25MZW5ndGggPSBhc3luYyAo
KSA9PiB7CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2lu
dGVyLXVzYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJncHUv
d2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVz
YWdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBu
b1BvaW50ZXJzSW5TdHJ1Y3RPckFycmF5IAorCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hs
c2wvZW5zdXJlLXByb3Blci1wb2ludGVyLXVzYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvd2ViZ3B1L3dobHNsL2Vuc3VyZS1wcm9wZXItcG9pbnRlci11c2FnZS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9lbnN1cmUtcHJvcGVyLXBvaW50
ZXItdXNhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0
IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5jb3JyZWN0IHBvaW50ZXIgdXNhZ2UuPC90aXRsZT4K
KzxzY3JpcHQgc3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25z
dCB3aGxzbFRlc3RzID0ge307CisKK3dobHNsVGVzdHMubm9Qb2ludGVyc0luU3RydWN0T3JBcnJh
eSA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICBzdHJ1Y3Qg
UyB7IGludCB4OyB0aHJlYWQgaW50KiBwdHI7IH0KKyAgICAgICAgdm9pZCBmb28oKSB7IH0KKyAg
ICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHR5cGVkZWYgVCA9IHRocmVh
ZCBpbnQqOworICAgICAgICBzdHJ1Y3QgUyB7IGludCB4OyBUIHB0cjsgfQorICAgICAgICB2b2lk
IGZvbygpIHsgfQorICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgc3Ry
dWN0IFMgeyB0aHJlYWQgaW50Kls0Ml0gYXJyOyB9CisgICAgICAgIHZvaWQgZm9vKCkgeyB9Cisg
ICAgYCk7CisKKworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHZvaWQgZm9vKCkgewor
ICAgICAgICAgICAgdGhyZWFkIGludCpbNDJdIGFycjsKKyAgICAgICAgfQorICAgIGApOworCisg
ICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIGludCo7Cisg
ICAgICAgIHZvaWQgZm9vKCkgeworICAgICAgICAgICAgVFs0Ml0gYXJyOworICAgICAgICB9Cisg
ICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB0eXBlZGVmIFQgPSB0aHJl
YWQgaW50Kls0Ml07CisgICAgICAgIHZvaWQgZm9vKCkgeyB9CisgICAgYCk7CisKKyAgICBhd2Fp
dCBjaGVja0ZhaWwoYAorICAgICAgICB2b2lkIGZvbygpIHsKKyAgICAgICAgICAgIGludCB4Owor
ICAgICAgICAgICAgdGhyZWFkIGludCogcHRyID0gJng7CisgICAgICAgICAgICAoJnB0cik7Cisg
ICAgICAgIH0KKyAgICBgKTsKKworICAgIGF3YWl0IGNoZWNrRmFpbChgCisgICAgICAgIHR5cGVk
ZWYgVCA9IHRocmVhZCBpbnQqW107CisgICAgICAgIHZvaWQgZm9vKCkgeyB9CisgICAgYCk7CisK
KyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB0eXBlZGVmIEkgPSBpbnQ7CisgICAgICAg
IHR5cGVkZWYgVCA9IHRocmVhZCBJKltdOworICAgICAgICB2b2lkIGZvbygpIHsgfQorICAgIGAp
OworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGlu
dCo7CisgICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107CisgICAgICAgIHZvaWQgZm9vKCkg
eyB9CisgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAgICB0eXBlZGVmIEkg
PSB0aHJlYWQgaW50W107CisgICAgICAgIHR5cGVkZWYgVCA9IHRocmVhZCBJW107CisgICAgICAg
IHZvaWQgZm9vKCkgeyB9CisgICAgYCk7CisKKyAgICBhd2FpdCBjaGVja0ZhaWwoYAorICAgICAg
ICB0eXBlZGVmIEkgPSB0aHJlYWQgaW50KjsKKyAgICAgICAgdHlwZWRlZiBUID0gdGhyZWFkIEkq
OworICAgICAgICB2b2lkIGZvbygpIHsgfQorICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWls
KGAKKyAgICAgICAgdm9pZCBmb28oKSB7CisgICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAg
IHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKKyAgICAgICAgICAgIChAYXJyKTsKKyAgICAgICAgfQor
ICAgIGApOworCisgICAgYXdhaXQgY2hlY2tGYWlsKGAKKyAgICAgICAgdm9pZCBmb28oKSB7Cisg
ICAgICAgICAgICBpbnQgeDsKKyAgICAgICAgICAgIHRocmVhZCBpbnRbXSBhcnIgPSBAeDsKKyAg
ICAgICAgICAgICgmYXJyKTsKKyAgICAgICAgfQorICAgIGApOworCisgICAgYXdhaXQgY2hlY2tG
YWlsKGAKKyAgICAgICAgdHlwZWRlZiBJID0gdGhyZWFkIGludFtdOworICAgICAgICB0eXBlZGVm
IFQgPSB0aHJlYWQgSSo7CisgICAgICAgIHZvaWQgZm9vKCkgeyB9CisgICAgYCk7Cit9OworCity
dW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2NyaXB0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9wb2ludGVyLXNwZWMtdGVzdHMuaHRtbAkocmV2aXNpb24g
MjQ5NjY0KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3BvaW50ZXItc3BlYy10ZXN0cy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBAIHdobHNsVGVzdHMucG9pbnRlclRv
UG9pbnRlciA9IGFzeW5jICgpID0KICAgICAgICAgICAgIHJlc3VsdCArPSB4OwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgIGA7OwotICAgIGFzc2VydF9lcXVhbHMo
YXdhaXQgY2FsbEludEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIDc2ICsgMzkgKyA4Myk7
CisgICAgYDsKKyAgICBhd2FpdCBjaGVja0ZhaWwocHJvZ3JhbSk7CiB9CiAKIHdobHNsVGVzdHMu
cG9pbnRlclRvTWVtYmVyID0gYXN5bmMgKCkgPT4KSW5kZXg6IExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dl
YmdwdS93aGxzbC90ZXN0LWhhcm5lc3MtdGVzdC5odG1sCShyZXZpc2lvbiAyNDk2NjQpCisrKyBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdGVzdC1oYXJuZXNzLXRlc3QuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMTg2LDggKzE4Niw5IEBAIHdobHNsVGVzdHMuY2hlY2tGYWlsVGVzdHMgPSAoKSA9
PiB7CiAgICAgfSwgIlN1Y2Nlc3NmdWxseSBjb21waWxpbmcgY29kZSBpbiBjaGVja0ZhaWwgaXMg
YW4gZXJyb3IuIikKIH07CiAKLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4g
eword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CiAgICAgdHJ5
IHsKKyAgICAgICAgYXdhaXQgaGFybmVzcy5yZXF1ZXN0RGV2aWNlKCk7CiAgICAgICAgIGZvciAo
Y29uc3QgbmFtZSBpbiB3aGxzbFRlc3RzKSB7CiAgICAgICAgICAgICBpZiAoIW5hbWUuc3RhcnRz
V2l0aCgiXyIpKQogICAgICAgICAgICAgICAgIHdobHNsVGVzdHNbbmFtZV0oKTsKSW5kZXg6IExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC9qcy90ZXN0LWhhcm5lc3MuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcwkocmV2aXNpb24gMjQ5
NjY0KQorKysgTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL2pzL3Rlc3QtaGFybmVzcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDYgKzE1OCw3IEBAIGNsYXNzIERhdGEgewogY2xhc3MgSGFybmVz
cyB7CiAgICAgY29uc3RydWN0b3IgKCkKICAgICB7CisgICAgICAgIHRoaXMuX2xvYWRlZCA9IGZh
bHNlOwogICAgIH0KIAogICAgIGFzeW5jIHJlcXVlc3REZXZpY2UoKQpAQCAtMTY5LDYgKzE3MCw4
IEBAIGNsYXNzIEhhcm5lc3MgewogICAgICAgICAgICAgLy8gV2ViR1BVIGlzIG5vdCBzdXBwb3J0
ZWQuCiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIEdQVUFkYXB0ZXJSZXF1
ZXN0T3B0aW9ucyBhbmQgR1BVRGV2aWNlRGVzY3JpcHRvciwKICAgICAgICAgICAgIC8vIGFuZCBk
aWZmZXJlbnRpYXRlIGJldHdlZW4gZGVzY3JpcHRvciB2YWxpZGF0aW9uIGVycm9ycyBhbmQgbm8g
V2ViR1BVIHN1cHBvcnQuCisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICB0aGlzLl9s
b2FkZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODIsNiArMTg1LDkgQEAgY2xh
c3MgSGFybmVzcyB7CiAgICAgICovCiAgICAgYXN5bmMgY2FsbFR5cGVkRnVuY3Rpb24odHlwZSwg
ZnVuY3Rpb25zLCBuYW1lLCBhcmdzKQogICAgIHsgICAKKyAgICAgICAgaWYgKCF0aGlzLl9sb2Fk
ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkdQVSBkZXZpY2Ugbm90IGxvYWRlZC4i
KTsKKwogICAgICAgICBpZiAodGhpcy5fZGV2aWNlID09PSB1bmRlZmluZWQpCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgV2ViR1BVVW5zdXBwb3J0ZWRFcnJvcigpOwogCkBAIC0yNjMsOCArMjY5LDEx
IEBAIGNvbXB1dGUgdm9pZCBfY29tcHV0ZV9tYWluKCR7YXJnc0RlY2xhcmEKICAgICAgKi8KICAg
ICBhc3luYyBjaGVja0NvbXBpbGVGYWlsKHNvdXJjZSkKICAgICB7CisgICAgICAgIGlmICghdGhp
cy5fbG9hZGVkKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJHUFUgZGV2aWNlIG5vdCBs
b2FkZWQuIik7CisKICAgICAgICAgaWYgKHRoaXMuX2RldmljZSA9PT0gdW5kZWZpbmVkKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkdQVVVuc3VwcG9ydGVk
RXJyb3IoKTsKICAgICAgICAgCiAgICAgICAgIGxldCBlbnRyeVBvaW50Q29kZSA9IGAKIFtudW10
aHJlYWRzKDEsIDEsIDEpXQpAQCAtNTE5LDYgKzUyOCw3IEBAIGNvbnN0IHdlYkdQVVByb21pc2VU
ZXN0ID0gKHRlc3RGdW5jLCBtc2cKIAogZnVuY3Rpb24gcnVuVGVzdHMob2JqKSB7CiAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0
IGhhcm5lc3MucmVxdWVzdERldmljZSgpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgZm9y
IChjb25zdCBuYW1lIGluIG9iaikgewogICAgICAgICAgICAgICAgIGlmICghbmFtZS5zdGFydHNX
aXRoKCJfIikpIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>