<?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>101279</bug_id>
          
          <creation_ts>2012-11-05 16:47:55 -0800</creation_ts>
          <short_desc>DOMImplementation should use ScriptWrappable</short_desc>
          <delta_ts>2014-01-28 02:26:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101110</dependson>
    
    <dependson>101319</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>arv</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>ktf.kim</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759031</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 16:47:55 -0800</bug_when>
    <thetext>Using ScriptWrappable for DOMImplementation makes document.implementation about 23% faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759035</commentid>
    <comment_count>1</comment_count>
      <attachid>172439</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 16:49:52 -0800</bug_when>
    <thetext>Created attachment 172439
patch (V8 only at the moment)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759037</commentid>
    <comment_count>2</comment_count>
      <attachid>172440</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 16:51:37 -0800</bug_when>
    <thetext>Created attachment 172440
PerformanceTest results (first three are without patch; last three are with patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759040</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-05 16:52:44 -0800</bug_when>
    <thetext>Your patch seems sparse. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759066</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 17:11:15 -0800</bug_when>
    <thetext>&gt; Your patch seems sparse. :)

Do you mean no ChangeLog?  I still need to get the JSC side working.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759167</commentid>
    <comment_count>5</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-05 19:08:15 -0800</bug_when>
    <thetext>It does look a little bit thin. Didn&apos;t you have to do anything to the code gen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759181</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 19:39:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It does look a little bit thin. Didn&apos;t you have to do anything to the code gen?

Nope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759785</commentid>
    <comment_count>7</comment_count>
      <attachid>172605</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 09:44:33 -0800</bug_when>
    <thetext>Created attachment 172605
JSC PerformanceTest results (first three are without patch; last three are with)

In the JSC bindings, this patch is a 69% improvement on Bindings/document-implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759885</commentid>
    <comment_count>8</comment_count>
      <attachid>172620</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 11:08:16 -0800</bug_when>
    <thetext>Created attachment 172620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759889</commentid>
    <comment_count>9</comment_count>
      <attachid>172620</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-11-06 11:09:20 -0800</bug_when>
    <thetext>Comment on attachment 172620
Patch

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

&gt; PerformanceTests/Bindings/document-implementation.html:7
&gt; +    description: &quot;This benchmark repeatedly accesses properties of range.&quot;,

Please update description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759891</commentid>
    <comment_count>10</comment_count>
      <attachid>172622</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 11:10:51 -0800</bug_when>
    <thetext>Created attachment 172622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759894</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 11:11:02 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 172620 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172620&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Bindings/document-implementation.html:7
&gt; &gt; +    description: &quot;This benchmark repeatedly accesses properties of range.&quot;,
&gt; 
&gt; Please update description.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759921</commentid>
    <comment_count>12</comment_count>
      <attachid>172622</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-06 11:37:51 -0800</bug_when>
    <thetext>Comment on attachment 172622
Patch

Now the fun patches start. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759952</commentid>
    <comment_count>13</comment_count>
      <attachid>172622</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 12:26:18 -0800</bug_when>
    <thetext>Comment on attachment 172622
Patch

Clearing flags on attachment: 172622

Committed r133657: &lt;http://trac.webkit.org/changeset/133657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759953</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 12:26:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172439</attachid>
            <date>2012-11-05 16:49:52 -0800</date>
            <delta_ts>2012-11-06 11:08:14 -0800</delta_ts>
            <desc>patch (V8 only at the moment)</desc>
            <filename>bug-101279-20121105164856.patch</filename>
            <type>text/plain</type>
            <size>1295</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5oCmluZGV4IDlkNTNiOTE2YzViY2I2ZmFiM2MyOTEyODk1ZGI5NDIwYzVlYTliZDguLmRm
ZmI1NDllM2ZiZTdmYWE5MGM1OTE4NzViOTM1YzBlZWZjNTNkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlZ3VsYXJFeHBy
ZXNzaW9uOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBET01JbXBsZW1l
bnRhdGlvbiB7CitjbGFzcyBET01JbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPERPTUltcGxlbWVudGF0aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7
IHJldHVybiBhZG9wdFB0cihuZXcgRE9NSW1wbGVtZW50YXRpb24oZG9jdW1lbnQpKTsgfQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlv
bi5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc5OTM4NzAzYWZlNzgyMWJkYjAwMTY1NjMzNDUwNTE4Y2U3OWRm
OTkKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0JpbmRpbmdzL2RvY3VtZW50
LWltcGxlbWVudGF0aW9uLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK1BlcmZUZXN0UnVubmVyLm1lYXN1cmVSdW5zUGVyU2Vjb25kKHsKKyAg
ICBkZXNjcmlwdGlvbjogIlRoaXMgYmVuY2htYXJrIHJlcGVhdGVkbHkgYWNjZXNzZXMgcHJvcGVy
dGllcyBvZiByYW5nZS4iLAorICAgIHJ1bjogZnVuY3Rpb24oKSB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgICAgICAgICBkb2N1bWVudC5pbXBsZW1lbnRh
dGlvbjsKK319KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>172440</attachid>
            <date>2012-11-05 16:51:37 -0800</date>
            <delta_ts>2012-11-05 16:51:37 -0800</delta_ts>
            <desc>PerformanceTest results (first three are without patch; last three are with patch)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>28429</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0JzsKICAgIHZhciByZW1v
