<?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>132090</bug_id>
          
          <creation_ts>2014-04-23 16:34:39 -0700</creation_ts>
          <short_desc>Web Inspector: CSS autofill suggests properties instead of values when values are needed</short_desc>
          <delta_ts>2014-04-24 17:34:26 -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>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Jonathan Wells">jonowells</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003432</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-23 16:34:39 -0700</bug_when>
    <thetext>In the styles sidebar, property names are suggested in place of values. For instance, &apos;display: b&apos; should suggest &apos;block&apos; but instead &apos;background&apos; and other possible property names appear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003434</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-04-23 16:35:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/16706366&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003785</commentid>
    <comment_count>2</comment_count>
      <attachid>230108</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 14:50:14 -0700</bug_when>
    <thetext>Created attachment 230108
[PATCH] Proposed Fix: Updated to CSS mode handling to fix autocomplete, other issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003788</commentid>
    <comment_count>3</comment_count>
      <attachid>230108</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-24 14:59:30 -0700</bug_when>
    <thetext>Comment on attachment 230108
[PATCH] Proposed Fix: Updated to CSS mode handling to fix autocomplete, other issues

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

r=me

&gt; Source/WebInspectorUI/ChangeLog:13
&gt; +        data structure. All references to state.stack are obscelete. Many

Typo: obscelete

&gt; Source/WebInspectorUI/ChangeLog:884
&gt; -        Add missing semicolon.        
&gt; +        Add missing semicolon.

I wonder if commit queue will allow a patch that fixes this trailing whitespace. Maybe it will, maybe it won&apos;t.