dGVQYXRoID0gJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsn
OwogICAgdmFyIG51bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1
Z2lucyA9IGZhbHNlOwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVu
Y3Rpb24gbG9hZFNjcmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2Fk
ID0gbG9hZGVkOwogICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9y
ID0gZmFpbGVkOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAg
IH0KCiAgICBmdW5jdGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQo
dHJ1bmtQYXRoICsgJy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdp
bigpIHsKICAgICAgICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVy
T2ZMb2FkZWRQbHVnaW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0
KGluaXQsIDApOyAgICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRv
TG9hZFBsdWdpbihwbHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgi
RmFpbGVkIHRvIGxvYWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVM
b2FkZWRKUXVlcnkodHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9h
ZFBsdWdpbnModHJ1bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsg
Jy8nICsgalF1ZXJ5LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8n
ICsgalF1ZXJ5LAogICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgp
LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1
ZXJ5LiIpOyB9KTsKICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6
IHVuZGVmaW5lZDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJl
c3VsdC5taW47IH0KICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3Vs
dC5zdGRldjsgfQogICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVz
dWx0LnN0ZGV2IC8gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1
bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhp
cy5tZWFuKCk7IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlv
biAob3RoZXIpIHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRo
aXMubWVhbigpKTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4g
b3RoZXIuc3RkZXYoKTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRl
c2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0K
ICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Vi
a2l0LXJldmlzaW9uJ107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlz
LmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJm
VGVzdChuYW1lKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBj
YW4ndCBkbyB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0
ZXN0IG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0
b3IuCiAgICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3Qg
cmVzdWx0LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3Qu
CiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8g
RklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVu
aXQuCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8g
RklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1
bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2ls
byAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5p
dDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5p
dCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5hbWU7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFt
ZS5pbmRleE9mKCc6JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3
UmVzdWx0KSB7CiAgICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNh
Y2hlZFVuaXQgPSBudWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAg
fQogICAgdGhpcy5yZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0K
ICAgIHRoaXMuc2NhbGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2Fs
aW5nRmFjdG9ySWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsK
ICAgIH0KICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGlu
Z0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0
aGlzLnNtYWxsZXJJc0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09
ICdtcycgfHwgdGhpcy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3Jn
YigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtz
aG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRz
OiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFy
IG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAg
ICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAg
IHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246
ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAg
ICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRo
OiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9y
OiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6
IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hv
dzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2Nj
JyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNv
bnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNz
PSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAn
PHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNo
aWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0
aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBw
ZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbign
LnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBw
bG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0
aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24u
Y2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3Zlcics
IGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewog
ICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2Vy
aWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2lu
dFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9m
ZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0
OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkg
LyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAg
ICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0
aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90
Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1
bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIu
YXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZh
bHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVu
KCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBb
aW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBs
b3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAw
LjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAg
ICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAg
IH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJl
bW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklz
WmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVz
ID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAg
ICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1Zh
bHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0
dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBs
b3REYXRhID0gW107CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFsk
LmV4dGVuZCh0cnVlLCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07
CiAgICBlbHNlIHsKICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykg
eyByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlk
LCBkYXRhOiByZXN1bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21h
a2VTdWJwb2ludHMoJ21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5k
ZXgsIHJlc3VsdC5taW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAog
ICAgICAgIG1ha2VTdWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAg
ICAgICBtYWtlU3VicG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAg
fQoKICAgIHBsb3REYXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwg
Y29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVu
ZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklz
WmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1h
eDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEp
fX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAt
IDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1
bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJl
bCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxv
dE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAg
IHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9Cgpm
dW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9
IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSAr
ICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1l
bW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+
PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4s
IGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZl
cmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30i
PicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1
cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0
Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5h
bWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3RO
YW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3Vs
ZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVm
ZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3
aWRnZXRzOiBbJ3plYnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMp
IHsKICAgIC8vIEltcGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlz
dGljcy9sZWFybi1jb3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5
ID0gaXRlcmF0aW9ucwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFy
IHN1bVhTcXVhcmVkID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRp
bWVzWSA9IDA7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICB2YXIgeCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3Vt
WCArPSB4OwogICAgICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsK
ICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5
OwogICAgfQoKICAgIHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAq
IHN1bVkpIC8KICAgICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNx
dWFyZWQgLSBzdW1ZICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5m
aW5pdHkpCiAgICAgICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBz
dW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAt
IHNsb3BlICogc3VtWCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwg
aW50ZXJjZXB0OiBpbnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2ln
biA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdo
dDogMThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAn
PHBvbHlnb24gZmlsbD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAg
ICArICc8cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4Ljcs
IDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9
IjYiIGZpbGw9IndoaXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJs
ZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgn
PHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1
bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1
cEZvclJ1bihyZXN1bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29u
Q2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91
bGRDb21wYXJlID0gcmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3Vs
ZENvbXBhcmUgJiYgcmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlm
ZmVyZW5jZSA9IHJlZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAg
ICAgICAgICB2YXIgYmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZm
ZXJlbmNlIDwgMCA6IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBh
cmlzb24gPSAnJzsKICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAg
ICAgICAgICAgaWYgKHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChy
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShN
YXRoLmFicyhwZXJjZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29y
c2UmbmJzcDsnKTsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRl
cicgOiAnIHdvcnNlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwog
ICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAn
Ij4nICsgY29tcGFyaXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
YXJlKQogICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+JzsKCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2
YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAg
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Np
b25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRo
UHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVn
cmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0
LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNz
PSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3
aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bh
bj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcm
c2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWlu
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcs
IG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVn
cmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxl
IGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBz
dGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSAr
IGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNl
bnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlz
b25DZWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVu
Y2UpIHsKICAgICAgICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6
IDMpICsgJyIgY2xhc3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1
bkluZGV4ID0gMDsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVm
ZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGls
ZSAocnVuc1tydW5JbmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bklu
ZGV4Kys7CiAgICAgICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAg
ICByZWZlcmVuY2VSZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1
bkluZGV4XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBp
KyspIHsKICAgICAgICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAg
ICBpZiAocmVzdWx0SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBl
bmQobWFya3VwRm9yTWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0
SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hp
bGRyZW4oJ3Rib2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJv
d1swXSAmJiBldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIg
Zmlyc3RDZWxsID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAo
Zmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0
Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAg
ICAgICAgICAgIHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9
KTsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAg
ICBvZmZzZXQubGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91
dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAg
IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRl
ckhlaWdodCgpICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7
Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAg
ICAgaWQ6ICdjb21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICByZXR1cm4gcy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDog
ZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0
cmluZyhzLmluZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNl
ZCkgPyAwIDogcGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAg
fSk7CgogICAgdmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpT
T04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1
bmN0aW9uIChpbmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50
cnkpOwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRz
LCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0p
CiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAg
ICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCBy
ZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1l
bW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgn
I3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxl
bWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRD
b250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxk
SWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5j
dGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFu
IHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNs
YXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAg
ICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQs
IGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVj
a2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRl
c3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoK
ICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAg
ICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7
CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVt
b3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tl
ZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsK
ICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0i
YXBwbGljYXRpb24vanNvbiI+W3sidGltZXN0YW1wIjogMTM1MjE2MTU3NiwgIndlYmtpdC1yZXZp
c2lvbiI6ICIxMzM1MjUiLCAicmVzdWx0cyI6IHsiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50
YXRpb24iOiB7Im1pbiI6IDMxOC43NzEyNDMxMTAyMTM5NiwgIm1heCI6IDM3Ni4yNzg0NjQ4NDI1
NDI4NiwgIm1lZGlhbiI6IDM3NC45NDk0MTUzNjMxMDY3LCAidmFsdWVzIjogWzMxOC43NzEyNDMx
MTAyMTM5NiwgMzc1Ljk5Mjg1NjEzODc4NjM1LCAzNzQuODY1MjgyNzk0ODcwNiwgMzc1LjIzMTQ0
MTYxMTI4ODg2LCAzNzYuMTgxNTkyMjU4NTM1MTUsIDM3NC42NTQ2MTUzMTMyNTk2LCAzNzQuNjU5
NDQwNDQ1MTAzNSwgMzc1LjMxMTA5NzcxMTQ0MzIsIDM3Ni4wMTg5MjMxNzM4MzA3MywgMzc1LjIw
MTA4NDMwOTk2MTQ2LCAzNzEuOTg2MjQ3MTU3Mjc4MTcsIDM3NS4zMzI2Njc4ODE1MjQ1NywgMzc1
LjI4MzM2ODI3ODMzODQ2LCAzNzQuNzA4NTc2MjczMTMyMDUsIDM3NC44Mjg4Mzc5MzQ2ODk1NSwg
Mzc0LjcwMjQzMzU5MzAxMjgsIDM3Mi45NDc5NTM3OTg5NTA2LCAzNzQuNjg3MDc3NzczNzg4OTMs
IDM3Ni4yNzg0NjQ4NDI1NDI4NiwgMzc1LjAzMzU0NzkzMTM0MjhdLCAic3RkZXYiOiAxMi42MDA0
NjA2MTk2MDQ4LCAiYXZnIjogMzcyLjEzMzgzNzYxNjU5NDc1LCAidW5pdCI6ICJydW5zL3MifSwg
IkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOk1hbGxvYyI6IHsibWluIjogMC4wLCAi
bWF4IjogMC4wLCAibWVkaWFuIjogMC4wLCAidmFsdWVzIjogWzAuMCwgMC4wLCAwLjAsIDAuMCwg
MC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wXSwgInN0ZGV2IjogMC4wLCAiYXZnIjogMC4wLCAidW5pdCI6
ICJieXRlcyJ9LCAiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb246SlNIZWFwIjogeyJt
aW4iOiA3NTYyMDguMCwgIm1heCI6IDc4MjY3Mi4wLCAibWVkaWFuIjogNzU5ODE0LjAsICJ2YWx1
ZXMiOiBbNzgyNjcyLjAsIDc4MDU5Ni4wLCA3ODA1NDQuMCwgNzYzMjkyLjAsIDc1NjM1Mi4wLCA3
NTcwNjAuMCwgNzU2MjA4LjAsIDc1NjkwOC4wLCA3NTk0NTYuMCwgNzU5NjQ0LjAsIDc1OTEzMi4w
LCA3NTg0MzYuMCwgNzU4MTU2LjAsIDc1ODU3Ni4wLCA3NjExODguMCwgNzYxMTQ4LjAsIDc2MDgw
MC4wLCA3NTk5ODQuMCwgNzYwMTA0LjAsIDc2MDgwMC4wXSwgInN0ZGV2IjogODI3MC44NTU5MzIy
ODYwMjIsICJhdmciOiA3NjI1NTIuOCwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6ICJj
aHJvbWl1bSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjog
IjE2NTkxNyJ9LCB7InRpbWVzdGFtcCI6IDEzNTIxNjE2MDEsICJ3ZWJraXQtcmV2aXNpb24iOiAi
MTMzNTI1IiwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uIjog
eyJtaW4iOiAzNjMuMTM3ODc0NDM4NDUwMSwgIm1heCI6IDM3Ny40MTYzNDkxNzk1NTM1LCAibWVk
aWFuIjogMzc1LjYxMDAwMjMxODIwMjksICJ2YWx1ZXMiOiBbMzc3LjQxNjM0OTE3OTU1MzUsIDM3
Ny4yMjAxNDY4OTE0MTQ5LCAzNzQuOTE0NDcyNTgxNzU1NSwgMzc1LjUzMDg3NzQ2OTI0MjM0LCAz
NzUuNjQyODQ4MTgwODI1NjQsIDM3Ni4xODAyNjU1OTgzMTgzLCAzNzEuMzEwNDM0MTAyMzQ0LCAz
NzAuNzE0OTEyMTIzNzE5NywgMzYzLjEzNzg3NDQzODQ1MDEsIDM3NC43ODIzMDQxNzIzOTY1NSwg
Mzc1LjQxNTQ0OTk1OTUxMTc2LCAzNzcuMDM2MTQyNDI4MDMyODYsIDM3Ni40MDcyNjMyMTQ5Nzc2
NiwgMzc1LjY1MjEwODU1OTg3ODcsIDM3Ni43ODM5ODM4Nzc3MDk1LCAzNzUuNTc3MTU2NDU1NTgw
MSwgMzc0LjkzMjA0MzU5NTU4MzQsIDM3NS44Mzg3MzcwMDU4NDQ3MywgMzc2LjIyNzE0NzE1MTcw
MywgMzc1LjE2ODk3MjYwNDAxMDddLCAic3RkZXYiOiAzLjIyMTkwNzM2MjE2ODg4MjMsICJhdmci
OiAzNzQuNzk0NDc0NDc5NTQyNiwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9kb2N1bWVu
dC1pbXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlh
biI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRp
bmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOkpTSGVhcCI6IHsibWluIjogNzU2MTU2LjAsICJt
YXgiOiA3ODI3NjguMCwgIm1lZGlhbiI6IDc1OTgxNC4wLCAidmFsdWVzIjogWzc4Mjc2OC4wLCA3
ODA1OTYuMCwgNzgwNTQ0LjAsIDc2MzI5Mi4wLCA3NTYzNTIuMCwgNzU3MDYwLjAsIDc1NjE1Ni4w
LCA3NTY5MDQuMCwgNzU5NDA4LjAsIDc1OTY0NC4wLCA3NTkxODAuMCwgNzU4NDM2LjAsIDc1ODE1
Mi4wLCA3NTg1NzYuMCwgNzYxMTg4LjAsIDc2MTE0OC4wLCA3NjA4NDguMCwgNzU5OTg0LjAsIDc2
MDA5Ni4wLCA3NjA3OTYuMF0sICJzdGRldiI6IDgyODUuMDgzOTEwODkyMzMsICJhdmciOiA3NjI1
NTYuMzk5OTk5OTk5OSwgInVuaXQiOiAiYnl0ZXMifX0sICJwbGF0Zm9ybSI6ICJjaHJvbWl1bSIs
ICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgImNocm9taXVtLXJldmlzaW9uIjogIjE2NTkxNyJ9
LCB7InRpbWVzdGFtcCI6IDEzNTIxNjE2MjQsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMzNTI1Iiwg
InJlc3VsdHMiOiB7IkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uIjogeyJtaW4iOiAz
NzQuNjM0MDAwMTc1NzU1NSwgIm1heCI6IDM4NS4zNjI0ODc2MTM3NDMsICJtZWRpYW4iOiAzNzYu
MjcwOTU1ODA4NTcwMywgInZhbHVlcyI6IFszNzcuMzQxNTgxMzkyOTc5NiwgMzg1LjM2MjQ4NzYx
Mzc0MywgMzgzLjc5NDI4NjI2ODg3MzYzLCAzODQuMTU1OTY3MzIwNzQ4NzQsIDM4Mi45MDUxOTc0
NTg3NzcxNCwgMzgyLjM4NDk1ODg5Mzk3MSwgMzg0LjI5ODk4NDYyMjg5NTUsIDM3NS4xNDQ3ODI0
NTA0NDgxLCAzNzQuNjM0MDAwMTc1NzU1NSwgMzc2LjM4MjkxMzE2OTU0MzgsIDM3Ni4yMDIzNzgw
NzI1MTMzNCwgMzc0Ljc4NTgxNTc3NjQyNTY0LCAzNzUuMTIwMTU1Njc3NTAyLCAzNzUuNDM1Mjcw
MjYwNDk4OSwgMzc0Ljk3NTUzODczMjMyMDEsIDM3NS42MTY4MzMyMzQwODMsIDM3NC43OTcyMjg4
NjczNDczLCAzNzYuMzM5NTMzNTQ0NjI3MiwgMzc1LjA4NDU0MDUwMDgxMTA0LCAzNzkuMDM5MTM1
ODE0Mjk0NzVdLCAic3RkZXYiOiAzLjk0OTA1MjI3MjI4MTY5NiwgImF2ZyI6IDM3OC4xOTAwNzk0
OTI0MDc5NiwgInVuaXQiOiAicnVucy9zIn0sICJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRh
dGlvbjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZh
bHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRl
diI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2RvY3VtZW50
LWltcGxlbWVudGF0aW9uOkpTSGVhcCI6IHsibWluIjogNzU2MjAwLjAsICJtYXgiOiA3ODI3Njgu
MCwgIm1lZGlhbiI6IDc1OTgwOC4wLCAidmFsdWVzIjogWzc4Mjc2OC4wLCA3ODA1OTIuMCwgNzgw
NTQwLjAsIDc2MzI4OC4wLCA3NTYzNDguMCwgNzU3MDUyLjAsIDc1NjIwMC4wLCA3NTY5MDQuMCwg
NzU5NDUyLjAsIDc1OTY0MC4wLCA3NTkxNzYuMCwgNzU4NDMyLjAsIDc1ODE0NC4wLCA3NTg1Njgu
MCwgNzYxMTg0LjAsIDc2MTE0MC4wLCA3NjA4NDAuMCwgNzU5OTc2LjAsIDc2MDA5Mi4wLCA3NjA3
ODguMF0sICJzdGRldiI6IDgyODMuMDk4MTcxOTU5MjA2LCAiYXZnIjogNzYyNTU2LjIwMDAwMDAw
MDIsICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZpc2lvbiI6ICIxNjU5MTcifSwgeyJ0aW1lc3Rh
bXAiOiAxMzUyMTYyMjQ1LCAid2Via2l0LXJldmlzaW9uIjogIjEzMzUyNSIsICJyZXN1bHRzIjog
eyJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbiI6IHsibWluIjogNDU3Ljg4MzYxMTEw
OTU3OTY1LCAibWF4IjogNDYyLjc2NjU3MjgwMzk2NzA1LCAibWVkaWFuIjogNDYwLjMzMDk4MDY2
MTIxODYzLCAidmFsdWVzIjogWzQ1OS45MTg3MjIxNDcxNDI2NiwgNDYxLjc0NjI0NzM2NDgxMzcs
IDQ2MC4zOTI3OTE4MDQyOTY4NSwgNDU5Ljk0NTc1MTk2MDE3MjgsIDQ2MC4yMzU2NDA2MzY5OTMx
NCwgNDU5Ljk3NDU0ODA5NTM5NDIsIDQ2MC40MTk4NzczNzA2Mzc1LCA0NjAuMjk1NjYzMTc5OTE1
MSwgNDYwLjQyNjk0MzY0NTUxMzEsIDQ2MC43MDMyODkwODEzMjgzNiwgNDYwLjQyOTg4ODA2Nzg1
MDYsIDQ1OS43Njk1Mjc3NTA4Mjc5LCA0NTkuOTA0MDMzMjg2NDg4MTMsIDQ2MC43MTUwODA5MzMy
MDgzLCA0NjAuNDg3NjA1MTk3MjI3MTQsIDQ2MC4zNjYyOTgxNDI1MjIxLCA0NjIuNzY2NTcyODAz
OTY3MDUsIDQ1Ny44ODM2MTExMDk1Nzk2NSwgNDU5LjgzNDcxNDk4MjEyOTYsIDQ1OS43OTk0NzYz
MjYyNDk1XSwgInN0ZGV2IjogMC45MDk5MjEyMTI5ODY2ODY5LCAiYXZnIjogNDYwLjMwMDgxNDE5
NDMxMjgsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRp
b246TWFsbG9jIjogeyJtaW4iOiAwLjAsICJtYXgiOiAwLjAsICJtZWRpYW4iOiAwLjAsICJ2YWx1
ZXMiOiBbMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjBdLCAic3RkZXYi
OiAwLjAsICJhdmciOiAwLjAsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9kb2N1bWVudC1p
bXBsZW1lbnRhdGlvbjpKU0hlYXAiOiB7Im1pbiI6IDc1NjI1Ni4wLCAibWF4IjogNzgyODE2LjAs
ICJtZWRpYW4iOiA3NTk4NjIuMCwgInZhbHVlcyI6IFs3ODI4MTYuMCwgNzgwNjQ0LjAsIDc4MDU5
Mi4wLCA3NjMzNDAuMCwgNzU2NDAwLjAsIDc1NzEwOC4wLCA3NTYyNTYuMCwgNzU2OTU2LjAsIDc1
OTUwNC4wLCA3NTk2OTIuMCwgNzU5MjI4LjAsIDc1ODQ4NC4wLCA3NTgyMDQuMCwgNzU4NjI0LjAs
IDc2MTIzNi4wLCA3NjExOTYuMCwgNzYwODk2LjAsIDc2MDAzMi4wLCA3NjAxNTIuMCwgNzYwODQ4
LjBdLCAic3RkZXYiOiA4MjgxLjU5NzU0NzM4NDI3NCwgImF2ZyI6IDc2MjYxMC40LCAidW5pdCI6
ICJieXRlcyJ9fSwgInBsYXRmb3JtIjogImNocm9taXVtIiwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1
bmsiLCAiY2hyb21pdW0tcmV2aXNpb24iOiAiMTY1OTE3In0sIHsidGltZXN0YW1wIjogMTM1MjE2
MjI2OCwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMzM1MjUiLCAicmVzdWx0cyI6IHsiQmluZGluZ3Mv
ZG9jdW1lbnQtaW1wbGVtZW50YXRpb24iOiB7Im1pbiI6IDQ1NS4zMTYzODc5NDY2Nzc4LCAibWF4
IjogNDU5LjgyODI1NDE0Nzg1NSwgIm1lZGlhbiI6IDQ1Ny40NjQzODk0MzkwNTQ4LCAidmFsdWVz
IjogWzQ1OS4zMzY1OTAzNDk1MDQ3LCA0NTguODQwMTI4NjEwMDM5MjQsIDQ1NS4zMTYzODc5NDY2
Nzc4LCA0NTcuMTM3NjMyNzU0MDgxLCA0NTYuMjMyNzA5MDkzMzg2MywgNDU3LjA4MzA3MzU0MjY2
NTcsIDQ1Ny42NzY5NTg4NzYyOTM5LCA0NTcuNDcyODE4NTEzODM5NSwgNDU3Ljc0MzMwMDExODM3
NjgsIDQ1Ny4xNjg5ODEwOTQzMjI2NSwgNDU3LjIwOTYyNDI3NzU5MjI0LCA0NTcuMDA1OTAwNDcx
NzY5OSwgNDU5LjgyODI1NDE0Nzg1NSwgNDU4LjA2MjQ3MjA2MDM1OTQsIDQ1OS43ODE4NTkwNzQ4
NDQsIDQ1Ny40NTU5NjAzNjQyNywgNDU3LjU3MDUwMzk3NzY3NjIsIDQ1Ni45MDcyOTYwNTc3NTA4
NCwgNDU4LjI0NjcyMjYwMDE5Njk2LCA0NTcuMDgwMTcxOTA1MTA4N10sICJzdGRldiI6IDEuMTIx
OTE2NzkwNTE2OTQ4NywgImF2ZyI6IDQ1Ny42NTc4NjcyOTE4MzA1NCwgInVuaXQiOiAicnVucy9z
In0sICJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDAu
MCwgIm1heCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAw
LjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4w
LCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVu
aXQiOiAiYnl0ZXMifSwgIkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOkpTSGVhcCI6
IHsibWluIjogNzU2MjUyLjAsICJtYXgiOiA3ODI4MTYuMCwgIm1lZGlhbiI6IDc1OTg1Ni4wLCAi
dmFsdWVzIjogWzc4MjgxNi4wLCA3ODA2NDQuMCwgNzgwNTkyLjAsIDc2MzMzNi4wLCA3NTYzOTYu
MCwgNzU3MTA0LjAsIDc1NjI1Mi4wLCA3NTY5NTIuMCwgNzU5NTAwLjAsIDc1OTY4OC4wLCA3NTky
MjQuMCwgNzU4NDgwLjAsIDc1ODE5Ni4wLCA3NTg2MTYuMCwgNzYxMjMyLjAsIDc2MTE4OC4wLCA3
NjA4ODguMCwgNzYwMDI0LjAsIDc2MDEzNi4wLCA3NjA4MzIuMF0sICJzdGRldiI6IDgyODMuNzA3
OTUxODUyMTk5LCAiYXZnIjogNzYyNjA0Ljc5OTk5OTk5OTksICJ1bml0IjogImJ5dGVzIn19LCAi
cGxhdGZvcm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1
bS1yZXZpc2lvbiI6ICIxNjU5MTcifSwgeyJ0aW1lc3RhbXAiOiAxMzUyMTYyMjk5LCAid2Via2l0
LXJldmlzaW9uIjogIjEzMzUyNSIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9kb2N1bWVudC1pbXBs
ZW1lbnRhdGlvbiI6IHsibWluIjogNDU5LjA5OTkzNDU2MjkwMDE2LCAibWF4IjogNDY0LjU3NjY3
Mzg1Njc1NzMsICJtZWRpYW4iOiA0NjIuMDg4ODIxMjY2NjkwMiwgInZhbHVlcyI6IFs0NjIuNDgy
Mzk5OTMzMTEwNCwgNDYyLjc2NzE2Nzc0NzY4MjYsIDQ2MS45MzUyNTIwODEyNTI5LCA0NjEuOTc2
MTU0MzAyOTg3LCA0NjIuMDgyMjk2ODQzNTc0NTcsIDQ2MS43OTYwMDE1OTY0NTgxNSwgNDYxLjg1
MTY5MTc0OTE0ODc2LCA0NjEuNjQzODExMDE2ODMwNDUsIDQ2MS4yMzY4ODM2MzgxNzA3LCA0NjIu
NzQ5OTE3MTEzMDE2LCA0NjIuMjc1NzMyMDczODAwMTYsIDQ2Mi4wOTUzNDU2ODk4MDU4NywgNDY0
LjU3NjY3Mzg1Njc1NzMsIDQ2Mi4xNjU5NDA2NDgzMzUzLCA0NjIuNTAwODE5MDQwNzI0NiwgNDYy
LjU4NjM5NzYwMTAyNTMsIDQ2Mi4xMjYxOTEyNjg2MjE5LCA0NjEuODY4MjgyODQyMzAyODUsIDQ1
OS4wOTk5MzQ1NjI5MDAxNiwgNDYyLjA4MDUxNzUwMzEzNTRdLCAic3RkZXYiOiAwLjk2NzQ5MDE0
MzMxMjIwNywgImF2ZyI6IDQ2Mi4wOTQ4NzA1NTU0ODIwMywgInVuaXQiOiAicnVucy9zIn0sICJC
aW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDAuMCwgIm1h
eCI6IDAuMCwgIm1lZGlhbiI6IDAuMCwgInZhbHVlcyI6IFswLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAs
IDAuMCwgMC4wLCAwLjAsIDAuMF0sICJzdGRldiI6IDAuMCwgImF2ZyI6IDAuMCwgInVuaXQiOiAi
Ynl0ZXMifSwgIkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOkpTSGVhcCI6IHsibWlu
IjogNzU2MjUyLjAsICJtYXgiOiA3ODI4MTYuMCwgIm1lZGlhbiI6IDc1OTg1OC4wLCAidmFsdWVz
IjogWzc4MjgxNi4wLCA3ODA2NDQuMCwgNzgwNTkyLjAsIDc2MzMzNi4wLCA3NTYzOTYuMCwgNzU3
MTA0LjAsIDc1NjI1Mi4wLCA3NTY5NTIuMCwgNzU5NTAwLjAsIDc1OTY4NC4wLCA3NTkyMjAuMCwg
NzU4NDc2LjAsIDc1ODE5Ni4wLCA3NTg2MTYuMCwgNzYxMjM2LjAsIDc2MTE5Ni4wLCA3NjA4OTYu
MCwgNzYwMDMyLjAsIDc2MDE0NC4wLCA3NjA4NDAuMF0sICJzdGRldiI6IDgyODMuNDMyOTQyMDM5
NDA2LCAiYXZnIjogNzYyNjA2LjM5OTk5OTk5OTksICJ1bml0IjogImJ5dGVzIn19LCAicGxhdGZv
cm0iOiAiY2hyb21pdW0iLCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJjaHJvbWl1bS1yZXZp
c2lvbiI6ICIxNjU5MTcifV08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>172605</attachid>
            <date>2012-11-06 09:44:33 -0800</date>
            <delta_ts>2012-11-06 09:44:33 -0800</delta_ts>
            <desc>JSC PerformanceTest results (first three are without patch; last three are with)</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>28888</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gWydQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2Vz
L2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnXTsKICAgIHZhciBwbHVnaW5zID0gWydQ
ZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5taW4uanMnLCAnUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJhcnRoL2dpdC9hYmFydGgtd2Via2l0JzsKICAgIHZhciByZW1v
dGVQYXRoID0gJ2h0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsn
OwogICAgdmFyIG51bWJlck9mRmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1
Z2lucyA9IGZhbHNlOwogICAgdmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVu
Y3Rpb24gbG9hZFNjcmlwdChzcmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3lu
YyA9IHRydWU7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2Fk
ID0gbG9hZGVkOwogICAgICAgIGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9y
ID0gZmFpbGVkOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAg
IH0KCiAgICBmdW5jdGlvbiBsb2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBsdWdpbnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQo
dHJ1bmtQYXRoICsgJy8nICsgcGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRU
b0xvYWRQbHVnaW4ocGx1Z2luc1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdp
bigpIHsKICAgICAgICBudW1iZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVy
T2ZMb2FkZWRQbHVnaW5zID09IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0
KGluaXQsIDApOyAgICAgICAgICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRv
TG9hZFBsdWdpbihwbHVnaW4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgi
RmFpbGVkIHRvIGxvYWQgIiArIHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVM
b2FkZWRKUXVlcnkodHJ1bmtQYXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9h
ZFBsdWdpbnModHJ1bmtQYXRoKTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsg
Jy8nICsgalF1ZXJ5LAogICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAg
ICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8n
ICsgalF1ZXJ5LAogICAgICAgICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgp
LAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1
ZXJ5LiIpOyB9KTsKICAgICAgICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdGhpcy51bml0ID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gcmVzdWx0LnVuaXQ7IH0KICAgIHRoaXMudGVzdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC52YWx1ZXMgPyByZXN1bHQudmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHZhbHVlOyB9KSA6
IHVuZGVmaW5lZDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3Nv
Y2lhdGVkVGVzdC5zY2FsaW5nRmFjdG9yKCkgKiByZXN1bHQuYXZnOyB9CiAgICB0aGlzLm1pbiA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJl
c3VsdC5taW47IH0KICAgIHRoaXMubWF4ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRl
ZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogcmVzdWx0Lm1heDsgfQogICAgdGhpcy5zdGRldiA9IGZ1
bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHJlc3Vs
dC5zdGRldjsgfQogICAgdGhpcy5zdGRldlJhdGlvID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVz
dWx0LnN0ZGV2IC8gcmVzdWx0LmF2ZzsgfQogICAgdGhpcy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1
bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpIC8gdGhp
cy5tZWFuKCk7IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlv
biAob3RoZXIpIHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRo
aXMubWVhbigpKTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuc3RkZXYoKSAmJiBkaWZmID4g
b3RoZXIuc3RkZXYoKTsKICAgIH0KICAgIHRoaXMucnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4g
YXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBUZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRl
c2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0K
ICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRyeVsnd2Vi
a2l0LXJldmlzaW9uJ107IH0KICAgIHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIGxhYmVsID0gJ3InICsgdGhpcy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlz
LmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRl
c2NyaXB0aW9uKCk7CiAgICAgICAgcmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJm
VGVzdChuYW1lKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKCiAgICAvLyBXZSBj
YW4ndCBkbyB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0
ZXN0IG5lZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0
b3IuCiAgICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3Qg
cmVzdWx0LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3Qu
CiAgICAgICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICB2YXIgdW5pdCA9IHRlc3RSZXN1bHRzWzBdLnVuaXQoKTsgLy8g
RklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhhdCBhbGwgcmVzdWx0cyBoYXZlIHRoZSBzYW1lIHVu
aXQuCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1lYW4oKTsgLy8g
RklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFyIGtpbG8gPSB1
bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+IDEwICoga2ls
byAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0
b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAnTSAnICsgdW5p
dDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gdW5p
dCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVu
aXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IG5hbWU7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFt
ZS5pbmRleE9mKCc6JykgPj0gMDsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3
UmVzdWx0KSB7CiAgICAgICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNh
Y2hlZFVuaXQgPSBudWxsOwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAg
fQogICAgdGhpcy5yZXN1bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0K
ICAgIHRoaXMuc2NhbGluZ0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2Fs
aW5nRmFjdG9ySWZOZWVkZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsK
ICAgIH0KICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGlu
Z0ZhY3RvcklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0
aGlzLnNtYWxsZXJJc0JldHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMudW5pdCgpID09
ICdtcycgfHwgdGhpcy51bml0KCkgPT0gJ2J5dGVzJzsgfQp9Cgp2YXIgcGxvdENvbG9yID0gJ3Jn
YigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRpb25zID0gewogICAgbGluZXM6IHtz
aG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjogcGxvdENvbG9yLAogICAgcG9pbnRz
OiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6IHtzaG93OiBmYWxzZX19OwoKdmFy
IG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAgICAgICAgbWluOiAtMC41LAogICAg
ICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFpcjogeyBtb2RlOiAneScgfSwKICAg
IHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJzOiB7c2hvdzogdHJ1ZSwgYWxpZ246
ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVzOiB7IHNob3c6IGZhbHNlIH0sCiAg
ICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogewogICAgICAgIGJvcmRlcldpZHRo
OiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAgICAgICAgYmFja2dyb3VuZENvbG9y
OiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAogICAgICAgIGF1dG9IaWdobGlnaHQ6
IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9ucyA9IHsKICAgIHlheGlzOiB7IHNo
b3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgbGluZXM6IHsgc2hv
dzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDogMSwgYm9yZGVyQ29sb3I6ICcjY2Nj
JyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07CgpmdW5jdGlvbiBjcmVhdGVQbG90KGNv
bnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNsYXNz
PSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3RzIj48L2Rpdj4nCiAgICAgICAgKyAn
PHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNo
aWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAqIHRlc3QucmVzdWx0cygpLmxlbmd0
aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7CiAgICAkKGNvbnRhaW5lcikuYXBw
ZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVyID0gc2VjdGlvbi5jaGlsZHJlbign
LnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwogICAgYXR0YWNoUGxvdCh0ZXN0LCBw
bG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBzZWN0
aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2YXIgdG9vbHRpcCA9IHNlY3Rpb24u
Y2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFpbmVyLmJpbmQoJ3Bsb3Rob3Zlcics
IGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsKICAgICAgICBpZiAoaXRlbSkgewog
ICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVzLmlkID8gJyAoJyArIGl0ZW0uc2Vy
aWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0aXAuaHRtbChpdGVtLmRhdGFwb2lu
dFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAgICAgICAgICB2YXIgc2VjdGlvbk9m
ZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAgICAgIHRvb2x0aXAuY3NzKHtsZWZ0
OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0gdG9vbHRpcC5vdXRlcldpZHRoKCkg
LyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0LnRvcCArIDEwfSk7CiAgICAgICAg
ICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgIHRvb2x0
aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVyLm1vdXNlb3V0KGZ1bmN0aW9uICgp
IHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90
Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAgcmV0dXJuIHNlY3Rpb247Cn0KCmZ1
bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWluZXIpIHsKICAgIHZhciByZXN1bHRz
ID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQbG90ID0gZmFsc2U7CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb250YWluZXIu
YXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2YWx1ZXMgPSByZXN1bHRzW2ldLnZh
bHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBsb3QoY29udGFpbmVyLmNoaWxkcmVu
KCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7IHJldHVybiBb
aW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB7fSwgdGltZVBs
b3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFwcGx5KE1hdGgsIHZhbHVlcykgKiAw
LjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVzKSAqIDEuMX0sCiAgICAgICAgICAg
ICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMubGVuZ3RoIC0gMC41fX0pKTsKICAg
IH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNvbnRhaW5lci5jaGlsZHJlbigpLnJl
bW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklz
WmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICB2YXIgdmFsdWVz
ID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywgcmVzdWx0LCBpbmRleCkgewogICAg
ICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7CiAgICAgICAgcmV0dXJuIG5ld1Zh
bHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUpIHsgcmV0
dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAgICB9LCBbXSk7CgogICAgdmFyIHBs
b3REYXRhID0gW107CiAgICBpZiAodmFsdWVzLmxlbmd0aCkKICAgICAgICBwbG90RGF0YSA9IFsk
LmV4dGVuZCh0cnVlLCB7fSwgc3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07
CiAgICBlbHNlIHsKICAgICAgICBmdW5jdGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykg
eyByZXR1cm4gJC5leHRlbmQodHJ1ZSwge30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlk
LCBkYXRhOiByZXN1bHRzLm1hcChjYWxsYmFjayl9KTsgfQogICAgICAgIHBsb3REYXRhID0gW21h
a2VTdWJwb2ludHMoJ21pbicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5k
ZXgsIHJlc3VsdC5taW4oKV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAog
ICAgICAgIG1ha2VTdWJwb2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAg
ICAgICBtYWtlU3VicG9pbnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsg
cmV0dXJuIFtpbmRleCwgcmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSldOwogICAg
fQoKICAgIHBsb3REYXRhLnB1c2goe2lkOiAnJm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0
aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwg
Y29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVu
ZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklz
WmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVz
dWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4LAogICAgICAgIG1h
eDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/IDEuMSA6IDEuMDEp
fX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAt
IDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1
bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJl
bCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxv
dE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAg
IHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9Cgpm
dW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9
IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSAr
ICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1l
bW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+
PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4s
IGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZl
cmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30i
PicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1
cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0
Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5h
bWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3RO
YW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0g
dGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3Vs
ZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVm
ZXJlbmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3
aWRnZXRzOiBbJ3plYnJhJ119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMp
IHsKICAgIC8vIEltcGxlbWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlz
dGljcy9sZWFybi1jb3JyZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5
ID0gaXRlcmF0aW9ucwogICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFy
IHN1bVhTcXVhcmVkID0gMDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRp
bWVzWSA9IDA7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICB2YXIgeCA9IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3Vt
WCArPSB4OwogICAgICAgIHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsK
ICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5
OwogICAgfQoKICAgIHZhciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAq
IHN1bVkpIC8KICAgICAgICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKSAqCiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNx
dWFyZWQgLSBzdW1ZICogc3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5m
aW5pdHkpCiAgICAgICAgciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBz
dW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAt
IHN1bVggKiBzdW1YKTsKICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAt
IHNsb3BlICogc3VtWCAvIHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwg
aW50ZXJjZXB0OiBpbnRlcmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2ln
biA9ICc8c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdo
dDogMThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAn
PHBvbHlnb24gZmlsbD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJv
a2U9InJlZCIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAg
ICArICc8cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4Ljcs
IDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJv
a2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9
IjYiIGZpbGw9IndoaXRlIiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJs
ZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgn
PHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1
bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1
cEZvclJ1bihyZXN1bHQsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29u
Q2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91
bGRDb21wYXJlID0gcmVzdWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3Vs
ZENvbXBhcmUgJiYgcmVmZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlm
ZmVyZW5jZSA9IHJlZmVyZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAg
ICAgICAgICB2YXIgYmV0dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZm
ZXJlbmNlIDwgMCA6IHBlcmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBh
cmlzb24gPSAnJzsKICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAg
ICAgICAgICAgaWYgKHJlZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChy
ZXN1bHQpKSB7CiAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShN
YXRoLmFicyhwZXJjZW50RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29y
c2UmbmJzcDsnKTsKICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRl
cicgOiAnIHdvcnNlJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwog
ICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAn
Ij4nICsgY29tcGFyaXNvbiArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
YXJlKQogICAgICAgICAgICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+JzsKCiAgICAgICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2
YXIgd2FybmluZyA9ICcnOwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAg
ICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25SZXN1bHQgPSBsaW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jl
c3Npb25BbmFseXNpcyA9ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Np
b25SZXN1bHQuc2xvcGUpCiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRo
UHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVn
cmVzc2lvblJlc3VsdC5yU3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0
LnNsb3BlKSA+IDAuMDEpIHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNz
PSJyZWdyZXNzaW9uLXdhcm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3
aXRoICcgKyByZWdyZXNzaW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bh
bj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcm
c2lnbWE7PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LnN0ZGV2KCkpICsgJywgbWlu
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICArICcs
IG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsgcmVn
cmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cgYWJv
dXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNpYmxl
IGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9IicgKyBz
dGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigpKSAr
IGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJzdGRldiIgdGl0bGU9
IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAgICAgICAgICArIGZvcm1hdFBlcmNl
bnRhZ2UocmVzdWx0LnN0ZGV2UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlz
b25DZWxsOwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVu
Y2UpIHsKICAgICAgICByZXR1cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6
IDMpICsgJyIgY2xhc3M9Im1pc3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1
bkluZGV4ID0gMDsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVm
ZXJlbmNlUmVzdWx0ID0gdW5kZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGls
ZSAocnVuc1tydW5JbmRleF0gIT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bklu
ZGV4Kys7CiAgICAgICAgaWYgKHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAg
ICByZWZlcmVuY2VSZXN1bHQgPSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1
bkluZGV4XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBp
KyspIHsKICAgICAgICB2YXIgcmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAg
ICBpZiAocmVzdWx0SW5kZXggPT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBl
bmQobWFya3VwRm9yTWlzc2luZ1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxz
ZQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0
SW5kZXhdLCByZWZlcmVuY2VSZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hp
bGRyZW4oJ3Rib2R5JykubGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xp
Y2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJv
d1swXSAmJiBldmVudC50YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAg
ICAgcmV0dXJuOwoKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIg
Zmlyc3RDZWxsID0gdGFibGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAo
Zmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0
Q2VsbC5jaGlsZHJlbignc2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5j
aGlsZHJlbigndGQnKS5jc3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgdmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAg
ICAgICAgICAgIHBsb3QuY3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9
KTsKICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAg
ICBvZmZzZXQubGVmdCArPSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91
dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAg
IHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRl
ckhlaWdodCgpICsgNX0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7
Cn0KCmZ1bmN0aW9uIGluaXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAg
ICAgaWQ6ICdjb21wYXJpc29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAg
ICByZXR1cm4gcy5pbmRleE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDog
ZnVuY3Rpb24ocykgewogICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0
cmluZyhzLmluZGV4T2YoJ3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNl
ZCkgPyAwIDogcGFyc2VkOwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAg
fSk7CgogICAgdmFyIHJ1bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpT
T04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1
bmN0aW9uIChpbmRleCwgZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50
cnkpOwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChlbnRyeS5yZXN1bHRz
LCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICghdGVzdHNbdGVzdF0p
CiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0ZXN0KTsKICAgICAg
ICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRlc3RzW3Rlc3RdLCBy
ZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNob3VsZElnbm9yZU1l
bW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBjcmVhdGVUYWJsZSh0
ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CgogICAgJCgn
I3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxl
bWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRFbGVtZW50LnRleHRD
b250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxk
SWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBydW5zLm1hcChmdW5j
dGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5hcHBlbmQoJzxzcGFu
IHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNlSW5kZXggPyAnIGNs
YXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8L3NwYW4+Jyk7CiAg
ICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZXZlbnQs
IGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBwYXJzZUludChjaGVj
a2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNyZWF0ZVRhYmxlKHRl
c3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoK
ICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rpb24gKGluZGV4LCBjaGVja2JveCkgewogICAg
ICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7
CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdjaGVja2VkJykpCiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVt
b3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tl
ZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsK
ICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0i
YXBwbGljYXRpb24vanNvbiI+W3sidGltZXN0YW1wIjogMTM1MjIyMzMxOSwgInJlc3VsdHMiOiB7
IkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uIjogeyJtaW4iOiA1NTUuNTU1NTU1NTU1
NTU1NSwgIm1heCI6IDU5MS4xMzMwMDQ5MjYxMDg0LCAibWVkaWFuIjogNTg4LjIzNTI5NDExNzY0
NzEsICJ2YWx1ZXMiOiBbNTg5LjY4MDU4OTY4MDU4OTcsIDU4OC4yMzUyOTQxMTc2NDcxLCA1ODQu
MzI5MzQ5MjY5NTg4MywgNTg2LjY2NjY2NjY2NjY2NjYsIDU4OC4yMzUyOTQxMTc2NDcxLCA1ODku
NjgwNTg5NjgwNTg5NywgNTg3LjUxNTI5OTg3NzYwMSwgNTU1LjU1NTU1NTU1NTU1NTUsIDU5MC40
MDU5MDQwNTkwNDA2LCA1OTAuNDA1OTA0MDU5MDQwNiwgNTg4Ljk1NzA1NTIxNDcyMzksIDU4NC4z
MjkzNDkyNjk1ODgzLCA1ODIuNzgxNDU2OTUzNjQyNCwgNTkwLjQwNTkwNDA1OTA0MDYsIDU5MC40
MDU5MDQwNTkwNDA2LCA1OTEuMTMzMDA0OTI2MTA4NCwgNTkwLjQwNTkwNDA1OTA0MDYsIDU4NC4z
MjkzNDkyNjk1ODgzLCA1NjAuNTA5NTU0MTQwMTI3NCwgNTgyLjAxMDU4MjAxMDU4Ml0sICJzdGRl
diI6IDkuNjA5MjExOTU3NTQyNjMsICJhdmciOiA1ODQuNzk4OTI1NTUyMjcyNSwgInVuaXQiOiAi
cnVucy9zIn0sICJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpKU0hlYXAiOiB7Im1p
biI6IDQ1MjMyLjAsICJtYXgiOiA0OTc3Ni4wLCAibWVkaWFuIjogNDgzMTIuMCwgInZhbHVlcyI6
IFs0NTIzMi4wLCA0Njk2MC4wLCA0NzA1Ni4wLCA0NzI0MC4wLCA0NzMzNi4wLCA0NzY5Ni4wLCA0
Nzc5Mi4wLCA0Nzg4OC4wLCA0Nzk4NC4wLCA0ODI2NC4wLCA0ODM2MC4wLCA0OTAwOC4wLCA0OTEw
NC4wLCA0OTIwMC4wLCA0OTI5Ni4wLCA0OTM5Mi4wLCA0OTQ4OC4wLCA0OTU4NC4wLCA0OTY4MC4w
LCA0OTc3Ni4wXSwgInN0ZGV2IjogMTE5MS43NTk0OTUzNDE1OTYyLCAiYXZnIjogNDgzMTYuNzk5
OTk5OTk5OTk2LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50
YXRpb246TWFsbG9jIjogeyJtaW4iOiAxNjQ3NTEyLjAsICJtYXgiOiAxNjcwNDU2LjAsICJtZWRp
YW4iOiAxNjUxNTgwLjAsICJ2YWx1ZXMiOiBbMTY3MDQ1Ni4wLCAxNjU2ODU2LjAsIDE2NTgwMDAu
MCwgMTY1ODA1Ni4wLCAxNjU4MDU2LjAsIDE2NjAwMjQuMCwgMTY1MTcxMi4wLCAxNjUzNDAwLjAs
IDE2NTM2NzIuMCwgMTY1MDc5Mi4wLCAxNjUxNTUyLjAsIDE2NTE1NTIuMCwgMTY1MTYwOC4wLCAx
NjQ3NTEyLjAsIDE2NDc1MTIuMCwgMTY0NzU2OC4wLCAxNjQ3NTY4LjAsIDE2NDc1NjguMCwgMTY0
NzYyNC4wLCAxNjQ3NjcyLjBdLCAic3RkZXYiOiA1OTEyLjkxNDYwNzY5NTIyMSwgImF2ZyI6IDE2
NTI5MzguMCwgInVuaXQiOiAiYnl0ZXMifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndl
YmtpdC1yZXZpc2lvbiI6ICIxMzM2MTkifSwgeyJ0aW1lc3RhbXAiOiAxMzUyMjIzMzU4LCAicmVz
dWx0cyI6IHsiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb24iOiB7Im1pbiI6IDU2NC4x
MDI1NjQxMDI1NjQxLCAibWF4IjogNTkxLjEzMzAwNDkyNjEwODQsICJtZWRpYW4iOiA1ODguOTU3
MDU1MjE0NzIzOSwgInZhbHVlcyI6IFs1ODcuNTE1Mjk5ODc3NjAxLCA1NjQuMTAyNTY0MTAyNTY0
MSwgNTc1LjE2MzM5ODY5MjgxMDUsIDU5MC40MDU5MDQwNTkwNDA2LCA1NzguMTg2NTk2NTgzNDQy
OCwgNTkxLjEzMzAwNDkyNjEwODQsIDU5MC40MDU5MDQwNTkwNDA2LCA1NzUuMTYzMzk4NjkyODEw
NSwgNTY2LjI4MDU2NjI4MDU2NjMsIDU5MS4xMzMwMDQ5MjYxMDg0LCA1OTEuMTMzMDA0OTI2MTA4
NCwgNTg3LjUxNTI5OTg3NzYwMSwgNTg4Ljk1NzA1NTIxNDcyMzksIDU5MS4xMzMwMDQ5MjYxMDg0
LCA1ODguOTU3MDU1MjE0NzIzOSwgNTg5LjY4MDU4OTY4MDU4OTcsIDU5MS4xMzMwMDQ5MjYxMDg0
LCA1ODEuMjQxNzQzNzI1MjMxMiwgNTg4Ljk1NzA1NTIxNDcyMzksIDU5MS4xMzMwMDQ5MjYxMDg0
XSwgInN0ZGV2IjogOC42MDQ4NTg5NjE0NDk5MDgsICJhdmciOiA1ODQuOTY2NTIzMDQxNjA2LCAi
dW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOkpTSGVh
cCI6IHsibWluIjogNDUyMzIuMCwgIm1heCI6IDQ5Nzc2LjAsICJtZWRpYW4iOiA0ODMxMi4wLCAi
dmFsdWVzIjogWzQ1MjMyLjAsIDQ2OTYwLjAsIDQ3MDU2LjAsIDQ3MjQwLjAsIDQ3MzM2LjAsIDQ3
Njk2LjAsIDQ3NzkyLjAsIDQ3ODg4LjAsIDQ3OTg0LjAsIDQ4MjY0LjAsIDQ4MzYwLjAsIDQ5MDA4
LjAsIDQ5MTA0LjAsIDQ5MjAwLjAsIDQ5Mjk2LjAsIDQ5MzkyLjAsIDQ5NDg4LjAsIDQ5NTg0LjAs
IDQ5NjgwLjAsIDQ5Nzc2LjBdLCAic3RkZXYiOiAxMTkxLjc1OTQ5NTM0MTU5NjIsICJhdmciOiA0
ODMxNi43OTk5OTk5OTk5OTYsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5ncy9kb2N1bWVudC1p
bXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDE2NDY2OTYuMCwgIm1heCI6IDE2NzA0NDgu
MCwgIm1lZGlhbiI6IDE2NDc1NjguMCwgInZhbHVlcyI6IFsxNjcwNDQ4LjAsIDE2NTI3NTIuMCwg
MTY1Mzg5Ni4wLCAxNjUzOTUyLjAsIDE2NDk5MTIuMCwgMTY1MTkzNi4wLCAxNjQ3NjcyLjAsIDE2
NDkzMDQuMCwgMTY0OTU3Ni4wLCAxNjQ2Njk2LjAsIDE2NDc0MDAuMCwgMTY0NzQwMC4wLCAxNjQ3
NDU2LjAsIDE2NDc0NTYuMCwgMTY0NzQ1Ni4wLCAxNjQ3NTEyLjAsIDE2NDc1MTIuMCwgMTY0NzU2
OC4wLCAxNjQ3NTY4LjAsIDE2NDc1NjguMF0sICJzdGRldiI6IDUzMzIuMzg5ODQ2MzcxMzUyLCAi
YXZnIjogMTY1MDA1Mi4wLCAidW5pdCI6ICJieXRlcyJ9fSwgImJyYW5jaCI6ICJ3ZWJraXQtdHJ1
bmsiLCAid2Via2l0LXJldmlzaW9uIjogIjEzMzYxOSJ9LCB7InRpbWVzdGFtcCI6IDEzNTIyMjMz
ODIsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbiI6IHsibWlu
IjogNDY3LjUzMjQ2NzUzMjQ2NzU0LCAibWF4IjogNTkxLjg2MTg5ODg5MDI1ODksICJtZWRpYW4i
OiA1ODkuNjgwNTg5NjgwNTg5NywgInZhbHVlcyI6IFs0NjcuNTMyNDY3NTMyNDY3NTQsIDU4Ni42
NjY2NjY2NjY2NjY2LCA1ODkuNjgwNTg5NjgwNTg5NywgNTg3LjUxNTI5OTg3NzYwMSwgNTg5LjY4
MDU4OTY4MDU4OTcsIDU4OC45NTcwNTUyMTQ3MjM5LCA1ODguOTU3MDU1MjE0NzIzOSwgNTg4LjIz
NTI5NDExNzY0NzEsIDU5MC40MDU5MDQwNTkwNDA2LCA1OTAuNDA1OTA0MDU5MDQwNiwgNTkxLjEz
MzAwNDkyNjEwODQsIDU4Ny41MTUyOTk4Nzc2MDEsIDU5MS4xMzMwMDQ5MjYxMDg0LCA1ODkuNjgw
NTg5NjgwNTg5NywgNTkxLjEzMzAwNDkyNjEwODQsIDU4OC4yMzUyOTQxMTc2NDcxLCA1OTEuODYx
ODk4ODkwMjU4OSwgNTg1Ljg4NTQ4NjAxODY0MTgsIDU4OS42ODA1ODk2ODA1ODk3LCA1OTAuNDA1
OTA0MDU5MDQwNl0sICJzdGRldiI6IDI3LjI4MDIzNzY5OTg3NTA4NCwgImF2ZyI6IDU4My4yMzUw
NDUxNjAyODkyLCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVu
dGF0aW9uOkpTSGVhcCI6IHsibWluIjogNDUyMzIuMCwgIm1heCI6IDQ5Nzc2LjAsICJtZWRpYW4i
OiA0ODMxMi4wLCAidmFsdWVzIjogWzQ1MjMyLjAsIDQ2OTYwLjAsIDQ3MDU2LjAsIDQ3MjQwLjAs
IDQ3MzM2LjAsIDQ3Njk2LjAsIDQ3NzkyLjAsIDQ3ODg4LjAsIDQ3OTg0LjAsIDQ4MjY0LjAsIDQ4
MzYwLjAsIDQ5MDA4LjAsIDQ5MTA0LjAsIDQ5MjAwLjAsIDQ5Mjk2LjAsIDQ5MzkyLjAsIDQ5NDg4
LjAsIDQ5NTg0LjAsIDQ5NjgwLjAsIDQ5Nzc2LjBdLCAic3RkZXYiOiAxMTkxLjc1OTQ5NTM0MTU5
NjIsICJhdmciOiA0ODMxNi43OTk5OTk5OTk5OTYsICJ1bml0IjogImJ5dGVzIn0sICJCaW5kaW5n
cy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDE2NDc0NTYuMCwgIm1h
eCI6IDE2NjYzNjAuMCwgIm1lZGlhbiI6IDE2NTExNzIuMCwgInZhbHVlcyI6IFsxNjY2MzYwLjAs
IDE2NTI3NjAuMCwgMTY1MzkwNC4wLCAxNjUzOTUyLjAsIDE2NTM5NTIuMCwgMTY1NTk3Ni4wLCAx
NjUxNzEyLjAsIDE2NDkzMDQuMCwgMTY0OTU3Ni4wLCAxNjUwNzkyLjAsIDE2NTE1NTIuMCwgMTY1
MTU1Mi4wLCAxNjUxNTUyLjAsIDE2NDc0NTYuMCwgMTY0NzQ1Ni4wLCAxNjQ3NDU2LjAsIDE2NDc1
MTIuMCwgMTY0NzU2OC4wLCAxNjQ3NTY4LjAsIDE2NDc1NjguMF0sICJzdGRldiI6IDQ0NzAuMjA1
NDM5NzYyNzMsICJhdmciOiAxNjUxMjc2LjQsICJ1bml0IjogImJ5dGVzIn19LCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24iOiAiMTMzNjE5In0sIHsidGltZXN0YW1w
IjogMTM1MjIyMzU5OSwgInJlc3VsdHMiOiB7IkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0
aW9uIjogeyJtaW4iOiA5ODQuMDA5ODQwMDk4NDAxLCAibWF4IjogOTk1LjAyNDg3NTYyMTg5MDYs
ICJtZWRpYW4iOiA5OTEuMzI1ODk4Mzg5MDk1NCwgInZhbHVlcyI6IFs5OTIuNTU1ODMxMjY1NTA4
NywgOTg4Ljg3NTE1NDUxMTc0MywgOTg0LjAwOTg0MDA5ODQwMSwgOTkxLjMyNTg5ODM4OTA5NTQs
IDk5MC4wOTkwMDk5MDA5OTAyLCA5ODguODc1MTU0NTExNzQzLCA5OTEuMzI1ODk4Mzg5MDk1NCwg
OTkzLjc4ODgxOTg3NTc3NjQsIDk5Mi41NTU4MzEyNjU1MDg3LCA5OTUuMDI0ODc1NjIxODkwNiwg
OTkzLjc4ODgxOTg3NTc3NjQsIDk5MS4zMjU4OTgzODkwOTU0LCA5OTEuMzI1ODk4Mzg5MDk1NCwg
OTk1LjAyNDg3NTYyMTg5MDYsIDk5My43ODg4MTk4NzU3NzY0LCA5OTEuMzI1ODk4Mzg5MDk1NCwg
OTkyLjU1NTgzMTI2NTUwODcsIDk4OC44NzUxNTQ1MTE3NDMsIDk5MS4zMjU4OTgzODkwOTU0LCA5
OTMuNzg4ODE5ODc1Nzc2NF0sICJzdGRldiI6IDIuNTk0OTY2NDk4NTU1MTAwNiwgImF2ZyI6IDk5
MS41NzgxMTE0MjA2MzAzLCAidW5pdCI6ICJydW5zL3MifSwgIkJpbmRpbmdzL2RvY3VtZW50LWlt
cGxlbWVudGF0aW9uOkpTSGVhcCI6IHsibWluIjogNDUyMzIuMCwgIm1heCI6IDQ5Nzc2LjAsICJt
ZWRpYW4iOiA0ODMxMi4wLCAidmFsdWVzIjogWzQ1MjMyLjAsIDQ2OTYwLjAsIDQ3MDU2LjAsIDQ3
MjQwLjAsIDQ3MzM2LjAsIDQ3Njk2LjAsIDQ3NzkyLjAsIDQ3ODg4LjAsIDQ3OTg0LjAsIDQ4MjY0
LjAsIDQ4MzYwLjAsIDQ5MDA4LjAsIDQ5MTA0LjAsIDQ5MjAwLjAsIDQ5Mjk2LjAsIDQ5MzkyLjAs
IDQ5NDg4LjAsIDQ5NTg0LjAsIDQ5NjgwLjAsIDQ5Nzc2LjBdLCAic3RkZXYiOiAxMTkxLjc1OTQ5
NTM0MTU5NjIsICJhdmciOiA0ODMxNi43OTk5OTk5OTk5OTYsICJ1bml0IjogImJ5dGVzIn0sICJC
aW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpNYWxsb2MiOiB7Im1pbiI6IDE2NDcyNzIu
MCwgIm1heCI6IDE2NzAzMzYuMCwgIm1lZGlhbiI6IDE2NTEzNjguMCwgInZhbHVlcyI6IFsxNjcw
MzM2LjAsIDE2NTY3MjguMCwgMTY1Mzc2OC4wLCAxNjUzODI0LjAsIDE2NTM4ODAuMCwgMTY1NTg0
OC4wLCAxNjUxNTg0LjAsIDE2NTMyNzIuMCwgMTY1MzQ4OC4wLCAxNjUwNjY0LjAsIDE2NTEzNjgu
MCwgMTY1MTM2OC4wLCAxNjUxMzY4LjAsIDE2NDcyNzIuMCwgMTY0NzI3Mi4wLCAxNjQ3MjcyLjAs
IDE2NDcyNzIuMCwgMTY0NzI3Mi4wLCAxNjQ3MjcyLjAsIDE2NDcyNzIuMF0sICJzdGRldiI6IDUz
NjQuMDg4MzA3MjkxNTA1LCAiYXZnIjogMTY1MTkyMC4wLCAidW5pdCI6ICJieXRlcyJ9fSwgImJy
YW5jaCI6ICJ3ZWJraXQtdHJ1bmsiLCAid2Via2l0LXJldmlzaW9uIjogIjEzMzYxOSJ9LCB7InRp
bWVzdGFtcCI6IDEzNTIyMjM2MjUsICJyZXN1bHRzIjogeyJCaW5kaW5ncy9kb2N1bWVudC1pbXBs
ZW1lbnRhdGlvbiI6IHsibWluIjogOTQ4LjYxNjYwMDc5MDUxMzksICJtYXgiOiA5OTUuMDI0ODc1
NjIxODkwNiwgIm1lZGlhbiI6IDk4OC44NzUxNTQ1MTE3NDMsICJ2YWx1ZXMiOiBbOTkxLjMyNTg5
ODM4OTA5NTQsIDk4Ny42NTQzMjA5ODc2NTQzLCA5ODcuNjU0MzIwOTg3NjU0MywgOTcyLjA1MzQ2
Mjk0MDQ2MTcsIDk0OC42MTY2MDA3OTA1MTM5LCA5OTEuMzI1ODk4Mzg5MDk1NCwgOTg4Ljg3NTE1
NDUxMTc0MywgOTkyLjU1NTgzMTI2NTUwODcsIDk5My43ODg4MTk4NzU3NzY0LCA5NzMuMjM2MDA5
NzMyMzYwMSwgOTk1LjAyNDg3NTYyMTg5MDYsIDk5Mi41NTU4MzEyNjU1MDg3LCA5ODguODc1MTU0
NTExNzQzLCA5NjkuNjk2OTY5Njk2OTY5NywgOTU0LjkwNzE2MTgwMzcxMzUsIDk5MC4wOTkwMDk5
MDA5OTAyLCA5OTUuMDI0ODc1NjIxODkwNiwgOTg1LjIyMTY3NDg3Njg0NzMsIDk4OC44NzUxNTQ1
MTE3NDMsIDk5NS4wMjQ4NzU2MjE4OTA2XSwgInN0ZGV2IjogMTMuNDAxMDE4NTU0NTAwNTE0LCAi
YXZnIjogOTg0LjExOTU5NTA2NTE1MjUsICJ1bml0IjogInJ1bnMvcyJ9LCAiQmluZGluZ3MvZG9j
dW1lbnQtaW1wbGVtZW50YXRpb246SlNIZWFwIjogeyJtaW4iOiA0NTIzMi4wLCAibWF4IjogNDk3
NzYuMCwgIm1lZGlhbiI6IDQ4MzEyLjAsICJ2YWx1ZXMiOiBbNDUyMzIuMCwgNDY5NjAuMCwgNDcw
NTYuMCwgNDcyNDAuMCwgNDczMzYuMCwgNDc2OTYuMCwgNDc3OTIuMCwgNDc4ODguMCwgNDc5ODQu
MCwgNDgyNjQuMCwgNDgzNjAuMCwgNDkwMDguMCwgNDkxMDQuMCwgNDkyMDAuMCwgNDkyOTYuMCwg
NDkzOTIuMCwgNDk0ODguMCwgNDk1ODQuMCwgNDk2ODAuMCwgNDk3NzYuMF0sICJzdGRldiI6IDEx
OTEuNzU5NDk1MzQxNTk2MiwgImF2ZyI6IDQ4MzE2Ljc5OTk5OTk5OTk5NiwgInVuaXQiOiAiYnl0
ZXMifSwgIkJpbmRpbmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uOk1hbGxvYyI6IHsibWluIjog
MTY1MTQ4OC4wLCAibWF4IjogMTY2NjM2OC4wLCAibWVkaWFuIjogMTY1MTcxMi4wLCAidmFsdWVz
IjogWzE2NjYzNjguMCwgMTY1MjY0MC4wLCAxNjUzNzI4LjAsIDE2NTM3ODQuMCwgMTY1Mzg0MC4w
LCAxNjU1ODA4LjAsIDE2NTE1OTIuMCwgMTY1MzI4MC4wLCAxNjUzNTUyLjAsIDE2NTQ4MjQuMCwg
MTY1MTQ4OC4wLCAxNjUxNDg4LjAsIDE2NTE0ODguMCwgMTY1MTU0NC4wLCAxNjUxNjAwLjAsIDE2
NTE2NTYuMCwgMTY1MTY1Ni4wLCAxNjUxNzEyLjAsIDE2NTE3MTIuMCwgMTY1MTcxMi4wXSwgInN0
ZGV2IjogMzM0Mi42Mzg0NTM2MTQwMTYsICJhdmciOiAxNjUzMjczLjU5OTk5OTk5OTksICJ1bml0
IjogImJ5dGVzIn19LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJ3ZWJraXQtcmV2aXNpb24i
OiAiMTMzNjE5In0sIHsidGltZXN0YW1wIjogMTM1MjIyMzY1MSwgInJlc3VsdHMiOiB7IkJpbmRp
bmdzL2RvY3VtZW50LWltcGxlbWVudGF0aW9uIjogeyJtaW4iOiA5ODQuMDA5ODQwMDk4NDAxLCAi
bWF4IjogOTk2LjI2NDAwOTk2MjY0MDEsICJtZWRpYW4iOiA5OTIuNTU1ODMxMjY1NTA4NywgInZh
bHVlcyI6IFs5OTYuMjY0MDA5OTYyNjQwMSwgOTg0LjAwOTg0MDA5ODQwMSwgOTg4Ljg3NTE1NDUx
MTc0MywgOTkyLjU1NTgzMTI2NTUwODcsIDk5My43ODg4MTk4NzU3NzY0LCA5OTMuNzg4ODE5ODc1
Nzc2NCwgOTkyLjU1NTgzMTI2NTUwODcsIDk5Mi41NTU4MzEyNjU1MDg3LCA5OTEuMzI1ODk4Mzg5
MDk1NCwgOTkyLjU1NTgzMTI2NTUwODcsIDk5MS4zMjU4OTgzODkwOTU0LCA5OTIuNTU1ODMxMjY1
NTA4NywgOTkyLjU1NTgzMTI2NTUwODcsIDk5My43ODg4MTk4NzU3NzY0LCA5ODguODc1MTU0NTEx
NzQzLCA5OTEuMzI1ODk4Mzg5MDk1NCwgOTkwLjA5OTAwOTkwMDk5MDIsIDk4Ny42NTQzMjA5ODc2
NTQzLCA5OTMuNzg4ODE5ODc1Nzc2NCwgOTkzLjc4ODgxOTg3NTc3NjRdLCAic3RkZXYiOiAyLjcy
ODg4MzE0MjQ1Nzk4NTYsICJhdmciOiA5OTEuNzAxNzEzNjA1NjE5NiwgInVuaXQiOiAicnVucy9z
In0sICJCaW5kaW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbjpKU0hlYXAiOiB7Im1pbiI6IDQ1
MjMyLjAsICJtYXgiOiA0OTc3Ni4wLCAibWVkaWFuIjogNDgzMTIuMCwgInZhbHVlcyI6IFs0NTIz
Mi4wLCA0Njk2MC4wLCA0NzA1Ni4wLCA0NzI0MC4wLCA0NzMzNi4wLCA0NzY5Ni4wLCA0Nzc5Mi4w
LCA0Nzg4OC4wLCA0Nzk4NC4wLCA0ODI2NC4wLCA0ODM2MC4wLCA0OTAwOC4wLCA0OTEwNC4wLCA0
OTIwMC4wLCA0OTI5Ni4wLCA0OTM5Mi4wLCA0OTQ4OC4wLCA0OTU4NC4wLCA0OTY4MC4wLCA0OTc3
Ni4wXSwgInN0ZGV2IjogMTE5MS43NTk0OTUzNDE1OTYyLCAiYXZnIjogNDgzMTYuNzk5OTk5OTk5
OTk2LCAidW5pdCI6ICJieXRlcyJ9LCAiQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb246
TWFsbG9jIjogeyJtaW4iOiAxNjQ3MjE2LjAsICJtYXgiOiAxNjcwMzM2LjAsICJtZWRpYW4iOiAx
NjUwOTYwLjAsICJ2YWx1ZXMiOiBbMTY3MDMzNi4wLCAxNjU2NzI4LjAsIDE2NTc4NjQuMCwgMTY1
MzgyNC4wLCAxNjUzODgwLjAsIDE2NTU4NDguMCwgMTY1MTU4NC4wLCAxNjQ5MTIwLjAsIDE2NDkz
OTIuMCwgMTY1MDYwOC4wLCAxNjUxMzEyLjAsIDE2NTEzMTIuMCwgMTY1MTMxMi4wLCAxNjQ3MjE2
LjAsIDE2NDcyMTYuMCwgMTY0NzIxNi4wLCAxNjQ3MjcyLjAsIDE2NDczMjguMCwgMTY0NzMyOC4w
LCAxNjQ3MzI4LjBdLCAic3RkZXYiOiA1NTYyLjgyNjU1OTA3MTkwNSwgImF2ZyI6IDE2NTE3MDEu
MiwgInVuaXQiOiAiYnl0ZXMifX0sICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1y
ZXZpc2lvbiI6ICIxMzM2MTkifV08L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172620</attachid>
            <date>2012-11-06 11:08:16 -0800</date>
            <delta_ts>2012-11-06 11:10:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101279-20121106110629.patch</filename>
            <type>text/plain</type>
            <size>3174</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdjYmEzNmQ2MjQxNjAx