&gt; Source/WebInspectorUI/Tools/PrettyPrinting/CodeMirrorFormatters.js:398
&gt; +        if (!state.stack || !state.stack.length || state.stack.lastValue === &quot;@media{&quot;)

These only fix the exception, but I assume they don&apos;t make CSS pretty printing work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003800</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 15:20:37 -0700</bug_when>
    <thetext>That&apos;s right, this just fixes the exception.  See https://bugs.webkit.org/show_bug.cgi?id=132149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003802</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 15:22:17 -0700</bug_when>
    <thetext>Good question re: the whitespace. I meant to remove that and did so incorrectly. That should be done in a separate patch probably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003804</commentid>
    <comment_count>6</comment_count>
      <attachid>230108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 15:29:44 -0700</bug_when>
    <thetext>Comment on attachment 230108
[PATCH] Proposed Fix: Updated to CSS mode handling to fix autocomplete, other issues

Clearing flags on attachment: 230108

Committed r167779: &lt;http://trac.webkit.org/changeset/167779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003805</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 15:29:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003887</commentid>
    <comment_count>8</comment_count>
      <attachid>230108</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-04-24 17:01:13 -0700</bug_when>
    <thetext>Comment on attachment 230108
[PATCH] Proposed Fix: Updated to CSS mode handling to fix autocomplete, other issues

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/CodeMirrorCompletionController.js:523
&gt; +        if (!mainToken.state || !mainToken.state.state || !mainToken.state.state === &quot;block&quot;)
&gt;              return [];

This is not right. The while loop later looks for &quot;prop&quot;, but this returns early if there is no &quot;block&quot; state. This needs to do a similar contains check up the state stack for &quot;block&quot;.

As-is only proper name completions will work, property value completions will not work. But maybe you intended to fix this in the other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003909</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-04-24 17:34:26 -0700</bug_when>
    <thetext>Yes, this was just a quick fix to avoid total breakage of the inspector. Plan to rework in https://bugs.webkit.org/show_bug.cgi?id=132149</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230108</attachid>
            <date>2014-04-24 14:50:14 -0700</date>
            <delta_ts>2014-04-24 17:01:13 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix: Updated to CSS mode handling to fix autocomplete, other issues</desc>
            <filename>Inspector CSS autofill.diff</filename>
            <type>text/plain</type>
            <size>35659</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDE3YzFmZWQuLjNhOGIzN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTA0LTI0ICBKb25hdGhhbiBXZWxs
cyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ1NTIGF1
dG9maWxsIHN1Z2dlc3RzIHByb3BlcnRpZXMgaW5zdGVhZCBvZiB2YWx1ZXMgd2hlbiB2YWx1ZXMg
YXJlIG5lZWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMyMDkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlcyBhcmUgcmVxdWlyZWQgdG8gdGhlIENvZGVNaXJyb3IgaGVscGVycyB0byBiZSBj
b21wYXRpYmxlIHdpdGgKKyAgICAgICAgQ29kZU1pcnJvciA0LiBTb21lIG9mIHRob3NlIGNoYW5n
ZXMgaGF2ZSBiZWVuIG1hZGUgdG8gZml4IGFuIGlzc3VlCisgICAgICAgIHdpdGggQ1NTIGF1dG9m
aWxsLCBDU1MgY29kZSBjb2xvcmluZywgYW5kIGFsc28KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTg1OS4gVGhlIG1haW4gaXNzdWUgaXMgdGhhdAor
ICAgICAgICBDb2RlTWlycm9yIDQncyBDU1MgbW9kZSAoY3NzLmpzKSBzdG9yZXMgaXRzIHBhcnNp
bmcgbW9kZXMgaW4gYSBkaWZmZXJlbnQKKyAgICAgICAgZGF0YSBzdHJ1Y3R1cmUuIEFsbCByZWZl
cmVuY2VzIHRvIHN0YXRlLnN0YWNrIGFyZSBvYnNjZWxldGUuIE1hbnkKKyAgICAgICAgYXJlIGZp
eGVkIGhlcmUgYW5kIG1vcmUgd2lsbCBiZSBpbiBhbiB1cGNvbWluZyBwYXRjaC4KKworICAgICAg
ICAqIFRvb2xzL1ByZXR0eVByaW50aW5nL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzOiBSZW1vdmVk
IGV4Y2VwdGlvbiBmb3IgY2hlY2tpbmcgc3RhdGUuc3RhY2sgcHJvcGVydGllcy4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxl
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xs
ZXIucHJvdG90eXBlLl9nZW5lcmF0ZUNTU0NvbXBsZXRpb25zKTogQ29ycmVjdGVkICJibG9jayIg
c3RhdGUgZGV0ZWN0aW9uLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1p
cnJvci9sZXNzLmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29k
ZU1pcnJvckFkZGl0aW9ucy5qczogU2V0cyBkZWZhdWx0IHN0YXRlIG9mICJibG9jayIgY29ycmVj
dGx5LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckZvcm1hdHRlcnMu
anM6IFJlbW92ZWQgZXhjZXB0aW9uIGZvciBjaGVja2luZyBzdGF0ZS5zdGFjayBwcm9wZXJ0aWVz
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ludGF4SGlnaGxpZ2h0aW5nRGVmYXVs
dFRoZW1lLmNzczogRml4IHN0eWxlcyB0byBtYXRjaCBDU1MgbW9kZSBjaGFuZ2VzLgorCiAyMDE0
LTA0LTI0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGdyYWRpZW50IGVkaXRvciBkb2VzIG5vdCBhcHBlYXIgZm9yIGxpbmVhci1n
cmFkaWVudCB3aXRoIG5vIHNwZWNpZmllZCBhbmdsZQpAQCAtMzA2LDcgKzMyOSw3IEBACiAgICAg
ICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgogICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanM6CiAgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKLSAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL01haW4uY3NzOiAKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L01haW4uY3NzOgogCiAyMDE0LTAzLTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKQEAgLTg1OCw3ICs4ODEsNyBAQAogCiAgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9EYXRhR3JpZC5qczoKICAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUucmVtb3ZlQ2hpbGQpOgotICAgICAgICBBZGQgbWlzc2luZyBzZW1pY29sb24uICAgICAgICAK
KyAgICAgICAgQWRkIG1pc3Npbmcgc2VtaWNvbG9uLgogCiAyMDE0LTAzLTEyICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgogCkBAIC0yMDQ5LDcgKzIwNzIsNyBAQAogICAgICAgICBvZiBs
aW5lYXIgZ3JhZGllbnRzLCB3ZSBwYXJzZSBhbGwgdmFsdWVzLCBzYXZlIGZvciBsZW5ndGhzLCBh
bmQgaW4gdGhlIGNhc2Ugb2YgcmFkaWFsIGdyYWRpZW50cywgd2UgcHJlc2VydmUgdGhlCiAgICAg
ICAgIHNpemluZyBpbmZvcm1hdGlvbiBhcyBhIHN0cmluZyBhbmQgcGFyc2Ugb25seSB0aGUgZ3Jh
ZGllbnQgc3RvcHMgYXMgdGhlIHNpemluZyBpbmZvcm1hdGlvbiBpcyBvbmx5IHVzZWZ1bCB0byBz
aG93CiAgICAgICAgIGluIGFuIGVkaXRvciBpZiBhdHRhY2hlZCB0byBhbiBlbGVtZW50IHdpdGgg
bWV0cmljcy4KLSAgICAgICAgCisKICAgICAgICAgU2luY2UgaW5zdGFuY2VzIG9mIEdyYWRpZW50
IGFyZSB1c2VkIGFzIHRoZSAudmFsdWUgcHJvcGVydHkgb2YgQ29kZU1pcnJvckdyYWRpZW50RWRp
dGluZ0NvbnRyb2xsZXIsIHdlIGltcGxlbWVudAogICAgICAgICB0aGUgcmVxdWlyZWQgLmNvcHko
KSBhbmQgLnRvU3RyaW5nKCkgbWV0aG9kcy4gVGhlIC50b1N0cmluZygpIGltcGxlbWVudGF0aW9u
cyBhcmUgYXdhcmUgb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIGFuZ2xlcwogICAgICAgICBhbmQgY29s
b3Igc3RvcCBvZmZzZXRzIGFuZCBvbmx5IHByaW50IHRob3NlIGFzIG5lY2Vzc2FyeSBhbmQgdXNl
IHNob3J0aGFuZHMgd2hlbiBwb3NzaWJsZS4KQEAgLTIxOTUsNyArMjIxOCw3IEBACiAgICAgICAg
ICogVXNlckludGVyZmFjZS9Db2RlTWlycm9yRWRpdGluZ0NvbnRyb2xsZXIuanM6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JDb2xvckVk
aXRpbmdDb250cm9sbGVyLmpzLgogICAgICAgICBOZXcgY2xhc3MgbWVhbnQgdG8gYmUgc3ViY2xh
c3NlZCBieSBhbnkgZnV0dXJlIGVkaXRpbmcgY29udHJvbGxlciwgYW5kIGFscmVhZHkgc3ViY2xh
c3NlZCBieQogICAgICAgICBDb2RlTWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci4gVGhpcyBj
bGFzcyBleHBvc2VzIHNldmVyYWwgaG9va3MgZm9yIHN1YmNsYXNzZXMgdG8gY3VzdG9taXplIGl0
cyBiZWhhdmlvcjoKLSAgICAgICAgCisKICAgICAgICAgLmluaXRpYWxWYWx1ZTogYSB2YWx1ZSB3
ZSBjYW4gcmV2ZXJ0IHRvIGlmIHRoZSBlZGl0aW5nIGlzIGNhbmNlbGVkCiAgICAgICAgIC5jc3ND
bGFzc05hbWU6IGEgQ1NTIGNsYXNzIG5hbWUgdGhhdCBjYW4gYmUgYWRkZWQgdG8gdGhlIGVkaXRp
bmcgY29udHJvbGxlcidzIGNvbnRhaW5lcgogICAgICAgICAucG9wb3ZlclByZWZlcnJlZEVkZ2Vz
OiBhIGxpc3Qgb2YgcHJlZmVycmVkRWRnZXMgYXMgcGFzc2VkIHRvIFBvcG92ZXIucHJvdG90eXBl
LnByZXNlbnQoKSB3aXRoIGEgc2Vuc2libGUgZGVmYXVsdApAQCAtMjIwNCwxMSArMjIyNywxMSBA
QAogICAgICAgICAucG9wb3ZlckRpZFByZXNlbnQ6IGNhbGxlZCBhcyB0aGUgcG9wb3ZlciBqdXN0
IHdhcyBwcmVzZW50ZWQsIHR5cGljYWxseSBvdmVycmlkZGVuIHdoZW4gY29udGVudCBuZWVkcyB0
byB0dW5lZCBvbmx5IGFmdGVyCiAgICAgICAgIGJlaW5nIGFkZGVkIHRvIHRoZSBET00gYW5kIHNl
dHRpbmcgb2YgdGhlIG5lY2Vzc2FyeSBtYWNoaW5lcnkgdG8gdXBkYXRlIHRoZSBzZXJpYWxpemVk
IHZhbHVlIGluIHRoZSBlZGl0b3IgYmFzZWQgb24gaW50ZXJhY3Rpb24KICAgICAgICAgd2l0aGlu
IHRoZSBwb3BvdmVyIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlcmlhbGl6ZWQgdmFsdWUgdXBvbiBz
aG93aW5nIHRoZSBwb3BvdmVyIHRoZSB2ZXJ5IGZpcnN0IHRpbWUuCi0gICAgICAgIAorCiAgICAg
ICAgIEFkZGl0aW9uYWxseSwgdGhlIC52YWx1ZSBwcm9wZXJ0eSBtdXN0IGJlIGFuIG9iamVjdCBz
dXBwb3J0aW5nIC50b1N0cmluZygpIGFuZCAuY29weSgpIG1ldGhvZC4KIAogICAgICAgICBGaW5h
bGx5LCB0aGUgLmVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nKCkgYW5kIC5lZGl0aW5n
Q29udHJvbGxlckRpZEZpbmlzaEVkaXRpbmcoKSBkZWxlZ2F0ZSBtZXRob2RzIGFyZSBmaXJlZAot
ICAgICAgICBhcyBlZGl0aW5nIGJlZ2lucyBhbmQgZmluaXNoZXMuIAorICAgICAgICBhcyBlZGl0
aW5nIGJlZ2lucyBhbmQgZmluaXNoZXMuCiAKICAgICAgICAgKFdlYkluc3BlY3Rvci5Db2RlTWly
cm9yRWRpdGluZ0NvbnRyb2xsZXIpOgogICAgICAgICAoV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JF
ZGl0aW5nQ29udHJvbGxlci5wcm90b3R5cGUuZ2V0IG1hcmtlcik6CkBAIC0yMjUzLDcgKzIyNzYs
NyBAQAogICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSG92ZXJNZW51LmpzOgogICAgICAgICBXZSBy
ZW1vdmUgdGhlIGFzc3VtcHRpb24gdGhhdCBhIEhvdmVyTWVudSBpcyBvbmx5IHVzZWQgdG8gZHJh
dyBhIHNpbmdsZSByb3VuZGVkIHJlY3QgYmFzZWQgb24gYSBzaW1wbGUKICAgICAgICAgUmVjdCBh
bmQgaW5zdGVhZCBzdXBwb3J0IHByZXNlbnRhdGlvbiBiYXNlZCBvbiBhbiBhcnJheSBvZiBSZWN0
cyB3aGVyZSB3ZSBlaXRoZXI6Ci0gICAgICAgIAorCiAgICAgICAgIC0gZHJhdyBhIHNpbmdsZSBy
b3VuZGVkIHJlY3RhbmdsZSBpZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIFJlY3QgcHJvdmlkZWQK
ICAgICAgICAgLSBkcmF3IHR3byBkaXNjb25uZWN0ZWQgb3Blbi1lbmRlZCByZWN0cyBpZiB3ZSdy
ZSBwcm92aWRlZCB3aXRoIHR3byBub24tb3ZlcmxhcHBpbmcgUmVjdHMKICAgICAgICAgLSBkcmF3
IGEgcG9seWdvbiBzdXJyb3VuZGluZyBhbGwgcHJvdmlkZWQgUmVjdHMgaW4gYWxsIG90aGVyIGNh
c2VzCkBAIC0yNTUwLDcgKzI1NzMsNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KIAotICAgICAgICBBZGQgYSBSdW50aW1lTWFuYWdlciBldmVudCB0aGF0IHRoZSBz
Y29wZSBjaGFpbiBkZXRhaWxzIHNpZGViYXIgY2FuIAorICAgICAgICBBZGQgYSBSdW50aW1lTWFu
YWdlciBldmVudCB0aGF0IHRoZSBzY29wZSBjaGFpbiBkZXRhaWxzIHNpZGViYXIgY2FuCiAgICAg
ICAgIGxpc3RlbiB0byB0byB0cmlnZ2VyIHJlZnJlc2guCiAKICAgICAgICAgVGVzdGluZyBvbiB0
aGlzIGlzIGJsb2NrZWQgYnkgaHR0cDovL3dlYmtpdC5vcmcvYi8xMjg3MjQKQEAgLTQxODksNyAr
NDIxMiw3IEBACiAKICAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RlYnVnZ2VyU2lkZWJhclBhbmVs
LmpzOgogICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5yZXN0b3JlU3RhdGVGcm9tQ29va2llKToKLSAgICAgICAgRHJpdmUtYnkgZml4IHRvIHBhc3Mg
YWxvbmcgcmVsYXhlZE1hdGNoRGVsYXkgdG8gdGhlIHN1cGVyY2xhc3MuIAorICAgICAgICBEcml2
ZS1ieSBmaXggdG8gcGFzcyBhbG9uZyByZWxheGVkTWF0Y2hEZWxheSB0byB0aGUgc3VwZXJjbGFz
cy4KIAogICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKICAgICAgICAgKFdlYkluc3Bl
Y3Rvci5sb2FkZWQpOgpAQCAtNTM4Nyw3ICs1NDEwLDcgQEAKICAgICAgICAgU3RvcCB1c2luZyBf
X21hcmtlZENvbG9yIHRvIGlkZW50aWZ5IGEgY29sb3IgbWFya2VyIGFuZCBpbnN0ZWFkIHVzZSB0
aGUgdHlwZSBvbiB0aGUgbWF0Y2hpbmcKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIu
IEFkZGl0aW9uYWxseSwgY3JlYXRlIGEgV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIgd2l0aCB0eXBl
CiAgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3IgaW4gY3JlYXRlQ29s
b3JNYXJrZXJzKCkuCi0gICAgICAgIAorCiAgICAgICAgICogVXNlckludGVyZmFjZS9Db2RlTWly
cm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qczoKICAgICAgICAgKFdlYkluc3BlY3Rvci5Db2Rl
TWlycm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlcik6CiAgICAgICAgIFVzZSBhIFdlYkluc3BlY3Rv
ci5UZXh0UmFuZ2UgdG8gdHJhY2sgdGhlIGVkaXRlZCByYW5nZSBhbmQgb2J0YWluIGl0IGRpcmVj
dGx5IGZyb20gdGhlCkBAIC01NzQ2LDcgKzU3NjksNyBAQAogICAgICAgICB0byByZXRyaWV2ZSBh
biBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKICAgICAgICAgewogICAgICAg
ICAgICAgICJyZWdpb25GbG93IjogPFJlZmVyZW5jZSB0byB0aGUgQ29udGVudEZsb3cgb2JqZWN0
IHJlZmVyZW5jZWQgYnkgdGhlIC13ZWJraXQtZmxvdy1mcm9tIHByb3BlcnR5IG9mIHRoZSBub2Rl
PiwKLSAgICAgICAgICAgICAiY29udGVudEZsb3ciOiA8UmVmZXJlbmNlIHRvIHRoZSBDb250ZW50
RmxvdyBvYmplY3QgcmVmZXJlbmNlZCBieSB0aGUgLXdlYmtpdC1mbG93LWludG8gcHJvcGVydHkg
b2YgCisgICAgICAgICAgICAgImNvbnRlbnRGbG93IjogPFJlZmVyZW5jZSB0byB0aGUgQ29udGVu
dEZsb3cgb2JqZWN0IHJlZmVyZW5jZWQgYnkgdGhlIC13ZWJraXQtZmxvdy1pbnRvIHByb3BlcnR5
IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBub2RlIG9yIGEgcGFyZW50IG9m
IHRoZSBub2RlPiwKICAgICAgICAgICAgICAicmVnaW9ucyI6IFsgbGlzdCBvZiBET01Ob2RlcyBy
ZXByZXNlbnRpbmcgdGhlIHJlZ2lvbnMgY29udGFpbmVycyBvZiB0aGUgbm9kZS4gVGhlIG5vZGUg
aXMgc3BsaXQgYWNyb3NzIGFsbCB0aGVzZSByZWdpb25zLiBdCiAgICAgICAgIH0KQEAgLTYxNzIs
NyArNjE5NSw3IEBACiAKICAgICAgICAgQXV0b21hdGljYWxseSBkaXNwYXRjaCBhIGNvbnRleHRt
ZW51IGV2ZW50IGluIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5zaG93
KCkKICAgICAgICAgaXMgY2FsbGVkIG91dHNpZGUgb2YgYSBjb250ZXh0bWVudSBldmVudCBoYW5k
bGVyIGFuZCB3b3VsZCB0aGVyZWZvcmUgbm90IHNob3cgdGhlIGV4cGVjdGVkCi0gICAgICAgIGNv
bnRleHQgbWVudSAoZXhjZXB0IGluIHRoZSBSZW1vdGUgV2ViIEluc3BlY3RvciB3aGVyZSB0aGlz
IGFscmVhZHkgd29ya3MpLiAKKyAgICAgICAgY29udGV4dCBtZW51IChleGNlcHQgaW4gdGhlIFJl
bW90ZSBXZWIgSW5zcGVjdG9yIHdoZXJlIHRoaXMgYWxyZWFkeSB3b3JrcykuCiAKICAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRleHRNZW51LmpzOgogICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51LnByb3RvdHlwZS5zaG93KToKQEAgLTY0MjUsNyArNjQ0OCw3IEBACiAgICAgICAg
IHRoZSBhcnJvdyB3aXRoaW4gdGhlIGNlbnRlciBvZiB0aGUgYXR0YWNobWVudCBlZGdlLCB3ZSBn
ZXQgaW4gc2l0dWF0aW9ucyB3aGVyZSB3ZSBtYXkKICAgICAgICAgc2hyaW5rIHRoZSBwb3BvdmVy
IGluc3RlYWQgb2Ygc2hpZnRpbmcgaXQgdG8gZml0IHdpdGhpbiB0aGUgY29udGFpbmVyIGZyYW1l
LiBXZSBub3cgZmlyc3QKICAgICAgICAgc2hpZnQgdGhlIHByZWZlcnJlZCBmcmFtZSBiZWZvcmUg
Z2V0dGluZyBpdHMgaW50ZXJzZWN0aW9uIHdpdGggdGhlIGNvbnRhaW5lciBmcmFtZSB0bwotICAg
ICAgICBhdm9pZCBzdWNoIHNpdHVhdGlvbnMuIAorICAgICAgICBhdm9pZCBzdWNoIHNpdHVhdGlv
bnMuCiAKICAgICAgICAgKiBVc2VySW50ZXJmYWNlL1BvcG92ZXIuanM6CiAgICAgICAgIChXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUuX2Jlc3RNZXRyaWNzRm9yRWRnZSk6CkBAIC02NTk0
LDcgKzY2MTcsNyBAQAogCiAyMDEzLTExLTA2ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFw
cGxlLmNvbT4KIAotICAgICAgICBGaXggdGhlIGRpc3BsYXkgb2YgcXVlcnkgcGFyYW1ldGVycyB3
aGVuIHRoZSB2YWx1ZSBpcyBtaXNzaW5nLiAKKyAgICAgICAgRml4IHRoZSBkaXNwbGF5IG9mIHF1
ZXJ5IHBhcmFtZXRlcnMgd2hlbiB0aGUgdmFsdWUgaXMgbWlzc2luZy4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzOTIwCiAKQEAgLTY4MjEsNyAr
Njg0NCw3IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgogCi0gICAg
ICAgIE1vdmVkIHNvbWUgZ2xvYmFsIGZ1bmN0aW9ucyBvdXQgb2YgTWFpbi5qcywgc28gdGhhdCB0
aGV5IGNhbiBiZSB1c2VkIGluIHRoZSAKKyAgICAgICAgTW92ZWQgc29tZSBnbG9iYWwgZnVuY3Rp
b25zIG91dCBvZiBNYWluLmpzLCBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4gdGhlCiAgICAg
ICAgIGxheW91dCB0ZXN0cyB3aXRob3V0IGluY2x1ZGluZyBNYWluLmpzLgogCiAgICAgICAgICog
VXNlckludGVyZmFjZS9NYWluLmh0bWw6IFJlZmVyZW5jZWQgdGhlIG5ldyBKUyBmaWxlcy4KQEAg
LTcyMjMsNyArNzI0Niw3IEBACiAgICAgICAgIENTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9y
IHdoZW4gdGhlIENtZCBrZXkgaXMgcHJlc3NlZCBhbmQgaW4gdGhlIFNvdXJjZUNvZGVUZXh0RWRp
dG9yCiAgICAgICAgIHdoZW4gZWl0aGVyIHRoZSBDbWQga2V5IGlzIHByZXNzZWQgKE5vblN5bWJv
bFRva2VucyBtb2RlKSBvciB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBwYXVzZWQKICAgICAgICAgKEph
dmFTY3JpcHRFeHByZXNzaW9uIG1vZGUpLgotICAgICAgICAKKwogICAgICAgICBUaGUgdG9rZW5U
cmFja2luZ0NvbnRyb2xsZXIgaXMgbm93IHNtYXJ0ZXIgYWJvdXQgaG93IGl0IHRyYWNrcyBtb3Vz
ZSBldmVudHMgd2hlbiBpdCdzIGVuYWJsZWQsCiAgICAgICAgIHRyYWNraW5nICJtb3VzZWVudGVy
IiBhbmQgIm1vdXNlbGVhdmUiIGV2ZW50cyB0byBlbmFibGUgdHJhY2tpbmcgYWxsb3dpbmcgaW1t
ZWRpYXRlIGRldGVjdGlvbiBvZgogICAgICAgICB0b2tlbnMgYmVpbmcgaG92ZXJlZCBvciBubyBs
b25nZXIgYmVpbmcgaG92ZXJlZCBldmVuIHdpdGggcXVpY2sgbW91c2UgbW92ZW1lbnRzLiBBZGRp
dGlvYW5sbHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5
UHJpbnRpbmcvQ29kZU1pcnJvckZvcm1hdHRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VG9vbHMvUHJldHR5UHJpbnRpbmcvQ29kZU1pcnJvckZvcm1hdHRlcnMuanMKaW5kZXggM2Q5OWNi
Ni4uODQwYzBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0
eVByaW50aW5nL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9Db2RlTWlycm9yRm9ybWF0dGVycy5qcwpAQCAtMzM3
LDcgKzMzNyw3IEBAIENvZGVNaXJyb3IuZXh0ZW5kTW9kZSgiY3NzIiwgewogICAgICAgICAgICAg
aWYgKGNvbnRlbnQgPT09ICI7IikKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAg
ICAgIGlmIChjb250ZW50ID09PSAiLCIpIHsgLy8gImEsYixjLC4uLix6e30iIHJ1bGUgbGlzdCBh
dCB0b3AgbGV2ZWwgb3IgaW4gQG1lZGlhIHRvcCBsZXZlbCBhbmQgb25seSBpZiB0aGUgbGluZSBs
ZW5ndGggd2lsbCBiZSBsYXJnZS4KLSAgICAgICAgICAgICAgICBpZiAoKCFzdGF0ZS5zdGFjay5s
ZW5ndGggfHwgc3RhdGUuc3RhY2subGFzdFZhbHVlID09PSAiQG1lZGlheyIpICYmIHN0YXRlLl9j
c3NQcmV0dHlQcmludC5saW5lTGVuZ3RoID4gNjApIHsKKyAgICAgICAgICAgICAgICBpZiAoKCFz
dGF0ZS5zdGFjayB8fCAhc3RhdGUuc3RhY2subGVuZ3RoIHx8IHN0YXRlLnN0YWNrLmxhc3RWYWx1
ZSA9PT0gIkBtZWRpYXsiKSAmJiBzdGF0ZS5fY3NzUHJldHR5UHJpbnQubGluZUxlbmd0aCA+IDYw
KSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLl9jc3NQcmV0dHlQcmludC5saW5lTGVuZ3Ro
ID0gMDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMzk1LDcgKzM5NSw3IEBAIENvZGVNaXJyb3IuZXh0ZW5kTW9kZSgiY3NzIiwgewogICAgICAg
ICAvLyBJbiBvcmRlciBpbnNlcnQgbmV3bGluZXMgaW4gc2VsZWN0b3IgbGlzdHMgd2UgbmVlZCBr
ZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgbGluZS4KICAgICAgICAgLy8g
VGhpcyBpc24ndCBleGFjdCBsaW5lIGxlbmd0aCwgb25seSB0aGUgYnVpbGRlciBrbm93cyB0aGF0
LCBidXQgaXQgaXMgZ29vZCBlbm91Z2ggdG8gZ2V0IGFuIGlkZWEuCiAgICAgICAgIC8vIElmIHdl
IGFyZSBhdCBhIHRvcCBsZXZlbCwga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBsaW5lIGxlbmd0
aCwgb3RoZXJ3aXNlIHdlIHJlc2V0IHRvIDAuCi0gICAgICAgIGlmICghc3RhdGUuc3RhY2subGVu
Z3RoIHx8IHN0YXRlLnN0YWNrLmxhc3RWYWx1ZSA9PT0gIkBtZWRpYXsiKQorICAgICAgICBpZiAo
IXN0YXRlLnN0YWNrIHx8ICFzdGF0ZS5zdGFjay5sZW5ndGggfHwgc3RhdGUuc3RhY2subGFzdFZh
bHVlID09PSAiQG1lZGlheyIpCiAgICAgICAgICAgICBzdGF0ZS5fY3NzUHJldHR5UHJpbnQubGlu
ZUxlbmd0aCArPSBjb250ZW50Lmxlbmd0aDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc3Rh
dGUuX2Nzc1ByZXR0eVByaW50LmxpbmVMZW5ndGggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRp
b25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzCmluZGV4IGMyN2UxNmIu
Ljg0OWU5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29t
cGxldGlvbkNvbnRyb2xsZXIuanMKQEAgLTUxOCwxNSArNTE4LDE1IEBAIFdlYkluc3BlY3Rvci5D
b2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIucHJvdG90eXBlID0gewogCiAgICAgX2dlbmVy
YXRlQ1NTQ29tcGxldGlvbnM6IGZ1bmN0aW9uKG1haW5Ub2tlbiwgYmFzZSwgc3VmZml4KQogICAg
IHsKLSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGNvbXBsZXRpb24gaW5zaWRlIENTUyBydWxl
cy4KLSAgICAgICAgaWYgKCFtYWluVG9rZW4uc3RhdGUgfHwgIW1haW5Ub2tlbi5zdGF0ZS5zdGFj
ayB8fCAhbWFpblRva2VuLnN0YXRlLnN0YWNrLmNvbnRhaW5zKCJydWxlIikpCisgICAgICAgIC8v
IFdlIG9ubHkgc3VwcG9ydCBjb21wbGV0aW9uIGluc2lkZSBDU1MgYmxvY2sgY29udGV4dC4KKyAg
ICAgICAgaWYgKCFtYWluVG9rZW4uc3RhdGUgfHwgIW1haW5Ub2tlbi5zdGF0ZS5zdGF0ZSB8fCAh
bWFpblRva2VuLnN0YXRlLnN0YXRlID09PSAiYmxvY2siKQogICAgICAgICAgICAgcmV0dXJuIFtd
OwogCiAgICAgICAgIHZhciB0b2tlbiA9IG1haW5Ub2tlbjsKICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSB0aGlzLl9saW5lTnVtYmVyOwogCiAgICAgICAgIC8vIFNjYW4gYmFja3dhcmRzIGxvb2tp
bmcgZm9yIHRoZSBjdXJyZW50IHByb3BlcnR5LgotICAgICAgICB3aGlsZSAodG9rZW4uc3RhdGUu
c3RhY2subGFzdFZhbHVlID09PSAicHJvcGVydHlWYWx1ZSIpIHsKKyAgICAgICAgd2hpbGUgKHRv
a2VuLnN0YXRlLnN0YXRlID09PSAicHJvcCIpIHsKICAgICAgICAgICAgIC8vIEZvdW5kIHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGxpbmUuIEdvIHRvIHRoZSBwcmV2aW91cyBsaW5lLgogICAgICAgICAg
ICAgaWYgKCF0b2tlbi5zdGFydCkgewogICAgICAgICAgICAgICAgIC0tbGluZU51bWJlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvbGVzcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4
dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGEzOTA3NC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzNDYgKzAs
MCBAQAotLyoKLSAgTEVTUyBtb2RlIC0gaHR0cDovL3d3dy5sZXNzY3NzLm9yZy8KLSAgUG9ydGVk
IHRvIENvZGVNaXJyb3IgYnkgUGV0ZXIgS3Jvb24gPHBsYWtyb29uQGdtYWlsLmNvbT4KLSAgUmVw
b3J0IGJ1Z3MvaXNzdWVzIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJpam5oL0NvZGVNaXJy
b3IvaXNzdWVzCi0gIEdpdEh1YjogQHBldGVya3Jvb24KLSovCi0KLUNvZGVNaXJyb3IuZGVmaW5l
TW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewotICB2YXIgaW5kZW50VW5pdCA9IGNvbmZp
Zy5pbmRlbnRVbml0LCB0eXBlOwotICBmdW5jdGlvbiByZXQoc3R5bGUsIHRwKSB7dHlwZSA9IHRw
OyByZXR1cm4gc3R5bGU7fQotCi0gIHZhciBzZWxlY3RvcnMgPSAvKF5cOnJvb3QkfF5cOm50aFwt
Y2hpbGQkfF5cOm50aFwtbGFzdFwtY2hpbGQkfF5cOm50aFwtb2ZcLXR5cGUkfF5cOm50aFwtbGFz
dFwtb2ZcLXR5cGUkfF5cOmZpcnN0XC1jaGlsZCR8Xlw6bGFzdFwtY2hpbGQkfF5cOmZpcnN0XC1v
ZlwtdHlwZSR8Xlw6bGFzdFwtb2ZcLXR5cGUkfF5cOm9ubHlcLWNoaWxkJHxeXDpvbmx5XC1vZlwt
dHlwZSR8Xlw6ZW1wdHkkfF5cOmxpbmt8Xlw6dmlzaXRlZCR8Xlw6YWN0aXZlJHxeXDpob3ZlciR8
Xlw6Zm9jdXMkfF5cOnRhcmdldCR8Xlw6bGFuZyR8Xlw6ZW5hYmxlZF5cOmRpc2FibGVkJHxeXDpj
aGVja2VkJHxeXDpmaXJzdFwtbGluZSR8Xlw6Zmlyc3RcLWxldHRlciR8Xlw6YmVmb3JlJHxeXDph
ZnRlciR8Xlw6bm90JHxeXDpyZXF1aXJlZCR8Xlw6aW52YWxpZCQpLzsKLQotICBmdW5jdGlvbiB0
b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewotICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7Ci0K
LSAgICBpZiAoY2ggPT0gIkAiKSB7c3RyZWFtLmVhdFdoaWxlKC9bXHdcLV0vKTsgcmV0dXJuIHJl
dCgibWV0YSIsIHN0cmVhbS5jdXJyZW50KCkpO30KLSAgICBlbHNlIGlmIChjaCA9PSAiLyIgJiYg
c3RyZWFtLmVhdCgiKiIpKSB7Ci0gICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQ0NvbW1lbnQ7
Ci0gICAgICByZXR1cm4gdG9rZW5DQ29tbWVudChzdHJlYW0sIHN0YXRlKTsKLSAgICB9IGVsc2Ug
aWYgKGNoID09ICI8IiAmJiBzdHJlYW0uZWF0KCIhIikpIHsKLSAgICAgIHN0YXRlLnRva2VuaXpl
ID0gdG9rZW5TR01MQ29tbWVudDsKLSAgICAgIHJldHVybiB0b2tlblNHTUxDb21tZW50KHN0cmVh
bSwgc3RhdGUpOwotICAgIH0gZWxzZSBpZiAoY2ggPT0gIj0iKSByZXQobnVsbCwgImNvbXBhcmUi
KTsKLSAgICBlbHNlIGlmIChjaCA9PSAifCIgJiYgc3RyZWFtLmVhdCgiPSIpKSByZXR1cm4gcmV0
KG51bGwsICJjb21wYXJlIik7Ci0gICAgZWxzZSBpZiAoY2ggPT0gIlwiIiB8fCBjaCA9PSAiJyIp
IHsKLSAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5TdHJpbmcoY2gpOwotICAgICAgcmV0dXJu
IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwotICAgIH0gZWxzZSBpZiAoY2ggPT0gIi8i
KSB7IC8vIGUuZy46IC5wbmcgd2lsbCBub3QgYmUgcGFyc2VkIGFzIGEgY2xhc3MKLSAgICAgIGlm
KHN0cmVhbS5lYXQoIi8iKSl7Ci0gICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5TQ29tbWVu
dDsKLSAgICAgICAgcmV0dXJuIHRva2VuU0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICB9
IGVsc2UgewotICAgICAgICBpZih0eXBlID09ICJzdHJpbmciIHx8IHR5cGUgPT0gIigiKSByZXR1
cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7Ci0gICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRl
LnN0YWNrLmxlbmd0aC0xXSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmV0KG51bGwsIGNoKTsKLSAg
ICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXGEtekEtWjAtOVwtXy5cc10vKTsKLSAgICAgICAgaWYo
IC9cL3xcKXwjLy50ZXN0KHN0cmVhbS5wZWVrKCkgfHwgKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0
cmVhbS5wZWVrKCkgPT09ICIpIikpICB8fCBzdHJlYW0uZW9sKCkgKXJldHVybiByZXQoInN0cmlu
ZyIsICJzdHJpbmciKTsgLy8gbGV0IHVybCgvaW1hZ2VzL2xvZ28ucG5nKSB3aXRob3V0IHF1b3Rl
cyByZXR1cm4gYXMgc3RyaW5nCi0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaCA9PSAiISIpIHsK
LSAgICAgIHN0cmVhbS5tYXRjaCgvXlxzKlx3Ki8pOwotICAgICAgcmV0dXJuIHJldCgia2V5d29y
ZCIsICJpbXBvcnRhbnQiKTsKLSAgICB9IGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsKLSAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW1x3LiVdLyk7Ci0gICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAi
dW5pdCIpOwotICAgIH0gZWxzZSBpZiAoL1ssKzw+KlwvXS8udGVzdChjaCkpIHsKLSAgICAgIGlm
KHN0cmVhbS5wZWVrKCkgPT0gIj0iIHx8IHR5cGUgPT0gImEiKXJldHVybiByZXQoInN0cmluZyIs
ICJzdHJpbmciKTsKLSAgICAgIGlmKGNoID09PSAiLCIpcmV0dXJuIHJldChudWxsLCBjaCk7Ci0g
ICAgICByZXR1cm4gcmV0KG51bGwsICJzZWxlY3Qtb3AiKTsKLSAgICB9IGVsc2UgaWYgKC9bO3t9
OlxbXF0oKX5cfF0vLnRlc3QoY2gpKSB7Ci0gICAgICBpZihjaCA9PSAiOiIpewotICAgICAgICBz
dHJlYW0uZWF0V2hpbGUoL1thLXpcXFwtXS8pOwotICAgICAgICBpZiggc2VsZWN0b3JzLnRlc3Qo
c3RyZWFtLmN1cnJlbnQoKSkgKXsKLSAgICAgICAgICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7
Ci0gICAgICAgIH0gZWxzZSBpZihzdHJlYW0ucGVlaygpID09ICI6Iil7Ly86Oi13ZWJraXQtc2Vh
cmNoLWRlY29yYXRpb24KLSAgICAgICAgICBzdHJlYW0ubmV4dCgpOwotICAgICAgICAgIHN0cmVh
bS5lYXRXaGlsZSgvW2EtelxcXC1dLyk7Ci0gICAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKS5t
YXRjaCgvXDpcOlwtKG98bXN8bW96fHdlYmtpdClcLS8pKXJldHVybiByZXQoInN0cmluZyIsICJz
dHJpbmciKTsKLSAgICAgICAgICBpZiggc2VsZWN0b3JzLnRlc3Qoc3RyZWFtLmN1cnJlbnQoKS5z
dWJzdHJpbmcoMSkpIClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgICAgcmV0dXJu
IHJldChudWxsLCBjaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHJldChu
dWxsLCBjaCk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZihjaCA9PSAifiIpewotICAgICAg
ICBpZih0eXBlID09ICJyIilyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7Ci0gICAgICB9
IGVsc2UgewotICAgICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsKLSAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGNoID09ICIuIikgewotICAgICAgaWYodHlwZSA9PSAiKCIpcmV0dXJuIHJldCgic3Ry
aW5nIiwgInN0cmluZyIpOyAvLyBhbGxvdyB1cmwoLi4vaW1hZ2UucG5nKQotICAgICAgc3RyZWFt
LmVhdFdoaWxlKC9bXGEtekEtWjAtOVwtX10vKTsKLSAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09
ICIgIilzdHJlYW0uZWF0U3BhY2UoKTsKLSAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIpIiB8
fCB0eXBlID09PSAiOiIpcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsvL3JnYmEoMCwwLDAs
LjI1KTsKLSAgICAgIGVsc2UgaWYoc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGggPjEpewotICAgICAg
ICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiBzdHJl
YW0ucGVlaygpLm1hdGNoKC97fCx8XCt8XCgvKSA9PT0gbnVsbClyZXR1cm4gcmV0KCJudW1iZXIi
LCAidW5pdCIpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwotICAg
IH0gZWxzZSBpZiAoY2ggPT0gIiMiKSB7Ci0gICAgICAvL3dlIGRvbid0IGVhdCB3aGl0ZS1zcGFj
ZSwgd2Ugd2FudCB0aGUgaGV4IGNvbG9yIGFuZCBvciBpZCBvbmx5Ci0gICAgICBzdHJlYW0uZWF0
V2hpbGUoL1tBLVphLXowLTldLyk7Ci0gICAgICAvL2NoZWNrIGlmIHRoZXJlIGlzIGEgcHJvcGVy
IGhleCBjb2xvciBsZW5ndGggZS5nLiAjZWVlIHx8ICNlZWVFRUUKLSAgICAgIGlmKHN0cmVhbS5j
dXJyZW50KCkubGVuZ3RoID09IDQgfHwgc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGggPT0gNyl7Ci0g
ICAgICAgIGlmKHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1tBLUZhLWYwLTldezZ9fFtBLUZhLWYw
LTldezN9LyxmYWxzZSkgIT0gbnVsbCl7Ly9pcyB0aGVyZSBhIHZhbGlkIGhleCBjb2xvciB2YWx1
ZSBwcmVzZW50IGluIHRoZSBjdXJyZW50IHN0cmVhbQotICAgICAgICAgIC8vd2hlbiBub3QgYSB2
YWxpZCBoZXggdmFsdWUsIHBhcnNlIGFzIGlkCi0gICAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQo
KS5zdWJzdHJpbmcoMSkgIT0gc3RyZWFtLmN1cnJlbnQoKS5tYXRjaCgvW0EtRmEtZjAtOV17Nn18
W0EtRmEtZjAtOV17M30vLGZhbHNlKSlyZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOwotICAgICAg
ICAgIC8vZWF0IHdoaXRlLXNwYWNlCi0gICAgICAgICAgc3RyZWFtLmVhdFNwYWNlKCk7Ci0gICAg
ICAgICAgLy93aGVuIGhleCB2YWx1ZSBkZWNsYXJhdGlvbiBkb2Vzbid0IGVuZCB3aXRoIFs7LF0g
YnV0IGlzIGRvZXMgd2l0aCBhIHNsYXNoL2NjIGNvbW1lbnQgdHJlYXQgaXQgYXMgYW4gaWQsIGp1
c3QgbGlrZSB0aGUgb3RoZXIgaGV4IHZhbHVlcyB0aGF0IGRvbid0IGVuZCB3aXRoWzssXQotICAg
ICAgICAgIGlmKCAvW1wvPD4uKCl7ISQlXiYqX1wtXFw/PStcfCMnfmBdLy50ZXN0KHN0cmVhbS5w
ZWVrKCkpICl7Ci0gICAgICAgICAgICBpZih0eXBlID09PSAic2VsZWN0LW9wIilyZXR1cm4gcmV0
KCJudW1iZXIiLCAidW5pdCIpOyBlbHNlIHJldHVybiByZXQoImF0b20iLCAidGFnIik7Ci0gICAg
ICAgICAgfQotICAgICAgICAgIC8vI3RpbWUgeyBjb2xvcjogI2FhYSB9Ci0gICAgICAgICAgZWxz
ZSBpZihzdHJlYW0ucGVlaygpID09ICJ9IiApcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsK
LSAgICAgICAgICAvL3dlIGhhdmUgYSB2YWxpZCBoZXggY29sb3IgdmFsdWUsIHBhcnNlIGFzIGlk
IHdoZW5ldmVyIGFuIGVsZW1lbnQvY2xhc3MgaXMgZGVmaW5lZCBhZnRlciB0aGUgaGV4KGlkKSB2
YWx1ZSBlLmcuICNlZWUgYWFhIHx8ICNlZWUgLmFhYQotICAgICAgICAgIGVsc2UgaWYoIC9bYS16
QS1aXFxdLy50ZXN0KHN0cmVhbS5wZWVrKCkpIClyZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOwot
ICAgICAgICAgIC8vd2hlbiBhIGhleCB2YWx1ZSBpcyBvbiB0aGUgZW5kIG9mIGEgbGluZSwgcGFy
c2UgYXMgaWQKLSAgICAgICAgICBlbHNlIGlmKHN0cmVhbS5lb2woKSlyZXR1cm4gcmV0KCJhdG9t
IiwgInRhZyIpOwotICAgICAgICAgIC8vZGVmYXVsdAotICAgICAgICAgIGVsc2UgcmV0dXJuIHJl
dCgibnVtYmVyIiwgInVuaXQiKTsKLSAgICAgICAgfSBlbHNlIHsvL3doZW4gbm90IGEgdmFsaWQg
aGV4dmFsdWUgaW4gdGhlIGN1cnJlbnQgc3RyZWFtIGUuZy4gI2Zvb3RlcgotICAgICAgICAgIHN0
cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV0vKTsKLSAgICAgICAgICByZXR1cm4gcmV0KCJhdG9tIiwg
c3RyZWFtLmN1cnJlbnQoKSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ly93aGVuIG5vdCBh
IHZhbGlkIGhleHZhbHVlIGxlbmd0aAotICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1d
Lyk7Ci0gICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1
bGUiKXJldHVybiByZXQoImF0b20iLCBzdHJlYW0uY3VycmVudCgpKTtyZXR1cm4gcmV0KCJhdG9t
Iiwgc3RyZWFtLmN1cnJlbnQoKSk7Ci0gICAgICAgIHJldHVybiByZXQoImF0b20iLCAidGFnIik7
Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaCA9PSAiJiIpIHsKLSAgICAgIHN0cmVhbS5lYXRX
aGlsZSgvW1x3XC1dLyk7Ci0gICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXyUue10vKTsKLSAgICAgIGlmKHN0cmVh
bS5jdXJyZW50KCkubWF0Y2goL1xcLykgIT09IG51bGwpewotICAgICAgICBpZihzdHJlYW0uY3Vy
cmVudCgpLmNoYXJBdChzdHJlYW0uY3VycmVudCgpLmxlbmd0aC0xKSA9PT0gIlxcIil7Ci0gICAg
ICAgICAgc3RyZWFtLmVhdCgvXCd8XCJ8XCl8XCgvKTsKLSAgICAgICAgICB3aGlsZShzdHJlYW0u
ZWF0V2hpbGUoL1tcd1xcXC1fJS57XS8pKXsKLSAgICAgICAgICAgIHN0cmVhbS5lYXQoL1wnfFwi
fFwpfFwoLyk7Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiByZXQoInN0cmluZyIsIHN0
cmVhbS5jdXJyZW50KCkpOwotICAgICAgICB9Ci0gICAgICB9IC8vZWxzZSBpZih0eXBlID09PSAi
dGFnIilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgIGVsc2UgaWYodHlwZSA9PSAi
c3RyaW5nIil7Ci0gICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9
PT0gInsiICYmIHN0cmVhbS5wZWVrKCkgPT09ICI6IilyZXR1cm4gcmV0KCJ2YXJpYWJsZSIsICJ2
YXJpYWJsZSIpOwotICAgICAgICBpZihzdHJlYW0ucGVlaygpID09PSAiLyIpc3RyZWFtLmVhdFdo
aWxlKC9bXHdcXFwtXyUuezpcL10vKTsKLSAgICAgICAgcmV0dXJuIHJldCh0eXBlLCBzdHJlYW0u
Y3VycmVudCgpKTsKLSAgICAgIH0gZWxzZSBpZihzdHJlYW0uY3VycmVudCgpLm1hdGNoKC8oXmh0
dHAkfF5odHRwcyQpLykgIT0gbnVsbCl7Ci0gICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XFxc
LV8lLns6XC9dLyk7Ci0gICAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIvIilzdHJlYW0uZWF0
V2hpbGUoL1tcd1xcXC1fJS57OlwvXS8pOwotICAgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAi
c3RyaW5nIik7Ci0gICAgICB9IGVsc2UgaWYoc3RyZWFtLnBlZWsoKSA9PSAiPCIgfHwgc3RyZWFt
LnBlZWsoKSA9PSAiPiIgfHwgc3RyZWFtLnBlZWsoKSA9PSAiKyIpewotICAgICAgICBpZih0eXBl
ID09PSAiKCIgJiYgKHN0cmVhbS5jdXJyZW50KCkgPT09ICJuIiB8fCBzdHJlYW0uY3VycmVudCgp
ID09PSAiLW4iKSlyZXR1cm4gcmV0KCJzdHJpbmciLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICAg
ICAgcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwotICAgICAgfSBlbHNlIGlmKCAvXCgvLnRlc3Qo
c3RyZWFtLnBlZWsoKSkgKXsKLSAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKSA9PT0gIndoZW4i
KXJldHVybiByZXQoInZhcmlhYmxlIiwidmFyaWFibGUiKTsKLSAgICAgICAgZWxzZSBpZihzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJAbWVkaWEiICYmIHN0cmVhbS5jdXJy
ZW50KCkgPT09ICJhbmQiKXJldHVybiByZXQoInZhcmlhYmxlIixzdHJlYW0uY3VycmVudCgpKTsK
LSAgICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7Ci0gICAgICB9IGVsc2UgaWYgKHN0cmVhbS5w
ZWVrKCkgPT0gIi8iICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSAhPT0gdW5k
ZWZpbmVkKXsgLy8gdXJsKGRpci9jZW50ZXIvaW1hZ2UucG5nKQotICAgICAgICBpZihzdHJlYW0u
cGVlaygpID09PSAiLyIpc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXyUuezpcL10vKTsKLSAgICAg
ICAgcmV0dXJuIHJldCgic3RyaW5nIiwgc3RyZWFtLmN1cnJlbnQoKSk7Ci0gICAgICB9IGVsc2Ug
aWYoIHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1wtXGR8XC0uXGQvKSApeyAvLyBtYXRjaCBlLmcu
OiAtNXB4IC0wLjQgZXRjLi4uIG9ubHkgY29sb3JpemUgdGhlIG1pbnVzIHNpZ24KLSAgICAgICAg
Ly9jb21tbWVudCBvdXQgdGhlc2UgMiBjb21tZW50IGlmIHlvdSB3YW50IHRoZSBtaW51cyBzaWdu
IHRvIGJlIHBhcnNlZCBhcyBudWxsIC01MDBweAotICAgICAgICAvL3N0cmVhbS5iYWNrVXAoc3Ry
ZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSk7Ci0gICAgICAgIC8vcmV0dXJuIHJldChudWxsLCBjaCk7
Ci0gICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7Ci0gICAgICB9IGVsc2UgaWYo
IC9cL3xbXHNcKV0vLnRlc3Qoc3RyZWFtLnBlZWsoKSB8fCBzdHJlYW0uZW9sKCkgfHwgKHN0cmVh
bS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT0gIi8iKSkgJiYgc3RyZWFtLmN1cnJlbnQo
KS5pbmRleE9mKCIuIikgIT09IC0xKXsKLSAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKS5zdWJz
dHJpbmcoc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSxzdHJlYW0uY3VycmVudCgpLmxlbmd0aCkg
PT0gInsiKXsKLSAgICAgICAgICBzdHJlYW0uYmFja1VwKDEpOwotICAgICAgICAgIHJldHVybiBy
ZXQoInRhZyIsICJ0YWciKTsKLSAgICAgICAgfS8vZW5kIGlmCi0gICAgICAgIHN0cmVhbS5lYXRT
cGFjZSgpOwotICAgICAgICBpZiggL1t7PD4uYS16QS1aXC9dLy50ZXN0KHN0cmVhbS5wZWVrKCkp
ICB8fCBzdHJlYW0uZW9sKCkgKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsgLy8gZS5nLiBidXR0
b24uaWNvbi1wbHVzCi0gICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8g
bGV0IHVybCgvaW1hZ2VzL2xvZ28ucG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5n
Ci0gICAgICB9IGVsc2UgaWYoIHN0cmVhbS5lb2woKSB8fCBzdHJlYW0ucGVlaygpID09ICJbIiB8
fCBzdHJlYW0ucGVlaygpID09ICIjIiB8fCB0eXBlID09ICJ0YWciICl7Ci0KLSAgICAgICAgaWYo
c3RyZWFtLmN1cnJlbnQoKS5zdWJzdHJpbmcoc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSxzdHJl
YW0uY3VycmVudCgpLmxlbmd0aCkgPT0gInsiKXN0cmVhbS5iYWNrVXAoMSk7Ci0gICAgICAgIGVs
c2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiYm9yZGVyLWNvbG9y
IiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJiYWNrZ3JvdW5kLXBv
c2l0aW9uIiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJmb250LWZh
bWlseSIpcmV0dXJuIHJldChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICAgICAgZWxzZSBp
Zih0eXBlID09PSAidGFnIilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgIGVsc2Ug
aWYoKHR5cGUgPT09ICI6IiB8fCB0eXBlID09PSAidW5pdCIpICYmIHN0YXRlLnN0YWNrW3N0YXRl
LnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJl
bnQoKSk7Ci0gICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFd
ID09PSAicnVsZSIgJiYgdHlwZSA9PT0gInRhZyIpcmV0dXJuIHJldCgic3RyaW5nIiwgc3RyZWFt
LmN1cnJlbnQoKSk7Ci0gICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVu
Z3RoLTFdID09PSAiOyIgJiYgdHlwZSA9PT0gIjoiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1
cnJlbnQoKSk7Ci0gICAgICAgIC8vZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPT09ICI7IiB8fCB0eXBlID09PSAiIilyZXR1cm4gcmV0KCJ2YXJpYWJsZSIsIHN0cmVh
bS5jdXJyZW50KCkpOwotICAgICAgICBlbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIjIiAmJiB0
eXBlICE9PSB1bmRlZmluZWQgJiYgdHlwZS5tYXRjaCgvXCt8LHx0YWd8c2VsZWN0XC1vcHx9fHt8
Oy9nKSA9PT0gbnVsbClyZXR1cm4gcmV0KCJzdHJpbmciLCBzdHJlYW0uY3VycmVudCgpKTsKLSAg
ICAgICAgZWxzZSBpZih0eXBlID09PSAidmFyaWFibGUiKXJldHVybiByZXQobnVsbCwgc3RyZWFt
LmN1cnJlbnQoKSk7Ci0gICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVu
Z3RoLTFdID09PSAieyIgJiYgdHlwZSA9PT0gImNvbW1lbnQiKXJldHVybiByZXQoInZhcmlhYmxl
Iiwgc3RyZWFtLmN1cnJlbnQoKSk7Ci0gICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2subGVuZ3Ro
ID09PSAwICYmICh0eXBlID09PSAiOyIgfHwgdHlwZSA9PT0gImNvbW1lbnQiKSlyZXR1cm4gcmV0
KCJ0YWciLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICAgICAgZWxzZSBpZigoc3RhdGUuc3RhY2tb
c3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAieyIgfHwgdHlwZSA9PT0gIjsiKSAmJiBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gIT09ICJAbWVkaWF7IilyZXR1cm4gcmV0KCJ2YXJp
YWJsZSIsIHN0cmVhbS5jdXJyZW50KCkpOwotICAgICAgICBlbHNlIGlmKHN0YXRlLnN0YWNrW3N0
YXRlLnN0YWNrLmxlbmd0aC0yXSA9PT0gInsiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSA9PT0gIjsiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7
Ci0KLSAgICAgICAgcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwotICAgICAgfSBlbHNlIGlmKHR5
cGUgPT0gImNvbXBhcmUiIHx8IHR5cGUgPT0gImEiIHx8IHR5cGUgPT0gIigiKXsKLSAgICAgICAg
cmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwotICAgICAgfSBlbHNlIGlmKHR5cGUgPT0g
InwiIHx8IHN0cmVhbS5jdXJyZW50KCkgPT0gIi0iIHx8IHR5cGUgPT0gIlsiKXsKLSAgICAgICAg
aWYodHlwZSA9PSAifCIgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgvXF18PXxcfi8pICE9PSBudWxs
KXJldHVybiByZXQoIm51bWJlciIsIHN0cmVhbS5jdXJyZW50KCkpOwotICAgICAgICBlbHNlIGlm
KHR5cGUgPT0gInwiIClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgIGVsc2UgaWYo
dHlwZSA9PSAiWyIpewotICAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvXHdcLS8pOwotICAgICAg
ICAgIHJldHVybiByZXQoIm51bWJlciIsIHN0cmVhbS5jdXJyZW50KCkpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiByZXQobnVsbCwgY2gpOwotICAgICAgfSBlbHNlIGlmKChzdHJlYW0ucGVl
aygpID09ICI6IikgfHwgKCBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09ICI6
IikpIHsKLSAgICAgICAgc3RyZWFtLm5leHQoKTsKLSAgICAgICAgdmFyIHRfdiA9IHN0cmVhbS5w
ZWVrKCkgPT0gIjoiID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICBpZighdF92KXsKLSAgICAgICAg
ICB2YXIgb2xkX3BvcyA9IHN0cmVhbS5wb3M7Ci0gICAgICAgICAgdmFyIHNjID0gc3RyZWFtLmN1
cnJlbnQoKS5sZW5ndGg7Ci0gICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bYS16XFxcLV0vKTsK
LSAgICAgICAgICB2YXIgbmV3X3BvcyA9IHN0cmVhbS5wb3M7Ci0gICAgICAgICAgaWYoc3RyZWFt
LmN1cnJlbnQoKS5zdWJzdHJpbmcoc2MtMSkubWF0Y2goc2VsZWN0b3JzKSAhPSBudWxsKXsKLSAg
ICAgICAgICAgIHN0cmVhbS5iYWNrVXAobmV3X3Bvcy0ob2xkX3Bvcy0xKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgICAgfSBlbHNlIHN0cmVhbS5iYWNr
VXAobmV3X3Bvcy0ob2xkX3Bvcy0xKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc3Ry
ZWFtLmJhY2tVcCgxKTsKLSAgICAgICAgfQotICAgICAgICBpZih0X3YpcmV0dXJuIHJldCgidGFn
IiwgInRhZyIpOyBlbHNlIHJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7Ci0gICAg
ICB9IGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICA9PT0gImZvbnQt
ZmFtaWx5IiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiYmFja2dy
b3VuZC1wb3NpdGlvbiIgfHwgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICA9PT0g
ImJvcmRlci1jb2xvciIpewotICAgICAgICByZXR1cm4gcmV0KG51bGwsIG51bGwpOwotICAgICAg
fSBlbHNlIHsKLQotICAgICAgICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0g
PT09IG51bGwgJiYgdHlwZSA9PT0gIjoiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQo
KSk7Ci0KLSAgICAgICAgLy9lbHNlIGlmKCh0eXBlID09PSAiKSIgJiYgc3RhdGUuc3RhY2tbc3Rh
dGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpIHx8IChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMl0gPT09ICJ7IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0g
PT09ICJydWxlIiAmJiB0eXBlID09PSAidmFyaWFibGUiKSlyZXR1cm4gcmV0KG51bGwsIHN0cmVh
bS5jdXJyZW50KCkpOwotCi0gICAgICAgIGVsc2UgaWYoL1xefFwkLy50ZXN0KHN0cmVhbS5jdXJy
ZW50KCkpICYmIHN0cmVhbS5wZWVrKCkubWF0Y2goL1x+fD0vKSAhPT0gbnVsbClyZXR1cm4gcmV0
KCJzdHJpbmciLCAic3RyaW5nIik7Ly9hdHRePXZhbAotCi0gICAgICAgIGVsc2UgaWYodHlwZSA9
PT0gInVuaXQiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUi
KXJldHVybiByZXQobnVsbCwgInVuaXQiKTsKLSAgICAgICAgZWxzZSBpZih0eXBlID09PSAidW5p
dCIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIpcmV0dXJuIHJl
dChudWxsLCAidW5pdCIpOwotICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICIpIiAmJiBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51bGwsICJ1
bml0Iik7Ci0gICAgICAgIGVsc2UgaWYodHlwZSAmJiB0eXBlLm1hdGNoKCJAIikgIT09IG51bGwg
ICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiKXJldHVybiBy
ZXQobnVsbCwgInVuaXQiKTsKLSAgICAgICAgLy9lbHNlIGlmKHR5cGUgPT09ICJ1bml0IiAmJiBz
dGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51
bGwsIHN0cmVhbS5jdXJyZW50KCkpOwotCi0gICAgICAgIGVsc2UgaWYoKHR5cGUgPT09ICI7IiB8
fCB0eXBlID09PSAifSIgfHwgdHlwZSA9PT0gIiwiKSAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KCJ0YWciLCBzdHJlYW0uY3VycmVudCgpKTsK
LSAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIjsiICYmIHN0cmVhbS5wZWVrKCkgIT09IHVuZGVm
aW5lZCAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97fC4vKSA9PT0gbnVsbCkgfHwgKHR5cGUgPT09
ICI7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97fC4vKSA9
PT0gbnVsbCkpcmV0dXJuIHJldCgidmFyaWFibGUiLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICAg
ICAgZWxzZSBpZigodHlwZSA9PT0gIkBtZWRpYSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTFdID09PSAiQG1lZGlhIikgfHwgdHlwZSA9PT0gIkBuYW1lc3BhY2UiKXJldHVybiBy
ZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOwotCi0gICAgICAgIGVsc2UgaWYodHlwZSA9PT0g
InsiICAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IiAmJiBzdHJl
YW0ucGVlaygpID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwotICAgICAgICBlbHNl
IGlmKCh0eXBlID09PSAieyIgfHwgdHlwZSA9PT0gIjoiKSAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5z
dGFjay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkp
OwotICAgICAgICBlbHNlIGlmKChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09
ICJ7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC8ufCMvKSA9
PT0gbnVsbCkgfHwgdHlwZSA9PT0gInNlbGVjdC1vcCIgIHx8IChzdGF0ZS5zdGFja1tzdGF0ZS5z
dGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAiLCIpIClyZXR1cm4gcmV0KCJ0
YWciLCAidGFnIik7Ci0gICAgICAgIGVsc2UgaWYodHlwZSA9PT0gInZhcmlhYmxlIiAmJiBzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KCJ0YWci
LCAidGFnIik7Ci0gICAgICAgIGVsc2UgaWYoKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5w
ZWVrKCkgPT09ICJ7IikgfHwgc3RyZWFtLmVvbCgpIHx8IHN0cmVhbS5wZWVrKCkgPT09ICJ7Iily
ZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgIC8vdGhpcyBvbmUgbWVzc2VzIHVwIGlu
ZGVudGF0aW9uCi0gICAgICAgIC8vZWxzZSBpZigodHlwZSA9PT0gIn0iICYmIHN0cmVhbS5wZWVr
KCkgIT09ICI6IikgfHwgKHR5cGUgPT09ICJ9IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJl
YW0ucGVlaygpICE9PSAiOiIpKXJldHVybih0eXBlLCAidGFnIik7Ci0KLSAgICAgICAgZWxzZSBp
Zih0eXBlID09PSAiKSIgJiYgKHN0cmVhbS5jdXJyZW50KCkgPT0gImFuZCIgfHwgc3RyZWFtLmN1
cnJlbnQoKSA9PSAiYW5kICIpKXJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7Ci0g
ICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiICYmIChzdHJlYW0uY3VycmVudCgpID09ICJ3aGVu
IiB8fCBzdHJlYW0uY3VycmVudCgpID09ICJ3aGVuICIpKXJldHVybiByZXQoInZhcmlhYmxlIiwg
InZhcmlhYmxlIik7Ci0gICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiIHx8IHR5cGUgPT09ICJj
b21tZW50IiB8fCB0eXBlID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwotICAgICAg
ICBlbHNlIGlmKHN0cmVhbS5zb2woKSlyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAg
IGVsc2UgaWYoKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICIjIikgfHwg
c3RyZWFtLnBlZWsoKSA9PT0gIiMiKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKLSAgICAgICAg
ZWxzZSBpZihzdGF0ZS5zdGFjay5sZW5ndGggPT09IDApcmV0dXJuIHJldCgidGFnIiwgInRhZyIp
OwotICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICI7IiAmJiBzdHJlYW0ucGVlaygpICE9PSB1bmRl
ZmluZWQgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgvXlsufFwjXS9nKSAhPT0gbnVsbClyZXR1cm4g
cmV0KCJ0YWciLCAidGFnIik7Ci0KLSAgICAgICAgZWxzZSBpZih0eXBlID09PSAiOiIpe3N0cmVh
bS5lYXRTcGFjZSgpO3JldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7fQotCi0gICAg
ICAgIGVsc2UgaWYoc3RyZWFtLmN1cnJlbnQoKSA9PT0gImFuZCAiIHx8IHN0cmVhbS5jdXJyZW50
KCkgPT09ICJhbmQiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7Ci0g
ICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIjsiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSA9PT0gInsiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7
Ci0KLSAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09
ICJydWxlIilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOwotCi0gICAgICAgIHJl
dHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOwotICAgICAgfQotICAgIH0KLSAgfQot
Ci0gIGZ1bmN0aW9uIHRva2VuU0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgeyAvLyBTQ29tbWVudCA9
IFNsYXNoIGNvbW1lbnQKLSAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Ci0gICAgc3RhdGUudG9rZW5p
emUgPSB0b2tlbkJhc2U7Ci0gICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7Ci0g
IH0KLQotICBmdW5jdGlvbiB0b2tlbkNDb21tZW50KHN0cmVhbSwgc3RhdGUpIHsKLSAgICB2YXIg
bWF5YmVFbmQgPSBmYWxzZSwgY2g7Ci0gICAgd2hpbGUgKChjaCA9IHN0cmVhbS5uZXh0KCkpICE9
IG51bGwpIHsKLSAgICAgIGlmIChtYXliZUVuZCAmJiBjaCA9PSAiLyIpIHsKLSAgICAgICAgc3Rh
dGUudG9rZW5pemUgPSB0b2tlbkJhc2U7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAg
bWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJldCgiY29tbWVudCIs
ICJjb21tZW50Iik7Ci0gIH0KLQotICBmdW5jdGlvbiB0b2tlblNHTUxDb21tZW50KHN0cmVhbSwg
c3RhdGUpIHsKLSAgICB2YXIgZGFzaGVzID0gMCwgY2g7Ci0gICAgd2hpbGUgKChjaCA9IHN0cmVh
bS5uZXh0KCkpICE9IG51bGwpIHsKLSAgICAgIGlmIChkYXNoZXMgPj0gMiAmJiBjaCA9PSAiPiIp
IHsKLSAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgfQotICAgICAgZGFzaGVzID0gKGNoID09ICItIikgPyBkYXNoZXMgKyAxIDogMDsKLSAg
ICB9Ci0gICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7Ci0gIH0KLQotICBmdW5j
dGlvbiB0b2tlblN0cmluZyhxdW90ZSkgewotICAgIHJldHVybiBmdW5jdGlvbihzdHJlYW0sIHN0
YXRlKSB7Ci0gICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBjaDsKLSAgICAgIHdoaWxlICgoY2gg
PSBzdHJlYW0ubmV4dCgpKSAhPSBudWxsKSB7Ci0gICAgICAgIGlmIChjaCA9PSBxdW90ZSAmJiAh
ZXNjYXBlZCkKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkICYm
IGNoID09ICJcXCI7Ci0gICAgICB9Ci0gICAgICBpZiAoIWVzY2FwZWQpIHN0YXRlLnRva2VuaXpl
ID0gdG9rZW5CYXNlOwotICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwotICAg
IH07Ci0gIH0KLQotICByZXR1cm4gewotICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2UpIHsK
LSAgICAgIHJldHVybiB7dG9rZW5pemU6IHRva2VuQmFzZSwKLSAgICAgICAgICAgICAgYmFzZUlu
ZGVudDogYmFzZSB8fCAwLAotICAgICAgICAgICAgICBzdGFjazogW119OwotICAgIH0sCi0KLSAg
ICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewotICAgICAgaWYgKHN0cmVhbS5lYXRT
cGFjZSgpKSByZXR1cm4gbnVsbDsKLSAgICAgIHZhciBzdHlsZSA9IHN0YXRlLnRva2VuaXplKHN0
cmVhbSwgc3RhdGUpOwotCi0gICAgICB2YXIgY29udGV4dCA9IHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXTsKLSAgICAgIGlmICh0eXBlID09ICJoYXNoIiAmJiBjb250ZXh0ID09ICJy
dWxlIikgc3R5bGUgPSAiYXRvbSI7Ci0gICAgICBlbHNlIGlmIChzdHlsZSA9PSAidmFyaWFibGUi
KSB7Ci0gICAgICAgIGlmIChjb250ZXh0ID09ICJydWxlIikgc3R5bGUgPSBudWxsOyAvLyJ0YWci
Ci0gICAgICAgIGVsc2UgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQgPT0gIkBtZWRpYXsiKSB7Ci0g
ICAgICAgICAgc3R5bGUgPSBzdHJlYW0uY3VycmVudCgpID09ICJ3aGVuIiAgPyAidmFyaWFibGUi
IDoKLSAgICAgICAgICAvW1xzLHxcc1wpfFxzXS8udGVzdChzdHJlYW0ucGVlaygpKSA/ICJ0YWci
ICAgICAgOiB0eXBlOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChjb250ZXh0ID09
ICJydWxlIiAmJiAvXltce1x9O10kLy50ZXN0KHR5cGUpKQotICAgICAgICBzdGF0ZS5zdGFjay5w
b3AoKTsKLSAgICAgIGlmICh0eXBlID09ICJ7IikgewotICAgICAgICBpZiAoY29udGV4dCA9PSAi
QG1lZGlhIikgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID0gIkBtZWRpYXsiOwot
ICAgICAgICBlbHNlIHN0YXRlLnN0YWNrLnB1c2goInsiKTsKLSAgICAgIH0KLSAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gIn0iKSBzdGF0ZS5zdGFjay5wb3AoKTsKLSAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gIkBtZWRpYSIpIHN0YXRlLnN0YWNrLnB1c2goIkBtZWRpYSIpOwotICAgICAgZWxzZSBpZiAo
c3RyZWFtLmN1cnJlbnQoKSA9PT0gImZvbnQtZmFtaWx5Iikgc3RhdGUuc3RhY2tbc3RhdGUuc3Rh
Y2subGVuZ3RoLTFdID0gImZvbnQtZmFtaWx5IjsKLSAgICAgIGVsc2UgaWYgKHN0cmVhbS5jdXJy
ZW50KCkgPT09ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIikgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTFdID0gImJhY2tncm91bmQtcG9zaXRpb24iOwotICAgICAgZWxzZSBpZiAoc3RyZWFt
LmN1cnJlbnQoKSA9PT0gImJvcmRlci1jb2xvciIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSA9ICJib3JkZXItY29sb3IiOwotICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAieyIg
JiYgdHlwZSAhPSAiY29tbWVudCIgJiYgdHlwZSAhPT0gInRhZyIpIHN0YXRlLnN0YWNrLnB1c2go
InJ1bGUiKTsKLSAgICAgIGVsc2UgaWYgKHN0cmVhbS5wZWVrKCkgPT09ICI6IiAmJiBzdHJlYW0u
Y3VycmVudCgpLm1hdGNoKC9AfCMvKSA9PT0gbnVsbCkgc3R5bGUgPSB0eXBlOwotICAgICAgaWYo
dHlwZSA9PT0gIjsiICYmIChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gImZv
bnQtZmFtaWx5IiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gImJhY2tn
cm91bmQtcG9zaXRpb24iIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PSAi
Ym9yZGVyLWNvbG9yIikpc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID0gc3RyZWFt
LmN1cnJlbnQoKTsKLSAgICAgIGVsc2UgaWYodHlwZSA9PT0gInRhZyIgJiYgc3RyZWFtLnBlZWso
KSA9PT0gIikiICYmIHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1w6LykgPT09IG51bGwpe3R5cGUg
PSBudWxsOyBzdHlsZSA9IG51bGw7fQotICAgICAgLy8gPz8/PwotICAgICAgZWxzZSBpZigodHlw
ZSA9PT0gInZhcmlhYmxlIiAmJiBzdHJlYW0ucGVlaygpID09PSAiKSIpIHx8ICh0eXBlID09PSAi
dmFyaWFibGUiICYmIHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIikp
cmV0dXJuIHJldChudWxsLHN0cmVhbS5jdXJyZW50KCkpOwotICAgICAgcmV0dXJuIHN0eWxlOwot
ICAgIH0sCi0KLSAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIpIHsKLSAgICAg
IHZhciBuID0gc3RhdGUuc3RhY2subGVuZ3RoOwotICAgICAgaWYgKC9eXH0vLnRlc3QodGV4dEFm
dGVyKSkKLSAgICAgICAgbiAtPSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09
ICJydWxlIiA/IDIgOiAxOwotICAgICAgZWxzZSBpZiAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTJdID09PSAieyIpCi0gICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTFdID09PSAicnVsZSIgPyAxIDogMDsKLSAgICAgIHJldHVybiBzdGF0ZS5iYXNlSW5k
ZW50ICsgbiAqIGluZGVudFVuaXQ7Ci0gICAgfSwKLQotICAgIGVsZWN0cmljQ2hhcnM6ICJ9IiwK
LSAgICBibG9ja0NvbW1lbnRTdGFydDogIi8qIiwKLSAgICBibG9ja0NvbW1lbnRFbmQ6ICIqLyIs
Ci0gICAgbGluZUNvbW1lbnQ6ICIvLyIKLSAgfTsKLX0pOwotCi1Db2RlTWlycm9yLmRlZmluZU1J
TUUoInRleHQveC1sZXNzIiwgImxlc3MiKTsKLWlmICghQ29kZU1pcnJvci5taW1lTW9kZXMuaGFz
T3duUHJvcGVydHkoInRleHQvY3NzIikpCi0gIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC9j
c3MiLCAibGVzcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKaW5kZXggNzVmMDkz
OC4uMGFkODgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzCkBAIC0yMzMsOSAr
MjMzLDEwIEBACiAgICAgICAgIC8vIFNvIGNhbGwgaXQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBzdGFy
dCBzdGF0ZSB0aGF0IHdlIHdpbGwgbW9kaWZ5LgogICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9z
dGFydFN0YXRlKGJhc2UpOwogCi0gICAgICAgIC8vIFN0YXJ0IHRoZSBzdGFjayBvZmYgbGlrZSBp
dCBoYXMgYWxyZWFkeSBwYXJzZWQgYSBydWxlLiBUaGlzIGNhdXNlcyBldmVyeXRoaW5nCisgICAg
ICAgIC8vIFN0YXJ0IG9mZiB0aGUgc3RhdGUgc3RhY2sgbGlrZSBpdCBoYXMgYWxyZWFkeSBwYXJz
ZWQgYSBydWxlLiBUaGlzIGNhdXNlcyBldmVyeXRoaW5nCiAgICAgICAgIC8vIGFmdGVyIHRvIGJl
IHBhcnNlZCBhcyBwcm9wZXJ0aWVzIGluIGEgcnVsZS4KLSAgICAgICAgc3RhdGUuc3RhY2sgPSBb
InJ1bGUiXTsKKyAgICAgICAgc3RhdGUuc3RhdGUgPSAiYmxvY2siOworICAgICAgICBzdGF0ZS5j
b250ZXh0LnR5cGUgPSAiYmxvY2siOwogCiAgICAgICAgIHJldHVybiBzdGF0ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2Rl
TWlycm9yRm9ybWF0dGVycy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzCmluZGV4IDNkOTljYjYuLjg0MGMwYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVN
aXJyb3JGb3JtYXR0ZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzCkBAIC0zMzcsNyArMzM3LDcgQEAgQ29k
ZU1pcnJvci5leHRlbmRNb2RlKCJjc3MiLCB7CiAgICAgICAgICAgICBpZiAoY29udGVudCA9PT0g
IjsiKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgaWYgKGNvbnRlbnQg
PT09ICIsIikgeyAvLyAiYSxiLGMsLi4uLHp7fSIgcnVsZSBsaXN0IGF0IHRvcCBsZXZlbCBvciBp
biBAbWVkaWEgdG9wIGxldmVsIGFuZCBvbmx5IGlmIHRoZSBsaW5lIGxlbmd0aCB3aWxsIGJlIGxh
cmdlLgotICAgICAgICAgICAgICAgIGlmICgoIXN0YXRlLnN0YWNrLmxlbmd0aCB8fCBzdGF0ZS5z
dGFjay5sYXN0VmFsdWUgPT09ICJAbWVkaWF7IikgJiYgc3RhdGUuX2Nzc1ByZXR0eVByaW50Lmxp
bmVMZW5ndGggPiA2MCkgeworICAgICAgICAgICAgICAgIGlmICgoIXN0YXRlLnN0YWNrIHx8ICFz
dGF0ZS5zdGFjay5sZW5ndGggfHwgc3RhdGUuc3RhY2subGFzdFZhbHVlID09PSAiQG1lZGlheyIp
ICYmIHN0YXRlLl9jc3NQcmV0dHlQcmludC5saW5lTGVuZ3RoID4gNjApIHsKICAgICAgICAgICAg
ICAgICAgICAgc3RhdGUuX2Nzc1ByZXR0eVByaW50LmxpbmVMZW5ndGggPSAwOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9CkBAIC0zOTUsNyArMzk1LDcg
QEAgQ29kZU1pcnJvci5leHRlbmRNb2RlKCJjc3MiLCB7CiAgICAgICAgIC8vIEluIG9yZGVyIGlu
c2VydCBuZXdsaW5lcyBpbiBzZWxlY3RvciBsaXN0cyB3ZSBuZWVkIGtlZXAgdHJhY2sgb2YgdGhl
IGxlbmd0aCBvZiB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICAvLyBUaGlzIGlzbid0IGV4YWN0
IGxpbmUgbGVuZ3RoLCBvbmx5IHRoZSBidWlsZGVyIGtub3dzIHRoYXQsIGJ1dCBpdCBpcyBnb29k
IGVub3VnaCB0byBnZXQgYW4gaWRlYS4KICAgICAgICAgLy8gSWYgd2UgYXJlIGF0IGEgdG9wIGxl
dmVsLCBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGxpbmUgbGVuZ3RoLCBvdGhlcndpc2Ugd2Ug
cmVzZXQgdG8gMC4KLSAgICAgICAgaWYgKCFzdGF0ZS5zdGFjay5sZW5ndGggfHwgc3RhdGUuc3Rh
Y2subGFzdFZhbHVlID09PSAiQG1lZGlheyIpCisgICAgICAgIGlmICghc3RhdGUuc3RhY2sgfHwg
IXN0YXRlLnN0YWNrLmxlbmd0aCB8fCBzdGF0ZS5zdGFjay5sYXN0VmFsdWUgPT09ICJAbWVkaWF7
IikKICAgICAgICAgICAgIHN0YXRlLl9jc3NQcmV0dHlQcmludC5saW5lTGVuZ3RoICs9IGNvbnRl
bnQubGVuZ3RoOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZS5fY3NzUHJldHR5UHJp
bnQubGluZUxlbmd0aCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TeW50YXhIaWdobGlnaHRpbmdEZWZhdWx0VGhlbWUuY3NzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ludGF4SGlnaGxpZ2h0aW5n
RGVmYXVsdFRoZW1lLmNzcwppbmRleCAxOTkzYjQ4Li4wNDIwYWJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ludGF4SGlnaGxpZ2h0aW5n
RGVmYXVsdFRoZW1lLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TeW50YXhIaWdobGlnaHRpbmdEZWZhdWx0VGhlbWUuY3NzCkBAIC00NSw5ICs0NSwx
MCBAQAogLmNtLXMtZGVmYXVsdCAuY20tdGFnLmNtLWJyYWNrZXQsCiAuY20tcy1kZWZhdWx0IC5j
bS1hdG9tLAogLmNtLXMtZGVmYXVsdCAuY20ta2V5d29yZCwKLS5jbS1zLWRlZmF1bHQgLmNtLW0t
Y3NzLmNtLXRhZywKKy5jbS1zLWRlZmF1bHQgLmNtLW0tY3NzLmNtLWF0b20sCiAuY20tcy1kZWZh
dWx0IC5jbS1tLWNzcy5jbS1tZXRhLAogLmNtLXMtZGVmYXVsdCAuY20tbS1jc3MuY20tdmFyaWFi
bGUtMywKKy5jbS1zLWRlZmF1bHQgLmNtLW0tY3NzLmNtLXByb3BlcnR5LAogLmNtLXMtZGVmYXVs
dCAuY20tbS1qYXZhc2NyaXB0LmNtLWJ1aWx0aW4sCiAuc3ludGF4LWhpZ2hsaWdodGVkIC5jc3Mt
a2V5d29yZCwKIC5zeW50YXgtaGlnaGxpZ2h0ZWQgLmNzcy10YWcsCkBAIC01OSw3ICs2MCw2IEBA
CiB9CiAKIC5jbS1zLWRlZmF1bHQgLmNtLW51bWJlciwKLS5jbS1zLWRlZmF1bHQgLmNtLW0tY3Nz
LmNtLWF0b20sCiAuc3ludGF4LWhpZ2hsaWdodGVkIC5jc3MtbnVtYmVyLAogLnN5bnRheC1oaWdo
bGlnaHRlZCAuamF2YXNjcmlwdC1udW1iZXIgewogICAgIGNvbG9yOiByZ2IoMjgsIDAsIDIwNyk7
CkBAIC02OCwxMiArNjgsMTIgQEAKIC5jbS1zLWRlZmF1bHQgLmNtLWRlZiwKIC5jbS1zLWRlZmF1
bHQgLmNtLWJyYWNrZXQsCiAuY20tcy1kZWZhdWx0IC5jbS1vcGVyYXRvciwKLS5jbS1zLWRlZmF1
bHQgLmNtLXF1YWxpZmllciwKIC5jbS1zLWRlZmF1bHQgLmNtLXZhcmlhYmxlLAogLmNtLXMtZGVm
YXVsdCAuY20tdmFyaWFibGUtMiwKKy5jbS1zLWRlZmF1bHQgLmNtLW0tY3NzLmNtLXRhZywKIC5j
bS1zLWRlZmF1bHQgLmNtLW0tY3NzLmNtLXN0cmluZy0yLAogLmNtLXMtZGVmYXVsdCAuY20tbS1j
c3MuY20tYnVpbHRpbiwKLS5jbS1zLWRlZmF1bHQgLmNtLW0tY3NzLmNtLXByb3BlcnR5LAorLmNt
LXMtZGVmYXVsdCAuY20tbS1jc3MuY20tcXVhbGlmaWVyLAogLnN5bnRheC1oaWdobGlnaHRlZCAu
Y3NzLXByb3BlcnR5LAogLnN5bnRheC1oaWdobGlnaHRlZCAuY3NzLXNlbGVjdG9yLAogLnN5bnRh
eC1oaWdobGlnaHRlZCAuamF2YXNjcmlwdC1pZGVudCB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>