NWFjYmIzZWM1ZGJmMTZlMDI4YWU1OGQwYi4uZTJiYWNlOWY1ZjE0YTMzYjk0OWQyZDJjY2RjMmJj
YjBlMjczZGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTExLTA2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24g
c2hvdWxkIHVzZSBTY3JpcHRXcmFwcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgRE9NSW1wbGVtZW50YXRpb24gU2Ny
aXB0V3JhcHBhYmxlLiBCb3RoIHRoZSBWOCBhbmQgSlNDCisgICAgICAgIGJpbmRpbmdzIGF1dG9t
YXRpY2FsbHkgZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGlzIGJhc2UgY2xhc3MgYW5kIHVzZQor
ICAgICAgICBpdCB0byBvcHRpbWl6ZSBnZXR0aW5nIGFuZCBzZXR0aW5nIEphdmFTY3JpcHQgd3Jh
cHBlcnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIDIzJSBwcm9ncmVzc2lvbiBvbiBCaW5k
aW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbiBmb3IKKyAgICAgICAgdGhlIFY4IGJpbmRpbmdz
IGFuZCBhIDY5JSBwcm9ncmVzc2lvbiBmb3IgdGhlIEpTQyBiaW5kaW5ncy4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorCisyMDEyLTExLTA2ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgU2NyaXB0V3JhcHBhYmxlIHNob3VsZCB3b3JrIGZv
ciBtb3JlIHRoYW4ganVzdCBOb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDEzMTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
aAppbmRleCA5ZDUzYjkxNmM1YmNiNmZhYjNjMjkxMjg5NWRiOTQyMGM1ZWE5YmQ4Li5kZmZiNTQ5
ZTNmYmU3ZmFhOTBjNTkxODc1YjkzNWMwZWVmYzUzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZWd1bGFyRXhwcmVzc2lv
bjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRE9NSW1wbGVtZW50YXRp
b24geworY2xhc3MgRE9NSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxET01JbXBsZW1lbnRhdGlvbj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IERPTUltcGxlbWVudGF0aW9uKGRvY3VtZW50KSk7IH0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb24uaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43OTkzODcwM2FmZTc4MjFiZGIwMDE2NTYzMzQ1MDUxOGNlNzlkZjk5Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9kb2N1bWVudC1pbXBs
ZW1lbnRhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7CisgICAgZGVz
Y3JpcHRpb246ICJUaGlzIGJlbmNobWFyayByZXBlYXRlZGx5IGFjY2Vzc2VzIHByb3BlcnRpZXMg
b2YgcmFuZ2UuIiwKKyAgICBydW46IGZ1bmN0aW9uKCkgeworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwMDsgKytpKQorICAgICAgICAgICAgZG9jdW1lbnQuaW1wbGVtZW50YXRpb247
Cit9fSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTNk
ZmU5YWZhYzcyMmE3ZjE2ZmU3NDZmZTg1YjVhYTUxOGUyMWQxZS4uN2U3MDhlNzJmYTBjYzlhNzUw
NGM4Yjk2NzBiNzk5ZGMyNjYwNDdmYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0xMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIERP
TUltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgU2NyaXB0V3JhcHBhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEyNzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHNpbXBsZSBQZXJmb3JtYW5j
ZVRlc3QgbWVhc3VyZSBob3cgcXVpY2tseSB3ZSBjYW4gYWNjZXNzCisgICAgICAgIGRvY3VtZW50
LmltcGxlbWVudGF0aW9uLiBUaGUgZ29hbCBvZiB0aGlzIHBlcmZvcm1hbmNlIHRlc3QgaXMganVz
dCB0bworICAgICAgICB2YWxpZGF0ZSB0aGF0IHVzaW5nIFNjcmlwdFdyYXBwYWJsZSBhY3R1YWxs
eSBtYWtlcyB0aGUgYmluZGluZ3MgZmFzdGVyLgorCisgICAgICAgICogQmluZGluZ3MvZG9jdW1l
bnQtaW1wbGVtZW50YXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTItMTEtMDUgIEdlb2ZmcmV5IEdh
cmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQgc2hvdWxkIGhhdmUgcGVy
Zm9ybWFuY2UgdGVzdHMgZm9yIGJvb2sgY2hhcHRlciByZWZsb3cK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172622</attachid>
            <date>2012-11-06 11:10:51 -0800</date>
            <delta_ts>2012-11-06 12:26:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101279-20121106110904.patch</filename>
            <type>text/plain</type>
            <size>3178</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdjYmEzNmQ2MjQxNjAx
NWFjYmIzZWM1ZGJmMTZlMDI4YWU1OGQwYi4uZTJiYWNlOWY1ZjE0YTMzYjk0OWQyZDJjY2RjMmJj
YjBlMjczZGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTExLTA2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRE9NSW1wbGVtZW50YXRpb24g
c2hvdWxkIHVzZSBTY3JpcHRXcmFwcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMTI3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgRE9NSW1wbGVtZW50YXRpb24gU2Ny
aXB0V3JhcHBhYmxlLiBCb3RoIHRoZSBWOCBhbmQgSlNDCisgICAgICAgIGJpbmRpbmdzIGF1dG9t
YXRpY2FsbHkgZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGlzIGJhc2UgY2xhc3MgYW5kIHVzZQor
ICAgICAgICBpdCB0byBvcHRpbWl6ZSBnZXR0aW5nIGFuZCBzZXR0aW5nIEphdmFTY3JpcHQgd3Jh
cHBlcnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIDIzJSBwcm9ncmVzc2lvbiBvbiBCaW5k
aW5ncy9kb2N1bWVudC1pbXBsZW1lbnRhdGlvbiBmb3IKKyAgICAgICAgdGhlIFY4IGJpbmRpbmdz
IGFuZCBhIDY5JSBwcm9ncmVzc2lvbiBmb3IgdGhlIEpTQyBiaW5kaW5ncy4KKworICAgICAgICAq
IGRvbS9ET01JbXBsZW1lbnRhdGlvbi5oOgorCisyMDEyLTExLTA2ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgU2NyaXB0V3JhcHBhYmxlIHNob3VsZCB3b3JrIGZv
ciBtb3JlIHRoYW4ganVzdCBOb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDEzMTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
aAppbmRleCA5ZDUzYjkxNmM1YmNiNmZhYjNjMjkxMjg5NWRiOTQyMGM1ZWE5YmQ4Li5kZmZiNTQ5
ZTNmYmU3ZmFhOTBjNTkxODc1YjkzNWMwZWVmYzUzZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZWd1bGFyRXhwcmVzc2lv
bjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgRE9NSW1wbGVtZW50YXRp
b24geworY2xhc3MgRE9NSW1wbGVtZW50YXRpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxET01JbXBsZW1lbnRhdGlvbj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IERPTUltcGxlbWVudGF0aW9uKGRvY3VtZW50KSk7IH0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb24uaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQmluZGluZ3MvZG9jdW1lbnQtaW1wbGVtZW50YXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNGExYmRmNmE0YWVlMzgxNzc1YmUzZGMzYjdhN2I0ZjM5NGQwZTc3Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9CaW5kaW5ncy9kb2N1bWVudC1pbXBs
ZW1lbnRhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitQZXJmVGVzdFJ1bm5lci5tZWFzdXJlUnVuc1BlclNlY29uZCh7CisgICAgZGVz
Y3JpcHRpb246ICJUaGlzIGJlbmNobWFyayByZXBlYXRlZGx5IGFjY2Vzc2VzIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLiIsCisgICAgcnVuOiBmdW5jdGlvbigpIHsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICAgICAgICAgIGRvY3VtZW50LmltcGxlbWVudGF0
aW9uOworfX0pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJm
b3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDEzZGZlOWFmYWM3MjJhN2YxNmZlNzQ2ZmU4NWI1YWE1MThlMjFkMWUuLjdlNzA4ZTcyZmEwY2M5
YTc1MDRjOGI5NjcwYjc5OWRjMjY2MDQ3ZmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMTEtMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBET01JbXBsZW1lbnRhdGlvbiBzaG91bGQgdXNlIFNjcmlwdFdyYXBwYWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMjc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBzaW1wbGUgUGVyZm9y
bWFuY2VUZXN0IG1lYXN1cmUgaG93IHF1aWNrbHkgd2UgY2FuIGFjY2VzcworICAgICAgICBkb2N1
bWVudC5pbXBsZW1lbnRhdGlvbi4gVGhlIGdvYWwgb2YgdGhpcyBwZXJmb3JtYW5jZSB0ZXN0IGlz
IGp1c3QgdG8KKyAgICAgICAgdmFsaWRhdGUgdGhhdCB1c2luZyBTY3JpcHRXcmFwcGFibGUgYWN0
dWFsbHkgbWFrZXMgdGhlIGJpbmRpbmdzIGZhc3Rlci4KKworICAgICAgICAqIEJpbmRpbmdzL2Rv
Y3VtZW50LWltcGxlbWVudGF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0IHNob3VsZCBoYXZl
IHBlcmZvcm1hbmNlIHRlc3RzIGZvciBib29rIGNoYXB0ZXIgcmVmbG93Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>