<?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>17164</bug_id>
          
          <creation_ts>2008-02-03 00:09:19 -0800</creation_ts>
          <short_desc>REGRESSION: JavaScript pop-up menu appears at wrong location when hovering image at http://news.chinatimes.com/</short_desc>
          <delta_ts>2008-02-05 00:01:57 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://news.chinatimes.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>brkemper</cc>
    
    <cc>cameowood</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>mrowe</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69228</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 00:09:19 -0800</bug_when>
    <thetext>The JS popup menu that appeared was being drawn at the wrong location on the page. When hovering over the mouse over the menu bar (3rd horizontal bar, background color is white, popups initially take a while to load as they are loaded from server) the popup does not appear under the current menu item, but instead hovers on the far left.

&lt;rdar://problem/5720947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69229</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-03 00:10:08 -0800</bug_when>
    <thetext>Whoops, forgot to say, this regressed in r29425 -- eg. the activationimp patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69239</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-03 05:23:12 -0800</bug_when>
    <thetext>I&apos;m working on a reduction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69240</commentid>
    <comment_count>3</comment_count>
      <attachid>18883</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-03 06:06:29 -0800</bug_when>
    <thetext>Created attachment 18883
Partial reduction

The HTML on this site is insane.  I&apos;ve spent nearly an hour working on a reduction so far but still have a way to go.  I&apos;m going to put this aside for now and hope that someone else can finish it off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69289</commentid>
    <comment_count>4</comment_count>
      <attachid>18891</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 17:16:32 -0800</bug_when>
    <thetext>Created attachment 18891
Further reduction

Here is a further reduction of this bug. The next thing to do is to merge in all of the dynamically included JS files. I&apos;ll do that soon, but first I need to shovel some snow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69297</commentid>
    <comment_count>5</comment_count>
      <attachid>18895</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 18:32:01 -0800</bug_when>
    <thetext>Created attachment 18895
Further reduction

This is a further reduction of the bug. It now doesn&apos;t load any JS files dynamically. I think I can still clean it up a lot and make the reduction even smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69300</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-02-03 18:48:18 -0800</bug_when>
    <thetext>Probably a duplicate of bug 17015.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69305</commentid>
    <comment_count>7</comment_count>
      <attachid>18896</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 19:57:08 -0800</bug_when>
    <thetext>Created attachment 18896
Further reduction

Here is a further reduction of the bug. I found out what&apos;s going wrong. In the function calculateSumOffset(), the statement

totalOffset += eval(&apos;item.&apos; + offsetName);

is not adding the value to totalOffset the first time through the loop. If you move the eval to a different line then it works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69307</commentid>
    <comment_count>8</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 20:18:13 -0800</bug_when>
    <thetext>I should also add that simply putting an

eval(&apos;item.&apos; + offsetName);

statement before the offending line makes it work right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69308</commentid>
    <comment_count>9</comment_count>
    <who name="Brad">brkemper</who>
    <bug_when>2008-02-03 20:34:51 -0800</bug_when>
    <thetext>I just ran into this same thing (as comment #7) in Version 3.0.4 (523.12.2).

Given a form named &quot;pops&quot; and the name of an input of that form assigned to the variable &quot;which&quot;, the following does not work (but should):

	var popUpText = &quot;&quot;;
	popUpText += eval(&quot;document.pops.&quot; + which + &quot;.value&quot;);
	alert(popUpText)

However, the following modification does work:

	var popUpText = &quot;&quot;;
	var thisthing = eval(&quot;document.pops.&quot; + which + &quot;.value&quot;)
	popUpText += thisthing;
	alert(popUpText)

This even simpler modification also works (but limits its use):

	var popUpText = eval(&quot;document.pops.&quot; + which + &quot;.value&quot;)
	alert(popUpText)

So, it seems thatthis version of Webkit does not like combining &quot;+=&quot; with &quot;eval&quot;.

The Safari 3.04 does not have this problem, and neither did version 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69309</commentid>
    <comment_count>10</comment_count>
      <attachid>18898</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 21:21:14 -0800</bug_when>
    <thetext>Created attachment 18898
Further reduction

This is about as simple as it gets. Some notes:

1) It doesn&apos;t even matter if there is a lookup being done in the eval(). I just used a constant here and it still exhibits the problem.

2) The bug is exhibited in function scope but not global scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69310</commentid>
    <comment_count>11</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-03 21:34:50 -0800</bug_when>
    <thetext>I found the likely cause of the bug. In the body of ReadModifyLocalVarNode::evaluate(), the slot is retrieved from the localStorage before calling valueForReadModifyAssignment(), which then would cause a tear-off by evaluating the call to eval. Similar problems (albeit more obscure ones) probably exist in the other callers of valueForReadModifyAssignment().

The most straightforward fix is to modify all of the callers of valueForReadModifyAssignment() to simply get the slot in which they will be storing the value one more time. A similar issue came up in the development of the tear-off patch, where using f.arguments could cause a tear-off that would require a slot to be retrieved again, and that&apos;s how I fixed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69325</commentid>
    <comment_count>12</comment_count>
      <attachid>18900</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-04 02:08:23 -0800</bug_when>
    <thetext>Created attachment 18900
Fix

Here&apos;s a patch that fixes this bug, as well as bug 16889 and bug 17015. I will add a nice big set of layout tests tomorrow, but I need to get some sleep first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69360</commentid>
    <comment_count>13</comment_count>
      <attachid>18900</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-04 09:55:49 -0800</bug_when>
    <thetext>Comment on attachment 18900
Fix

I don&apos;t see the point of putting these re-gotten locations into the local variables. I would write this as:

    exec-&gt;localStorage()[m_index].value = v;

and

    (*iter)-&gt;put(exec, m_ident, v);

Also, I would suggest adding a comment at each of these call sites explaining why we can&apos;t use slot and base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69427</commentid>
    <comment_count>14</comment_count>
      <attachid>18925</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-04 21:50:14 -0800</bug_when>
    <thetext>Created attachment 18925
Proposed patch

Here&apos;s the patch, along with tests. Darin, I agree with your comment so I changed the code. I also added a comment that should have been added to the original tear-off patch (I removed all of the copies of it with references to it, including the one referenced).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69429</commentid>
    <comment_count>15</comment_count>
      <attachid>18925</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-04 21:52:44 -0800</bug_when>
    <thetext>Comment on attachment 18925
Proposed patch

Add a newline to the end of the test and run sun-spider :D

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69431</commentid>
    <comment_count>16</comment_count>
      <attachid>18926</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-04 21:56:31 -0800</bug_when>
    <thetext>Created attachment 18926
Revised proposed patch

Oops. I always look at the diff in a text editor, but I didn&apos;t scroll to the last line. Here it is without the space

I will try to run SunSpider later tonight, but I need to do some work first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69433</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-04 22:29:51 -0800</bug_when>
    <thetext>*** Bug 16889 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69441</commentid>
    <comment_count>18</comment_count>
      <attachid>18930</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-02-04 23:15:07 -0800</bug_when>
    <thetext>Created attachment 18930
Revised proposed patch

I added more tests at Oliver&apos;s request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69443</commentid>
    <comment_count>19</comment_count>
      <attachid>18930</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-04 23:18:51 -0800</bug_when>
    <thetext>Comment on attachment 18930
Revised proposed patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69449</commentid>
    <comment_count>20</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-05 00:01:17 -0800</bug_when>
    <thetext>Landed r29997</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69451</commentid>
    <comment_count>21</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-02-05 00:01:57 -0800</bug_when>
    <thetext>*** Bug 17015 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18883</attachid>
            <date>2008-02-03 06:06:29 -0800</date>
            <delta_ts>2008-02-03 06:06:29 -0800</delta_ts>
            <desc>Partial reduction</desc>
            <filename>chinatimes.html</filename>
            <type>text/html</type>
            <size>28712</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">PEhUTUw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1iaWc1Ij4KICAgICAgICA8YmFzZSBocmVmPSJo
dHRwOi8vbmV3cy5jaGluYXRpbWVzLmNvbS8iPgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIHZh
ciB0aW1lciA9IDEwMDsKCiAgICAgICAgZnVuY3Rpb24gTU1fZmluZE9iaihuLCBkKSB7IC8vdjQu
MDEKICAgICAgICAgIHZhciBwLGkseDsgIGlmKCFkKSBkPWRvY3VtZW50OyBpZigocD1uLmluZGV4
T2YoIj8iKSk+MCYmcGFyZW50LmZyYW1lcy5sZW5ndGgpIHsKICAgICAgICAgICAgZD1wYXJlbnQu
ZnJhbWVzW24uc3Vic3RyaW5nKHArMSldLmRvY3VtZW50OyBuPW4uc3Vic3RyaW5nKDAscCk7fQog
ICAgICAgICAgaWYoISh4PWRbbl0pJiZkLmFsbCkgeD1kLmFsbFtuXTsgZm9yIChpPTA7IXgmJmk8
ZC5mb3Jtcy5sZW5ndGg7aSsrKSB4PWQuZm9ybXNbaV1bbl07CiAgICAgICAgICBmb3IoaT0wOyF4
JiZkLmxheWVycyYmaTxkLmxheWVycy5sZW5ndGg7aSsrKSB4PU1NX2ZpbmRPYmoobixkLmxheWVy
c1tpXS5kb2N1bWVudCk7CiAgICAgICAgICBpZigheCAmJiBkLmdldEVsZW1lbnRCeUlkKSB4PWQu
Z2V0RWxlbWVudEJ5SWQobik7IHJldHVybiB4OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24g
TU1fc2hvd0hpZGVMYXllcnMoKSB7IC8vdjYuMAogICAgICAgICAgdmFyIGkscCx2LG9iaixhcmdz
PU1NX3Nob3dIaWRlTGF5ZXJzLmFyZ3VtZW50czsKICAgICAgICAgIGZvciAoaT0wOyBpPChhcmdz
Lmxlbmd0aC0yKTsgaSs9MykgaWYgKChvYmo9TU1fZmluZE9iaihhcmdzW2ldKSkhPW51bGwpIHsg
dj1hcmdzW2krMl07CiAgICAgICAgICAgIGlmIChvYmouc3R5bGUpIHsgb2JqPW9iai5zdHlsZTsg
dj0odj09J3Nob3cnKT8ndmlzaWJsZSc6KHY9PSdoaWRlJyk/J2hpZGRlbic6djsgfQogICAgICAg
ICAgICBvYmoudmlzaWJpbGl0eT12OyB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBNTV9w
cmVsb2FkSW1hZ2VzKCkgeyAvL3YzLjAKICAgICAgICAgIHZhciBkPWRvY3VtZW50OyBpZihkLmlt
YWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgICAgICAgICAgdmFyIGks
aj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7IGk8
YS5sZW5ndGg7IGkrKykKICAgICAgICAgICAgaWYgKGFbaV0uaW5kZXhPZigiIyIpIT0wKXsgZC5N
TV9wW2pdPW5ldyBJbWFnZTsgZC5NTV9wW2orK10uc3JjPWFbaV07fX0KICAgICAgICB9CgogICAg
ICAgIGZ1bmN0aW9uIE1NX3N3YXBJbWdSZXN0b3JlKCkgeyAvL3YzLjAKICAgICAgICAgIHZhciBp
LHgsYT1kb2N1bWVudC5NTV9zcjsgZm9yKGk9MDthJiZpPGEubGVuZ3RoJiYoeD1hW2ldKSYmeC5v
U3JjO2krKykgeC5zcmM9eC5vU3JjOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTU1fc3dh
cEltYWdlKCkgeyAvL3YzLjAKICAgICAgICAgIHZhciBpLGo9MCx4LGE9TU1fc3dhcEltYWdlLmFy
Z3VtZW50czsgZG9jdW1lbnQuTU1fc3I9bmV3IEFycmF5OyBmb3IoaT0wO2k8KGEubGVuZ3RoLTIp
O2krPTMpCiAgICAgICAgICAgaWYgKCh4PU1NX2ZpbmRPYmooYVtpXSkpIT1udWxsKXtkb2N1bWVu
dC5NTV9zcltqKytdPXg7IGlmKCF4Lm9TcmMpIHgub1NyYz14LnNyYzsgeC5zcmM9YVtpKzJdO30K
ICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIENyZWF0U2NyaXB0KFNyYykgCiAgICAgICAgewog
ICAgICAgIHZhciBvRElWUmVzdWx0cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsg
CiAgICAgICAgb0RJVlJlc3VsdHMuc3JjPVNyYzsgCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImhlYWQiKS5pdGVtKDApLmFwcGVuZENoaWxkKG9ESVZSZXN1bHRzKTsKICAg
ICAgICB9CgoKICAgICAgICA8L3NjcmlwdD4KICAgIDwvaGVhZD4KICAgIDxib2R5PgogICAgICAg
IDxkaXYgaWQ9Im1lbnVUYWJsZSI+CiAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGFsaWdu
PSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+PHRib2R5Pjx0cj48dGQg
d2lkdGg9IjcyIiB2YWxpZ249ImJvdHRvbSI+PGEgaHJlZj0iI25ld3MiPjxpbWcgc3JjPSIvMjAw
N0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1uZXdzLmdpZiIgd2lkdGg9IjcyIiBoZWlnaHQ9
IjMwIiBib3JkZXI9IjAiIGFsdD0i57mac+e9iEQiIGlkPSJuZXdzaW1nIiBvbmNsaWNrPSJ3aW5k
b3cubG9jYXRpb24uaHJlZj0mcXVvdDsvQ2hpbmF0aW1lcy9pbmRleC9pbmRleC8jbmV3cyZxdW90
OzsiPjwvYT48L3RkPjx0ZCB3aWR0aD0iNzIiIHZhbGlnbj0iYm90dG9tIj48YSBocmVmPSIjbW9u
ZXkiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1tb25leTIuZ2lm
IiB3aWR0aD0iNzIiIGhlaWdodD0iMzAiIGJvcmRlcj0iMCIgYWx0PSLnsKF657CeXSIgaWQ9Im1v
bmV5aW1nIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24uaHJlZj0mcXVvdDsvQ01vbmV5L01vbmV5
LWluZGV4LzAsNDc4OCwsMDAuaHRtbCZxdW90OzsiIG9ubW91c2VvdmVyPSJNTV9zd2FwSW1hZ2Uo
JnF1b3Q7bW9uZXlpbWcmcXVvdDssJnF1b3Q7JnF1b3Q7LCZxdW90Oy8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzLzAwLW1vbmV5LmdpZiZxdW90OywwKTtoaWRlQWxsKCk7IiBvbm1vdXNlb3V0
PSJNTV9zd2FwSW1nUmVzdG9yZSgpOyI+PC9hPjwvdGQ+PHRkIHdpZHRoPSI3MiIgdmFsaWduPSJi
b3R0b20iPjxhIGhyZWY9IiNicm9hZGNhc3QiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWlu
ZGV4L2ltYWdlcy8wMC1icmNhc3QyLmdpZiIgd2lkdGg9IjcyIiBoZWlnaHQ9IjMwIiBib3JkZXI9
IjAiIGFsdD0i57+5c+e/uee/uyIgaWQ9ImJyb2FkY2FzdGltZyIgb25jbGljaz0id2luZG93Lmxv
Y2F0aW9uLmhyZWY9JnF1b3Q7aHR0cDovL2FsaXZlLmNoaW5hdGltZXMuY29tLyZxdW90OzsiIG9u
bW91c2VvdmVyPSJNTV9zd2FwSW1hZ2UoJnF1b3Q7YnJvYWRjYXN0aW1nJnF1b3Q7LCZxdW90OyZx
dW90OywmcXVvdDsvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1icmNhc3QuZ2lmJnF1
b3Q7LDApO2hpZGVBbGwoKTsiIG9ubW91c2VvdXQ9Ik1NX3N3YXBJbWdSZXN0b3JlKCk7Ij48L2E+
PC90ZD48dGQgd2lkdGg9IjcyIiB2YWxpZ249ImJvdHRvbSI+PGEgaHJlZj0iI2F2Ij48aW1nIHNy
Yz0iLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtYXYyLmdpZiIgd2lkdGg9IjcyIiBo
ZWlnaHQ9IjMwIiBib3JkZXI9IjAiIGFsdD0i57+5duewq+e5lSIgaWQ9ImF2aW1nIiBvbmNsaWNr
PSJ3aW5kb3cubG9jYXRpb24uaHJlZj0mcXVvdDsvQ2hpbmF0aW1lcy9pbmRleC9pbmRleC8jYXYm
cXVvdDs7IiBvbm1vdXNlb3Zlcj0iTU1fc3dhcEltYWdlKCZxdW90O2F2aW1nJnF1b3Q7LCZxdW90
OyZxdW90OywmcXVvdDsvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1hdi5naWYmcXVv
dDssMCk7aGlkZUFsbCgpOyIgb25tb3VzZW91dD0iTU1fc3dhcEltZ1Jlc3RvcmUoKTsiPjwvYT48
L3RkPjx0ZCB3aWR0aD0iNzIiIHZhbGlnbj0iYm90dG9tIj48YSBocmVmPSIjY2FtcHVzIj48aW1n
IHNyYz0iLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtY2FtcHVzMi5naWYiIHdpZHRo
PSI3MiIgaGVpZ2h0PSIzMCIgYm9yZGVyPSIwIiBhbHQ9Iuewp++/vee5nuefhyIgaWQ9ImNhbXB1
c2ltZyIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLmhyZWY9JnF1b3Q7L0NoaW5hdGltZXMvaW5k
ZXgvaW5kZXgvI2NhbXB1cyZxdW90OzsiIG9ubW91c2VvdmVyPSJNTV9zd2FwSW1hZ2UoJnF1b3Q7
Y2FtcHVzaW1nJnF1b3Q7LCZxdW90OyZxdW90OywmcXVvdDsvMjAwN0N0aS8yMDA3Q3RpLWluZGV4
L2ltYWdlcy8wMC1jYW1wdXMuZ2lmJnF1b3Q7LDApO2hpZGVBbGwoKTsiIG9ubW91c2VvdXQ9Ik1N
X3N3YXBJbWdSZXN0b3JlKCk7Ij48L2E+PC90ZD48dGQgd2lkdGg9IjcyIiB2YWxpZ249ImJvdHRv
bSI+PGEgaHJlZj0iI3ppbmUiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdl
cy8wMC16aW5lMi5naWYiIHdpZHRoPSI3MiIgaGVpZ2h0PSIzMCIgYm9yZGVyPSIwIiBhbHQ9Iu+/
vee5que9iHgiIGlkPSJ6aW5laW1nIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb24uaHJlZj0mcXVv
dDsvQ2hpbmF0aW1lcy9pbmRleC9pbmRleC8jemluZSZxdW90OzsiIG9ubW91c2VvdmVyPSJNTV9z
d2FwSW1hZ2UoJnF1b3Q7emluZWltZyZxdW90OywmcXVvdDsmcXVvdDssJnF1b3Q7LzIwMDdDdGkv
MjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtemluZS5naWYmcXVvdDssMCk7aGlkZUFsbCgpOyIgb25t
b3VzZW91dD0iTU1fc3dhcEltZ1Jlc3RvcmUoKTsiPjwvYT48L3RkPjx0ZCB3aWR0aD0iNzIiIHZh
bGlnbj0iYm90dG9tIj48YSBocmVmPSIjYmxvZyI+PGltZyBzcmM9Ii8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzLzAwLWJsb2cyLmdpZiIgd2lkdGg9IjcyIiBoZWlnaHQ9IjMwIiBib3JkZXI9
IjAiIGFsdD0i57On55mS57mh56mh57Cn55aGIiBpZD0iYmxvZ2ltZyIgb25jbGljaz0id2luZG93
LmxvY2F0aW9uLmhyZWY9JnF1b3Q7L0NoaW5hdGltZXMvaW5kZXgvaW5kZXgvI2Jsb2cmcXVvdDs7
IiBvbm1vdXNlb3Zlcj0iTU1fc3dhcEltYWdlKCZxdW90O2Jsb2dpbWcmcXVvdDssJnF1b3Q7JnF1
b3Q7LCZxdW90Oy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLWJsb2cuZ2lmJnF1b3Q7
LDApO2hpZGVBbGwoKTsiIG9ubW91c2VvdXQ9Ik1NX3N3YXBJbWdSZXN0b3JlKCk7Ij48L2E+PC90
ZD48dGQgd2lkdGg9IjcwIj7nmZJAPC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj4KICAg
ICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICA8ZGl2IGlkPSJzdWJNZW51VGFibGUiPjx0
YWJsZSBpZD0iVGFibGVfMDEiIGhlaWdodD0iMjMiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAi
IGNlbGxzcGFjaW5nPSIwIj48dGJvZHk+PHRyPjx0ZCB3aWR0aD0iNTEiIGlkPSJkYWlseW5ld3Nw
YXBlciI+PGEgaHJlZj0iaHR0cDovL3BkZi5jaGluYXRpbWVzLmNvbS9kYWlseW5ld3NwYXBlci9p
bmRleC5odG0iIHRhcmdldD0iZGFpbHluZXdzcGFwZXIiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3
Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzAwLmdpZiIgaGVpZ2h0PSIyMyIgYm9yZGVyPSIwIiB3
aWR0aD0iNTEiIGFsdD0iIj48L2E+PC90ZD48dGQgd2lkdGg9IjcwIiBpZD0iIj48YSBocmVmPSIv
MjAwN0N0aS8yMDA3Q3RpLVBuZXdzLzIwMDdDdGktUG5ld3MtbGlzdC8wLDQ1MjMsLDAwLmh0bWwi
PjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzAxLmdpZiIg
aGVpZ2h0PSIyMyIgYm9yZGVyPSIwIiB3aWR0aD0iNzAiIGFsdD0iIj48L2E+PC90ZD48dGQgd2lk
dGg9IjQ0IiBpZD0iVDAxIj48YSBocmVmPSIvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1O
ZXdzLUxpc3QvMCw0NTIwLDExMDUwMSwwMC5odG1sIj48aW1nIHNyYz0iLzIwMDdDdGkvMjAwN0N0
aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wMi5naWYiIGhlaWdodD0iMjMiIGJvcmRlcj0iMCIgd2lk
dGg9IjQ0IiBhbHQ9IiI+PC9hPjwvdGQ+PHRkIHdpZHRoPSI0MyIgaWQ9IlQwMiI+PGEgaHJlZj0i
LzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MDIsMDAu
aHRtbCI+PGltZyBzcmM9Ii8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDMu
Z2lmIiBoZWlnaHQ9IjIzIiBib3JkZXI9IjAiIHdpZHRoPSI0MyIgYWx0PSIiPjwvYT48L3RkPjx0
ZCB3aWR0aD0iNDQiIGlkPSJUMDciPjxhIGhyZWY9Ii8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3
Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTA3LDAwLmh0bWwiPjxpbWcgc3JjPSIvMjAwN0N0aS8y
MDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzA0LmdpZiIgaGVpZ2h0PSIyMyIgYm9yZGVyPSIw
IiB3aWR0aD0iNDQiIGFsdD0iIj48L2E+PC90ZD48dGQgd2lkdGg9IjQzIiBpZD0iVDA4Ij48YSBo
cmVmPSIvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUw
OCwwMC5odG1sIj48aW1nIHNyYz0iLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rp
cl8wNS5naWYiIGhlaWdodD0iMjMiIGJvcmRlcj0iMCIgd2lkdGg9IjQzIiBhbHQ9IiI+PC9hPjwv
dGQ+PHRkIHdpZHRoPSI0NCIgaWQ9IlQwMyI+PGEgaHJlZj0iLzIwMDdDdGkvMjAwN0N0aS1OZXdz
LzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MDMsMDAuaHRtbCI+PGltZyBzcmM9Ii8yMDA3
Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDYuZ2lmIiBoZWlnaHQ9IjIzIiBib3Jk
ZXI9IjAiIHdpZHRoPSI0NCIgYWx0PSIiPjwvYT48L3RkPjx0ZCB3aWR0aD0iNDQiIGlkPSJUMDQi
PjxhIGhyZWY9Ii8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAs
MTEwNTA0LDAwLmh0bWwiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9u
ZXdzZGlyXzA3LmdpZiIgaGVpZ2h0PSIyMyIgYm9yZGVyPSIwIiB3aWR0aD0iNDQiIGFsdD0iIj48
L2E+PC90ZD48dGQgd2lkdGg9IjQ0IiBpZD0iVDA1Ij48YSBocmVmPSIvMjAwN0N0aS8yMDA3Q3Rp
LU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwNSwwMC5odG1sIj48aW1nIHNyYz0i
LzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wOC5naWYiIGhlaWdodD0iMjMi
IGJvcmRlcj0iMCIgd2lkdGg9IjQ0IiBhbHQ9IiI+PC9hPjwvdGQ+PHRkIHdpZHRoPSI0MyIgaWQ9
IlQwNiI+PGEgaHJlZj0iLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAs
NDUyMCwxMTA1MDYsMDAuaHRtbCI+PGltZyBzcmM9Ii8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1h
Z2VzL25ld3NkaXJfMDkuZ2lmIiBoZWlnaHQ9IjIzIiBib3JkZXI9IjAiIHdpZHRoPSI0MyIgYWx0
PSIiPjwvYT48L3RkPjx0ZCB3aWR0aD0iNDMiIGlkPSJUMTQiPjxhIGhyZWY9Ii8yMDA3Q3RpLzIw
MDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTE0LDAwLmh0bWwiPjxpbWcg
c3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzEwLmdpZiIgaGVpZ2h0
PSIyMyIgYm9yZGVyPSIwIiB3aWR0aD0iNDMiIGFsdD0iIj48L2E+PC90ZD48dGQgd2lkdGg9IjQz
IiBpZD0iVDA5Ij48YSBocmVmPSIvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxp
c3QvMCw0NTIwLDExMDUwOSwwMC5odG1sIj48aW1nIHNyYz0iLzIwMDdDdGkvMjAwN0N0aS1pbmRl
eC9pbWFnZXMvbmV3c2Rpcl8xMS5naWYiIGhlaWdodD0iMjMiIGJvcmRlcj0iMCIgd2lkdGg9IjQz
IiBhbHQ9IiI+PC9hPjwvdGQ+PHRkIHdpZHRoPSI0NiIgaWQ9IlQxOSI+PGEgaHJlZj0iLzIwMDdD
dGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MTksMDAuaHRtbCI+
PGltZyBzcmM9Ii8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMTIuZ2lmIiBo
ZWlnaHQ9IjIzIiBib3JkZXI9IjAiIHdpZHRoPSI0NiIgYWx0PSIiPjwvYT48L3RkPjx0ZCB3aWR0
aD0iNDQiIGlkPSJUMTgiPjxhIGhyZWY9Ii8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5l
d3MtTGlzdC8wLDQ1MjAsMTEwNTE4LDAwLmh0bWwiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3Rp
LWluZGV4L2ltYWdlcy9uZXdzZGlyXzEzLmdpZiIgaGVpZ2h0PSIyMyIgYm9yZGVyPSIwIiB3aWR0
aD0iNDQiIGFsdD0iIj48L2E+PC90ZD48dGQgd2lkdGg9IjQyIiBpZD0iVDExIj48YSBocmVmPSIv
MjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxMSwwMC5o
dG1sIj48aW1nIHNyYz0iLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xNC5n
aWYiIGhlaWdodD0iMjMiIGJvcmRlcj0iMCIgd2lkdGg9IjQyIiBhbHQ9IiI+PC9hPjwvdGQ+PHRk
IHdpZHRoPSI0NCIgaWQ9IlQxMiI+PGEgaHJlZj0iLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdD
dGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MTIsMDAuaHRtbCI+PGltZyBzcmM9Ii8yMDA3Q3RpLzIw
MDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMTUuZ2lmIiBoZWlnaHQ9IjIzIiBib3JkZXI9IjAi
IHdpZHRoPSI0NCIgYWx0PSIiPjwvYT48L3RkPjx0ZCB3aWR0aD0iNDciIGlkPSJUMTciPjxhIGhy
ZWY9Ii8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTE3
LDAwLmh0bWwiPjxpbWcgc3JjPSIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGly
XzE2LmdpZiIgaGVpZ2h0PSIyMyIgYm9yZGVyPSIwIiB3aWR0aD0iNDciIGFsdD0iIj48L2E+PC90
ZD48dGQgd2lkdGg9IjQ4IiBpZD0iVDEzIj48YSBocmVmPSIvMjAwN0N0aS8yMDA3Q3RpLU5ld3Mv
MjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxMywwMC5odG1sIj48aW1nIHNyYz0iLzIwMDdD
dGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xNy5naWYiIGhlaWdodD0iMjMiIGJvcmRl
cj0iMCIgd2lkdGg9IjQ4IiBhbHQ9IiI+PC9hPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9k
aXY+CgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgdmFyIHNEb21haW49IiI7CiAgICAgICAgZnVu
Y3Rpb24gU3RyaW5nQnVmZmVyKCkgewogICAgICAgICAgICB0aGlzLl9fc3RyaW5nc19fID0gbmV3
IEFycmF5OwogICAgICAgIH0KCiAgICAgICAgU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5hcHBlbmQg
PSBmdW5jdGlvbiAoc3RyKSB7CiAgICAgICAgICAgIHRoaXMuX19zdHJpbmdzX18ucHVzaChzdHIp
OwogICAgICAgIH07CgogICAgICAgIFN0cmluZ0J1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fc3RyaW5nc19fLmpvaW4oIiIp
OwogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIENoYW5uZWxJdGVtKGhyZWYsIHNyYyxzcmMy
LGFsdCx0YWdvbm9mZixpZCkKICAgICAgICB7CiAgICAgICAgCXRoaXMuaHJlZiA9IGhyZWY7CiAg
ICAgICAgCXRoaXMuc3JjID0gc3JjOwogICAgICAgIAl0aGlzLnNyYzIgPSBzcmMyOwogICAgICAg
IAl0aGlzLmFsdCA9IGFsdDsKICAgICAgICAJdGhpcy50YWdvbm9mZiA9IHRhZ29ub2ZmOwogICAg
ICAgIAl0aGlzLmlkID0gaWQ7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBTdWJDaGFubmVs
SXRlbSh3aWR0aCwgaHJlZiwgc3JjLCBhbHQgLGlkKQogICAgICAgIHsKICAgICAgICAJdGhpcy53
aWR0aCA9IHdpZHRoOwogICAgICAgIAl0aGlzLmhyZWYgPSBocmVmOwogICAgICAgIAl0aGlzLnNy
YyA9IHNyYzsKICAgICAgICAJdGhpcy5hbHQgPSBhbHQ7CiAgICAgICAgCXRoaXMuaWQgPSBpZDsK
ICAgICAgICB9CiAgICAgICAgdmFyIEN0aW1lbnUgPSBuZXcgQXJyYXkoCiAgICAgICAgCQluZXcg
Q2hhbm5lbEl0ZW0oIi8yMDA3Q3RpLzIwMDdDdGktVGFiL2luYy8yMDA3Q3RpLUNoYW5uZWwtTmV3
cy8wLDQ1MzgsLDAwLnNodG1sIiAgICAsIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAw
LW5ld3MuZ2lmIiAgICwgIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLW5ld3MyLmdp
ZiIgICAgICAgLCAi57mac+e9iEQiLCB0cnVlLCJuZXdzIiksCiAgICAgICAgCQluZXcgQ2hhbm5l
bEl0ZW0oc0RvbWFpbisiL0NNb25leS9Nb25leS1pbmRleC8wLDQ3ODgsLDAwLmh0bWwiICAsIi8y
MDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLW1vbmV5LmdpZiIgLCAiLzIwMDdDdGkvMjAw
N0N0aS1pbmRleC9pbWFnZXMvMDAtbW9uZXkyLmdpZiIgICAgICwgIuewoXrnsJ5dIiwgZmFsc2Us
Im1vbmV5IiksCiAgICAgICAgCQluZXcgQ2hhbm5lbEl0ZW0oImh0dHA6Ly9hbGl2ZS5jaGluYXRp
bWVzLmNvbS8iICAsIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLWJyY2FzdC5naWYi
ICwgIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLWJyY2FzdDIuZ2lmIiAgICAgLCAi
57+5c+e/uee/uyIsIGZhbHNlLCJicm9hZGNhc3QiKSwKICAgICAgICAJCW5ldyBDaGFubmVsSXRl
bSgiLzIwMDdDdGkvMjAwN0N0aS1UYWIvaW5jLzIwMDdDdGktQ2hhbm5lbC1NZWRpYS8wLDQ1NDAs
LDAwLmh0bWwiICAgICAgLCIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1hdi5naWYi
ICAgICAgLCIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC1hdjIuZ2lmIiAgICAgICAg
ICAsIue/uXbnsKvnuZUiICxmYWxzZSwiYXYiKSwKICAgICAgICAJCW5ldyBDaGFubmVsSXRlbSgi
LzIwMDdDdGkvMjAwN0N0aS1UYWIvaW5jLzIwMDdDdGktQ2hhbm5lbC1DYW1wdXMvMCw0NTM5LCww
MC5zaHRtbCIgICwiLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtY2FtcHVzLmdpZiIg
LCAiLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtY2FtcHVzMi5naWYiICAgICAsICLn
sKfvv73nuZ7nn4ciLCBmYWxzZSwiY2FtcHVzIiksCiAgICAgICAgCQluZXcgQ2hhbm5lbEl0ZW0o
Ii8yMDA3Q3RpLzIwMDdDdGktVGFiL2luYy8yMDA3Q3RpLUNoYW5uZWwtTWFnYXppbmUvMCw0NTQx
LCwwMC5zaHRtbCIgICAgLCIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC16aW5lLmdp
ZiIgICAgLCIvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMC16aW5lMi5naWYiICAgICAg
ICAsIu+/vee5que9iHgiLGZhbHNlLCJ6aW5lIiksCiAgICAgICAgCQluZXcgQ2hhbm5lbEl0ZW0o
Ii8yMDA3Q3RpLzIwMDdDdGktVGFiL2luYy8yMDA3Q3RpLUNoYW5uZWwtQmxvZy8wLDQ1NDMsLDAw
LnNodG1sIiAgICAsIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLWJsb2cuZ2lmIiAg
ICAsIi8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAwLWJsb2cyLmdpZiIsIuezp+eZkue5
oeepoeewp+eWhiIsZmFsc2UsImJsb2ciKSwKICAgICAgICAJCW51bGwKCiAgICAgICAgCQkvL25l
dyBDaGFubmVsSXRlbSgiaHR0cDovL2Jpei5jaGluYXRpbWVzLmNvbS9pbmRleC5hc3B4IiwiLzIw
MDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDAtYml6LmdpZiIsIi8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzLzAwLWJpejIuZ2lmIiwi57Ce77+957Cj55mSIixmYWxzZSwiYml6IikKICAg
ICAgICAJKTsgICAgICAgIAoKICAgICAgICB2YXIgbmV3c1N1Yk1lbnUgPSBuZXcgQXJyYXkoCiAg
ICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDUxLCAnaHR0cDovL3BkZi5jaGluYXRpbWVzLmNvbS9k
YWlseW5ld3NwYXBlci9pbmRleC5odG0nLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMv
bmV3c2Rpcl8wMC5naWYnLCAnJywgJ2RhaWx5bmV3c3BhcGVyJyksIAogICAgICAgIG5ldyBTdWJD
aGFubmVsSXRlbSg3MCwgc0RvbWFpbisnLzIwMDdDdGkvMjAwN0N0aS1QbmV3cy8yMDA3Q3RpLVBu
ZXdzLWxpc3QvMCw0NTIzLCwwMC5odG1sJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2Vz
L25ld3NkaXJfMDEuZ2lmJywgJycsICcnKSwgICAgICAgCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJ
dGVtKDQ0LCBzRG9tYWluKycvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3Qv
MCw0NTIwLDExMDUwMSwwMC5odG1sJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25l
d3NkaXJfMDIuZ2lmJywgJycsICdUMDEnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDMs
IHNEb21haW4rJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAs
MTEwNTAyLDAwLmh0bWwnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8w
My5naWYnLCAnJywgJ1QwMicpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0NCwgc0RvbWFp
bisnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MDcs
MDAuaHRtbCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzA0LmdpZics
ICcnLCAnVDA3JyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQzLCBzRG9tYWluKycvMjAw
N0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwOCwwMC5odG1s
JywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDUuZ2lmJywgJycsICdU
MDgnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDQsIHNEb21haW4rJy8yMDA3Q3RpLzIw
MDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTAzLDAwLmh0bWwnLCAnLzIw
MDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wNi5naWYnLCAnJywgJ1QwMycpLAog
ICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0NCwgc0RvbWFpbisnLzIwMDdDdGkvMjAwN0N0aS1O
ZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MDQsMDAuaHRtbCcsICcvMjAwN0N0aS8y
MDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzA3LmdpZicsICcnLCAnVDA0JyksCiAgICAgICAg
bmV3IFN1YkNoYW5uZWxJdGVtKDQ0LCBzRG9tYWluKycvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAw
N0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwNSwwMC5odG1sJywgJy8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzL25ld3NkaXJfMDguZ2lmJywgJycsICdUMDUnKSwKICAgICAgICBuZXcgU3Vi
Q2hhbm5lbEl0ZW0oNDMsIHNEb21haW4rJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5l
d3MtTGlzdC8wLDQ1MjAsMTEwNTA2LDAwLmh0bWwnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9p
bWFnZXMvbmV3c2Rpcl8wOS5naWYnLCAnJywgJ1QwNicpLAogICAgICAgIG5ldyBTdWJDaGFubmVs
SXRlbSg0Mywgc0RvbWFpbisnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0
LzAsNDUyMCwxMTA1MTQsMDAuaHRtbCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9u
ZXdzZGlyXzEwLmdpZicsICcnLCAnVDE0JyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQz
LCBzRG9tYWluKycvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIw
LDExMDUwOSwwMC5odG1sJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJf
MTEuZ2lmJywgJycsICdUMDknKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDYsIHNEb21h
aW4rJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTE5
LDAwLmh0bWwnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xMi5naWYn
LCAnJywgJ1QxOScpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0NCwgc0RvbWFpbisnLzIw
MDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MTgsMDAuaHRt
bCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzEzLmdpZicsICcnLCAn
VDE4JyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQyLCBzRG9tYWluKycvMjAwN0N0aS8y
MDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxMSwwMC5odG1sJywgJy8y
MDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMTQuZ2lmJywgJycsICdUMTEnKSwK
ICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDQsIHNEb21haW4rJy8yMDA3Q3RpLzIwMDdDdGkt
TmV3cy8yMDA3Q3RpLU5ld3MtTGlzdC8wLDQ1MjAsMTEwNTEyLDAwLmh0bWwnLCAnLzIwMDdDdGkv
MjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xNS5naWYnLCAnJywgJ1QxMicpLAogICAgICAg
IG5ldyBTdWJDaGFubmVsSXRlbSg0Nywgc0RvbWFpbisnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIw
MDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MTcsMDAuaHRtbCcsICcvMjAwN0N0aS8yMDA3Q3Rp
LWluZGV4L2ltYWdlcy9uZXdzZGlyXzE2LmdpZicsICcnLCAnVDE3JyksCiAgICAgICAgbmV3IFN1
YkNoYW5uZWxJdGVtKDQ4LCBzRG9tYWluKycvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1O
ZXdzLUxpc3QvMCw0NTIwLDExMDUxMywwMC5odG1sJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgv
aW1hZ2VzL25ld3NkaXJfMTcuZ2lmJywgJycsICdUMTMnKQoKICAgICAgICApOwoKICAgICAgICB2
YXIgY2FtcHVzU3ViTWVudSA9IG5ldyBBcnJheSgKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0o
NzQsICdodHRwOi8vbmV3c3R5bGUuY2hpbmF0aW1lcy5jb20vJywgJy8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzLzAyLW1lbnVfMDZhLmdpZicsICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5l
bEl0ZW0oNzQsICdodHRwOi8vbmV3c3RvcnkuY2hpbmF0aW1lcy5jb20vJywgJy8yMDA3Q3RpLzIw
MDdDdGktaW5kZXgvaW1hZ2VzLzAyLW1lbnVfMDdhLmdpZicsICcnKSwKICAgICAgICBuZXcgU3Vi
Q2hhbm5lbEl0ZW0oNzQgLCAnaHR0cDovL2NjdW5ld3MuY2hpbmF0aW1lcy5jb20vJywgJy8yMDA3
Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAyLW1lbnVfMDhhLmdpZicsICcnKSwKICAgICAgICBu
ZXcgU3ViQ2hhbm5lbEl0ZW0oNzQgLCAnaHR0cDovL05ITmV3cy5jaGluYXRpbWVzLmNvbS8nLCAn
LzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDItbWVudV8wOWEuZ2lmJywgJycpIAogICAg
ICAgIC8vbmV3IFN1YkNoYW5uZWxJdGVtKDc0ICwgJ2h0dHA6Ly9jYW1wdXMuY2hpbmF0aW1lcy5j
b20vaWNlL2luZGV4Lmh0bScsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMi1tZW51
XzEwYS5naWYnLCAnJykgCgogICAgICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIHZhciBhdlN1Yk1lbnUgPSBuZXcgQXJy
YXkoCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDg2ICwgJyMnLCAnLzIwMDdDdGkvMjAwN0N0
aS1pbmRleC9pbWFnZXMvMDMtbWVudV8wMS5naWYnLCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5u
ZWxJdGVtKDc3ICwgJ2h0dHA6Ly9mb3J1bXMuY2hpbmF0aW1lcy5jb20vcmVwb3J0L21haW4vdmlk
ZW9fMDEuaHRtJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAzLW1lbnVfMDIuZ2lm
JywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg2NiAsICdodHRwOi8vZm9ydW1zLmNo
aW5hdGltZXMuY29tL3JlcG9ydC9tYWluL3ZpZGVvXzAyLmh0bScsICcvMjAwN0N0aS8yMDA3Q3Rp
LWluZGV4L2ltYWdlcy8wMy1tZW51XzAzLmdpZicsICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5l
bEl0ZW0oNjcgLCAnaHR0cDovL2ZvcnVtcy5jaGluYXRpbWVzLmNvbS9yZXBvcnQvbWFpbi92aWRl
b18wMy5odG0nLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDMtbWVudV8wNC5naWYn
LCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDY2ICwgJ2h0dHA6Ly9mb3J1bXMuY2hp
bmF0aW1lcy5jb20vcmVwb3J0L21haW4vdmlkZW9fMDQuaHRtJywgJy8yMDA3Q3RpLzIwMDdDdGkt
aW5kZXgvaW1hZ2VzLzAzLW1lbnVfMDUuZ2lmJywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVs
SXRlbSg2NiAsICdodHRwOi8vZm9ydW1zLmNoaW5hdGltZXMuY29tL3JlcG9ydC9tYWluL3ZpZGVv
XzA1Lmh0bScsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wMy1tZW51XzA2LmdpZics
ICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oMTAzICwgJ2h0dHA6Ly93d3cuY3RlZHUu
Y29tLnR3L3N0dWRpby5hc3B4JywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzAzLW1l
bnVfMDguZ2lmJywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSgxMTAsICdodHRwOi8v
Zm9ydW1zLmNoaW5hdGltZXMuY29tL3JlcG9ydC9jY3R2L2luZGV4LmFzcHgnLCAnLzIwMDdDdGkv
MjAwN0N0aS1pbmRleC9pbWFnZXMvMDMtbWVudV8wOS5naWYnLCAnJyksCiAgICAgICAgbmV3IFN1
YkNoYW5uZWxJdGVtKDEyMCwgJyMnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDMt
bWVudV8wNy0zLmdpZicsICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNzMsICdodHRw
Oi8vcnNzLmNoaW5hdGltZXMuY29tLycsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8w
My1tZW51XzA3LTIuZ2lmJywgJycpCgogICAgICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICB2YXIgemluZVN1Yk1lbnUgPSBuZXcgQXJyYXkoCiAgICAgICAgbmV3IFN1
YkNoYW5uZWxJdGVtKDgzICwgJ2h0dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tL0NoaW5hdGltZXMv
RXh0ZXJpb3JDb250ZW50L01hZ2F6aW5lcy9tYWdhemluZXMtaW5kZXgvJywgJy8yMDA3Q3RpLzIw
MDdDdGktaW5kZXgvaW1hZ2VzLzA0LW1lbnVfMDEuZ2lmJywgJycpLCAKICAgICAgICBuZXcgU3Vi
Q2hhbm5lbEl0ZW0oNDAwLCAnIycsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wNC1t
ZW51XzA2LmdpZicsICcnKSwgCgogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSgxMjEsICdodHRw
Oi8vcG9kY2FzdC5jaGluYXRpbWVzLmNvbScsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdl
cy8wNC1tZW51XzA3LmdpZicsICcnKSwgCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDY1LCAn
aHR0cDovL3Jzcy5jaGluYXRpbWVzLmNvbS9yc3MvcG9kY2FzdF9nYi11LnJzcyAnLCAnLzIwMDdD
dGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDQtbWVudV8wOS5naWYnLCAnJyksCiAgICAgICAgbmV3
IFN1YkNoYW5uZWxJdGVtKDY1LCAnaHR0cDovL3Jzcy5jaGluYXRpbWVzLmNvbS9yc3MvcG9kY2Fz
dF9tLXUucnNzJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzA0LW1lbnVfMTAuZ2lm
JywgJycpCiAgICAgICAgKTsKCiAgICAgICAgdmFyIGJyb2FkY2FzdFN1Yk1lbnUgPSBuZXcgQXJy
YXkoCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDgxLCAnaHR0cDovL2ZvcnVtcy5jaGluYXRp
bWVzLmNvbS9yZXBvcnQvYnJvYWRjYXN0L2luZGV4Lmh0bScsICcvMjAwN0N0aS8yMDA3Q3RpLWlu
ZGV4L2ltYWdlcy8wNy1tZW51XzAxLmdpZicsICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0
ZW0oMTAyLCAnLzIwMDdDdGkvMjAwN0N0aS1XZWJDYXN0LzIwMDdDdGktVGVuQXVkaW8taW5kZXgv
I2Jyb2FkY2FzdCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wNS1tZW51X25vb24u
Z2lmJywgJycpCiAgICAgICAgKTsKICAgICAgICB2YXIgYmxvZ1N1Yk1lbnUgPSBuZXcgQXJyYXko
ICAgICAgIAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg4NiAsICdodHRwOi8vYmxvZy5jaGlu
YXRpbWVzLmNvbS8nLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDYtbWVudV8wMS5n
aWYnLCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQwICwgJ2h0dHA6Ly9ibG9nLmNo
aW5hdGltZXMuY29tL3Bvc3RzLmh0bWw/Y2F0ZWlkPTInLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRl
eC9pbWFnZXMvMDYtbWVudV8wMmEuZ2lmJywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRl
bSg0MCAsICdodHRwOi8vYmxvZy5jaGluYXRpbWVzLmNvbS9wb3N0cy5odG1sP2NhdGVpZD00Jywg
Jy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzA2LW1lbnVfMDNhLmdpZicsICcnKSwKICAg
ICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDAgLCAnaHR0cDovL2Jsb2cuY2hpbmF0aW1lcy5jb20v
cG9zdHMuaHRtbD9jYXRlaWQ9MycsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wNi1t
ZW51XzA0YS5naWYnLCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQwICwgJ2h0dHA6
Ly9ibG9nLmNoaW5hdGltZXMuY29tL3Bvc3RzLmh0bWw/Y2F0ZWlkPTcnLCAnLzIwMDdDdGkvMjAw
N0N0aS1pbmRleC9pbWFnZXMvMDYtbWVudV8wNWEuZ2lmJywgJycpLAogICAgICAgIG5ldyBTdWJD
aGFubmVsSXRlbSg0MCAsICdodHRwOi8vYmxvZy5jaGluYXRpbWVzLmNvbS9wb3N0cy5odG1sP2Nh
dGVpZD0xMCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wNi1tZW51XzA2YS5naWYn
LCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQwICwgJ2h0dHA6Ly9ibG9nLmNoaW5h
dGltZXMuY29tL3Bvc3RzLmh0bWw/Y2F0ZWlkPTUnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9p
bWFnZXMvMDYtbWVudV8wN2EuZ2lmJywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0
MCAsICdodHRwOi8vYmxvZy5jaGluYXRpbWVzLmNvbS9wb3N0cy5odG1sP2NhdGVpZD0xMScsICcv
MjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy8wNi1tZW51XzA4YS5naWYnLCAnJyksCiAgICAg
ICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQwICwgJ2h0dHA6Ly9ibG9nLmNoaW5hdGltZXMuY29tL3Bv
c3RzLmh0bWw/Y2F0ZWlkPTEyJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzA2LW1l
bnVfMDlhLmdpZicsICcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDAgLCAnaHR0cDov
L2Jsb2cuY2hpbmF0aW1lcy5jb20vcG9zdHMuaHRtbD9jYXRlaWQ9OCcsICcvMjAwN0N0aS8yMDA3
Q3RpLWluZGV4L2ltYWdlcy8wNi1tZW51XzEwYS5naWYnLCAnJyksCiAgICAgICAgbmV3IFN1YkNo
YW5uZWxJdGVtKDQwICwgJ2h0dHA6Ly9ibG9nLmNoaW5hdGltZXMuY29tL3Bvc3RzLmh0bWw/Y2F0
ZWlkPTYnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDYtbWVudV8xMWEuZ2lmJywg
JycpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0MCAsICdodHRwOi8vYmxvZy5jaGluYXRp
bWVzLmNvbS9wb3N0cy5odG1sP2NhdGVpZD0xNCcsICcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2lt
YWdlcy8wNi1tZW51XzEyYS5naWYnLCAnJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQw
ICwgJ2h0dHA6Ly9ibG9nLmNoaW5hdGltZXMuY29tL3Bvc3RzLmh0bWw/Y2F0ZWlkPTEzJywgJy8y
MDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzA2LW1lbnVfMTNhLmdpZicsICcnKSwKICAgICAg
ICBuZXcgU3ViQ2hhbm5lbEl0ZW0oMzkgLCAnaHR0cDovL2Jsb2cuY2hpbmF0aW1lcy5jb20vcnNz
LmFzcHgnLCAnLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvMDYtbWVudV8wOS5naWYnLCAn
JyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDcwICwgJ2h0dHA6Ly90YWl3YW4uY2hpbmF0
aW1lcy5jb20vJywgJy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzLzA2LW1lbnVfY3RuX3Rh
aXdhbi5naWYnLCAnJykKICAgICAgICApOwogICAgICAgIHZhciBiaXpTdWJNZW51ID0gbmV3IEFy
cmF5KAogICAgICAgICk7CiAgICAgICAgdmFyIG1vbmV5U3ViTWVudSA9IG5ldyBBcnJheSgKICAg
ICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNzAsICdodHRwOi8vbW9uZXkuY2hpbmF0aW1lcy5jb20v
bmV3bW9uZXkvcmVhbHRpbWUvaW5kZXguYXNweCcsICcvQ01vbmV5L05ld3MvaW1nL2hhdXRfcG0w
MS5naWYnLCAnJywgJycpLCAgCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDcwLCBzRG9tYWlu
KycvQ01vbmV5L05ld3MvTmV3cy1QYWdlLzAsNDQ0Mix3ZWVrbHksMDAuaHRtbCcsICcvQ01vbmV5
L05ld3MvaW1nL2hhdXRfcG0xMS5naWYnLCAnJywgJycpLAogICAgICAgIG5ldyBTdWJDaGFubmVs
SXRlbSg0Miwgc0RvbWFpbisnL0NNb25leS9OZXdzL05ld3MtUGFnZS8wLDQ0NDIsbGlzdCswNjAx
LDAwLmh0bWwnLCAnL0NNb25leS9OZXdzL2ltZy9oYXV0X3BtMTIuZ2lmJywgJycsICdUMjEnKSwK
ICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDIsIHNEb21haW4rJy9DTW9uZXkvTmV3cy9OZXdz
LVBhZ2UvMCw0NDQyLGxpc3QrMDYwMiwwMC5odG1sJywgJy9DTW9uZXkvTmV3cy9pbWcvaGF1dF9w
bTEzLmdpZicsICcnLCAnVDIyJyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVtKDQyLCBzRG9t
YWluKycvQ01vbmV5L05ld3MvTmV3cy1QYWdlLzAsNDQ0MixsaXN0KzA2MDMsMDAuaHRtbCcsICcv
Q01vbmV5L05ld3MvaW1nL2hhdXRfcG0xNC5naWYnLCAnJywgJ1QyMycpLAogICAgICAgIG5ldyBT
dWJDaGFubmVsSXRlbSg0Miwgc0RvbWFpbisnL0NNb25leS9OZXdzL05ld3MtUGFnZS8wLDQ0NDIs
bGlzdCswNjA0LDAwLmh0bWwnLCAnL0NNb25leS9OZXdzL2ltZy9oYXV0X3BtMTUuZ2lmJywgJycs
ICdUMjQnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDIsIHNEb21haW4rJy9DTW9uZXkv
TmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGxpc3QrMDYwNSwwMC5odG1sJywgJy9DTW9uZXkvTmV3cy9p
bWcvaGF1dF9wbTE2LmdpZicsICcnLCAnVDI1JyksCiAgICAgICAgbmV3IFN1YkNoYW5uZWxJdGVt
KDQyLCBzRG9tYWluKycvQ01vbmV5L05ld3MvTmV3cy1QYWdlLzAsNDQ0MixsaXN0KzA2MDYsMDAu
aHRtbCcsICcvQ01vbmV5L05ld3MvaW1nL2hhdXRfcG0xNy5naWYnLCAnJywgJ1QyNicpLAogICAg
ICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0Miwgc0RvbWFpbisnL0NNb25leS9OZXdzL05ld3MtUGFn
ZS8wLDQ0NDIsbGlzdCswNjA3LDAwLmh0bWwnLCAnL0NNb25leS9OZXdzL2ltZy9oYXV0X3BtMTgu
Z2lmJywgJycsICdUMjcnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDIsIHNEb21haW4r
Jy9DTW9uZXkvTmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGxpc3QrMDYwOCwwMC5odG1sJywgJy9DTW9u
ZXkvTmV3cy9pbWcvaGF1dF9wbTE5LmdpZicsICcnLCAnVDI4JyksCiAgICAgICAgbmV3IFN1YkNo
YW5uZWxJdGVtKDQyLCBzRG9tYWluKycvQ01vbmV5L05ld3MvTmV3cy1QYWdlLzAsNDQ0MixsaXN0
KzA2MDksMDAuaHRtbCcsICcvQ01vbmV5L05ld3MvaW1nL2hhdXRfcG0yMC5naWYnLCAnJywgJ1Qy
OScpLAogICAgICAgIG5ldyBTdWJDaGFubmVsSXRlbSg0Miwgc0RvbWFpbisnL0NNb25leS9OZXdz
L05ld3MtUGFnZS8wLDQ0NDIsbGlzdCswNjEwLDAwLmh0bWwnLCAnL0NNb25leS9OZXdzL2ltZy9o
YXV0X3BtMjEuZ2lmJywgJycsICdUMzAnKSwKICAgICAgICBuZXcgU3ViQ2hhbm5lbEl0ZW0oNDIs
IHNEb21haW4rJy9DTW9uZXkvTmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGxpc3QrMDYxMSwwMC5odG1s
JywgJy9DTW9uZXkvTmV3cy9pbWcvaGF1dF9wbTIyLmdpZicsICcnLCAnVDMxJyksCiAgICAgICAg
bmV3IFN1YkNoYW5uZWxJdGVtKDg3LCBzRG9tYWluKycvQ01vbmV5L05ld3MvTmV3cy1NYW5hZ2Vt
ZW50LzAsNDc0MSwsMDAuaHRtbCcsICcvQ01vbmV5L05ld3MvaW1nL2hhdXRfcG0yMy5naWYnLCAn
JywgJycpCgoKICAgICAgICApOwogICAgICAgIGZ1bmN0aW9uIGJ1aWRTdWJNZW51KHN1Ym1lbnUp
CiAgICAgICAgewogICAgICAgIAl2YXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOwogICAg
ICAgIAl2YXIgU3ViTWVudVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Yk1lbnVU
YWJsZSIpOwogICAgICAgIAlidWZmZXIuYXBwZW5kKCI8dGFibGUgaWQ9VGFibGVfMDEgIGhlaWdo
dD0yMyBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRyPiIpOwoKICAgICAg
ICAJZm9yICh2YXIgaT0wOyBpPHN1Ym1lbnUubGVuZ3RoOyBpKyspCiAgICAgICAgCXsKICAgICAg
ICAJCWlmIChzdWJtZW51W2ldID09IG51bGwpCiAgICAgICAgCQl7CiAgICAgICAgCQkJYnVmZmVy
LmFwcGVuZCgiPHRkIHdpZHRoPSczNic+Jm5ic3A7PC90ZD4iKTsKICAgICAgICAJCX0KICAgICAg
ICAJCWVsc2UKICAgICAgICAJCXsKICAgICAgICAJCQlpZihzdWJtZW51W2ldLnNyYy50b0xvd2Vy
Q2FzZSgpLmluZGV4T2YoImh0dHAiKTwwKSAgc3VibWVudVtpXS5zcmMgPSBzRG9tYWluK3N1Ym1l
bnVbaV0uc3JjOwogICAgICAgIAkJCWJ1ZmZlci5hcHBlbmQoIjx0ZCB3aWR0aD0nIiArIHN1Ym1l
bnVbaV0ud2lkdGggKyAiJyBpZD0nIiArIHN1Ym1lbnVbaV0uaWQgKyAiJz4iKTsKICAgICAgICAJ
CQlpZihzdWJtZW51W2ldLmlkPT0iZGFpbHluZXdzcGFwZXIiKQogICAgICAgIAkJCXsKICAgICAg
ICAJCQkJYnVmZmVyLmFwcGVuZCgiPGEgaHJlZj0nIiArIHN1Ym1lbnVbaV0uaHJlZiArICInIHRh
cmdldD0nIiArIHN1Ym1lbnVbaV0uaWQgKyAiJz4iKTsKICAgICAgICAJCQl9CiAgICAgICAgCQkJ
ZWxzZQogICAgICAgIAkJCXsKICAgICAgICAJCQkJYnVmZmVyLmFwcGVuZCgiPGEgaHJlZj0nIiAr
IHN1Ym1lbnVbaV0uaHJlZiArICInPiIpOwogICAgICAgIAkJCX0KICAgICAgICAJCQlidWZmZXIu
YXBwZW5kKCI8aW1nIHNyYz0nIiArIHN1Ym1lbnVbaV0uc3JjICsgIicgaGVpZ2h0PScyMycgYm9y
ZGVyPScwJyB3aWR0aD0nIiArIHN1Ym1lbnVbaV0ud2lkdGggKyAiJyBhbHQ9JyIgKyBzdWJtZW51
W2ldLmFsdCArICInPiIpOwogICAgICAgIAkJCWJ1ZmZlci5hcHBlbmQoIjwvYT48L3RkPiIpOwog
ICAgICAgIAkJfQogICAgICAgIAl9CiAgICAgICAgCWJ1ZmZlci5hcHBlbmQoIjwvdHI+PC90YWJs
ZT4iKTsKICAgICAgICAJU3ViTWVudVRhYmxlLmlubmVySFRNTCA9IGJ1ZmZlci50b1N0cmluZygp
OwogICAgICAgIH0KCgogICAgICAgIGZ1bmN0aW9uIGhhdmVmaW5kbXVuZWlkKGlkLG1lbnUpIHsK
ICAgICAgICB2YXIgaXNWYXIgPSAiZmFsc2UiOwoKICAgICAgICBmb3IgKHZhciBpPTA7IGk8IG1l
bnUubGVuZ3RoOyBpKyspCiAgICAgICAgCXsKICAgICAgICAJaWYobWVudVtpXSE9IG51bGwpewog
ICAgICAgIAkJaWYobWVudVtpXS5pZD09aWQpIHsKICAgICAgICAJCWlzVmFyPSJ0cnVlIjsKICAg
ICAgICAJCWJyZWFrOwogICAgICAgIAkJfQogICAgICAgIAl9CiAgICAgICAgCX0KICAgICAgICAJ
cmV0dXJuIGlzVmFyCiAgICAgICAgfSAKCiAgICAgICAgZnVuY3Rpb24gZmluZG11bmVpZFVSTChp
ZCxtZW51KSB7CiAgICAgICAgdmFyIElkVXJsID0gIiI7CgogICAgICAgIGZvciAodmFyIGk9MDsg
aTwgbWVudS5sZW5ndGg7IGkrKykKICAgICAgICAJewogICAgICAgIAlpZihtZW51W2ldIT0gbnVs
bCl7CiAgICAgICAgCQlpZihtZW51W2ldLmlkPT1pZCkgewogICAgICAgIAkJSWRVcmw9bWVudVtp
XS5ocmVmOwogICAgICAgIAkJYnJlYWs7CiAgICAgICAgCQl9CiAgICAgICAgCX0KICAgICAgICAJ
fQogICAgICAgIAlyZXR1cm4gSWRVcmwKICAgICAgICB9IAoKCiAgICAgICAgZnVuY3Rpb24gaGlk
ZUFsbCgpe30KICAgICAgICBmdW5jdGlvbiBidWlsZE1lbnUoaWQpCiAgICAgICAgewogICAgICAg
ICAgIAl2YXIgZG9tYWluID0gc0RvbWFpbisiL0NoaW5hdGltZXMvaW5kZXgvaW5kZXgvIgogICAg
ICAgIAl2YXIgbWVudSA9IEN0aW1lbnU7CiAgICAgICAgCWlmKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJDdGlDaGFubmVsIikgJiYgaWQubGVuZ3RoPT0wKSB7CiAgICAgICAgCXZhciBpZD0iIitD
dGkyMDA3Z2V0Q29va2llKCJDVE1lbnVJRCIpOwogICAgICAgIAlpZihpZD09Im51bGwiKSBpZCA9
ICJuZXdzIgogICAgICAgIAl9CiAgICAgICAgCWlmKGlkLmxlbmd0aD09MCkgaWQ9Im5ld3MiCiAg
ICAgICAgCWlmKHR5cGVvZihDdE1lbnVTZXQpICE9ICJ1bmRlZmluZWQiKSBpZD1DdE1lbnVTZXQ7
CiAgICAgICAgCWlmKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT0gJycgJiYgaXNIb21lUGFnZT09
ImZhbHNlIikgCiAgICAgICAgCXsKICAgICAgICAJCWlkID0gZG9jdW1lbnQubG9jYXRpb24uaGFz
aC5zdWJzdHJpbmcoMSxkb2N1bWVudC5sb2NhdGlvbi5oYXNoLmxlbmd0aCk7CiAgICAgICAgCSAg
ICBpZihoYXZlZmluZG11bmVpZChpZCxtZW51KSE9J3RydWUnKSAKICAgICAgICAJCXsKICAgICAg
ICAJCQlpZCA9ICJuZXdzIgogICAgICAgIAkJfQogICAgICAgIAkJaXNIb21lUGFnZT0idHJ1ZSIK
ICAgICAgICAJfQogICAgICAgIAl2YXIgc0NISURIYXNoPSIiK2RvY3VtZW50LmxvY2F0aW9uLmhh
c2guc3Vic3RyaW5nKDEsZG9jdW1lbnQubG9jYXRpb24uaGFzaC5sZW5ndGgpOwkKICAgICAgICAJ
aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkN0aUNoYW5uZWwiKSl7IAogICAgICAgIAlpZihp
ZCE9Im5ld3MiIHx8IHNDSElESGFzaC5sZW5ndGg+MCkKICAgICAgICAJewogICAgICAgIAlpZihp
ZD09Im1vbmV5Iikgd2luZG93LmxvY2F0aW9uLmhyZWY9IGZpbmRtdW5laWRVUkwoaWQsbWVudSk7
CiAgICAgICAgCWVsc2UgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJDdGlDaGFubmVsIikuc3Jj
PSBmaW5kbXVuZWlkVVJMKGlkLG1lbnUpOwogICAgICAgIAl9CiAgICAgICAgCX0KICAgICAgICAJ
dmFyIE1lbnVUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZW51VGFibGUiKTsKICAg
ICAgICAJCXdoaWxlIChNZW51VGFibGUuZmlyc3RDaGlsZCkgewogICAgICAgIAkJICBNZW51VGFi
bGUucmVtb3ZlQ2hpbGQoTWVudVRhYmxlLmZpcnN0Q2hpbGQpOwogICAgICAgIAl9CiAgICAgICAg
CXZhciBzdWJNZW51VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3ViTWVudVRhYmxl
Iik7CiAgICAgICAgCXdoaWxlIChzdWJNZW51VGFibGUuZmlyc3RDaGlsZCkgewogICAgICAgIAkg
IHN1Yk1lbnVUYWJsZS5yZW1vdmVDaGlsZChzdWJNZW51VGFibGUuZmlyc3RDaGlsZCk7CiAgICAg
ICAgCX0KCiAgICAgICAgCXZhciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CgogICAgICAg
IAlidWZmZXIuYXBwZW5kKCI8dGFibGUgYm9yZGVyPTAgYWxpZ249Y2VudGVyIGNlbGxwYWRkaW5n
PTAgY2VsbHNwYWNpbmc9MD48dHI+Iik7CiAgICAgICAgCWZvciAodmFyIGk9MDsgaTxtZW51Lmxl
bmd0aDsgaSsrKQogICAgICAgIAl7CiAgICAgICAgCQl2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRkIik7CiAgICAgICAgCQlpZiAobWVudVtpXSA9PSBudWxsKQogICAgICAgIAkJ
ewogICAgICAgIAkJCWJ1ZmZlci5hcHBlbmQoIjx0ZCB3aWR0aD0nNzAnPueZkkA8L3RkPiIpOwog
ICAgICAgIAkJfQogICAgICAgIAkJZWxzZQogICAgICAgIAkJewogICAgICAgIAkJCWJ1ZmZlci5h
cHBlbmQoIjx0ZCB3aWR0aD0nNzInIHZhbGlnbj0nYm90dG9tJz4iKTsKICAgICAgICAJCQlidWZm
ZXIuYXBwZW5kKCI8YSBocmVmPScjIiArIG1lbnVbaV0uaWQgKyAiJz4iKTsKCiAgICAgICAgCQkJ
aWYobWVudVtpXS5zcmMudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwIik8MCkgIG1lbnVbaV0u
c3JjID0gc0RvbWFpbittZW51W2ldLnNyYzsKICAgICAgICAJCQlpZihtZW51W2ldLnNyYzIudG9M
b3dlckNhc2UoKS5pbmRleE9mKCJodHRwIik8MCkgIG1lbnVbaV0uc3JjMiA9IHNEb21haW4rbWVu
dVtpXS5zcmMyOwoKICAgICAgICAJCQlpZiAoaWQgPT0gbWVudVtpXS5pZCkKICAgICAgICAJCQl7
CiAgICAgICAgCQkJCWlmKG1lbnVbaV0uaWQ9PSJiaXoiIHx8IG1lbnVbaV0uaWQ9PSJtb25leSIg
fHwgbWVudVtpXS5pZD09ImJyb2FkY2FzdCIgKSAKICAgICAgICAJCQkJewogICAgICAgIAkJCQkJ
dmFyIHRlbXA9JyBvbmNsaWNrID0gd2luZG93LmxvY2F0aW9uLmhyZWY9IicrJycrbWVudVtpXS5o
cmVmKyciOyc7CiAgICAgICAgCQkJCQlidWZmZXIuYXBwZW5kKCc8aW1nIHNyYz0iJyArIG1lbnVb
aV0uc3JjICsgJyIgd2lkdGg9IjcyIiBoZWlnaHQ9IjMwIiBib3JkZXI9IjAiIGFsdD0iJyArIG1l
bnVbaV0uYWx0ICsgJyIgaWQ9IicgKyBtZW51W2ldLmlkICsnaW1nIiAnKyB0ZW1wICsgJz4nKTsK
ICAgICAgICAJCQkJfQogICAgICAgIAkJCQllbHNlCiAgICAgICAgCQkJCXsKICAgICAgICAJCQkJ
CWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJDdGlDaGFubmVsIikpIAogICAgICAgIAkJCQkJ
ewogICAgICAgIAkJCQkJCXZhciB0ZW1wPSdvbmNsaWNrPXdpbmRvdy5sb2NhdGlvbi5ocmVmPSIn
KycjJyttZW51W2ldLmlkKyciO2J1aWxkTWVudSgiJyttZW51W2ldLmlkKyciKTsnOwogICAgICAg
IAkJCQkJCWJ1ZmZlci5hcHBlbmQoJzxpbWcgc3JjPSInICsgbWVudVtpXS5zcmMgKyAnIiB3aWR0
aD0iNzIiIGhlaWdodD0iMzAiIGJvcmRlcj0iMCIgYWx0PSInICsgbWVudVtpXS5hbHQgKyAnIiBp
ZD0iJyArIG1lbnVbaV0uaWQgICsgJ2ltZyIgJyt0ZW1wKyc+Jyk7CgogICAgICAgIAkJCQkJfSBl
bHNlIHsKICAgICAgICAJCQkJCQl2YXIgdGVtcD0nb25jbGljayA9IHdpbmRvdy5sb2NhdGlvbi5o
cmVmPSInK2RvbWFpbisnIycrbWVudVtpXS5pZCsnIjsnOwogICAgICAgIAkJCQkJCWJ1ZmZlci5h
cHBlbmQoJzxpbWcgc3JjPSInICsgbWVudVtpXS5zcmMgKyAnIiB3aWR0aD0iNzIiIGhlaWdodD0i
MzAiIGJvcmRlcj0iMCIgYWx0PSInICsgbWVudVtpXS5hbHQgKyAnIiBpZD0iJyArIG1lbnVbaV0u
aWQgICsgJ2ltZyIgJyt0ZW1wKyc+Jyk7CiAgICAgICAgCQkJCQl9CiAgICAgICAgCQkJCX0KICAg
ICAgICAJCQkJZXZhbCgnYnVpZFN1Yk1lbnUoJytpZCsnU3ViTWVudSk7Jyk7CiAgICAgICAgCQkJ
fQogICAgICAgIAkJCWVsc2UKICAgICAgICAJCQl7CiAgICAgICAgCQkJCWlmKG1lbnVbaV0uaWQ9
PSJiaXoiIHx8IG1lbnVbaV0uaWQ9PSJtb25leSIgfHwgbWVudVtpXS5pZD09ImJyb2FkY2FzdCIg
KSAKICAgICAgICAJCQkJewogICAgICAgIAkJCQkJdmFyIHRlbXAgPSdvbmNsaWNrID0gd2luZG93
LmxvY2F0aW9uLmhyZWY9IicrJycrbWVudVtpXS5ocmVmKyciOyc7CiAgICAgICAgCQkJCQl0ZW1w
PXRlbXArJyBvbm1vdXNlb3Zlcj1NTV9zd2FwSW1hZ2UoIicgKyBtZW51W2ldLmlkICsgJ2ltZyIs
IiIsIicgKyBtZW51W2ldLnNyYy5yZXBsYWNlKCcyLmdpZicsICcuZ2lmJykgKyAnIiwwKTtoaWRl
QWxsKCk7IG9ubW91c2VvdXQ9Ik1NX3N3YXBJbWdSZXN0b3JlKCk7Iic7CiAgICAgICAgCQkJCQli
dWZmZXIuYXBwZW5kKCc8aW1nIHNyYz0iJyArIG1lbnVbaV0uc3JjMiArICciIHdpZHRoPSI3MiIg
aGVpZ2h0PSIzMCIgYm9yZGVyPSIwIiBhbHQ9IicgKyBtZW51W2ldLmFsdCArICciIGlkPSInICsg
bWVudVtpXS5pZCArICdpbWciICcrdGVtcCsnID4nKTsKICAgICAgICAJCQkJfQogICAgICAgIAkJ
CQllbHNlCiAgICAgICAgCQkJCXsKICAgICAgICAJCQkJCWlmKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJDdGlDaGFubmVsIikpIAogICAgICAgIAkJCQkJewogICAgICAgIAkJCQkJCXZhciB0ZW1w
PSdvbmNsaWNrID0gd2luZG93LmxvY2F0aW9uLmhyZWY9IicrJyMnK21lbnVbaV0uaWQrJyI7YnVp
bGRNZW51KCInK21lbnVbaV0uaWQrJyIpOyc7CiAgICAgICAgCQkJCQkJdGVtcD10ZW1wKycgb25t
b3VzZW92ZXI9TU1fc3dhcEltYWdlKCInICsgbWVudVtpXS5pZCArICdpbWciLCIiLCInICsgbWVu
dVtpXS5zcmMucmVwbGFjZSgnMi5naWYnLCAnLmdpZicpICsgJyIsMCk7aGlkZUFsbCgpOyBvbm1v
dXNlb3V0PSJNTV9zd2FwSW1nUmVzdG9yZSgpOyInOwogICAgICAgIAkJCQkJCWJ1ZmZlci5hcHBl
bmQoJzxpbWcgc3JjPSInICsgbWVudVtpXS5zcmMyICsgJyIgd2lkdGg9IjcyIiBoZWlnaHQ9IjMw
IiBib3JkZXI9IjAiIGFsdD0iJyArIG1lbnVbaV0uYWx0ICsgJyIgaWQ9IicgKyBtZW51W2ldLmlk
ICsgJ2ltZyIgJyt0ZW1wKycgPicpOwoKICAgICAgICAJCQkJCX0gZWxzZSB7CiAgICAgICAgCQkJ
CQkJdmFyIHRlbXA9J29uY2xpY2sgPSB3aW5kb3cubG9jYXRpb24uaHJlZj0iJytkb21haW4rJyMn
K21lbnVbaV0uaWQrJyI7JzsKICAgICAgICAJCQkJCQl0ZW1wPXRlbXArJyBvbm1vdXNlb3Zlcj1N
TV9zd2FwSW1hZ2UoIicgKyBtZW51W2ldLmlkICsgJ2ltZyIsIiIsIicgKyBtZW51W2ldLnNyYy5y
ZXBsYWNlKCcyLmdpZicsICcuZ2lmJykgKyAnIiwwKTtoaWRlQWxsKCk7IG9ubW91c2VvdXQ9Ik1N
X3N3YXBJbWdSZXN0b3JlKCk7Iic7CiAgICAgICAgCQkJCQkJYnVmZmVyLmFwcGVuZCgnPGltZyBz
cmM9IicgKyBtZW51W2ldLnNyYzIgKyAnIiB3aWR0aD0iNzIiIGhlaWdodD0iMzAiIGJvcmRlcj0i
MCIgYWx0PSInICsgbWVudVtpXS5hbHQgKyAnIiBpZD0iJyArIG1lbnVbaV0uaWQgKyAnaW1nIiAn
K3RlbXArJyA+Jyk7CiAgICAgICAgCQkJCX0KICAgICAgICAJCQkJfQogICAgICAgIAkJCX0JCQkJ
CQkKICAgICAgICAJCQlidWZmZXIuYXBwZW5kKCI8L2E+PC90ZD4iKTsKICAgICAgICAJCX0KICAg
ICAgICAJfQogICAgICAgIAlidWZmZXIuYXBwZW5kKCI8L3RyPjwvdGFibGU+Iik7CiAgICAgICAg
CU1lbnVUYWJsZS5pbm5lckhUTUwgPSBidWZmZXIudG9TdHJpbmcoKTsKICAgICAgICAJaWYoaWQ9
PSJtb25leSIpIHNldFRpbWVvdXQoIkNyZWF0U2NyaXB0KHNEb21haW4rJy8yMDA3Q3RpLzIwMDdD
dGktSW5kZXgtaW5jL1V0bC8yMDA3LUNUbWVudTIvMCw0NjU0LG1vbmV5LDAwLnNodG1sJyk7Iix0
aW1lcikKICAgICAgICAgICAgZWxzZQogICAgICAgIAlzZXRUaW1lb3V0KCJDcmVhdFNjcmlwdChz
RG9tYWluKycvMjAwN0N0aS8yMDA3Q3RpLUluZGV4LWluYy9VdGwvMjAwNy1DVG1lbnUyLzAsNDY1
NCxuZXdzLDAwLnNodG1sJyk7Iix0aW1lcikKICAgICAgICB9CiAgICAgICAgdmFyIGlzSG9tZVBh
Z2U9ImZhbHNlIjsKICAgICAgICBzZXRUaW1lb3V0KCdidWlsZE1lbnUoIiIpOycsdGltZXIpOwog
ICAgICAgIDwvc2NyaXB0PgoKCgogICAgPC9ib2R5Pgo8L0hUTUw+Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18891</attachid>
            <date>2008-02-03 17:16:32 -0800</date>
            <delta_ts>2008-02-03 18:32:01 -0800</delta_ts>
            <desc>Further reduction</desc>
            <filename>chinatimes.html</filename>
            <type>text/html</type>
            <size>5816</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1iaWc1Ij4KICAgICAgICA8YmFzZSBocmVmPSJo
dHRwOi8vbmV3cy5jaGluYXRpbWVzLmNvbS8iPgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIHZh
ciB0aW1lciA9IDEwMDsKICAgICAgICB2YXIgc0RvbWFpbiA9ICIiOwogICAgICAgIHZhciBpc0hv
bWVQYWdlID0gImZhbHNlIjsKCiAgICAgICAgZnVuY3Rpb24gTU1fZmluZE9iaihuLCBkKSB7IC8v
djQuMDEKICAgICAgICAgIHZhciBwLGkseDsgIGlmKCFkKSBkPWRvY3VtZW50OyBpZigocD1uLmlu
ZGV4T2YoIj8iKSk+MCYmcGFyZW50LmZyYW1lcy5sZW5ndGgpIHsKICAgICAgICAgICAgZD1wYXJl
bnQuZnJhbWVzW24uc3Vic3RyaW5nKHArMSldLmRvY3VtZW50OyBuPW4uc3Vic3RyaW5nKDAscCk7
fQogICAgICAgICAgaWYoISh4PWRbbl0pJiZkLmFsbCkgeD1kLmFsbFtuXTsgZm9yIChpPTA7IXgm
Jmk8ZC5mb3Jtcy5sZW5ndGg7aSsrKSB4PWQuZm9ybXNbaV1bbl07CiAgICAgICAgICBmb3IoaT0w
OyF4JiZkLmxheWVycyYmaTxkLmxheWVycy5sZW5ndGg7aSsrKSB4PU1NX2ZpbmRPYmoobixkLmxh
eWVyc1tpXS5kb2N1bWVudCk7CiAgICAgICAgICBpZigheCAmJiBkLmdldEVsZW1lbnRCeUlkKSB4
PWQuZ2V0RWxlbWVudEJ5SWQobik7IHJldHVybiB4OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rp
b24gTU1fc2hvd0hpZGVMYXllcnMoKSB7IC8vdjYuMAogICAgICAgICAgdmFyIGkscCx2LG9iaixh
cmdzPU1NX3Nob3dIaWRlTGF5ZXJzLmFyZ3VtZW50czsKICAgICAgICAgIGZvciAoaT0wOyBpPChh
cmdzLmxlbmd0aC0yKTsgaSs9MykgaWYgKChvYmo9TU1fZmluZE9iaihhcmdzW2ldKSkhPW51bGwp
IHsgdj1hcmdzW2krMl07CiAgICAgICAgICAgIGlmIChvYmouc3R5bGUpIHsgb2JqPW9iai5zdHls
ZTsgdj0odj09J3Nob3cnKT8ndmlzaWJsZSc6KHY9PSdoaWRlJyk/J2hpZGRlbic6djsgfQogICAg
ICAgICAgICBvYmoudmlzaWJpbGl0eT12OyB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBN
TV9wcmVsb2FkSW1hZ2VzKCkgeyAvL3YzLjAKICAgICAgICAgIHZhciBkPWRvY3VtZW50OyBpZihk
LmltYWdlcyl7IGlmKCFkLk1NX3ApIGQuTU1fcD1uZXcgQXJyYXkoKTsKICAgICAgICAgICAgdmFy
IGksaj1kLk1NX3AubGVuZ3RoLGE9TU1fcHJlbG9hZEltYWdlcy5hcmd1bWVudHM7IGZvcihpPTA7
IGk8YS5sZW5ndGg7IGkrKykKICAgICAgICAgICAgaWYgKGFbaV0uaW5kZXhPZigiIyIpIT0wKXsg
ZC5NTV9wW2pdPW5ldyBJbWFnZTsgZC5NTV9wW2orK10uc3JjPWFbaV07fX0KICAgICAgICB9Cgog
ICAgICAgIGZ1bmN0aW9uIE1NX3N3YXBJbWdSZXN0b3JlKCkgeyAvL3YzLjAKICAgICAgICAgIHZh
ciBpLHgsYT1kb2N1bWVudC5NTV9zcjsgZm9yKGk9MDthJiZpPGEubGVuZ3RoJiYoeD1hW2ldKSYm
eC5vU3JjO2krKykgeC5zcmM9eC5vU3JjOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTU1f
c3dhcEltYWdlKCkgeyAvL3YzLjAKICAgICAgICAgIHZhciBpLGo9MCx4LGE9TU1fc3dhcEltYWdl
LmFyZ3VtZW50czsgZG9jdW1lbnQuTU1fc3I9bmV3IEFycmF5OyBmb3IoaT0wO2k8KGEubGVuZ3Ro
LTIpO2krPTMpCiAgICAgICAgICAgaWYgKCh4PU1NX2ZpbmRPYmooYVtpXSkpIT1udWxsKXtkb2N1
bWVudC5NTV9zcltqKytdPXg7IGlmKCF4Lm9TcmMpIHgub1NyYz14LnNyYzsgeC5zcmM9YVtpKzJd
O30KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIENyZWF0U2NyaXB0KFNyYykgCiAgICAgICAg
ewogICAgICAgICAgICB2YXIgb0RJVlJlc3VsdHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2Ny
aXB0Jyk7IAogICAgICAgICAgICBvRElWUmVzdWx0cy5zcmM9U3JjOyAKICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKS5pdGVtKDApLmFwcGVuZENoaWxkKG9E
SVZSZXN1bHRzKTsKICAgICAgICB9CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2hlYWQ+CiAgICA8
Ym9keSBvbkxvYWQ9IkNyZWF0U2NyaXB0KCcvMjAwN0N0aS8yMDA3Q3RpLUluZGV4LWluYy9VdGwv
MjAwNy1DVG1lbnUyLzAsNDY1NCxuZXdzLDAwLnNodG1sJyk7Ij4KICAgICAgICA8ZGl2IGlkPSJz
dWJNZW51VGFibGUiPjx0YWJsZSBpZD1UYWJsZV8wMSAgaGVpZ2h0PTIzIGJvcmRlcj0wIGNlbGxw
YWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkIHdpZHRoPSc1MScgaWQ9J2RhaWx5bmV3c3Bh
cGVyJz48YSBocmVmPSdodHRwOi8vcGRmLmNoaW5hdGltZXMuY29tL2RhaWx5bmV3c3BhcGVyL2lu
ZGV4Lmh0bScgdGFyZ2V0PSdkYWlseW5ld3NwYXBlcic+PGltZyBzcmM9Jy8yMDA3Q3RpLzIwMDdD
dGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDAuZ2lmJyBoZWlnaHQ9JzIzJyBib3JkZXI9JzAnIHdp
ZHRoPSc1MSc+PC9hPjwvdGQ+PHRkIHdpZHRoPSc3MCcgaWQ9Jyc+PGEgaHJlZj0nLzIwMDdDdGkv
MjAwN0N0aS1QbmV3cy8yMDA3Q3RpLVBuZXdzLWxpc3QvMCw0NTIzLCwwMC5odG1sJz48aW1nIHNy
Yz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wMS5naWYnIGhlaWdodD0n
MjMnIGJvcmRlcj0nMCcgd2lkdGg9JzcwJz48L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDAx
Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIw
LDExMDUwMSwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMv
bmV3c2Rpcl8wMi5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90
ZD48dGQgd2lkdGg9JzQzJyBpZD0nVDAyJz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3Mv
MjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwMiwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdD
dGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wMy5naWYnIGhlaWdodD0nMjMnIGJvcmRl
cj0nMCcgd2lkdGg9JzQzJz48L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDA3Jz48YSBocmVm
PScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwNyww
MC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8w
NC5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90ZD48dGQgd2lk
dGg9JzQzJyBpZD0nVDA4Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1O
ZXdzLUxpc3QvMCw0NTIwLDExMDUwOCwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0
aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wNS5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lk
dGg9JzQzJz48L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDAzJz48YSBocmVmPScvMjAwN0N0
aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwMywwMC5odG1sJz48
aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wNi5naWYnIGhl
aWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBp
ZD0nVDA0Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3Qv
MCw0NTIwLDExMDUwNCwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9p
bWFnZXMvbmV3c2Rpcl8wNy5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48
L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDA1Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3Rp
LU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwNSwwMC5odG1sJz48aW1nIHNyYz0n
LzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wOC5naWYnIGhlaWdodD0nMjMn
IGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90ZD48dGQgd2lkdGg9JzQzJyBpZD0nVDA2Jz48
YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDEx
MDUwNiwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3
c2Rpcl8wOS5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQzJz48L2E+PC90ZD48
dGQgd2lkdGg9JzQzJyBpZD0nVDE0Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAw
N0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxNCwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkv
MjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xMC5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0n
MCcgd2lkdGg9JzQzJz48L2E+PC90ZD48dGQgd2lkdGg9JzQzJyBpZD0nVDA5Jz48YSBocmVmPScv
MjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUwOSwwMC5o
dG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xMS5n
aWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQzJz48L2E+PC90ZD48dGQgd2lkdGg9
JzQ2JyBpZD0nVDE5Jz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdz
LUxpc3QvMCw0NTIwLDExMDUxOSwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1p
bmRleC9pbWFnZXMvbmV3c2Rpcl8xMi5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9
JzQ2Jz48L2E+PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDE4Jz48YSBocmVmPScvMjAwN0N0aS8y
MDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxOCwwMC5odG1sJz48aW1n
IHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xMy5naWYnIGhlaWdo
dD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90ZD48dGQgd2lkdGg9JzQyJyBpZD0n
VDExJz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0
NTIwLDExMDUxMSwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFn
ZXMvbmV3c2Rpcl8xNC5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQyJz48L2E+
PC90ZD48dGQgd2lkdGg9JzQ0JyBpZD0nVDEyJz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5l
d3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxMiwwMC5odG1sJz48aW1nIHNyYz0nLzIw
MDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xNS5naWYnIGhlaWdodD0nMjMnIGJv
cmRlcj0nMCcgd2lkdGg9JzQ0Jz48L2E+PC90ZD48dGQgd2lkdGg9JzQ3JyBpZD0nVDE3Jz48YSBo
cmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUx
NywwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rp
cl8xNi5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzQ3Jz48L2E+PC90ZD48dGQg
d2lkdGg9JzQ4JyBpZD0nVDEzJz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0
aS1OZXdzLUxpc3QvMCw0NTIwLDExMDUxMywwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAw
N0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8xNy5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcg
d2lkdGg9JzQ4Jz48L2E+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+CiAgICA8L2JvZHk+CjwvaHRt
bD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18895</attachid>
            <date>2008-02-03 18:32:01 -0800</date>
            <delta_ts>2008-02-03 19:57:08 -0800</delta_ts>
            <desc>Further reduction</desc>
            <filename>chinatimes.html</filename>
            <type>text/html</type>
            <size>33173</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1iaWc1Ij4KICAgICAgICA8YmFzZSBocmVmPSJo
dHRwOi8vbmV3cy5jaGluYXRpbWVzLmNvbS8iPgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIHZh
ciB0aW1lciA9IDEwMDsKICAgICAgICB2YXIgc0RvbWFpbiA9ICIiOwogICAgICAgIHZhciBpc0hv
bWVQYWdlID0gImZhbHNlIjsKICAgICAgICB2YXIgaUhNVGltZSA9IDE7CiAgICAgICAgdmFyIGNo
ZWNraWQgPSAibmV3cyI7CgogICAgICAgIGZ1bmN0aW9uIE1NX2ZpbmRPYmoobiwgZCkgeyAvL3Y0
LjAxCiAgICAgICAgICB2YXIgcCxpLHg7ICBpZighZCkgZD1kb2N1bWVudDsgaWYoKHA9bi5pbmRl
eE9mKCI/IikpPjAmJnBhcmVudC5mcmFtZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIGQ9cGFyZW50
LmZyYW1lc1tuLnN1YnN0cmluZyhwKzEpXS5kb2N1bWVudDsgbj1uLnN1YnN0cmluZygwLHApO30K
ICAgICAgICAgIGlmKCEoeD1kW25dKSYmZC5hbGwpIHg9ZC5hbGxbbl07IGZvciAoaT0wOyF4JiZp
PGQuZm9ybXMubGVuZ3RoO2krKykgeD1kLmZvcm1zW2ldW25dOwogICAgICAgICAgZm9yKGk9MDsh
eCYmZC5sYXllcnMmJmk8ZC5sYXllcnMubGVuZ3RoO2krKykgeD1NTV9maW5kT2JqKG4sZC5sYXll
cnNbaV0uZG9jdW1lbnQpOwogICAgICAgICAgaWYoIXggJiYgZC5nZXRFbGVtZW50QnlJZCkgeD1k
LmdldEVsZW1lbnRCeUlkKG4pOyByZXR1cm4geDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9u
IE1NX3Nob3dIaWRlTGF5ZXJzKCkgeyAvL3Y2LjAKICAgICAgICAgIHZhciBpLHAsdixvYmosYXJn
cz1NTV9zaG93SGlkZUxheWVycy5hcmd1bWVudHM7CiAgICAgICAgICBmb3IgKGk9MDsgaTwoYXJn
cy5sZW5ndGgtMik7IGkrPTMpIGlmICgob2JqPU1NX2ZpbmRPYmooYXJnc1tpXSkpIT1udWxsKSB7
IHY9YXJnc1tpKzJdOwogICAgICAgICAgICBpZiAob2JqLnN0eWxlKSB7IG9iaj1vYmouc3R5bGU7
IHY9KHY9PSdzaG93Jyk/J3Zpc2libGUnOih2PT0naGlkZScpPydoaWRkZW4nOnY7IH0KICAgICAg
ICAgICAgb2JqLnZpc2liaWxpdHk9djsgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTU1f
cHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgICAgICAgICB2YXIgZD1kb2N1bWVudDsgaWYoZC5p
bWFnZXMpeyBpZighZC5NTV9wKSBkLk1NX3A9bmV3IEFycmF5KCk7CiAgICAgICAgICAgIHZhciBp
LGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBp
PGEubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQu
TU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319CiAgICAgICAgfQoKICAg
ICAgICBmdW5jdGlvbiBNTV9zd2FwSW1nUmVzdG9yZSgpIHsgLy92My4wCiAgICAgICAgICB2YXIg
aSx4LGE9ZG9jdW1lbnQuTU1fc3I7IGZvcihpPTA7YSYmaTxhLmxlbmd0aCYmKHg9YVtpXSkmJngu
b1NyYztpKyspIHguc3JjPXgub1NyYzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE1NX3N3
YXBJbWFnZSgpIHsgLy92My4wCiAgICAgICAgICB2YXIgaSxqPTAseCxhPU1NX3N3YXBJbWFnZS5h
cmd1bWVudHM7IGRvY3VtZW50Lk1NX3NyPW5ldyBBcnJheTsgZm9yKGk9MDtpPChhLmxlbmd0aC0y
KTtpKz0zKQogICAgICAgICAgIGlmICgoeD1NTV9maW5kT2JqKGFbaV0pKSE9bnVsbCl7ZG9jdW1l
bnQuTU1fc3JbaisrXT14OyBpZigheC5vU3JjKSB4Lm9TcmM9eC5zcmM7IHguc3JjPWFbaSsyXTt9
CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBleGVjSE0oKQogICAgICAgIHsKICAgICAgICAg
ICAgb25sb2Fkb3ZlcigpCiAgICAgICAgICAgIE1NU2hvd0RNTWVudSgnRE1nb29kaWVzJywnMDEn
LCc2MCcsJ8KmwrPCrsOGwqXCq8K2wrAnLCcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9u
ZXdzZGlyX2dvb2RpZXMuZ2lmJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBETURp
dk5vdFNob3c9IkRNRGl2Tm90U2hvdyI7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gTU1TaG93
RE0oRE1JRCwgRE1GaXJzdCkKICAgICAgICB7CiAgICAgICAgCXZhciBzSW1nWCwgc0ltZ1ksIHNJ
bWdXLCBzSW1nWFRvdGFsLCBzRG1Db250LCBETU5leHQsIERNSUREYWQ7CiAgICAgICAgCXZhciBE
TVM9IkRNUyIrRE1JRDsKICAgICAgICAJdmFyIERNSVY9IkRNSVYiK0RNSUQ7CiAgICAgICAgCXZh
ciBETVQ9IkRNVCIrRE1JRDsKICAgICAgICAJdmFyIERNQXJyPW51bGw7CiAgICAgICAgCXZhciBE
TUFyck5leHQ7CiAgICAgICAgCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNRGl2Tm90U2hv
dyk9PW51bGwpCiAgICAgICAgCXsKICAgICAgICAJCURNQ3JlYXRlRGl2KERNRGl2Tm90U2hvdyk7
CiAgICAgICAgCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETURpdk5vdFNob3cpLnN0eWxlLnBv
c2l0aW9uPSJhYnNvbHV0ZSI7CiAgICAgICAgCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETURp
dk5vdFNob3cpLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7CiAgICAgICAgCX0KICAgICAgICAJ
TU1DaERNTWVudShETUlELCB0cnVlKTsKICAgICAgICAJaWYoZXZhbCgidHlwZW9mIERNQXJyIitE
TUlEKSE9InVuZGVmaW5lZCIpICBETUFycj1ldmFsKCJETUFyciIrRE1JRCk7CiAgICAgICAgCWlm
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNUykgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
RE1JVikgJiYgRE1BcnIhPW51bGwgICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNRGl2Tm90
U2hvdykgJiYgRE1BcnIhPW51bGwpCiAgICAgICAgCXsKICAgICAgICAJCWlmKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKERNSVYpLmlubmVySFRNTCE9IiIpCiAgICAgICAgCQl7CiAgICAgICAgCQkJ
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSI7
CiAgICAgICAgCQl9CiAgICAgICAgCQllbHNlewogICAgICAgIAkJCXNEbUNvbnQ9Ijx0YWJsZSBp
ZD0nIitETVQrIicgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMScgY2VsbHNwYWNpbmc9JzAnIGJn
Y29sb3I9JyNjY2NjY2MnIHN0eWxlPSdtYXJnaW4tbGVmdDoxcHg7IHBhZGRpbmctbGVmdDoxcHg7
Jz48dHI+PHRkID4iOwogICAgICAgIAkJCXNEbUNvbnQ9c0RtQ29udCsiPHRhYmxlIGJvcmRlcj0w
IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNFQUYwRjUgPiI7CiAgICAgICAg
CQkJZm9yKHZhciBtYXJfaT0wO21hcl9pPERNQXJyLmxlbmd0aDttYXJfaSsrKQogICAgICAgIAkJ
CXsKICAgICAgICAJCQkJRE1OZXh0PSJub2RhdGEiOwogICAgICAgIAkJCQlETUFyck5leHQ9bnVs
bDsKICAgICAgICAJCQkJaWYobWFyX2k+PTEwICYmIG1hcl9pPDEwMCkgRE1OZXh0PSJfIittYXJf
aTsKICAgICAgICAJCQkJZWxzZSBpZihtYXJfaTwxMCkgRE1OZXh0PSJfMCIrbWFyX2k7CgogICAg
ICAgIAkJCQlpZihldmFsKCJ0eXBlb2YgRE1BcnIiK0RNSUQrRE1OZXh0KSE9InVuZGVmaW5lZCIp
CiAgICAgICAgCQkJCXsKICAgICAgICAJCQkJCURNQXJyTmV4dD1ldmFsKCJETUFyciIrRE1JRCtE
TU5leHQpOwogICAgICAgIAkJCQl9CiAgICAgICAgCQkJCXNEbUNvbnQ9c0RtQ29udCsiPHRyPjx0
ZCBoZWlnaHQ9MjQgY2xhc3M9J3Rkc3VibWVudScgc3R5bGU9J2JhY2tncm91bmQtaW1hZ2U6IHVy
bCgvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9ocl9kb3R0ZWQuZ2lmKTsiOwogICAgICAg
IAkJCQlzRG1Db250PXNEbUNvbnQrImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiBib3R0b207JyI7CiAgICAgICAgCQkJCWlmKERNQXJyTmV4dD09bnVsbCkK
ICAgICAgICAJCQkJewoKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiIG9ubW91c2VvdmVy
PVwidGhpcy5jbGFzc05hbWU9J1N1Ykl0ZW1Ib3Zlcic7XCIiOwogICAgICAgIAkJCQkJc0RtQ29u
dD1zRG1Db250KyIgT25Nb3VzZU91dD1cInRoaXMuY2xhc3NOYW1lPSd0ZHN1Ym1lbnUnO1wiID4i
OwogICAgICAgIAkJCQkJc0RtQ29udD1zRG1Db250KyI8YSBocmVmPSIrRE1BcnJbbWFyX2ldLnVy
bCsiIGNsYXNzPW1lbnVzRE0+IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiJm5ic3A7
Jm5ic3A7Jm5ic3A7IitETUFyclttYXJfaV0ubmFtZSsiJm5ic3A7IjsKICAgICAgICAJCQkJCXNE
bUNvbnQ9c0RtQ29udCsiPC9hPiI7CiAgICAgICAgCQkJCX0KICAgICAgICAJCQkJZWxzZQogICAg
ICAgIAkJCQl7CiAgICAgICAgCQkJCQlzRG1Db250PXNEbUNvbnQrIiBpZD0nIitETVMrRE1OZXh0
KyInIG9ubW91c2VvdmVyPVwidGhpcy5jbGFzc05hbWU9J1N1Ykl0ZW1Ib3Zlcic7TU1TaG93RE0o
JyIrRE1JRCtETU5leHQrIicsZmFsc2UpO1wiIjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29u
dCsiIE9uTW91c2VPdXQ9XCJ0aGlzLmNsYXNzTmFtZT0ndGRzdWJtZW51JztNTUhpZGVETSgnIitE
TUlEK0RNTmV4dCsiJyk7XCIgPiI7CiAgICAgICAgCQkJCQlzRG1Db250PXNEbUNvbnQrIjxhIGlk
PSdsayIrRE1TK0RNTmV4dCsiJyBocmVmPSIrRE1BcnJbbWFyX2ldLnVybCsiIGNsYXNzPW1lbnVz
RE0+IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiJm5ic3A7Jm5ic3A7Jm5ic3A7IitE
TUFyclttYXJfaV0ubmFtZSsiJm5ic3A7IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsi
PGltZyBzcmM9L0NoaW5hdGltZXMvaW5kZXgvaW1nL1BvcHVwLmdpZiBib3JkZXI9MCB3aWR0aD0x
MCBoZWlnaHQ9MTAgYWxpZ249J0FCU01JRERMRSc+PC9hPiI7CiAgICAgICAgCQkJCQlzRG1Db250
PXNEbUNvbnQrIjxkaXYgaWQ9IitETUlWK0RNTmV4dCsiIG9ubW91c2VvdmVyPVwiTU1TaG93RE0o
JyIrRE1JRCtETU5leHQrIicsZmFsc2UpO1wiIG9ubW91c2VvdXQ9XCJNTUhpZGVETSgnIitETUlE
K0RNTmV4dCsiJyk7XCIiOwogICAgICAgIAkJCQkJc0RtQ29udD1zRG1Db250KyIgc3R5bGU9J3Bv
c2l0aW9uOnJlbGF0aXZlOyc+PC9kaXY+IjsKICAgICAgICAJCQkJfQogICAgICAgIAkJCQlzRG1D
b250PXNEbUNvbnQrIjwvdGQ+PC90cj4iOwogICAgICAgIAkJCX0KICAgICAgICAJCQlzRG1Db250
PXNEbUNvbnQrIjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgICAJCQlzRG1Db250
PXNEbUNvbnQrIiI7CgogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLmlu
bmVySFRNTD1zRG1Db250OwogICAgICAgIAkJCXNEbUNvbnQ9c0RtQ29udC5yZXBsYWNlKCJETVQi
LCJETVROb3RTaG93Iik7CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1EaXZO
b3RTaG93KS5pbm5lckhUTUw9c0RtQ29udDsKICAgICAgICAJCQlzSW1nVz1kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiRE1UTm90U2hvdyIrRE1JRCkub2Zmc2V0V2lkdGg7CQogICAgICAgIAkJCWlm
KERNRmlyc3Q9PXRydWUpCiAgICAgICAgCQkJewkKICAgICAgICAJCQkJc0ltZ1g9Z2V0SUVYUG9z
aXRpb240RHkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1TKSk7CiAgICAgICAgCQkJCXNJbWdZ
PWdldElFWVBvc2l0aW9uNER5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNUykpOwogICAgICAg
IAkJCQlzSW1nWT1zSW1nWStkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETVMpLmhlaWdodDsKICAg
ICAgICAJCQkJc0ltZ1hUb3RhbD1zSW1nWCtzSW1nVzsKICAgICAgICAJCQkJaWYoc0ltZ1hUb3Rh
bD5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSBzSW1nWD1zSW1nWC1zSW1nVytkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChETVMpLndpZHRoLTM7CiAgICAgICAgCQkJfQogICAgICAgIAkJCWVsc2UK
ICAgICAgICAJCQl7CiAgICAgICAgCQkJCURNSUREYWQ9RE1JRC5zdWJzdHJpbmcoMCxETUlELmxl
bmd0aC0zKTsKICAgICAgICAJCQkJc0ltZ1g9cGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIkRNVCIrRE1JRERhZCkud2lkdGgpOwogICAgICAgIAkJCQlzSW1nWT1wYXJzZUludChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChETVMpLm9mZnNldFRvcCk7CiAgICAgICAgCQkJCXNJbWdYVG90
YWw9c0ltZ1grc0ltZ1crZ2V0SUVYUG9zaXRpb240RHkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
RE1TKSk7CiAgICAgICAgCQkJCWlmKHNJbWdYVG90YWw+ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0
aCkKICAgICAgICAJCQkJewogICAgICAgIAkJCQkJc0ltZ1g9MC1zSW1nVzsKICAgICAgICAJCQkJ
fQogICAgICAgIAkJCQlpZihnZXRJRVlQb3NpdGlvbjREeShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChETVMpKT5kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgICAJCQkJewogICAgICAg
IAkJCQkJc0ltZ1k9c0ltZ1krMjAtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1UKS5vZmZzZXRI
ZWlnaHQ7CiAgICAgICAgCQkJCX0KICAgICAgICAJCQl9CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUubGVmdD1zSW1nWCsicHgiOwogICAgICAgIAkJCWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnRvcD1zSW1nWSsicHgiOwogICAgICAgIAkJ
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7
CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUuZGlzcGxheT0i
YmxvY2siOwogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnZp
c2liaWxpdHk9InZpc2libGUiOwogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERN
VCkud2lkdGg9c0ltZ1c7CiAgICAgICAgCQl9CiAgICAgICAgCX0KICAgICAgICB9CiAgICAgICAg
ZnVuY3Rpb24gTU1IaWRlRE0oRE1JRCkKICAgICAgICB7CiAgICAgICAgCXZhciBETUlWPSJETUlW
IitETUlEOwogICAgICAgIAlNTUNoRE1NZW51KERNSUQsIGZhbHNlKTsKICAgICAgICAJZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIjsKICAgICAg
ICB9CiAgICAgICAgZnVuY3Rpb24gTU1DaERNTWVudShETVNpZCwgYlNob3cpCiAgICAgICAgewog
ICAgICAgIAl2YXIgRE1Maz0ibGtETVMiK0RNU2lkOwogICAgICAgIAl2YXIgRE1DbGFzczsKICAg
ICAgICAJaWYoYlNob3c9PXRydWUpIERNQ2xhc3M9Im1lbnVzRE0yIjsKICAgICAgICAJZWxzZSBE
TUNsYXNzPSJtZW51c0RNIjsKICAgICAgICAJd2hpbGUoRE1May5sZW5ndGg+NykKICAgICAgICAJ
ewkKICAgICAgICAJCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNTGspIT1udWxsKSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChETUxrKS5jbGFzc05hbWU9RE1DbGFzczsKICAgICAgICAJCURN
TGs9RE1May5zdWJzdHJpbmcoMCxETUxrLmxlbmd0aC0zKTsKICAgICAgICAJfQogICAgICAgIH0K
ICAgICAgICBmdW5jdGlvbiBETU9iaihuYW1lLCB1cmwpIHsKICAgICAgICAgICB0aGlzLm5hbWU9
bmFtZTsKICAgICAgICAgICB0aGlzLnVybD11cmw7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9u
IGdldElFWFBvc2l0aW9uNER5KGltZ0VsZW0pIHsKICAgICAgICAgICAgeFBvcyA9IGltZ0VsZW0u
b2Zmc2V0TGVmdDsKICAgICAgICAgICAgd2hpbGUgKGltZ0VsZW09aW1nRWxlbS5vZmZzZXRQYXJl
bnQpIHsKICAgICAgICAgICAgICAgICAgICB4UG9zICs9IGltZ0VsZW0ub2Zmc2V0TGVmdDsKICAg
ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geFBvczsKICAgICAgICB9CiAgICAgICAgZnVu
Y3Rpb24gZ2V0SUVZUG9zaXRpb240RHkoaW1nRWxlbSkgewogICAgICAgICAgICB5UG9zID0gaW1n
RWxlbS5vZmZzZXRUb3A7CiAgICAgICAgICAgIHdoaWxlIChpbWdFbGVtPWltZ0VsZW0ub2Zmc2V0
UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgeVBvcyArPSBpbWdFbGVtLm9mZnNldFRvcDsK
ICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geVBvczsKICAgICAgICB9CiAgICAgICAg
ZnVuY3Rpb24gTU1TaG93RE1NZW51KGRpdmlkLCBkaWQsIGl3aWR0aCwgc25hbWUsIHNpbWcpCiAg
ICAgICAgewogICAgICAgIAl2YXIgc0RtQ29udDsKICAgICAgICAJc0RtQ29udD0iPGEgaHJlZj0n
Iycgb25tb3VzZW92ZXI9J01NU2hvd0RNKFwiIitkaWQrIlwiLHRydWUpOycgIG9ubW91c2VvdXQ9
J01NSGlkZURNKFwiIitkaWQrIlwiKTsnPjxpbWcgaWQ9J0RNUyIrZGlkKyInIHNyYz0nIitzaW1n
KyInIjsKICAgICAgICAJc0RtQ29udD1zRG1Db250KyIgaGVpZ2h0PScyMycgYm9yZGVyPScwJyB3
aWR0aD0nIitpd2lkdGgrIicgYWx0PSciK3NuYW1lKyInID48L2E+PHNwYW4gaWQ9RE1JViIrZGlk
KyIgb25tb3VzZW92ZXI9J01NU2hvd0RNKFwiIitkaWQrIlwiLHRydWUpOycgb25tb3VzZW91dD0n
TU1IaWRlRE0oXCIiK2RpZCsiXCIpOycgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOyc+PC9zcGFu
PiI7CiAgICAgICAgCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdmlkKSkgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoZGl2aWQpLmlubmVySFRNTD1zRG1Db250OwogICAgICAgIH0KICAgICAg
ICBmdW5jdGlvbiBETUNyZWF0ZURpdihpZCkgCiAgICAgICAgewogICAgICAgIHZhciBvRElWUmVz
dWx0cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgCiAgICAgICAgb0RJVlJlc3VsdHMu
aWQ9aWQ7IAogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAJZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKS5pdGVtKDApLmFwcGVuZENoaWxkKG9ESVZSZXN1bHRzKTsKICAg
ICAgICB9Y2F0Y2goZSl7fQogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBjdHN1
cnZleWNsaWNrKGJsb2NrbmFtZSl7fQogICAgICAgIHZhciBnX0lzRE9NID0gKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKSA/IHRydWUgOiBmYWxzZTsKICAgICAgICB2YXIgZ19Jc05TNCA9IChkb2N1
bWVudC5sYXllcnMpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIHZhciBnX0lzSUUgPSAoZG9jdW1l
bnQuYWxsKSA/IHRydWUgOiBmYWxzZTsKICAgICAgICB2YXIgZ19OUz0obmF2aWdhdG9yLmFwcE5h
bWUuaW5kZXhPZigiTmV0c2NhcGUiKSAhPS0xKTsKICAgICAgICB2YXIgZ19Jc05TX0RvbT1nX0lz
RE9NJiZnX05TPzE6MDsKICAgICAgICB2YXIgZ19Jc0lFNCA9IGdfSXNJRSAmJiAhZ19Jc0RPTTsK
ICAgICAgICB2YXIgZ19Jc01hYyA9IChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNYWMi
KSAhPSAtMSk7CiAgICAgICAgdmFyIGdfSXNJRTRNID0gZ19Jc0lFNCAmJiBnX0lzTWFjOwogICAg
ICAgIHZhciBnX0lzU3VwcG9ydCA9ICFnX0lzSUU0TSAmJiAoZ19Jc0RPTSB8fCBnX0lzTlM0IHx8
IGdfSXNJRTQpOwogICAgICAgIHZhciBnX0lzTlM2UGx1cyA9IChuYXZpZ2F0b3IudXNlckFnZW50
LmluZGV4T2YoJ0dlY2tvJyk+MCkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgdmFyIGdfSXNJRTU1
UGx1cyA9IChkb2N1bWVudC5hbGwgJiYgcGFyc2VGbG9hdChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5z
dWJzdHJpbmcoKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoJ01TSUUnKSs0KSxuYXZpZ2F0
b3IuYXBwVmVyc2lvbi5sZW5ndGgpKT41LjQpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIHZhciBn
X0lzSUU0ME1pbnVzID0gZ19Jc0lFICYmICFnX0lzRE9NOwogICAgICAgIHZhciBnX0lzSUU1MCA9
ICAhZ19Jc0lFNTVQbHVzICYmICFnX0lzSUU0ME1pbnVzCiAgICAgICAgdmFyIG1haW5NZW51QXR0
cj0iIGJnY29sb3I9JyMwMDcwYzAnIGJvcmRlcj0nMScgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFj
ZWluZz0nMScgYm9yZGVyY29sb3I9JyNmZmE2MDAnICI7CiAgICAgICAgdmFyIHN1Yk1lbnVBdHRy
PSIgYmdjb2xvcj0nI0VBRjBGNScgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMScgY2VsbHNwYWNl
aW5nPScxJyBib3JkZXJjb2xvcj0nI0VBRjBGNSciOwogICAgICAgIHZhciBnX1BhcmVudGJnY29s
b3I9IiM3RjkwQUMiOwogICAgICAgIHZhciBpZTQ9MCxuczQ9MCxpZTU9MCxuczY9MCwgZ29vZEJy
b3dzZXI9MDsKICAgICAgICB2YXIgZGl2U2hvdz0idmlzaWJsZSI7CiAgICAgICAgdmFyIGRpdkhp
ZGU9ImhpZGRlbiI7IAogICAgICAgIHZhciBpZExhc3RNZW51ID0gIiI7CiAgICAgICAgdmFyIEN0
aUNsb3NlVGFnID0gInRydWUiOyAKICAgICAgICB2YXIgQ3RpQ2xvc2VUaW1lcjsKICAgICAgICB2
YXIgcmlnaHRYID0gMCxyaWdodFkgPSAwLGxlZnRZID0gMCxsZWZ0WCA9IDA7CiAgICAgICAgdmFy
IGJhc2VMZW4gPSAyOwogICAgICAgIHZhciBvZmZzZXREZWxYID0gMTA7CiAgICAgICAgdmFyIG1h
aW5IVE1Mc3RyLCBzdWJIVE1Mc3RyOwogICAgICAgIHZhciBMZXZlbGZsYWc9IjEiOwoKICAgICAg
ICBmdW5jdGlvbiBtYWtlbWVudSgpIAogICAgICAgIHsKICAgICAgICAgICAgdGhpcy5pbml0TWFp
bk1lbnUgPSBpbml0TWFpbk1lbnU7CiAgICAgICAgICAgIHRoaXMuaW5pdFN1Yk1lbnUgPSBpbml0
U3ViTWVudTsKICAgICAgICAgICAgdGhpcy5hZGRNYWluSXRlbSA9IGFkZE1haW5JdGVtOwogICAg
ICAgICAgICB0aGlzLmFkZFN1Ykl0ZW0gPSBhZGRTdWJJdGVtOwogICAgICAgICAgICB0aGlzLmFk
ZFN1Yk1lbnUgPSBhZGRTdWJNZW51OwogICAgICAgICAgICB0aGlzLndyaXRlTWFpbk1lbnUgPSB3
cml0ZU1haW5NZW51OwogICAgICAgICAgICB0aGlzLndyaXRlU3ViTWVudSA9IHdyaXRlU3ViTWVu
dTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlkTGFzdE1lbnUgPSAiIjsKICAgICAgICAgICAg
bWFpbkhUTUxzdHIgPSAiIjsKICAgICAgICAgICAgc3ViSFRNTHN0ciA9ICIiOwogICAgICAgIH0K
ICAgICAgICAKICAgICAgICBmdW5jdGlvbiBpbml0TWFpbk1lbnUoKSAKICAgICAgICB7CiAgICAg
ICAgICAgIG1haW5IVE1Mc3RyICs9ICI8IS0tIE1FTlUgTUFLRSBCRUdJTlMgLS0+XG4iOwogICAg
ICAgICAgICBtYWluSFRNTHN0ciArPSAiPFRBQkxFICIgKyBtYWluTWVudUF0dHIgKyAiID5cbiI7
CiAgICAgICAgICAgIG1haW5IVE1Mc3RyICs9ICI8IS0tIE1BSU4gTUVOVSBTVEFSVFMgLS0+XG4i
OwogICAgICAgICAgICBtYWluSFRNTHN0ciArPSAiPCEtLSBNQUlOX01FTlUgLS0+XG4iOwogICAg
ICAgICAgICBtYWluSFRNTHN0ciArPSAiPCEtLSBNQUlOIE1FTlUgRU5EUyAtLT5cbiI7CiAgICAg
ICAgICAgIG1haW5IVE1Mc3RyICs9ICI8L1RBQkxFPlxuIjsKICAgICAgICB9CiAgICAgICAgCiAg
ICAgICAgZnVuY3Rpb24gaW5pdFN1Yk1lbnUoKSAKICAgICAgICB7CiAgICAgICAgICAgIHN1YkhU
TUxzdHIgKz0gIlxuIjsKICAgICAgICAgICAgc3ViSFRNTHN0ciArPSAiPCEtLSBTVUIgTUVOVSBT
VEFSVFMgLS0+XG4iOwogICAgICAgICAgICBzdWJIVE1Mc3RyICs9ICI8IS0tIFNVQl9NRU5VIC0t
PlxuIjsKICAgICAgICAgICAgc3ViSFRNTHN0ciArPSAiPCEtLSBTVUIgTUVOVSBFTkRTIC0tPlxu
IjsKICAgICAgICAgICAgc3ViSFRNTHN0ciArPSAiXG4iOwogICAgICAgICAgICBzdWJIVE1Mc3Ry
ICs9ICI8IS0tIE1FTlUgTUFLRSBFTkRTIC0tPlxuIjsKICAgICAgICB9CiAgICAgICAgCiAgICAg
ICAgZnVuY3Rpb24gYWRkTWFpbkl0ZW0oIGlkTWFpbixuYW1lLGxvYyApIAogICAgICAgIHsKICAg
ICAgICAgICAgdmFyIFNFQVJDSCA9ICI8IS0tIE1BSU4gSVRFTSAiK2lkTWFpbisiIC0tPiI7CiAg
ICAgICAgICAgIAogICAgICAgICAgICBpZiAobWFpbkhUTUxzdHIuaW5kZXhPZihTRUFSQ0gpICE9
IC0xKQogICAgICAgICAgICAgICAgcmV0dXJuOwoKICAgICAgICAgICAgTUVOVXN0ciA9ICIiOwog
ICAgICAgICAgICBNRU5Vc3RyICs9ICI8IS0tIE1BSU4gSVRFTSAiK2lkTWFpbisiIC0tPiI7CiAg
ICAgICAgICAgIE1FTlVzdHIgKz0gIjxUUj48VEQgaWQ9XCJUIiArIGlkTWFpbiArICJcIiBvbm1v
dXNlb3Zlcj1cImRpc3BsYXlTdWJNZW51KCciK2lkTWFpbisiJyk7XCIgaGVpZ2h0PTI0PiI7CiAg
ICAgICAgICAgIE1FTlVzdHIgKz0gIjxESVYgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlOyc+IjsK
ICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChsb2MgIT0gbnVsbCkgewogICAgICAgICAgICAg
ICAgTUVOVXN0ciArPSAiPGEgaHJlZj1cIiIrbG9jKyJcIiBjbGFzcz1cIm1lbnVzXCIgb25jbGlj
az1cImhpZGVBbGwoKTtcIj4iOwogICAgICAgICAgICAgICAgTUVOVXN0ciArPSAiXG4iOwogICAg
ICAgICAgICAgICAgTUVOVXN0ciArPSBuYW1lOwogICAgICAgICAgICAgICAgTUVOVXN0ciArPSAi
PC9hPlxuIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIE1FTlVzdHIgKz0g
IjxhIGhyZWY9XCIuXCIgY2xhc3M9XCJtZW51c1wiIG9ubW91c2VvdmVyPVwiZGlzcGxheVN1Yk1l
bnUoJyIraWRNYWluKyInKTtcIiBvbmNsaWNrPVwicmV0dXJuIGZhbHNlO1wiPiI7CiAgICAgICAg
ICAgICAgICBNRU5Vc3RyICs9ICJcbiI7CiAgICAgICAgICAgICAgICBNRU5Vc3RyICs9IG5hbWU7
CiAgICAgICAgICAgICAgICBNRU5Vc3RyICs9ICI8L2E+XG4iOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIAogICAgICAgICAgICBNRU5Vc3RyICs9ICI8L0RJVj5cbiI7CiAgICAgICAgICAgIE1F
TlVzdHIgKz0gIjwvVEQ+PC9UUj5cbiI7CiAgICAgICAgICAgIE1FTlVzdHIgKz0gIjwhLS0gTUFJ
Tl9NRU5VIC0tPlxuIjsKICAgICAgICAgICAgbWFpbkhUTUxzdHIgPSBtYWluSFRNTHN0ci5yZXBs
YWNlKCI8IS0tIE1BSU5fTUVOVSAtLT5cbiIsIE1FTlVzdHIpOwogICAgICAgIH0KICAgICAgICAK
ICAgICAgICBmdW5jdGlvbiBjaGFuZ2Vsb2NhdGlvbihsb2MpCiAgICAgICAgewogICAgICAgIAlp
Zihsb2MudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwIik8MCAmJiB3aW5kb3cubG9jYXRpb24u
aG9zdC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm5ld3MuY2hpbmF0aW1lcy5jb20iKTwwICYmIHdp
bmRvdy5sb2NhdGlvbi5ob3N0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiY2hpbmF0aW1lcy5jb20i
KT4wKSBsb2M9Imh0dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tLyIrbG9jOwogICAgICAgIAlyZXR1
cm4gbG9jOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBhZGRTdWJNZW51KGlk
U3ViTWVudSxuYW1lLGxvYyx0YXJnZXQsd2lkdGgpIAogICAgICAgIHsKICAgICAgICBsb2M9Y2hh
bmdlbG9jYXRpb24obG9jKTsKICAgICAgICB2YXIgc3RyVGFyZ2V0ID0gIiI7CiAgICAgICAgdmFy
IGlkUG9zTWVudSA9IGlkU3ViTWVudS5zdWJzdHIoMCwgaWRTdWJNZW51Lmxlbmd0aCAtIGJhc2VM
ZW4gKTsKICAgICAgICB2YXIgc3RyV2lkdGg9IiI7CiAgICAgICAgaWYgKGFyZ3VtZW50c1s0XSE9
bnVsbCkKICAgICAgICB7CiAgICAgICAgc3RyV2lkdGgrPSIgd2lkdGg9MTAwJSIrd2lkdGg7CiAg
ICAgICAgfQogICAgICAgIE1FTlVzdHIgPSAiIjsKICAgICAgICBTRUFSQ0ggPSAiPCEtLSBNQUlO
IElURU0gIitpZFBvc01lbnUrIiAtLT4iOwoKICAgICAgICBTRUFSQ0ggPSAiPCEtLSBORVhUIFNV
QklURU0gIisgaWRQb3NNZW51ICsiIC0tPiI7CiAgICAgICAgaWYgKHN1YkhUTUxzdHIuaW5kZXhP
ZihTRUFSQ0gpID09IC0xKSAKICAgICAgICB7CiAgICAgICAgTUVOVXN0ciArPSAiPGRpdiBpZD1c
IkwiK2lkUG9zTWVudSsiXCIgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlOyB2aXNpYmlsaXR5OiBo
aWRkZW47IHRvcDogLTEwMDA7IGxlZnQ6IC0xMDAwO3otaW5kZXg6MTAwMDsnICBPbk1vdXNlT3V0
PVwiQ3RpTW91c2VPdXQoKTtcIj5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPHRhYmxlIGJvcmRl
cj0nMCcgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyBiZ2NvbG9yPScjY2NjY2NjJyBz
dHlsZT0nbWFyZ2luLWxlZnQ6MXB4OyBwYWRkaW5nLWxlZnQ6MXB4OycgPjx0cj48dGQgYWxpZ249
J2xlZnQnIHZhbGlnbj0ndG9wJz5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPHRhYmxlICIgKyBz
dWJNZW51QXR0ciArICBzdHJXaWR0aCsiID5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPCEtLSBO
RVhUIFNVQklURU0gIisgaWRQb3NNZW51ICsiIC0tPlxuIjsgCiAgICAgICAgTUVOVXN0ciArPSAi
PC90YWJsZT5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPC90ZD48L3RyPjwvdGFibGU+XG4iOwog
ICAgICAgIE1FTlVzdHIgKz0gIjwvZGl2PlxuIjsKICAgICAgICBNRU5Vc3RyICs9ICJcbiI7CiAg
ICAgICAgTUVOVXN0ciArPSAiPCEtLSBTVUJfTUVOVSAtLT5cbiI7IAogICAgICAgIHN1YkhUTUxz
dHIgPSBzdWJIVE1Mc3RyLnJlcGxhY2UoIjwhLS0gU1VCX01FTlUgLS0+XG4iLCBNRU5Vc3RyKTsK
ICAgICAgICB9CiAgICAgICAgTUVOVXN0ciA9ICIiOwogICAgICAgIE1FTlVzdHIgKz0iPCEtLSBN
QUlOIElURU0gIitpZFN1Yk1lbnUrIiAtLT5cbiI7CiAgICAgICAgU0VBUkNIID0gIjwhLS0gTkVY
VCBTVUJJVEVNICIrIGlkUG9zTWVudSArIiAtLT5cbiI7CiAgICAgICAgaWYodGFyZ2V0ICE9IG51
bGwgKSAKICAgICAgICBzdHJUYXJnZXQgPSAidGFyZ2V0PVwiIiArIHRhcmdldDsKICAgICAgICBN
RU5Vc3RyICs9ICI8dHI+PHRkIGNsYXNzPSd0ZHN1Ym1lbnUnIHN0eWxlPSdiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvaHJfZG90dGVkLmdpZik7YmFj
a2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O2JhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbTsnIGhl
aWdodD0yNCBpZD1cIlQiK2lkU3ViTWVudSsiXCIgb25tb3VzZW92ZXI9XCJ0aGlzLmNsYXNzTmFt
ZT0nU3ViSXRlbUhvdmVyJztkaXNwbGF5U3ViTWVudTAxKCciK2lkU3ViTWVudSsiJyk7c3RhdHVz
PSciICsgbG9jKyInO1wiIE9uTW91c2VPdXQ9XCJ0aGlzLmNsYXNzTmFtZT0ndGRzdWJtZW51Jztc
IiBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSciK2xvYysiJztjdHN1cnZleWNsaWNrKCdiMTEt
bGlzdC1tZW51MicpO1wiPiI7CiAgICAgICAgLy9NRU5Vc3RyICs9ICI8YSBocmVmPSciK2xvYysi
JyBjbGFzcz1cIm1lbnVzXCIgb25jbGljaz1cImhpZGVBbGwoKTtcIiAiICtzdHJUYXJnZXQrICIg
PiI7CiAgICAgICAgTUVOVXN0ciArPSAiJm5ic3A7XG4iOwogICAgICAgIE1FTlVzdHIgKz0gbmFt
ZTsKICAgICAgICBNRU5Vc3RyICs9ICI8L2E+XG4iOwogICAgICAgIE1FTlVzdHIgKz0gIjwvdGQ+
PC90cj5cbiI7CiAgICAgICAgTUVOVXN0ciArPSBTRUFSQ0g7CiAgICAgICAgc3ViSFRNTHN0ciA9
IHN1YkhUTUxzdHIucmVwbGFjZShTRUFSQ0gsIE1FTlVzdHIpOwogICAgICAgIH0KICAgICAgICBm
dW5jdGlvbiBhZGRTdWJJdGVtKGlkUG9zTWVudSxuYW1lLGxvYyx0YXJnZXQsd2lkdGgpIAogICAg
ICAgIHsKICAgICAgICBsb2M9Y2hhbmdlbG9jYXRpb24obG9jKTsKICAgICAgICB2YXIgc3RyVGFy
Z2V0ID0gIiI7CiAgICAgICAgTUVOVXN0ciA9ICIiOwogICAgICAgIHZhciBzdHJXaWR0aD0iIjsK
ICAgICAgICBpZiAoYXJndW1lbnRzWzRdIT1udWxsKQogICAgICAgIHsKICAgICAgICBzdHJXaWR0
aCs9IiB3aWR0aD0iK3dpZHRoOwogICAgICAgIH0KICAgICAgICBTRUFSQ0ggPSAiPCEtLSBNQUlO
IElURU0gIitpZFBvc01lbnUrIiAtLT4iOwogICAgICAgIGlmIChtYWluSFRNTHN0ci5pbmRleE9m
KFNFQVJDSCkgPT0gLTEpIAogICAgICAgIHsKICAgICAgICBpZiAoc3ViSFRNTHN0ci5pbmRleE9m
KFNFQVJDSCkgPT0gLTEpIAogICAgICAgIHsKICAgICAgICAvL2FsZXJ0KGlkUG9zTWVudSArICIg
bm90IGZvdW5kIik7CiAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
U0VBUkNIID0gIjwhLS0gTkVYVCBTVUJJVEVNICIrIGlkUG9zTWVudSArIiAtLT4iOwogICAgICAg
IGlmIChzdWJIVE1Mc3RyLmluZGV4T2YoU0VBUkNIKSA9PSAtMSkgCiAgICAgICAgewogICAgICAg
IE1FTlVzdHIgKz0gIjxkaXYgaWQ9XCJMIitpZFBvc01lbnUrIlwiIHN0eWxlPSdwb3NpdGlvbjph
YnNvbHV0ZTsgdmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IC0xMDAwOyBsZWZ0OiAtMTAwMDt6LWlu
ZGV4OjEwMDA7JyAgT25Nb3VzZU91dD1cIkN0aU1vdXNlT3V0KCk7XCI+XG4iOwogICAgICAgIE1F
TlVzdHIgKz0gIjx0YWJsZSBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScxJyBjZWxsc3BhY2luZz0n
MCcgYmdjb2xvcj0nI2NjY2NjYycgc3R5bGU9J21hcmdpbi1sZWZ0OjFweDsgcGFkZGluZy1sZWZ0
OjFweDsnID48dHI+PHRkIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCc+XG4iOwogICAgICAgIE1F
TlVzdHIgKz0gIjx0YWJsZSAiICsgc3ViTWVudUF0dHIgKyBzdHJXaWR0aCsiPlxuIjsKICAgICAg
ICBNRU5Vc3RyICs9ICI8IS0tIE5FWFQgU1VCSVRFTSAiKyBpZFBvc01lbnUgKyIgLS0+XG4iOwog
ICAgICAgIE1FTlVzdHIgKz0gIjwvdGFibGU+XG4iOwogICAgICAgIE1FTlVzdHIgKz0gIjwvdGQ+
PC90cj48L3RhYmxlPlxuIjsKICAgICAgICBNRU5Vc3RyICs9ICI8L2Rpdj5cbiI7CiAgICAgICAg
TUVOVXN0ciArPSAiXG4iOwogICAgICAgIE1FTlVzdHIgKz0gIjwhLS0gU1VCX01FTlUgLS0+XG4i
OwogICAgICAgIHN1YkhUTUxzdHIgPSBzdWJIVE1Mc3RyLnJlcGxhY2UoIjwhLS0gU1VCX01FTlUg
LS0+XG4iLCBNRU5Vc3RyKTsKICAgICAgICB9CiAgICAgICAgTUVOVXN0ciA9ICIiOwogICAgICAg
IFNFQVJDSCA9ICI8IS0tIE5FWFQgU1VCSVRFTSAiKyBpZFBvc01lbnUgKyIgLS0+XG4iOwogICAg
ICAgIGlmKGxvYyA9PSBudWxsKQkKICAgICAgICAvL2FsZXJ0KG5hbWUgKyAiIGxvYyBjYW4gbm90
IGJlIG51bGwiKQogICAgICAgIGlmKHRhcmdldCAhPSBudWxsICkgCiAgICAgICAgc3RyVGFyZ2V0
ID0gInRhcmdldD1cIiIgKyB0YXJnZXQ7CiAgICAgICAgTUVOVXN0ciArPSAiPHRyPjx0ZCBjbGFz
cz0ndGRzdWJtZW51JyAgc3R5bGU9J2JhY2tncm91bmQtaW1hZ2U6IHVybCgvMjAwN0N0aS8yMDA3
Q3RpLWluZGV4L2ltYWdlcy9ocl9kb3R0ZWQuZ2lmKTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0
LXg7YmFja2dyb3VuZC1wb3NpdGlvbjogYm90dG9tOycgaGVpZ2h0PTI0IG9ubW91c2VvdmVyPVwi
dGhpcy5jbGFzc05hbWU9J1N1Ykl0ZW1Ib3Zlcic7ZGlzcGxheVN1Ykl0ZW0oJyIraWRQb3NNZW51
KyInKTtzdGF0dXM9JyIgKyBsb2MrIic7XCIgT25Nb3VzZU91dD1cInRoaXMuY2xhc3NOYW1lPSd0
ZHN1Ym1lbnUnO1wiIG9uY2xpY2s9XCJ3aW5kb3cubG9jYXRpb249JyIrbG9jKyInO2N0c3VydmV5
Y2xpY2soJ2IxMS1saXN0LW1lbnUyJyk7XCI+IjsKICAgICAgICAvL01FTlVzdHIgKz0gIjxhIGhy
ZWY9JyIrbG9jKyInIGNsYXNzPVwibWVudXNcIiBvbmNsaWNrPVwiaGlkZUFsbCgpO1wiICIgK3N0
clRhcmdldCsgIiA+IjsKICAgICAgICBNRU5Vc3RyICs9ICImbmJzcDtcbiI7CiAgICAgICAgTUVO
VXN0ciArPSBuYW1lOwogICAgICAgIE1FTlVzdHIgKz0gIjwvYT5cbiI7CiAgICAgICAgTUVOVXN0
ciArPSAiPC90ZD48L3RyPlxuIjsKICAgICAgICBNRU5Vc3RyICs9IFNFQVJDSDsKICAgICAgICBz
dWJIVE1Mc3RyID0gc3ViSFRNTHN0ci5yZXBsYWNlKFNFQVJDSCwgTUVOVXN0cik7CiAgICAgICAg
fQogICAgICAgIGZ1bmN0aW9uIGRpc3BsYXlTdWJNZW51VG9wKGlkU3ViTWVudSkgCiAgICAgICAg
ewogICAgICAgIExldmVsZmxhZz0wOwogICAgICAgIGRpc3BsYXlTdWJNZW51MDEoaWRTdWJNZW51
KTsKICAgICAgICB9IAogICAgICAgIGZ1bmN0aW9uIGRpc3BsYXlTdWJNZW51MDEoaWRTdWJNZW51
KSAKICAgICAgICB7CgogICAgICAgIEN0aUNsb3NlVGFnPSJmYWxzZSI7CiAgICAgICAgdmFyIG9i
alN1Yk1lbnU7CiAgICAgICAgdmFyIG9ialBvc01lbnU7CiAgICAgICAgaWYoIGdfSXNTdXBwb3J0
ID09IGZhbHNlICkKICAgICAgICByZXR1cm47CiAgICAgICAgaWYoIWRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJMIitpZFN1Yk1lbnUpKSB7CiAgICAgICAgQ3RpUnVuMTEwNTAxKCk7CiAgICAgICAg
bWVudS53cml0ZVN1Yk1lbnUoaWRTdWJNZW51KTsKICAgICAgICB9CiAgICAgICAgdGVtcGxlbj1p
ZExhc3RNZW51Lmxlbmd0aDsKICAgICAgICBiYXNlbGVuPTI7CgogICAgICAgIHdoaWxlKHRlbXBs
ZW4gPj0gaWRTdWJNZW51Lmxlbmd0aCkgewogICAgICAgIGlmKGlkTGFzdE1lbnUuc3Vic3RyKDAs
IHRlbXBsZW4pIT1pZFN1Yk1lbnUpIHsKICAgICAgICBkb0hpZGVNZW51KGlkTGFzdE1lbnUuc3Vi
c3RyKDAsIHRlbXBsZW4pKTsKICAgICAgICB9CiAgICAgICAgdGVtcGxlbj10ZW1wbGVuLWJhc2Vs
ZW4KICAgICAgICB9CiAgICAgICAgZG9TaG93TWVudShpZFN1Yk1lbnUpOwogICAgICAgIGlkTGFz
dE1lbnUgPSBpZFN1Yk1lbnU7CgogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBkaXNwbGF5U3Vi
SXRlbShpZFN1Yk1lbnUpIAogICAgICAgIHsKICAgICAgICB2YXIgb2JqU3ViTWVudTsKICAgICAg
ICB2YXIgb2JqUG9zTWVudTsKICAgICAgICBpZiggZ19Jc1N1cHBvcnQgPT0gZmFsc2UgKQogICAg
ICAgIHJldHVybjsKICAgICAgICBDdGlDbG9zZVRhZz1mYWxzZTsKICAgICAgICBpZiAoaWRMYXN0
TWVudS5sZW5ndGggPiBpZFN1Yk1lbnUubGVuZ3RoKQogICAgICAgIGRvSGlkZU1lbnUoaWRMYXN0
TWVudSk7CQogICAgICAgIGlkTGFzdE1lbnUgPSBpZFN1Yk1lbnU7CiAgICAgICAgfQogICAgICAg
IGZ1bmN0aW9uIGNhbGN1bGF0ZVN1bU9mZnNldChvYmpJdGVtLCBvZmZzZXROYW1lKSAKICAgICAg
ICB7CiAgICAgICAgaWYoIGdfSXNTdXBwb3J0ID09IGZhbHNlICkKICAgICAgICByZXR1cm4gMDsK
ICAgICAgICB2YXIgdG90YWxPZmZzZXQgPSAwOwogICAgICAgIHZhciBpdGVtID0gb2JqSXRlbTsK
ICAgICAgICBkbwogICAgICAgIHsKICAgICAgICB0b3RhbE9mZnNldCArPSBldmFsKCdpdGVtLicr
b2Zmc2V0TmFtZSk7CiAgICAgICAgaXRlbSA9IGV2YWwoJ2l0ZW0ub2Zmc2V0UGFyZW50Jyk7CiAg
ICAgICAgfSB3aGlsZSAoaXRlbSAhPSBudWxsKTsKICAgICAgICByZXR1cm4gdG90YWxPZmZzZXQ7
CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGRvSGlkZU1lbnUoIGlkICkKICAgICAgICB7CiAg
ICAgICAgdHJ5ewogICAgICAgIGlmKCBnX0lzU3VwcG9ydCA9PSBmYWxzZSApCiAgICAgICAgcmV0
dXJuOwogICAgICAgIHZhciBjdXJPYmo7CiAgICAgICAgaWYoIWRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJMIitpZCkpe3JldHVybjt9CiAgICAgICAgY3VyT2JqPWRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJMIitpZCkuc3R5bGU7CiAgICAgICAgb2JqUG9zTWVudT1kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiVCIraWQpLnN0eWxlOwogICAgICAgIG9ialBvc01lbnUuYmFja2dyb3VuZENvbG9yPSIi
OwogICAgICAgIG9ialBvc01lbnUuY29sb3I9IiI7CiAgICAgICAgY3VyT2JqLnZpc2liaWxpdHkg
PSBkaXZIaWRlOwogICAgICAgIGN1ck9iai5sZWZ0ID0gMDsKICAgICAgICB9IGNhdGNoKGUpIHt9
CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGRvU2hvd01lbnUoIGlkICkKICAgICAgICB7CiAg
ICAgICAgaWYoIGdfSXNTdXBwb3J0ID09IGZhbHNlICkKICAgICAgICByZXR1cm47CiAgICAgICAg
dmFyIG9ialN1Yk1lbnU7CiAgICAgICAgdmFyIG9ialBvc01lbnU7CiAgICAgICAgdmFyIHBvc1N0
cjsKICAgICAgICB2YXIgSUVMd2lkdGg7CiAgICAgICAgdmFyIE5TTHdpZHRoOwogICAgICAgIGlm
KCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVCIraWQpKXtyZXR1cm47fQogICAgICAgIG9ialBv
c01lbnU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlQiK2lkKTsgICAgCiAgICAgICAgb2JqUG9z
TWVudS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9Z19QYXJlbnRiZ2NvbG9yOyAgCiAgICAgICAgb2Jq
UG9zTWVudS5zdHlsZS5jb2xvcj0iI0ZGRkZGRiI7IAogICAgICAgIGlmKCFkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiTCIraWQpKXtyZXR1cm47fQogICAgICAgIG9ialN1Yk1lbnU9ZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIkwiK2lkKTsKICAgICAgICBvYmpTdWJNZW51LnN0eWxlLmxlZnQ9IDAg
KydweCc7CiAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3A9IDAgKydweCc7CiAgICAgICAgSUVM
d2lkdGg9b2JqU3ViTWVudS5vZmZzZXRXaWR0aDsKICAgICAgICBJRUxIZWlnaHQ9b2JqU3ViTWVu
dS5vZmZzZXRIZWlnaHQ7CiAgICAgICAgTlNMd2lkdGg9cGFyc2VJbnQob2JqU3ViTWVudS5vZmZz
ZXRXaWR0aCk7CiAgICAgICAgTlNMSGVpZ2h0PXBhcnNlSW50KG9ialN1Yk1lbnUub2Zmc2V0SGVp
Z2h0KTsKICAgICAgICBpZihMZXZlbGZsYWc9PTApCiAgICAgICAgewogICAgICAgIG9ialN1Yk1l
bnUuc3R5bGUubGVmdCA9IGNhbGN1bGF0ZVN1bU9mZnNldCggb2JqUG9zTWVudSwgJ29mZnNldExl
ZnQnKTsKICAgICAgICBvYmpTdWJNZW51LnN0eWxlLnRvcCAgPSBjYWxjdWxhdGVTdW1PZmZzZXQo
IG9ialBvc01lbnUsICdvZmZzZXRUb3AnKSArIG9ialBvc01lbnUub2Zmc2V0SGVpZ2h0OwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgb2JqU3ViTWVudS5zdHlsZS5sZWZ0ID0gY2FsY3VsYXRlU3Vt
T2Zmc2V0KCBvYmpQb3NNZW51LCAnb2Zmc2V0TGVmdCcpICsgb2JqUG9zTWVudS5vZmZzZXRXaWR0
aC0zOwogICAgICAgIG9ialN1Yk1lbnUuc3R5bGUudG9wICA9IGNhbGN1bGF0ZVN1bU9mZnNldCgg
b2JqUG9zTWVudSwgJ29mZnNldFRvcCcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGdfSXNJRSkK
ICAgICAgICB7CgogICAgICAgIGlmICggKHBhcnNlSW50KG9ialN1Yk1lbnUuc3R5bGUudG9wKS1k
b2N1bWVudC5ib2R5LnNjcm9sbFRvcCkrSUVMSGVpZ2h0PmRvY3VtZW50LmJvZHkuY2xpZW50SGVp
Z2h0ICkKICAgICAgICB7CiAgICAgICAgaWYoTGV2ZWxmbGFnIT0wKQogICAgICAgIHsKICAgICAg
ICBvYmpTdWJNZW51LnN0eWxlLnRvcD0ocGFyc2VJbnQob2JqU3ViTWVudS5zdHlsZS50b3ApLShJ
RUxIZWlnaHQvMykqMikrJ3B4JwoKICAgICAgICB9CiAgICAgICAgaWYgKCBwYXJzZUludChvYmpT
dWJNZW51LnN0eWxlLnRvcCkgPCAwICkgCiAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3A9ZG9j
dW1lbnQuYm9keS5zY3JvbGxUb3ArJ3B4JzsKICAgICAgICB9CiAgICAgICAgaWYgKCBwYXJzZUlu
dChvYmpTdWJNZW51LnN0eWxlLnRvcCkgPCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkKICAgICAg
ICBvYmpTdWJNZW51LnN0eWxlLnRvcD1kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCsncHgnOwoKICAg
ICAgICBpZiAoIChwYXJzZUludChvYmpTdWJNZW51LnN0eWxlLmxlZnQpLWRvY3VtZW50LmJvZHku
c2Nyb2xsTGVmdCkrSUVMd2lkdGg+ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCApCiAgICAgICAg
ewogICAgICAgIG9ialN1Yk1lbnUuc3R5bGUubGVmdD1jYWxjdWxhdGVTdW1PZmZzZXQoIG9ialBv
c01lbnUsICdvZmZzZXRMZWZ0JykgLSBJRUx3aWR0aCszOwogICAgICAgIH0KICAgICAgICB9CiAg
ICAgICAgaWYgKGdfSXNOU19Eb20pCiAgICAgICAgewogICAgICAgIGlmICggKHBhcnNlSW50KG9i
alN1Yk1lbnUuc3R5bGUudG9wKS1zZWxmLnBhZ2VZT2Zmc2V0KStwYXJzZUludChOU0xIZWlnaHQp
PndpbmRvdy5pbm5lckhlaWdodCApCiAgICAgICAgewogICAgICAgIGlmKExldmVsZmxhZyE9MCl7
CiAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3A9KHBhcnNlSW50KG9ialN1Yk1lbnUuc3R5bGUu
dG9wKS0oTlNMSGVpZ2h0LzMpKjIpKydweCcKICAgICAgICB9CiAgICAgICAgaWYgKCBwYXJzZUlu
dChvYmpTdWJNZW51LnN0eWxlLnRvcCkgPCAwICkgCiAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50
b3A9JzBweCc7CiAgICAgICAgfQogICAgICAgIGlmICggKHBhcnNlSW50KG9ialN1Yk1lbnUuc3R5
bGUubGVmdCktc2VsZi5wYWdlWE9mZnNldCkrTlNMd2lkdGg+d2luZG93LmlubmVyV2lkdGggKQog
ICAgICAgIHsKICAgICAgICBvYmpTdWJNZW51LnN0eWxlLmxlZnQ9KHBhcnNlSW50KGNhbGN1bGF0
ZVN1bU9mZnNldCggb2JqUG9zTWVudSwgJ29mZnNldExlZnQnKSktTlNMd2lkdGgpKydweCcKICAg
ICAgICB9CiAgICAgICAgfQogICAgICAgIG9ialN1Yk1lbnUuc3R5bGUudmlzaWJpbGl0eSA9IGRp
dlNob3c7CiAgICAgICAgTGV2ZWxmbGFnPTE7IAogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBo
aWRlQWxsKCApCiAgICAgICAgewogICAgICAgIGlmKCBnX0lzU3VwcG9ydCA9PSBmYWxzZSApCiAg
ICAgICAgcmV0dXJuOwogICAgICAgIGRvU2hvd0hpZGUoICIiICk7CiAgICAgICAgaWRMYXN0TWVu
dSA9ICIiOwogICAgICAgIHN0YXR1cz0iIjsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZG9T
aG93SGlkZSggaWRTdWJNZW51ICkgCiAgICAgICAgewogICAgICAgIGlmKCBnX0lzU3VwcG9ydCA9
PSBmYWxzZSApCiAgICAgICAgcmV0dXJuOwogICAgICAgIHZhciBjdXJMZW4sIGxpbWl0TGVuLCBs
YXN0TGVuLCBzdWJMZW47CiAgICAgICAgbGltaXRMZW4gPSBsYXN0TGVuID0gaWRMYXN0TWVudS5s
ZW5ndGg7CiAgICAgICAgc3ViTGVuID0gaWRTdWJNZW51Lmxlbmd0aDsKICAgICAgICBpZiggbGFz
dExlbiA+IHN1YkxlbiApIAogICAgICAgIGxpbWl0TGVuID0gc3ViTGVuOyAgIAogICAgICAgIGN1
ckxlbiA9IGJhc2VMZW47CiAgICAgICAgd2hpbGUoIGN1ckxlbiA8IGxpbWl0TGVuICkgCiAgICAg
ICAgewogICAgICAgIGlmKCBpZExhc3RNZW51LnN1YnN0cigwLCBjdXJMZW4pICE9IGlkU3ViTWVu
dS5zdWJzdHIoMCwgY3VyTGVuKSApCiAgICAgICAgYnJlYWs7CiAgICAgICAgY3VyTGVuICs9IGJh
c2VMZW47CiAgICAgICAgfSAgICAKICAgICAgICBsaW1pdExlbiA9IGN1ckxlbjsKICAgICAgICB3
aGlsZSggY3VyTGVuIDw9IGxhc3RMZW4gKSAKICAgICAgICB7CiAgICAgICAgZG9IaWRlTWVudSgg
aWRMYXN0TWVudS5zdWJzdHIoMCwgY3VyTGVuKSApOwogICAgICAgIGN1ckxlbiArPSBiYXNlTGVu
OwogICAgICAgIH0KICAgICAgICBjdXJMZW4gPSBiYXNlTGVuOyAgICAKICAgICAgICB3aGlsZSgg
Y3VyTGVuIDw9IHN1YkxlbiApIAogICAgICAgIHsKICAgICAgICBkb1Nob3dNZW51KCBpZFN1Yk1l
bnUuc3Vic3RyKDAsIGN1ckxlbikgKTsKICAgICAgICBjdXJMZW4gKz0gYmFzZUxlbjsKICAgICAg
ICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIEN0aU1vdXNlT3V0KCkKICAgICAgICB7CiAg
ICAgICAgY2xlYXJUaW1lb3V0KEN0aUNsb3NlVGltZXIpOwogICAgICAgIEN0aUNsb3NlVGFnID0g
InRydWUiOwogICAgICAgIEN0aUNsb3NlVGltZXIgPSBzZXRUaW1lb3V0KCJDdGlDbG9zZSgpIiwx
MDAwKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gQ3RpQ2xvc2UoICkKICAgICAgICB7CiAg
ICAgICAgaWYoIEN0aUNsb3NlVGFnID09ICJ0cnVlIiApCiAgICAgICAgaGlkZUFsbCgpOwogICAg
ICAgIH0KICAgICAgICBmdW5jdGlvbiBvbmxvYWRvdmVyKCkgCiAgICAgICAgewogICAgICAgIGlm
KCBnX0lzU3VwcG9ydCA9PSBmYWxzZSApCiAgICAgICAgcmV0dXJuOwogICAgICAgIGRvY3VtZW50
LmJvZHkub25jbGljaz1oaWRlQWxsOwoKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgCQlp
Zihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVDAxIikpewogICAgICAgIAkJb2JqUG9zTWVudT1k
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVDAxIik7CiAgICAgICAgCQlvYmpQb3NNZW51Lm9ubW91
c2VvdmVyPWZ1bmN0aW9uKCkge3RoaXMuY2xhc3NOYW1lPSdTdWJJdGVtSG92ZXInO3N0YXR1cz0n
Q1RJbmV3cyc7ZGlzcGxheVN1Yk1lbnVUb3AoIjAxIik7fTsKICAgICAgICAJCS8vb2JqUG9zTWVu
dS5vbm1vdXNlb3Zlcj1mdW5jdGlvbigpIHt0aGlzLmNsYXNzTmFtZT0nU3ViSXRlbUhvdmVyJztz
dGF0dXM9J0NUSW5ld3MnO2Rpc3BsYXlTdWJNZW51MDEoIjAxIik7fTsKICAgICAgICAJCW9ialBv
c01lbnUub25tb3VzZW91dD1mdW5jdGlvbigpIHtDdGlNb3VzZU91dCgpO3RoaXMuY2xhc3NOYW1l
PSdDVElfSE1NQUlOJzt9OwogICAgICAgIAkJfQogICAgICAgIAkJfSBjYXRjaChlKSB7fQogICAg
ICAgIH0KICAgICAgICBmdW5jdGlvbiB3cml0ZU1haW5NZW51KCkgCiAgICAgICAgewogICAgICAg
IGRvY3VtZW50LndyaXRlKG1haW5IVE1Mc3RyKTsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24g
d3JpdGVTdWJNZW51KGlkKSAKICAgICAgICB7CiAgICAgICAgdmFyIG9ESVZSZXN1bHRzPWRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAKICAgICAgICBvRElWUmVzdWx0cy5pZD0iWCIraWQ7
IAogICAgICAgIG9ESVZSZXN1bHRzLmlubmVySFRNTD1zdWJIVE1Mc3RyOwogICAgICAgIHRyeQog
ICAgICAgIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpLml0
ZW0oMCkuYXBwZW5kQ2hpbGQob0RJVlJlc3VsdHMpOwogICAgICAgIHN1YkhUTUxzdHI9IiI7CiAg
ICAgICAgbWVudS5pbml0U3ViTWVudSggKTsKICAgICAgICB9Y2F0Y2goZSl7fQogICAgICAgIH0K
ICAgICAgICAKICAgICAgICBtZW51ID0gbmV3IG1ha2VtZW51KCk7CiAgICAgICAgbWVudS5pbml0
TWFpbk1lbnUoKTsKICAgICAgICBtZW51LmluaXRTdWJNZW51KCk7CiAgICAgICAgCiAgICAgICAg
ZnVuY3Rpb24gU29ydEFycmF5KG8xLCBvMikKICAgICAgICB7CiAgICAgICAgCXJldHVybiBvMS5p
ZC5sb2NhbGVDb21wYXJlKG8yLmlkKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gSXNTdWJN
ZW51KHNpZCwgYXJ5KQogICAgICAgIHsKICAgICAgICAJdmFyIGNvdW50ID0gMDsKICAgICAgICAJ
Zm9yICh2YXIgaT0wOyBpPCBhcnkubGVuZ3RoOyBpKyspCiAgICAgICAgCXsKICAgICAgICAJCWlm
IChhcnlbaV0uaWQuaW5kZXhPZihzaWQpID09IDAgJiYgYXJ5W2ldLmlkLmxvY2FsZUNvbXBhcmUo
c2lkKSAhPSAwKQogICAgICAgIAkJewogICAgICAgIAkJCWNvdW50Kys7CiAgICAgICAgCQl9CiAg
ICAgICAgCX0gIAogICAgICAgIAlpZiAoY291bnQgPiAwKQogICAgICAgIAkJcmV0dXJuIHRydWU7
CiAgICAgICAgCWVsc2UKICAgICAgICAJCXJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAg
IGZ1bmN0aW9uIGxpc3RJdGVtIChpZCx0aXRsZSx1cmwpIHsKICAgICAgICAgICB0aGlzLmlkID0g
aWQ7CiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOwogICAgICAgICAgdGhpcy51cmwgPSB1cmw7
CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBtYWtlTWVudUl0ZW0gKGl0bWVBcnJheSkgewog
ICAgICAgIGl0bWVBcnJheS5zb3J0KFNvcnRBcnJheSk7CgoKICAgICAgICBmb3IgKCBpPTAgOyBp
PCBpdG1lQXJyYXkubGVuZ3RoIDsgaSsrKSB7CiAgICAgICAgCWlmIChJc1N1Yk1lbnUoaXRtZUFy
cmF5W2ldLmlkLCBpdG1lQXJyYXkpKSB7CiAgICAgICAgCQkJbWVudS5hZGRTdWJNZW51KCBpdG1l
QXJyYXlbaV0uaWQsaXRtZUFycmF5W2ldLnRpdGxlKyc8aW1nIHNyYz1odHRwOi8vbmV3cy5jaGlu
YXRpbWVzLmNvbS9DaGluYXRpbWVzL2luZGV4L2ltZy9Qb3B1cC5naWYgYm9yZGVyPTAgd2lkdGg9
MTAgaGVpZ2h0PTEwIGFsaWduPSJBQlNNSURETEUiPicsIGl0bWVBcnJheVtpXS51cmwpOwkJCiAg
ICAgICAgCQl9CiAgICAgICAgCQllbHNlIHsKICAgICAgICAJCQltZW51LmFkZFN1Ykl0ZW0oIGl0
bWVBcnJheVtpXS5pZC5zdWJzdHJpbmcoMCxpdG1lQXJyYXlbaV0uaWQubGVuZ3RoLTIpLGl0bWVB
cnJheVtpXS50aXRsZSwgaXRtZUFycmF5W2ldLnVybCk7CiAgICAgICAgCQkJfQogICAgICAgIH0K
ICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIEN0aVJ1bjExMDUwMSgpIHsKICAgICAgICB2YXIg
aXRlbU51bSA9IDA7CiAgICAgICAgdmFyIGl0bWVBcnJheSA9IG5ldyBBcnJheSgpOwoKICAgICAg
ICAJCWl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgnMDEwNCcsJ8KkwqTCsMOqwq7D
icKzw7gnLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUxpc3QvMCw0NTIwLDEx
MDUwMSwwMC5odG1sJyk7ICAgICAgCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcg
bGlzdEl0ZW0oJzAxMDQwMScsJ8Kqa8KzwqHCpE/CscOAIMKowr7CsMO0wrzDp8KwayDDhcO5wqnD
o8K1TMKkV8Ktwq0nLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNvbnRlbnQv
MCw0NTIxLDExMDUwMSsxMTIwMDgwMjA0MDAwNDAsMDAuaHRtbCcpOyAgICAKCiAgICAgICAgCQlp
dG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDQwMTAxJywnwrnDp8KlacK/w7nD
g8O2wqTDn8K6QSDCq0nCpEjDhXbCpMOPwrzDqcKseScsJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8y
MDA3Q3RpLU5ld3MtQ29udGVudC8wLDQ1MjEsMTEwNTAxKzExMjAwODAyMDQwMDA0MSwwMC5odG1s
Jyk7ICAgCgogICAgICAgIAkJaXRtZUFycmF5W2l0ZW1OdW0rK109bmV3IGxpc3RJdGVtKCcwMTA0
MDEwMScsJ8K1TMKtwq3DhcO5wqnDo8Kowr7CsGsgwqVxwrB8wqTCo8KlSMKswrDCtU0nLCcvMjAw
N0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNvbnRlbnQvMCw0NTIxLDExMDUwMSsxMTIw
MDgwMjA0MDAwNDIsMDAuaHRtbCcpOyAgIAoKICAgICAgICAJCWl0bWVBcnJheVtpdGVtTnVtKytd
PW5ldyBsaXN0SXRlbSgnMDEwNDAxMDEnLCfCrcOXwqprwqTCvcOFwqXCt3wgwrbDiMKqa8KzwqHD
g8OZwqZQJywnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1Db250ZW50LzAsNDUy
MSwxMTA1MDErMTEyMDA4MDIwNDAwMDQzLDAwLmh0bWwnKTsgICAKCiAgICAgICAgCQlpdG1lQXJy
YXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDQwMTAxJywnwqprwqzDicKhR8KmwrPCuG/D
hcO5wqnDo8Kow64gwrlIwqTDj8K1TMK4b8Kxw4DCqXcnLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3Mv
MjAwN0N0aS1OZXdzLUNvbnRlbnQvMCw0NTIxLDExMDUwMSsxMTIwMDgwMjA0MDAwNDQsMDAuaHRt
bCcpOyAgIAoKICAgICAgICAJCWl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgnMDEw
NDAxMDEnLCfCpXXCrcKtwqVYwrnDksKkwqPCrcKtwqVYwq7DvCDCpsKowrp8wqx9JywnLzIwMDdD
dGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1Db250ZW50LzAsNDUyMSwxMTA1MDErMTEyMDA4
MDIwNDAwMDQ1LDAwLmh0bWwnKTsgICAKCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1u
ZXcgbGlzdEl0ZW0oJzAxMDQwMicsJ8KkwrXCqMOswqrDrMKkwq0gwqRwwrbDgMKmaMKmwqwyMD84
NcKkwrgnLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNvbnRlbnQvMCw0NTIx
LDExMDUwMSsxMTIwMDgwMjA0MDAwNDYsMDAuaHRtbCcpOyAgICAKCiAgICAgICAgCQlpdG1lQXJy
YXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDQwMjAxJywnwqV0w4PDvsKmfsKzZiDCpsKo
w4PDhMKhQsK0wqPCr8KrwrbCvMKuw4bCvMO2wr3DpicsJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8y
MDA3Q3RpLU5ld3MtQ29udGVudC8wLDQ1MjEsMTEwNTAxKzExMjAwODAyMDQwMDA0NywwMC5odG1s
Jyk7ICAgCgogICAgICAgIAkJaXRtZUFycmF5W2l0ZW1OdW0rK109bmV3IGxpc3RJdGVtKCcwMTA0
MDIwMScsJ8Kww6rCuUTCpcOmwrNxwrrDtMK4w7TDgcOBwqjCpSDCp0/Cs1HDg8KpwqRGJywnLzIw
MDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1Db250ZW50LzAsNDUyMSwxMTA1MDErMTEy
MDA4MDIwNDAwMDQ4LDAwLmh0bWwnKTsgICAKCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsr
XT1uZXcgbGlzdEl0ZW0oJzAxMDQwMjAxJywnwqxLwrhgwqTCo8KlwrTCp8OpIMKww6rCuUTCq8OI
wrlCwr3DlcKmXsKtw6zCu8O5JywnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1D
b250ZW50LzAsNDUyMSwxMTA1MDErMTEyMDA4MDIwNDAwMDQ5LDAwLmh0bWwnKTsgICAKCiAgICAg
ICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDQwMjAxJywnwrDCo8Kk
acK0SMKsecKow5PCq8O0wqZ+IMKnTsKow6zCqsOswqRUJywnLzIwMDdDdGkvMjAwN0N0aS1OZXdz
LzIwMDdDdGktTmV3cy1Db250ZW50LzAsNDUyMSwxMTA1MDErMTEyMDA4MDIwNDAwMDUwLDAwLmh0
bWwnKTsgICAKCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAx
MDQwMycsJ0FUTcODQsKrw5fCvcOVwrDCqiDCuUzCpn7Cu8Oiwq3Dk8K1aMKnw5YnLCcvMjAwN0N0
aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNvbnRlbnQvMCw0NTIxLDExMDUwMSsxMTIwMDgw
MjA0MDAwNTEsMDAuaHRtbCcpOyAgICAKCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1u
ZXcgbGlzdEl0ZW0oJzAxMDQwMzAxJywnwqXDvcK4w4nCulDCoULDgcOXwqZ5wq5wIMKmfsKrZcK7
w6LCv8O6wqfDs8Kmd8Kkw58nLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNv
bnRlbnQvMCw0NTIxLDExMDUwMSsxMTIwMDgwMjA0MDAwNTIsMDAuaHRtbCcpOyAgIAoKICAgICAg
ICAJCWl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgnMDEwNDAzMDEnLCfCqXfCpnPC
qMOswrTDgcKwwrHCrMOdw4XCpSDCpsObwrDDisOEw7LCpnPCqFPCp1HCrsKnJywnLzIwMDdDdGkv
MjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1Db250ZW50LzAsNDUyMSwxMTA1MDErMTEyMDA4MDIw
NDAwMDUzLDAwLmh0bWwnKTsgICAKCiAgICAgICAgCQlpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcg
bGlzdEl0ZW0oJzAxMDQwMzAxJywnwqZ+wrXDpsKow5HCs2bCulrCqcO0IMKzwr3Cu8O5wqRAwrjD
tMO2dCcsJy8yMDA3Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtQ29udGVudC8wLDQ1MjEs
MTEwNTAxKzExMjAwODAyMDQwMDA1NCwwMC5odG1sJyk7ICAgCgogICAgICAgIAkJaXRtZUFycmF5
W2l0ZW1OdW0rK109bmV3IGxpc3RJdGVtKCcwMTA0MDMwMScsJ8K1w6bCpHDCusKmIMKqw6HDg2vC
pMOJIMK5QcKlw4HCpMK0wrnDhMKoU8OBw4gnLCcvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0
aS1OZXdzLUNvbnRlbnQvMCw0NTIxLDExMDUwMSsxMTIwMDgwMjA0MDAwNTUsMDAuaHRtbCcpOyAg
IAoKICAgICAgICAJCWl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgnMDEwNDAzMDEn
LCfCoXXCsnvCvMK0wqVKwqF2wrNmwrfCvcKkw5YgwrvDucKuw6bDgsK9wqRAwq3CvycsJy8yMDA3
Q3RpLzIwMDdDdGktTmV3cy8yMDA3Q3RpLU5ld3MtQ29udGVudC8wLDQ1MjEsMTEwNTAxKzExMjAw
ODAyMDQwMDA1NiwwMC5odG1sJyk7ICAgCgogICAgICAgIGl0bWVBcnJheVtpdGVtTnVtKytdPW5l
dyBsaXN0SXRlbSgnMDEwNicsJ8KkdcKww5PCrsOJwrPDuCcsJy9DTW9uZXkvTmV3cy9OZXdzLVBh
Z2UvMCw0NDQyLGxpc3QrMDYwMSwwMC5odG1sJyk7CiAgICAgICAgCSBpdG1lQXJyYXlbaXRlbU51
bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDYwMScsJ8K3c8KleMK5w7TCrMOdwqTDiSDCpUTDhXbCsMOy
wqrDt8OFwqfCpXjCqsKjwrbDlycsJy9DTW9uZXkvTmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGNvbnRl
bnQrMTIwNjAxKzEyMjAwODAyMDQwMDMwMiwwMC5odG1sJyk7CiAgICAgICAgCSBpdG1lQXJyYXlb
aXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDYwMScsJ8KoU8Kkw7TCoULCqFPCuXHCoULCpl7C
pMKjwqRGwq5hIMKzwrfCqGEhIMKkasKzwrDCpk3CvsO3wrNCwrJ6wqjDvMKmw5LDhcOnJywnL0NN
b25leS9OZXdzL05ld3MtUGFnZS8wLDQ0NDIsY29udGVudCsxMjA2MDMrMTIyMDA4MDIwNDAwMjky
LDAwLmh0bWwnKTsKICAgICAgICAJIGl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgn
MDEwNjAxJywnwrDDkcKqw5HCs8KwwrvDiCDCpFfCu8OIwq1uwrdtwrLDhMKkQCcsJy9DTW9uZXkv
TmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGNvbnRlbnQrMTIwNjA3KzEyMjAwODAyMDQwMDI5NSwwMC5o
dG1sJyk7CiAgICAgICAgCSBpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDYw
MScsJ8KmwqjCpcK7wqRXwrTCrSDCpXjCpMKkwrvCqMKmdsKxw4jCusKmwq3CtycsJy9DTW9uZXkv
TmV3cy9OZXdzLVBhZ2UvMCw0NDQyLGNvbnRlbnQrMTIwNjA4KzEyMjAwODAyMDQwMDI4NCwwMC5o
dG1sJyk7CiAgICAgICAgCSBpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxMDYw
MScsJ8Kow7PCsMOTwqbCqMKlXMKhSDEwwrhVwqVkwqXCo8K3wrTCv8OVJywnL0NNb25leS9OZXdz
L05ld3MtUGFnZS8wLDQ0NDIsY29udGVudCsxMjA2MTArMTIyMDA4MDIwNDAwMzE3LDAwLmh0bWwn
KTsKICAgICAgICAJIGl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRlbSgnMDEwNjAxJywn
wrTDgcKzXMK5wqvCpn7CrMKwwqV4w4ZXwrFhwqjDk8KrwrTCvsO3JywnL0NNb25leS9OZXdzL05l
d3MtUGFnZS8wLDQ0NDIsY29udGVudCsxMjA2MTErMTIyMDA4MDIwNDAwMzE1LDAwLmh0bWwnKTsK
CiAgICAgICAgCQkJCSBpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxNTInLCc8
aW1nIHNyYz1odHRwOi8vcnNzLmNoaW5hdGltZXMuY29tL3N5bi9pbWFnZXMvQ1RfcnNzLmdpZiBi
b3JkZXI9MCBhbGlnbj1URVhUVE9QPiDDgWDDhMO9wq3CticsJ2h0dHA6Ly9yc3MuY2hpbmF0aW1l
cy5jb20vJyk7ICAKCiAgICAgICAgCQkJCWl0bWVBcnJheVtpdGVtTnVtKytdPW5ldyBsaXN0SXRl
bSgnMDE1MjAxJywnwq1xwr5cwrVKw4JJwrdzwrtEPGltZyBzcmM9aHR0cDovL3Jzcy5jaGluYXRp
bWVzLmNvbS9zeW4vaW1hZ2VzL0NUX3Jzcy5naWYgYm9yZGVyPTAgYWxpZ249VEVYVFRPUD4nLCdo
dHRwOi8vcnNzLmNoaW5hdGltZXMuY29tL3Jzcy9mb2N1cy11LnJzcycpOyAgCgogICAgICAgIAkJ
CQkgaXRtZUFycmF5W2l0ZW1OdW0rK109bmV3IGxpc3RJdGVtKCcwMTU0JywnPGltZyBzcmM9aHR0
cDovL25ld3MuY2hpbmF0aW1lcy5jb20vQ2hpbmF0aW1lcy9pbmRleC9pbWcvbm90X25ld3MuZ2lm
IGJvcmRlcj0wIGFsaWduPSJBQlNNSURETEUiPsKpw7rCpMOTwqRswrbDgMKqw7fCvcK8wrJ5LcK+
wq7Cu0XCt3PCrEvCpm7CuULCrsOwIMKxTcODRMKzw7jCvsOJPGltZyBzcmM9aHR0cDovL2FjdC5j
aGluYXRpbWVzLmNvbS9hZHMvMDgwMS9waXp6YWh1dF9tZW51XzA4MDEyNS5naWYgYm9yZGVyPTA+
JywnaHR0cDovL2FjdC5jaGluYXRpbWVzLmNvbS9hZHMvMDgwMS9waXp6YWh1dF9tZW51XzA4MDEy
NS5odG0nKTsgIAoKICAgICAgICAJCQkJaXRtZUFycmF5W2l0ZW1OdW0rK109bmV3IGxpc3RJdGVt
KCcwMTU0MDEnLCc8aW1nIHNyYz1odHRwOi8vbmV3cy5jaGluYXRpbWVzLmNvbS9DaGluYXRpbWVz
L2luZGV4L2ltZy9ub3RfbmV3cy5naWYgYm9yZGVyPTAgYWxpZ249IkFCU01JRERMRSI+wrfDrcKz
wqHCuMKowqvDiMK5SsKkV8K2V8Klw5/DhcOpwqTDscOCw4TCoVbCqsOswqjCo8KtwrE8aW1nIHNy
Yz1odHRwOi8vYWN0LmNoaW5hdGltZXMuY29tL2Fkcy8wODAxL3BpenphaHV0X21lbnVfMDgwMTI1
LmdpZiBib3JkZXI9MD4nLCdodHRwOi8vYWN0LmNoaW5hdGltZXMuY29tL2Fkcy8wODAxL3Bpenph
aHV0X21lbnUxXzA4MDEyNS5odG0nKTsgIAoKICAgICAgICAJCQkJaXRtZUFycmF5W2l0ZW1OdW0r
K109bmV3IGxpc3RJdGVtKCcwMTU0MDEnLCc8aW1nIHNyYz1odHRwOi8vbmV3cy5jaGluYXRpbWVz
LmNvbS9DaGluYXRpbWVzL2luZGV4L2ltZy9ub3RfbmV3cy5naWYgYm9yZGVyPTAgYWxpZ249IkFC
U01JRERMRSI+wrfDrcKzwqHCuMKowqvDiMK5SsKkV8K2V8Klw5/DhcOpwqTDscOCw4TCoVbCq37D
gHzDhcOpw4XDp8K9ZzxpbWcgc3JjPWh0dHA6Ly9hY3QuY2hpbmF0aW1lcy5jb20vYWRzLzA4MDEv
cGl6emFodXRfbWVudV8wODAxMjUuZ2lmIGJvcmRlcj0wPicsJ2h0dHA6Ly9hY3QuY2hpbmF0aW1l
cy5jb20vYWRzLzA4MDEvcGl6emFodXRfbWVudTJfMDgwMTI1Lmh0bScpOyAgCgogICAgICAgIAkJ
CQlpdG1lQXJyYXlbaXRlbU51bSsrXT1uZXcgbGlzdEl0ZW0oJzAxNTQwMScsJzxpbWcgc3JjPWh0
dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tL0NoaW5hdGltZXMvaW5kZXgvaW1nL25vdF9uZXdzLmdp
ZiBib3JkZXI9MCBhbGlnbj0iQUJTTUlERExFIj7CtUzCqmvCqcOowr7Dl8KqwrrCqsO3wrbDgMOF
XcKkTyDCvsKuwrtFwrdzwqxLwqZuwrlCwq7DsDxpbWcgc3JjPWh0dHA6Ly9hY3QuY2hpbmF0aW1l
cy5jb20vYWRzLzA4MDEvcGl6emFodXRfbWVudV8wODAxMjUuZ2lmIGJvcmRlcj0wPicsJ2h0dHA6
Ly9hY3QuY2hpbmF0aW1lcy5jb20vYWRzLzA4MDEvcGl6emFodXRfbWVudTNfMDgwMTI1Lmh0bScp
OyAgIAoKICAgICAgICBtYWtlTWVudUl0ZW0gKGl0bWVBcnJheSk7CgogICAgICAgIH0KICAgICAg
ICA8L3NjcmlwdD4KICAgIDwvaGVhZD4KICAgIDxib2R5IG9uTG9hZD0iZXhlY0hNKCk7Ij4KICAg
ICAgICA8ZGl2IGlkPSJzdWJNZW51VGFibGUiPjx0YWJsZSBpZD1UYWJsZV8wMSAgaGVpZ2h0PTIz
IGJvcmRlcj0wIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkIHdpZHRoPSc1MScg
aWQ9J2RhaWx5bmV3c3BhcGVyJz48YSBocmVmPSdodHRwOi8vcGRmLmNoaW5hdGltZXMuY29tL2Rh
aWx5bmV3c3BhcGVyL2luZGV4Lmh0bScgdGFyZ2V0PSdkYWlseW5ld3NwYXBlcic+PGltZyBzcmM9
Jy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDAuZ2lmJyBoZWlnaHQ9JzIz
JyBib3JkZXI9JzAnIHdpZHRoPSc1MSc+PC9hPjwvdGQ+PHRkIHdpZHRoPSc3MCcgaWQ9Jyc+PGEg
aHJlZj0nLzIwMDdDdGkvMjAwN0N0aS1QbmV3cy8yMDA3Q3RpLVBuZXdzLWxpc3QvMCw0NTIzLCww
MC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8w
MS5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lkdGg9JzcwJz48L2E+PC90ZD48dGQgd2lk
dGg9JzQ0JyBpZD0nVDAxJz48YSBocmVmPScvMjAwN0N0aS8yMDA3Q3RpLU5ld3MvMjAwN0N0aS1O
ZXdzLUxpc3QvMCw0NTIwLDExMDUwMSwwMC5odG1sJz48aW1nIHNyYz0nLzIwMDdDdGkvMjAwN0N0
aS1pbmRleC9pbWFnZXMvbmV3c2Rpcl8wMi5naWYnIGhlaWdodD0nMjMnIGJvcmRlcj0nMCcgd2lk
dGg9JzQ0Jz48L2E+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+CiAgICA8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18896</attachid>
            <date>2008-02-03 19:57:08 -0800</date>
            <delta_ts>2008-02-03 21:21:14 -0800</delta_ts>
            <desc>Further reduction</desc>
            <filename>chinatimes.html</filename>
            <type>text/html</type>
            <size>24411</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1iaWc1Ij4KICAgICAgICA8YmFzZSBocmVmPSJo
dHRwOi8vbmV3cy5jaGluYXRpbWVzLmNvbS8iPgoKICAgICAgICA8c2NyaXB0PgogICAgICAgIHZh
ciB0aW1lciA9IDEwMDsKICAgICAgICB2YXIgc0RvbWFpbiA9ICIiOwogICAgICAgIHZhciBpc0hv
bWVQYWdlID0gImZhbHNlIjsKICAgICAgICB2YXIgaUhNVGltZSA9IDE7CiAgICAgICAgdmFyIGNo
ZWNraWQgPSAibmV3cyI7CgogICAgICAgIGZ1bmN0aW9uIE1NX2ZpbmRPYmoobiwgZCkgeyAvL3Y0
LjAxCiAgICAgICAgICB2YXIgcCxpLHg7ICBpZighZCkgZD1kb2N1bWVudDsgaWYoKHA9bi5pbmRl
eE9mKCI/IikpPjAmJnBhcmVudC5mcmFtZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIGQ9cGFyZW50
LmZyYW1lc1tuLnN1YnN0cmluZyhwKzEpXS5kb2N1bWVudDsgbj1uLnN1YnN0cmluZygwLHApO30K
ICAgICAgICAgIGlmKCEoeD1kW25dKSYmZC5hbGwpIHg9ZC5hbGxbbl07IGZvciAoaT0wOyF4JiZp
PGQuZm9ybXMubGVuZ3RoO2krKykgeD1kLmZvcm1zW2ldW25dOwogICAgICAgICAgZm9yKGk9MDsh
eCYmZC5sYXllcnMmJmk8ZC5sYXllcnMubGVuZ3RoO2krKykgeD1NTV9maW5kT2JqKG4sZC5sYXll
cnNbaV0uZG9jdW1lbnQpOwogICAgICAgICAgaWYoIXggJiYgZC5nZXRFbGVtZW50QnlJZCkgeD1k
LmdldEVsZW1lbnRCeUlkKG4pOyByZXR1cm4geDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9u
IE1NX3Nob3dIaWRlTGF5ZXJzKCkgeyAvL3Y2LjAKICAgICAgICAgIHZhciBpLHAsdixvYmosYXJn
cz1NTV9zaG93SGlkZUxheWVycy5hcmd1bWVudHM7CiAgICAgICAgICBmb3IgKGk9MDsgaTwoYXJn
cy5sZW5ndGgtMik7IGkrPTMpIGlmICgob2JqPU1NX2ZpbmRPYmooYXJnc1tpXSkpIT1udWxsKSB7
IHY9YXJnc1tpKzJdOwogICAgICAgICAgICBpZiAob2JqLnN0eWxlKSB7IG9iaj1vYmouc3R5bGU7
IHY9KHY9PSdzaG93Jyk/J3Zpc2libGUnOih2PT0naGlkZScpPydoaWRkZW4nOnY7IH0KICAgICAg
ICAgICAgb2JqLnZpc2liaWxpdHk9djsgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gTU1f
cHJlbG9hZEltYWdlcygpIHsgLy92My4wCiAgICAgICAgICB2YXIgZD1kb2N1bWVudDsgaWYoZC5p
bWFnZXMpeyBpZighZC5NTV9wKSBkLk1NX3A9bmV3IEFycmF5KCk7CiAgICAgICAgICAgIHZhciBp
LGo9ZC5NTV9wLmxlbmd0aCxhPU1NX3ByZWxvYWRJbWFnZXMuYXJndW1lbnRzOyBmb3IoaT0wOyBp
PGEubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGlmIChhW2ldLmluZGV4T2YoIiMiKSE9MCl7IGQu
TU1fcFtqXT1uZXcgSW1hZ2U7IGQuTU1fcFtqKytdLnNyYz1hW2ldO319CiAgICAgICAgfQoKICAg
ICAgICBmdW5jdGlvbiBNTV9zd2FwSW1nUmVzdG9yZSgpIHsgLy92My4wCiAgICAgICAgICB2YXIg
aSx4LGE9ZG9jdW1lbnQuTU1fc3I7IGZvcihpPTA7YSYmaTxhLmxlbmd0aCYmKHg9YVtpXSkmJngu
b1NyYztpKyspIHguc3JjPXgub1NyYzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIE1NX3N3
YXBJbWFnZSgpIHsgLy92My4wCiAgICAgICAgICB2YXIgaSxqPTAseCxhPU1NX3N3YXBJbWFnZS5h
cmd1bWVudHM7IGRvY3VtZW50Lk1NX3NyPW5ldyBBcnJheTsgZm9yKGk9MDtpPChhLmxlbmd0aC0y
KTtpKz0zKQogICAgICAgICAgIGlmICgoeD1NTV9maW5kT2JqKGFbaV0pKSE9bnVsbCl7ZG9jdW1l
bnQuTU1fc3JbaisrXT14OyBpZigheC5vU3JjKSB4Lm9TcmM9eC5zcmM7IHguc3JjPWFbaSsyXTt9
CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBleGVjSE0oKQogICAgICAgIHsKICAgICAgICAg
ICAgb25sb2Fkb3ZlcigpCiAgICAgICAgICAgIE1NU2hvd0RNTWVudSgnRE1nb29kaWVzJywnMDEn
LCc2MCcsJ8KmwrPCrsOGwqXCq8K2wrAnLCcvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9u
ZXdzZGlyX2dvb2RpZXMuZ2lmJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBETURp
dk5vdFNob3c9IkRNRGl2Tm90U2hvdyI7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gTU1TaG93
RE0oRE1JRCwgRE1GaXJzdCkKICAgICAgICB7CiAgICAgICAgCXZhciBzSW1nWCwgc0ltZ1ksIHNJ
bWdXLCBzSW1nWFRvdGFsLCBzRG1Db250LCBETU5leHQsIERNSUREYWQ7CiAgICAgICAgCXZhciBE
TVM9IkRNUyIrRE1JRDsKICAgICAgICAJdmFyIERNSVY9IkRNSVYiK0RNSUQ7CiAgICAgICAgCXZh
ciBETVQ9IkRNVCIrRE1JRDsKICAgICAgICAJdmFyIERNQXJyPW51bGw7CiAgICAgICAgCXZhciBE
TUFyck5leHQ7CiAgICAgICAgCWlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNRGl2Tm90U2hv
dyk9PW51bGwpCiAgICAgICAgCXsKICAgICAgICAJCURNQ3JlYXRlRGl2KERNRGl2Tm90U2hvdyk7
CiAgICAgICAgCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETURpdk5vdFNob3cpLnN0eWxlLnBv
c2l0aW9uPSJhYnNvbHV0ZSI7CiAgICAgICAgCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETURp
dk5vdFNob3cpLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7CiAgICAgICAgCX0KICAgICAgICAJ
TU1DaERNTWVudShETUlELCB0cnVlKTsKICAgICAgICAJaWYoZXZhbCgidHlwZW9mIERNQXJyIitE
TUlEKSE9InVuZGVmaW5lZCIpICBETUFycj1ldmFsKCJETUFyciIrRE1JRCk7CiAgICAgICAgCWlm
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNUykgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
RE1JVikgJiYgRE1BcnIhPW51bGwgICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNRGl2Tm90
U2hvdykgJiYgRE1BcnIhPW51bGwpCiAgICAgICAgCXsKICAgICAgICAJCWlmKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKERNSVYpLmlubmVySFRNTCE9IiIpCiAgICAgICAgCQl7CiAgICAgICAgCQkJ
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSI7
CiAgICAgICAgCQl9CiAgICAgICAgCQllbHNlewogICAgICAgIAkJCXNEbUNvbnQ9Ijx0YWJsZSBp
ZD0nIitETVQrIicgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMScgY2VsbHNwYWNpbmc9JzAnIGJn
Y29sb3I9JyNjY2NjY2MnIHN0eWxlPSdtYXJnaW4tbGVmdDoxcHg7IHBhZGRpbmctbGVmdDoxcHg7
Jz48dHI+PHRkID4iOwogICAgICAgIAkJCXNEbUNvbnQ9c0RtQ29udCsiPHRhYmxlIGJvcmRlcj0w
IGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSNFQUYwRjUgPiI7CiAgICAgICAg
CQkJZm9yKHZhciBtYXJfaT0wO21hcl9pPERNQXJyLmxlbmd0aDttYXJfaSsrKQogICAgICAgIAkJ
CXsKICAgICAgICAJCQkJRE1OZXh0PSJub2RhdGEiOwogICAgICAgIAkJCQlETUFyck5leHQ9bnVs
bDsKICAgICAgICAJCQkJaWYobWFyX2k+PTEwICYmIG1hcl9pPDEwMCkgRE1OZXh0PSJfIittYXJf
aTsKICAgICAgICAJCQkJZWxzZSBpZihtYXJfaTwxMCkgRE1OZXh0PSJfMCIrbWFyX2k7CgogICAg
ICAgIAkJCQlpZihldmFsKCJ0eXBlb2YgRE1BcnIiK0RNSUQrRE1OZXh0KSE9InVuZGVmaW5lZCIp
CiAgICAgICAgCQkJCXsKICAgICAgICAJCQkJCURNQXJyTmV4dD1ldmFsKCJETUFyciIrRE1JRCtE
TU5leHQpOwogICAgICAgIAkJCQl9CiAgICAgICAgCQkJCXNEbUNvbnQ9c0RtQ29udCsiPHRyPjx0
ZCBoZWlnaHQ9MjQgY2xhc3M9J3Rkc3VibWVudScgc3R5bGU9J2JhY2tncm91bmQtaW1hZ2U6IHVy
bCgvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9ocl9kb3R0ZWQuZ2lmKTsiOwogICAgICAg
IAkJCQlzRG1Db250PXNEbUNvbnQrImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtiYWNrZ3Jv
dW5kLXBvc2l0aW9uOiBib3R0b207JyI7CiAgICAgICAgCQkJCWlmKERNQXJyTmV4dD09bnVsbCkK
ICAgICAgICAJCQkJewoKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiIG9ubW91c2VvdmVy
PVwidGhpcy5jbGFzc05hbWU9J1N1Ykl0ZW1Ib3Zlcic7XCIiOwogICAgICAgIAkJCQkJc0RtQ29u
dD1zRG1Db250KyIgT25Nb3VzZU91dD1cInRoaXMuY2xhc3NOYW1lPSd0ZHN1Ym1lbnUnO1wiID4i
OwogICAgICAgIAkJCQkJc0RtQ29udD1zRG1Db250KyI8YSBocmVmPSIrRE1BcnJbbWFyX2ldLnVy
bCsiIGNsYXNzPW1lbnVzRE0+IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiJm5ic3A7
Jm5ic3A7Jm5ic3A7IitETUFyclttYXJfaV0ubmFtZSsiJm5ic3A7IjsKICAgICAgICAJCQkJCXNE
bUNvbnQ9c0RtQ29udCsiPC9hPiI7CiAgICAgICAgCQkJCX0KICAgICAgICAJCQkJZWxzZQogICAg
ICAgIAkJCQl7CiAgICAgICAgCQkJCQlzRG1Db250PXNEbUNvbnQrIiBpZD0nIitETVMrRE1OZXh0
KyInIG9ubW91c2VvdmVyPVwidGhpcy5jbGFzc05hbWU9J1N1Ykl0ZW1Ib3Zlcic7TU1TaG93RE0o
JyIrRE1JRCtETU5leHQrIicsZmFsc2UpO1wiIjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29u
dCsiIE9uTW91c2VPdXQ9XCJ0aGlzLmNsYXNzTmFtZT0ndGRzdWJtZW51JztNTUhpZGVETSgnIitE
TUlEK0RNTmV4dCsiJyk7XCIgPiI7CiAgICAgICAgCQkJCQlzRG1Db250PXNEbUNvbnQrIjxhIGlk
PSdsayIrRE1TK0RNTmV4dCsiJyBocmVmPSIrRE1BcnJbbWFyX2ldLnVybCsiIGNsYXNzPW1lbnVz
RE0+IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsiJm5ic3A7Jm5ic3A7Jm5ic3A7IitE
TUFyclttYXJfaV0ubmFtZSsiJm5ic3A7IjsKICAgICAgICAJCQkJCXNEbUNvbnQ9c0RtQ29udCsi
PGltZyBzcmM9L0NoaW5hdGltZXMvaW5kZXgvaW1nL1BvcHVwLmdpZiBib3JkZXI9MCB3aWR0aD0x
MCBoZWlnaHQ9MTAgYWxpZ249J0FCU01JRERMRSc+PC9hPiI7CiAgICAgICAgCQkJCQlzRG1Db250
PXNEbUNvbnQrIjxkaXYgaWQ9IitETUlWK0RNTmV4dCsiIG9ubW91c2VvdmVyPVwiTU1TaG93RE0o
JyIrRE1JRCtETU5leHQrIicsZmFsc2UpO1wiIG9ubW91c2VvdXQ9XCJNTUhpZGVETSgnIitETUlE
K0RNTmV4dCsiJyk7XCIiOwogICAgICAgIAkJCQkJc0RtQ29udD1zRG1Db250KyIgc3R5bGU9J3Bv
c2l0aW9uOnJlbGF0aXZlOyc+PC9kaXY+IjsKICAgICAgICAJCQkJfQogICAgICAgIAkJCQlzRG1D
b250PXNEbUNvbnQrIjwvdGQ+PC90cj4iOwogICAgICAgIAkJCX0KICAgICAgICAJCQlzRG1Db250
PXNEbUNvbnQrIjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgICAJCQlzRG1Db250
PXNEbUNvbnQrIiI7CgogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLmlu
bmVySFRNTD1zRG1Db250OwogICAgICAgIAkJCXNEbUNvbnQ9c0RtQ29udC5yZXBsYWNlKCJETVQi
LCJETVROb3RTaG93Iik7CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1EaXZO
b3RTaG93KS5pbm5lckhUTUw9c0RtQ29udDsKICAgICAgICAJCQlzSW1nVz1kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiRE1UTm90U2hvdyIrRE1JRCkub2Zmc2V0V2lkdGg7CQogICAgICAgIAkJCWlm
KERNRmlyc3Q9PXRydWUpCiAgICAgICAgCQkJewkKICAgICAgICAJCQkJc0ltZ1g9Z2V0SUVYUG9z
aXRpb240RHkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1TKSk7CiAgICAgICAgCQkJCXNJbWdZ
PWdldElFWVBvc2l0aW9uNER5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNUykpOwogICAgICAg
IAkJCQlzSW1nWT1zSW1nWStkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETVMpLmhlaWdodDsKICAg
ICAgICAJCQkJc0ltZ1hUb3RhbD1zSW1nWCtzSW1nVzsKICAgICAgICAJCQkJaWYoc0ltZ1hUb3Rh
bD5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSBzSW1nWD1zSW1nWC1zSW1nVytkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChETVMpLndpZHRoLTM7CiAgICAgICAgCQkJfQogICAgICAgIAkJCWVsc2UK
ICAgICAgICAJCQl7CiAgICAgICAgCQkJCURNSUREYWQ9RE1JRC5zdWJzdHJpbmcoMCxETUlELmxl
bmd0aC0zKTsKICAgICAgICAJCQkJc0ltZ1g9cGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIkRNVCIrRE1JRERhZCkud2lkdGgpOwogICAgICAgIAkJCQlzSW1nWT1wYXJzZUludChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChETVMpLm9mZnNldFRvcCk7CiAgICAgICAgCQkJCXNJbWdYVG90
YWw9c0ltZ1grc0ltZ1crZ2V0SUVYUG9zaXRpb240RHkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
RE1TKSk7CiAgICAgICAgCQkJCWlmKHNJbWdYVG90YWw+ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0
aCkKICAgICAgICAJCQkJewogICAgICAgIAkJCQkJc0ltZ1g9MC1zSW1nVzsKICAgICAgICAJCQkJ
fQogICAgICAgIAkJCQlpZihnZXRJRVlQb3NpdGlvbjREeShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChETVMpKT5kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkKICAgICAgICAJCQkJewogICAgICAg
IAkJCQkJc0ltZ1k9c0ltZ1krMjAtZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1UKS5vZmZzZXRI
ZWlnaHQ7CiAgICAgICAgCQkJCX0KICAgICAgICAJCQl9CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUubGVmdD1zSW1nWCsicHgiOwogICAgICAgIAkJCWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnRvcD1zSW1nWSsicHgiOwogICAgICAgIAkJ
CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7
CiAgICAgICAgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1JVikuc3R5bGUuZGlzcGxheT0i
YmxvY2siOwogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERNSVYpLnN0eWxlLnZp
c2liaWxpdHk9InZpc2libGUiOwogICAgICAgIAkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKERN
VCkud2lkdGg9c0ltZ1c7CiAgICAgICAgCQl9CiAgICAgICAgCX0KICAgICAgICB9CiAgICAgICAg
CiAgICAgICAgZnVuY3Rpb24gTU1IaWRlRE0oRE1JRCkKICAgICAgICB7CiAgICAgICAgCXZhciBE
TUlWID0gIkRNSVYiK0RNSUQ7CiAgICAgICAgCiAgICAgICAgCU1NQ2hETU1lbnUoRE1JRCwgZmFs
c2UpOwogICAgICAgIAlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChETUlWKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIE1NQ2hE
TU1lbnUoRE1TaWQsIGJTaG93KQogICAgICAgIHsKICAgICAgICAJdmFyIERNTGs9ImxrRE1TIitE
TVNpZDsKICAgICAgICAJdmFyIERNQ2xhc3M7CiAgICAgICAgCWlmKGJTaG93PT10cnVlKSBETUNs
YXNzPSJtZW51c0RNMiI7CiAgICAgICAgCWVsc2UgRE1DbGFzcz0ibWVudXNETSI7CiAgICAgICAg
CXdoaWxlKERNTGsubGVuZ3RoPjcpCiAgICAgICAgCXsJCiAgICAgICAgCQlpZihkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChETUxrKSE9bnVsbCkgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRE1Mayku
Y2xhc3NOYW1lPURNQ2xhc3M7CiAgICAgICAgCQlETUxrPURNTGsuc3Vic3RyaW5nKDAsRE1May5s
ZW5ndGgtMyk7CiAgICAgICAgCX0KICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICBm
dW5jdGlvbiBnZXRJRVhQb3NpdGlvbjREeShpbWdFbGVtKQogICAgICAgIHsKICAgICAgICAgICAg
eFBvcyA9IGltZ0VsZW0ub2Zmc2V0TGVmdDsKICAgICAgICAgICAgCiAgICAgICAgICAgIHdoaWxl
IChpbWdFbGVtID0gaW1nRWxlbS5vZmZzZXRQYXJlbnQpCiAgICAgICAgICAgICAgICB4UG9zICs9
IGltZ0VsZW0ub2Zmc2V0TGVmdDsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiB4UG9z
OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBnZXRJRVlQb3NpdGlvbjREeShp
bWdFbGVtKQogICAgICAgIHsKICAgICAgICAgICAgeVBvcyA9IGltZ0VsZW0ub2Zmc2V0VG9wOwog
ICAgICAgICAgICAKICAgICAgICAgICAgd2hpbGUgKGltZ0VsZW09aW1nRWxlbS5vZmZzZXRQYXJl
bnQpCiAgICAgICAgICAgICAgICAgICAgeVBvcyArPSBpbWdFbGVtLm9mZnNldFRvcDsKICAgICAg
ICAgICAgCiAgICAgICAgICAgIHJldHVybiB5UG9zOwogICAgICAgIH0KICAgICAgICAKICAgICAg
ICBmdW5jdGlvbiBNTVNob3dETU1lbnUoZGl2aWQsIGRpZCwgaXdpZHRoLCBzbmFtZSwgc2ltZykK
ICAgICAgICB7CiAgICAgICAgCXZhciBzRG1Db250OwogICAgICAgIAlzRG1Db250PSI8YSBocmVm
PScjJyBvbm1vdXNlb3Zlcj0nTU1TaG93RE0oXCIiK2RpZCsiXCIsdHJ1ZSk7JyAgb25tb3VzZW91
dD0nTU1IaWRlRE0oXCIiK2RpZCsiXCIpOyc+PGltZyBpZD0nRE1TIitkaWQrIicgc3JjPSciK3Np
bWcrIiciOwogICAgICAgIAlzRG1Db250PXNEbUNvbnQrIiBoZWlnaHQ9JzIzJyBib3JkZXI9JzAn
IHdpZHRoPSciK2l3aWR0aCsiJyBhbHQ9JyIrc25hbWUrIicgPjwvYT48c3BhbiBpZD1ETUlWIitk
aWQrIiBvbm1vdXNlb3Zlcj0nTU1TaG93RE0oXCIiK2RpZCsiXCIsdHJ1ZSk7JyBvbm1vdXNlb3V0
PSdNTUhpZGVETShcIiIrZGlkKyJcIik7JyBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7Jz48L3Nw
YW4+IjsKICAgICAgICAJaWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2aWQpKSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChkaXZpZCkuaW5uZXJIVE1MPXNEbUNvbnQ7CiAgICAgICAgfQogICAg
ICAgIAogICAgICAgIGZ1bmN0aW9uIERNQ3JlYXRlRGl2KGlkKSAKICAgICAgICB7CiAgICAgICAg
ICAgIHZhciBvRElWUmVzdWx0cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAKICAg
ICAgICAgICAgb0RJVlJlc3VsdHMuaWQgPSBpZDsKCiAgICAgICAgCWRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IikuaXRlbSgwKS5hcHBlbmRDaGlsZChvRElWUmVzdWx0cyk7CiAg
ICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBtYWluTWVudUF0dHI9IiBiZ2NvbG9yPScjMDA3
MGMwJyBib3JkZXI9JzEnIGNlbGxwYWRkaW5nPScxJyBjZWxsc3BhY2Vpbmc9JzEnIGJvcmRlcmNv
bG9yPScjZmZhNjAwJyAiOwogICAgICAgIHZhciBzdWJNZW51QXR0cj0iIGJnY29sb3I9JyNFQUYw
RjUnIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjZWluZz0nMScgYm9yZGVyY29s
b3I9JyNFQUYwRjUnIjsKICAgICAgICB2YXIgZ19QYXJlbnRiZ2NvbG9yPSIjN0Y5MEFDIjsKICAg
ICAgICB2YXIgZGl2U2hvdz0idmlzaWJsZSI7CiAgICAgICAgdmFyIGRpdkhpZGU9ImhpZGRlbiI7
IAogICAgICAgIHZhciBpZExhc3RNZW51ID0gIiI7CiAgICAgICAgdmFyIHJpZ2h0WCA9IDAscmln
aHRZID0gMCxsZWZ0WSA9IDAsbGVmdFggPSAwOwogICAgICAgIHZhciBiYXNlTGVuID0gMjsKICAg
ICAgICB2YXIgb2Zmc2V0RGVsWCA9IDEwOwogICAgICAgIHZhciBtYWluSFRNTHN0ciwgc3ViSFRN
THN0cjsKICAgICAgICB2YXIgTGV2ZWxmbGFnPSIxIjsKCiAgICAgICAgZnVuY3Rpb24gbWFrZW1l
bnUoKSAKICAgICAgICB7CiAgICAgICAgICAgIHRoaXMuaW5pdE1haW5NZW51ID0gaW5pdE1haW5N
ZW51OwogICAgICAgICAgICB0aGlzLmluaXRTdWJNZW51ID0gaW5pdFN1Yk1lbnU7CiAgICAgICAg
ICAgIHRoaXMuYWRkTWFpbkl0ZW0gPSBhZGRNYWluSXRlbTsKICAgICAgICAgICAgdGhpcy5hZGRT
dWJJdGVtID0gYWRkU3ViSXRlbTsKICAgICAgICAgICAgdGhpcy5hZGRTdWJNZW51ID0gYWRkU3Vi
TWVudTsKICAgICAgICAgICAgdGhpcy53cml0ZU1haW5NZW51ID0gd3JpdGVNYWluTWVudTsKICAg
ICAgICAgICAgdGhpcy53cml0ZVN1Yk1lbnUgPSB3cml0ZVN1Yk1lbnU7CiAgICAgICAgICAgIAog
ICAgICAgICAgICBpZExhc3RNZW51ID0gIiI7CiAgICAgICAgICAgIG1haW5IVE1Mc3RyID0gIiI7
CiAgICAgICAgICAgIHN1YkhUTUxzdHIgPSAiIjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAg
ZnVuY3Rpb24gaW5pdE1haW5NZW51KCkgCiAgICAgICAgewogICAgICAgICAgICBtYWluSFRNTHN0
ciArPSAiPCEtLSBNRU5VIE1BS0UgQkVHSU5TIC0tPlxuIjsKICAgICAgICAgICAgbWFpbkhUTUxz
dHIgKz0gIjxUQUJMRSAiICsgbWFpbk1lbnVBdHRyICsgIiA+XG4iOwogICAgICAgICAgICBtYWlu
SFRNTHN0ciArPSAiPCEtLSBNQUlOIE1FTlUgU1RBUlRTIC0tPlxuIjsKICAgICAgICAgICAgbWFp
bkhUTUxzdHIgKz0gIjwhLS0gTUFJTl9NRU5VIC0tPlxuIjsKICAgICAgICAgICAgbWFpbkhUTUxz
dHIgKz0gIjwhLS0gTUFJTiBNRU5VIEVORFMgLS0+XG4iOwogICAgICAgICAgICBtYWluSFRNTHN0
ciArPSAiPC9UQUJMRT5cbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGlu
aXRTdWJNZW51KCkgCiAgICAgICAgewogICAgICAgICAgICBzdWJIVE1Mc3RyICs9ICJcbiI7CiAg
ICAgICAgICAgIHN1YkhUTUxzdHIgKz0gIjwhLS0gU1VCIE1FTlUgU1RBUlRTIC0tPlxuIjsKICAg
ICAgICAgICAgc3ViSFRNTHN0ciArPSAiPCEtLSBTVUJfTUVOVSAtLT5cbiI7CiAgICAgICAgICAg
IHN1YkhUTUxzdHIgKz0gIjwhLS0gU1VCIE1FTlUgRU5EUyAtLT5cbiI7CiAgICAgICAgICAgIHN1
YkhUTUxzdHIgKz0gIlxuIjsKICAgICAgICAgICAgc3ViSFRNTHN0ciArPSAiPCEtLSBNRU5VIE1B
S0UgRU5EUyAtLT5cbiI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGFkZE1h
aW5JdGVtKCBpZE1haW4sbmFtZSxsb2MgKSAKICAgICAgICB7CiAgICAgICAgICAgIHZhciBTRUFS
Q0ggPSAiPCEtLSBNQUlOIElURU0gIitpZE1haW4rIiAtLT4iOwogICAgICAgICAgICAKICAgICAg
ICAgICAgaWYgKG1haW5IVE1Mc3RyLmluZGV4T2YoU0VBUkNIKSAhPSAtMSkKICAgICAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgICAgIE1FTlVzdHIgPSAiIjsKICAgICAgICAgICAgTUVOVXN0
ciArPSAiPCEtLSBNQUlOIElURU0gIitpZE1haW4rIiAtLT4iOwogICAgICAgICAgICBNRU5Vc3Ry
ICs9ICI8VFI+PFREIGlkPVwiVCIgKyBpZE1haW4gKyAiXCIgb25tb3VzZW92ZXI9XCJkaXNwbGF5
U3ViTWVudSgnIitpZE1haW4rIicpO1wiIGhlaWdodD0yND4iOwogICAgICAgICAgICBNRU5Vc3Ry
ICs9ICI8RElWIHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZTsnPiI7CiAgICAgICAgICAgIAogICAg
ICAgICAgICBpZiAobG9jICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIE1FTlVzdHIgKz0gIjxh
IGhyZWY9XCIiK2xvYysiXCIgY2xhc3M9XCJtZW51c1wiPiI7CiAgICAgICAgICAgICAgICBNRU5V
c3RyICs9ICJcbiI7CiAgICAgICAgICAgICAgICBNRU5Vc3RyICs9IG5hbWU7CiAgICAgICAgICAg
ICAgICBNRU5Vc3RyICs9ICI8L2E+XG4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgTUVOVXN0ciArPSAiPGEgaHJlZj1cIi5cIiBjbGFzcz1cIm1lbnVzXCIgb25tb3VzZW92
ZXI9XCJkaXNwbGF5U3ViTWVudSgnIitpZE1haW4rIicpO1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFs
c2U7XCI+IjsKICAgICAgICAgICAgICAgIE1FTlVzdHIgKz0gIlxuIjsKICAgICAgICAgICAgICAg
IE1FTlVzdHIgKz0gbmFtZTsKICAgICAgICAgICAgICAgIE1FTlVzdHIgKz0gIjwvYT5cbiI7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIE1FTlVzdHIgKz0gIjwvRElWPlxu
IjsKICAgICAgICAgICAgTUVOVXN0ciArPSAiPC9URD48L1RSPlxuIjsKICAgICAgICAgICAgTUVO
VXN0ciArPSAiPCEtLSBNQUlOX01FTlUgLS0+XG4iOwogICAgICAgICAgICBtYWluSFRNTHN0ciA9
IG1haW5IVE1Mc3RyLnJlcGxhY2UoIjwhLS0gTUFJTl9NRU5VIC0tPlxuIiwgTUVOVXN0cik7CiAg
ICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGNoYW5nZWxvY2F0aW9uKGxvYykKICAg
ICAgICB7CiAgICAgICAgCWlmIChsb2MudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRwIikgPCAw
ICYmIHdpbmRvdy5sb2NhdGlvbi5ob3N0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibmV3cy5jaGlu
YXRpbWVzLmNvbSIpIDwgMCAmJiB3aW5kb3cubG9jYXRpb24uaG9zdC50b0xvd2VyQ2FzZSgpLmlu
ZGV4T2YoImNoaW5hdGltZXMuY29tIikgPiAwKQogICAgICAgIAkgICAgbG9jID0gImh0dHA6Ly9u
ZXdzLmNoaW5hdGltZXMuY29tLyIgKyBsb2M7CiAgICAgICAgCQogICAgICAgIAlyZXR1cm4gbG9j
OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBhZGRTdWJNZW51KGlkU3ViTWVu
dSwgbmFtZSwgbG9jLCB0YXJnZXQsIHdpZHRoKSAKICAgICAgICB7CiAgICAgICAgbG9jPWNoYW5n
ZWxvY2F0aW9uKGxvYyk7CiAgICAgICAgdmFyIHN0clRhcmdldCA9ICIiOwogICAgICAgIHZhciBp
ZFBvc01lbnUgPSBpZFN1Yk1lbnUuc3Vic3RyKDAsIGlkU3ViTWVudS5sZW5ndGggLSBiYXNlTGVu
ICk7CiAgICAgICAgdmFyIHN0cldpZHRoPSIiOwogICAgICAgIGlmIChhcmd1bWVudHNbNF0hPW51
bGwpCiAgICAgICAgewogICAgICAgIHN0cldpZHRoKz0iIHdpZHRoPTEwMCUiK3dpZHRoOwogICAg
ICAgIH0KICAgICAgICBNRU5Vc3RyID0gIiI7CiAgICAgICAgU0VBUkNIID0gIjwhLS0gTUFJTiBJ
VEVNICIraWRQb3NNZW51KyIgLS0+IjsKCiAgICAgICAgU0VBUkNIID0gIjwhLS0gTkVYVCBTVUJJ
VEVNICIrIGlkUG9zTWVudSArIiAtLT4iOwogICAgICAgIGlmIChzdWJIVE1Mc3RyLmluZGV4T2Yo
U0VBUkNIKSA9PSAtMSkgCiAgICAgICAgewogICAgICAgIE1FTlVzdHIgKz0gIjxkaXYgaWQ9XCJM
IitpZFBvc01lbnUrIlwiIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdmlzaWJpbGl0eTogaGlk
ZGVuOyB0b3A6IC0xMDAwOyBsZWZ0OiAtMTAwMDt6LWluZGV4OjEwMDA7Jz5cbiI7CiAgICAgICAg
TUVOVXN0ciArPSAiPHRhYmxlIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5n
PScwJyBiZ2NvbG9yPScjY2NjY2NjJyBzdHlsZT0nbWFyZ2luLWxlZnQ6MXB4OyBwYWRkaW5nLWxl
ZnQ6MXB4OycgPjx0cj48dGQgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz5cbiI7CiAgICAgICAg
TUVOVXN0ciArPSAiPHRhYmxlICIgKyBzdWJNZW51QXR0ciArICBzdHJXaWR0aCsiID5cbiI7CiAg
ICAgICAgTUVOVXN0ciArPSAiPCEtLSBORVhUIFNVQklURU0gIisgaWRQb3NNZW51ICsiIC0tPlxu
IjsgCiAgICAgICAgTUVOVXN0ciArPSAiPC90YWJsZT5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAi
PC90ZD48L3RyPjwvdGFibGU+XG4iOwogICAgICAgIE1FTlVzdHIgKz0gIjwvZGl2PlxuIjsKICAg
ICAgICBNRU5Vc3RyICs9ICJcbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPCEtLSBTVUJfTUVOVSAt
LT5cbiI7IAogICAgICAgIHN1YkhUTUxzdHIgPSBzdWJIVE1Mc3RyLnJlcGxhY2UoIjwhLS0gU1VC
X01FTlUgLS0+XG4iLCBNRU5Vc3RyKTsKICAgICAgICB9CiAgICAgICAgTUVOVXN0ciA9ICIiOwog
ICAgICAgIE1FTlVzdHIgKz0iPCEtLSBNQUlOIElURU0gIitpZFN1Yk1lbnUrIiAtLT5cbiI7CiAg
ICAgICAgU0VBUkNIID0gIjwhLS0gTkVYVCBTVUJJVEVNICIrIGlkUG9zTWVudSArIiAtLT5cbiI7
CiAgICAgICAgaWYodGFyZ2V0ICE9IG51bGwgKSAKICAgICAgICBzdHJUYXJnZXQgPSAidGFyZ2V0
PVwiIiArIHRhcmdldDsKICAgICAgICBNRU5Vc3RyICs9ICI8dHI+PHRkIGNsYXNzPSd0ZHN1Ym1l
bnUnIHN0eWxlPSdiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLzIwMDdDdGkvMjAwN0N0aS1pbmRleC9p
bWFnZXMvaHJfZG90dGVkLmdpZik7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O2JhY2tncm91
bmQtcG9zaXRpb246IGJvdHRvbTsnIGhlaWdodD0yNCBpZD1cIlQiK2lkU3ViTWVudSsiXCIgb25t
b3VzZW92ZXI9XCJ0aGlzLmNsYXNzTmFtZT0nU3ViSXRlbUhvdmVyJztkaXNwbGF5U3ViTWVudTAx
KCciK2lkU3ViTWVudSsiJyk7c3RhdHVzPSciICsgbG9jKyInO1wiIE9uTW91c2VPdXQ9XCJ0aGlz
LmNsYXNzTmFtZT0ndGRzdWJtZW51JztcIiBvbmNsaWNrPVwid2luZG93LmxvY2F0aW9uPSciK2xv
YysiJztcIj4iOwogICAgICAgIE1FTlVzdHIgKz0gIiZuYnNwO1xuIjsKICAgICAgICBNRU5Vc3Ry
ICs9IG5hbWU7CiAgICAgICAgTUVOVXN0ciArPSAiPC9hPlxuIjsKICAgICAgICBNRU5Vc3RyICs9
ICI8L3RkPjwvdHI+XG4iOwogICAgICAgIE1FTlVzdHIgKz0gU0VBUkNIOwogICAgICAgIHN1YkhU
TUxzdHIgPSBzdWJIVE1Mc3RyLnJlcGxhY2UoU0VBUkNILCBNRU5Vc3RyKTsKICAgICAgICB9CiAg
ICAgICAgCiAgICAgICAgZnVuY3Rpb24gYWRkU3ViSXRlbShpZFBvc01lbnUsbmFtZSxsb2MsdGFy
Z2V0LHdpZHRoKSAKICAgICAgICB7CiAgICAgICAgbG9jPWNoYW5nZWxvY2F0aW9uKGxvYyk7CiAg
ICAgICAgdmFyIHN0clRhcmdldCA9ICIiOwogICAgICAgIE1FTlVzdHIgPSAiIjsKICAgICAgICB2
YXIgc3RyV2lkdGg9IiI7CiAgICAgICAgaWYgKGFyZ3VtZW50c1s0XSE9bnVsbCkKICAgICAgICB7
CiAgICAgICAgc3RyV2lkdGgrPSIgd2lkdGg9Iit3aWR0aDsKICAgICAgICB9CiAgICAgICAgU0VB
UkNIID0gIjwhLS0gTUFJTiBJVEVNICIraWRQb3NNZW51KyIgLS0+IjsKICAgICAgICBpZiAobWFp
bkhUTUxzdHIuaW5kZXhPZihTRUFSQ0gpID09IC0xKSAKICAgICAgICB7CiAgICAgICAgaWYgKHN1
YkhUTUxzdHIuaW5kZXhPZihTRUFSQ0gpID09IC0xKSAKICAgICAgICB7CiAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KICAgICAgICB9CiAgICAgICAgU0VBUkNIID0gIjwhLS0gTkVYVCBTVUJJVEVN
ICIrIGlkUG9zTWVudSArIiAtLT4iOwogICAgICAgIGlmIChzdWJIVE1Mc3RyLmluZGV4T2YoU0VB
UkNIKSA9PSAtMSkgCiAgICAgICAgewogICAgICAgIE1FTlVzdHIgKz0gIjxkaXYgaWQ9XCJMIitp
ZFBvc01lbnUrIlwiIHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTsgdmlzaWJpbGl0eTogaGlkZGVu
OyB0b3A6IC0xMDAwOyBsZWZ0OiAtMTAwMDt6LWluZGV4OjEwMDA7Jz5cbiI7CiAgICAgICAgTUVO
VXN0ciArPSAiPHRhYmxlIGJvcmRlcj0nMCcgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScw
JyBiZ2NvbG9yPScjY2NjY2NjJyBzdHlsZT0nbWFyZ2luLWxlZnQ6MXB4OyBwYWRkaW5nLWxlZnQ6
MXB4OycgPjx0cj48dGQgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz5cbiI7CiAgICAgICAgTUVO
VXN0ciArPSAiPHRhYmxlICIgKyBzdWJNZW51QXR0ciArIHN0cldpZHRoKyI+XG4iOwogICAgICAg
IE1FTlVzdHIgKz0gIjwhLS0gTkVYVCBTVUJJVEVNICIrIGlkUG9zTWVudSArIiAtLT5cbiI7CiAg
ICAgICAgTUVOVXN0ciArPSAiPC90YWJsZT5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPC90ZD48
L3RyPjwvdGFibGU+XG4iOwogICAgICAgIE1FTlVzdHIgKz0gIjwvZGl2PlxuIjsKICAgICAgICBN
RU5Vc3RyICs9ICJcbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPCEtLSBTVUJfTUVOVSAtLT5cbiI7
CiAgICAgICAgc3ViSFRNTHN0ciA9IHN1YkhUTUxzdHIucmVwbGFjZSgiPCEtLSBTVUJfTUVOVSAt
LT5cbiIsIE1FTlVzdHIpOwogICAgICAgIH0KICAgICAgICBNRU5Vc3RyID0gIiI7CiAgICAgICAg
U0VBUkNIID0gIjwhLS0gTkVYVCBTVUJJVEVNICIrIGlkUG9zTWVudSArIiAtLT5cbiI7CiAgICAg
ICAgaWYobG9jID09IG51bGwpCQogICAgICAgIC8vYWxlcnQobmFtZSArICIgbG9jIGNhbiBub3Qg
YmUgbnVsbCIpCiAgICAgICAgaWYodGFyZ2V0ICE9IG51bGwgKSAKICAgICAgICBzdHJUYXJnZXQg
PSAidGFyZ2V0PVwiIiArIHRhcmdldDsKICAgICAgICBNRU5Vc3RyICs9ICI8dHI+PHRkIGNsYXNz
PSd0ZHN1Ym1lbnUnICBzdHlsZT0nYmFja2dyb3VuZC1pbWFnZTogdXJsKC8yMDA3Q3RpLzIwMDdD
dGktaW5kZXgvaW1hZ2VzL2hyX2RvdHRlZC5naWYpO2JhY2tncm91bmQtcmVwZWF0OiByZXBlYXQt
eDtiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b207JyBoZWlnaHQ9MjQgb25tb3VzZW92ZXI9XCJ0
aGlzLmNsYXNzTmFtZT0nU3ViSXRlbUhvdmVyJztkaXNwbGF5U3ViSXRlbSgnIitpZFBvc01lbnUr
IicpO3N0YXR1cz0nIiArIGxvYysiJztcIiBPbk1vdXNlT3V0PVwidGhpcy5jbGFzc05hbWU9J3Rk
c3VibWVudSc7XCIgb25jbGljaz1cIndpbmRvdy5sb2NhdGlvbj0nIitsb2MrIic7XCI+IjsKICAg
ICAgICBNRU5Vc3RyICs9ICImbmJzcDtcbiI7CiAgICAgICAgTUVOVXN0ciArPSBuYW1lOwogICAg
ICAgIE1FTlVzdHIgKz0gIjwvYT5cbiI7CiAgICAgICAgTUVOVXN0ciArPSAiPC90ZD48L3RyPlxu
IjsKICAgICAgICBNRU5Vc3RyICs9IFNFQVJDSDsKICAgICAgICBzdWJIVE1Mc3RyID0gc3ViSFRN
THN0ci5yZXBsYWNlKFNFQVJDSCwgTUVOVXN0cik7CiAgICAgICAgfQogICAgICAgIAogICAgICAg
IGZ1bmN0aW9uIGRpc3BsYXlTdWJNZW51VG9wKGlkU3ViTWVudSkgCiAgICAgICAgewogICAgICAg
ICAgICBMZXZlbGZsYWcgPSAwOwogICAgICAgICAgICBkaXNwbGF5U3ViTWVudTAxKGlkU3ViTWVu
dSk7CiAgICAgICAgfQogICAgICAgICAKICAgICAgICBmdW5jdGlvbiBkaXNwbGF5U3ViTWVudTAx
KGlkU3ViTWVudSkgCiAgICAgICAgewogICAgICAgICAgICB2YXIgb2JqU3ViTWVudTsKICAgICAg
ICAgICAgdmFyIG9ialBvc01lbnU7CiAgICAgICAgCiAgICAgICAgICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIkwiICsgaWRTdWJNZW51KSkgewogICAgICAgICAgICAgICAgQ3RpUnVu
MTEwNTAxKCk7CiAgICAgICAgICAgICAgICBtZW51LndyaXRlU3ViTWVudShpZFN1Yk1lbnUpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0ZW1wbGVuID0gaWRMYXN0TWVu
dS5sZW5ndGg7CiAgICAgICAgICAgIGJhc2VsZW4gPSAyOwogICAgICAgICAgICAKICAgICAgICAg
ICAgd2hpbGUgKHRlbXBsZW4gPj0gaWRTdWJNZW51Lmxlbmd0aCkgewogICAgICAgICAgICAgICAg
aWYgKGlkTGFzdE1lbnUuc3Vic3RyKDAsIHRlbXBsZW4pICE9IGlkU3ViTWVudSkKICAgICAgICAg
ICAgICAgICAgICBkb0hpZGVNZW51KGlkTGFzdE1lbnUuc3Vic3RyKDAsIHRlbXBsZW4pKTsKICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGVtcGxlbiA9IHRlbXBsZW4gLSBiYXNlbGVu
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGRvU2hvd01lbnUoaWRTdWJN
ZW51KTsKICAgICAgICAgICAgaWRMYXN0TWVudSA9IGlkU3ViTWVudTsKICAgICAgICB9CiAgICAg
ICAgCiAgICAgICAgZnVuY3Rpb24gZGlzcGxheVN1Ykl0ZW0oaWRTdWJNZW51KSAKICAgICAgICB7
CiAgICAgICAgICAgIHZhciBvYmpTdWJNZW51OwogICAgICAgICAgICB2YXIgb2JqUG9zTWVudTsK
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpZExhc3RNZW51Lmxlbmd0
aCA+IGlkU3ViTWVudS5sZW5ndGgpCiAgICAgICAgICAgICAgICBkb0hpZGVNZW51KGlkTGFzdE1l
bnUpOwkKICAgICAgICAgICAgCiAgICAgICAgICAgIGlkTGFzdE1lbnUgPSBpZFN1Yk1lbnU7CiAg
ICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGNhbGN1bGF0ZVN1bU9mZnNldChvYmpJ
dGVtLCBvZmZzZXROYW1lKSAKICAgICAgICB7CiAgICAgICAgICAgIHZhciB0b3RhbE9mZnNldCA9
IDA7CiAgICAgICAgICAgIHZhciBpdGVtID0gb2JqSXRlbTsKICAgICAgICAKICAgICAgICAgICAg
ZG8KICAgICAgICAgICAgewovLyAgICAgICAgICAgICAgICBuZXdPZmZzZXQgPSBldmFsKCdpdGVt
LicgKyBvZmZzZXROYW1lKTsKLy8gICAgICAgICAgICAgICAgdG90YWxPZmZzZXQgKz0gbmV3T2Zm
c2V0OwogICAgICAgICAgICAgICAgdG90YWxPZmZzZXQgKz0gZXZhbCgnaXRlbS4nICsgb2Zmc2V0
TmFtZSk7CiAgICAgICAgICAgICAgICBpdGVtID0gZXZhbCgnaXRlbS5vZmZzZXRQYXJlbnQnKTsK
ICAgICAgICAgICAgfSB3aGlsZSAoaXRlbSAhPSBudWxsKTsKICAgICAgICAgICAgCiAgICAgICAg
ICAgIHJldHVybiB0b3RhbE9mZnNldDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rp
b24gZG9IaWRlTWVudSggaWQgKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGN1ck9iajsKICAg
ICAgICAKICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTCIgKyBpZCkp
CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgCiAgICAgICAgICAgIGN1ck9iaiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJMIiArIGlkKS5zdHlsZTsKICAgICAgICAgICAgb2JqUG9z
TWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUIiArIGlkKS5zdHlsZTsKICAgICAgICAg
ICAgb2JqUG9zTWVudS5iYWNrZ3JvdW5kQ29sb3IgPSAiIjsKICAgICAgICAgICAgb2JqUG9zTWVu
dS5jb2xvciA9ICIiOwogICAgICAgICAgICBjdXJPYmoudmlzaWJpbGl0eSA9IGRpdkhpZGU7CiAg
ICAgICAgICAgIGN1ck9iai5sZWZ0ID0gMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVu
Y3Rpb24gZG9TaG93TWVudShpZCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBvYmpTdWJNZW51
OwogICAgICAgICAgICB2YXIgb2JqUG9zTWVudTsKICAgICAgICAgICAgdmFyIHBvc1N0cjsKICAg
ICAgICAgICAgdmFyIE5TTHdpZHRoOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCFkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiVCIgKyBpZCkpCiAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgIAogICAgICAgICAgICBvYmpQb3NNZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIlQiICsgaWQpOyAgICAKICAgICAgICAgICAgb2JqUG9zTWVudS5zdHlsZS5iYWNrZ3JvdW5k
Q29sb3IgPSBnX1BhcmVudGJnY29sb3I7ICAKICAgICAgICAgICAgb2JqUG9zTWVudS5zdHlsZS5j
b2xvciA9ICIjRkZGRkZGIjsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIkwiICsgaWQpKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAKICAgICAgICAgICAgb2JqU3ViTWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJM
IiArIGlkKTsKICAgICAgICAgICAgb2JqU3ViTWVudS5zdHlsZS5sZWZ0ID0gMCArJ3B4JzsKICAg
ICAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3AgPSAwICsncHgnOwogICAgICAgICAgICAKICAg
ICAgICAgICAgTlNMd2lkdGggPSBwYXJzZUludChvYmpTdWJNZW51Lm9mZnNldFdpZHRoKTsKICAg
ICAgICAgICAgTlNMSGVpZ2h0ID0gcGFyc2VJbnQob2JqU3ViTWVudS5vZmZzZXRIZWlnaHQpOwog
ICAgICAgIAogICAgICAgICAgICBpZiAoTGV2ZWxmbGFnID09IDApIHsKICAgICAgICAgICAgICAg
IG9ialN1Yk1lbnUuc3R5bGUubGVmdCA9IGNhbGN1bGF0ZVN1bU9mZnNldChvYmpQb3NNZW51LCAn
b2Zmc2V0TGVmdCcpOwogICAgICAgICAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3AgID0gY2Fs
Y3VsYXRlU3VtT2Zmc2V0KG9ialBvc01lbnUsICdvZmZzZXRUb3AnKSArIG9ialBvc01lbnUub2Zm
c2V0SGVpZ2h0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2JqU3ViTWVu
dS5zdHlsZS5sZWZ0ID0gY2FsY3VsYXRlU3VtT2Zmc2V0KG9ialBvc01lbnUsICdvZmZzZXRMZWZ0
JykgKyBvYmpQb3NNZW51Lm9mZnNldFdpZHRoIC0gMzsKICAgICAgICAgICAgICAgIG9ialN1Yk1l
bnUuc3R5bGUudG9wICA9IGNhbGN1bGF0ZVN1bU9mZnNldChvYmpQb3NNZW51LCAnb2Zmc2V0VG9w
Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgaWYgKChwYXJzZUludChvYmpT
dWJNZW51LnN0eWxlLnRvcCktc2VsZi5wYWdlWU9mZnNldCkgKyBwYXJzZUludChOU0xIZWlnaHQp
ID4gd2luZG93LmlubmVySGVpZ2h0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAo
TGV2ZWxmbGFnICE9IDApCiAgICAgICAgICAgICAgICAgICAgb2JqU3ViTWVudS5zdHlsZS50b3Ag
PSAocGFyc2VJbnQob2JqU3ViTWVudS5zdHlsZS50b3ApIC0gKE5TTEhlaWdodCAvIDMpICogMikg
KyAncHgnOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQob2Jq
U3ViTWVudS5zdHlsZS50b3ApIDwgMCkKICAgICAgICAgICAgICAgICAgICBvYmpTdWJNZW51LnN0
eWxlLnRvcCA9ICcwcHgnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBp
ZiAoKHBhcnNlSW50KG9ialN1Yk1lbnUuc3R5bGUubGVmdCkgLSBzZWxmLnBhZ2VYT2Zmc2V0KSAr
IE5TTHdpZHRoID4gd2luZG93LmlubmVyV2lkdGgpCiAgICAgICAgICAgICAgICBvYmpTdWJNZW51
LnN0eWxlLmxlZnQgPSAocGFyc2VJbnQoY2FsY3VsYXRlU3VtT2Zmc2V0KG9ialBvc01lbnUsICdv
ZmZzZXRMZWZ0JykpIC0gTlNMd2lkdGgpICsgJ3B4JzsKICAgICAgICAgICAgCiAgICAgICAgICAg
IG9ialN1Yk1lbnUuc3R5bGUudmlzaWJpbGl0eSA9IGRpdlNob3c7CiAgICAgICAgICAgIExldmVs
ZmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZG9T
aG93SGlkZSggaWRTdWJNZW51ICkgCiAgICAgICAgewogICAgICAgIHZhciBjdXJMZW4sIGxpbWl0
TGVuLCBsYXN0TGVuLCBzdWJMZW47CiAgICAgICAgbGltaXRMZW4gPSBsYXN0TGVuID0gaWRMYXN0
TWVudS5sZW5ndGg7CiAgICAgICAgc3ViTGVuID0gaWRTdWJNZW51Lmxlbmd0aDsKICAgICAgICBp
ZiggbGFzdExlbiA+IHN1YkxlbiApIAogICAgICAgIGxpbWl0TGVuID0gc3ViTGVuOyAgIAogICAg
ICAgIGN1ckxlbiA9IGJhc2VMZW47CiAgICAgICAgd2hpbGUoIGN1ckxlbiA8IGxpbWl0TGVuICkg
CiAgICAgICAgewogICAgICAgIGlmKCBpZExhc3RNZW51LnN1YnN0cigwLCBjdXJMZW4pICE9IGlk
U3ViTWVudS5zdWJzdHIoMCwgY3VyTGVuKSApCiAgICAgICAgYnJlYWs7CiAgICAgICAgY3VyTGVu
ICs9IGJhc2VMZW47CiAgICAgICAgfSAgICAKICAgICAgICBsaW1pdExlbiA9IGN1ckxlbjsKICAg
ICAgICB3aGlsZSggY3VyTGVuIDw9IGxhc3RMZW4gKSAKICAgICAgICB7CiAgICAgICAgZG9IaWRl
TWVudSggaWRMYXN0TWVudS5zdWJzdHIoMCwgY3VyTGVuKSApOwogICAgICAgIGN1ckxlbiArPSBi
YXNlTGVuOwogICAgICAgIH0KICAgICAgICBjdXJMZW4gPSBiYXNlTGVuOyAgICAKICAgICAgICB3
aGlsZSggY3VyTGVuIDw9IHN1YkxlbiApIAogICAgICAgIHsKICAgICAgICBkb1Nob3dNZW51KCBp
ZFN1Yk1lbnUuc3Vic3RyKDAsIGN1ckxlbikgKTsKICAgICAgICBjdXJMZW4gKz0gYmFzZUxlbjsK
ICAgICAgICB9CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICBmdW5j
dGlvbiBvbmxvYWRvdmVyKCkgCiAgICAgICAgewogICAgICAgIAlvYmpQb3NNZW51ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIlQwMSIpOwogICAgICAgIAlvYmpQb3NNZW51Lm9ubW91c2VvdmVy
ID0gZnVuY3Rpb24oKSB7IHRoaXMuY2xhc3NOYW1lID0gJ1N1Ykl0ZW1Ib3Zlcic7IHN0YXR1cyA9
ICdDVEluZXdzJzsgZGlzcGxheVN1Yk1lbnVUb3AoIjAxIik7IH07CiAgICAgICAgCW9ialBvc01l
bnUub25tb3VzZW91dCA9IGZ1bmN0aW9uKCkgeyB0aGlzLmNsYXNzTmFtZSA9ICdDVElfSE1NQUlO
JzsgfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gd3JpdGVNYWluTWVudSgp
IAogICAgICAgIHsKICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUobWFpbkhUTUxzdHIpOwogICAg
ICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiB3cml0ZVN1Yk1lbnUoaWQpIAogICAgICAg
IHsKICAgICAgICAgICAgdmFyIG9ESVZSZXN1bHRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7IAogICAgICAgICAgICBvRElWUmVzdWx0cy5pZCA9ICJYIiArIGlkOyAKICAgICAgICAg
ICAgb0RJVlJlc3VsdHMuaW5uZXJIVE1MID0gc3ViSFRNTHN0cjsKICAgICAgICAgICAgCiAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IikuaXRlbSgwKS5hcHBl
bmRDaGlsZChvRElWUmVzdWx0cyk7CiAgICAgICAgICAgIHN1YkhUTUxzdHIgPSAiIjsKICAgICAg
ICAgICAgbWVudS5pbml0U3ViTWVudSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBtZW51
ID0gbmV3IG1ha2VtZW51KCk7CiAgICAgICAgbWVudS5pbml0TWFpbk1lbnUoKTsKICAgICAgICBt
ZW51LmluaXRTdWJNZW51KCk7CgogICAgICAgIGZ1bmN0aW9uIElzU3ViTWVudShzaWQsIGFyeSkK
ICAgICAgICB7CiAgICAgICAgCXZhciBjb3VudCA9IDA7CiAgICAgICAgCQogICAgICAgIAlmb3Ig
KHZhciBpID0gMDsgaSA8IGFyeS5sZW5ndGg7IGkrKykKICAgICAgICAJCWlmIChhcnlbaV0uaWQu
aW5kZXhPZihzaWQpID09IDAgJiYgYXJ5W2ldLmlkLmxvY2FsZUNvbXBhcmUoc2lkKSAhPSAwKQog
ICAgICAgIAkJCWNvdW50Kys7CgogICAgICAgIAlpZiAoY291bnQgPiAwKQogICAgICAgIAkJcmV0
dXJuIHRydWU7CiAgICAgICAgCWVsc2UKICAgICAgICAJCXJldHVybiBmYWxzZTsKICAgICAgICB9
CgogICAgICAgIGZ1bmN0aW9uIGxpc3RJdGVtIChpZCwgdGl0bGUsIHVybCkKICAgICAgICB7CiAg
ICAgICAgICAgIHRoaXMuaWQgPSBpZDsKICAgICAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOwog
ICAgICAgICAgICB0aGlzLnVybCA9IHVybDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1h
a2VNZW51SXRlbSAoaXRlbUFycmF5KQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpPTAgOyBp
IDwgaXRlbUFycmF5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgCSAgICBpZiAoSXNTdWJNZW51KGl0
ZW1BcnJheVtpXS5pZCwgaXRlbUFycmF5KSkKICAgICAgICAJCSAgICBtZW51LmFkZFN1Yk1lbnUo
aXRlbUFycmF5W2ldLmlkLCBpdGVtQXJyYXlbaV0udGl0bGUgKyAnPGltZyBzcmM9aHR0cDovL25l
d3MuY2hpbmF0aW1lcy5jb20vQ2hpbmF0aW1lcy9pbmRleC9pbWcvUG9wdXAuZ2lmIGJvcmRlcj0w
IHdpZHRoPTEwIGhlaWdodD0xMCBhbGlnbj0iQUJTTUlERExFIj4nLCBpdGVtQXJyYXlbaV0udXJs
KTsKICAgICAgICAJCWVsc2UKICAgICAgICAJCQltZW51LmFkZFN1Ykl0ZW0oaXRlbUFycmF5W2ld
LmlkLnN1YnN0cmluZygwLCBpdGVtQXJyYXlbaV0uaWQubGVuZ3RoIC0gMiksIGl0ZW1BcnJheVtp
XS50aXRsZSwgaXRlbUFycmF5W2ldLnVybCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAg
ICAgIGZ1bmN0aW9uIEN0aVJ1bjExMDUwMSgpCiAgICAgICAgewogICAgICAgICAgICB2YXIgaXRl
bU51bSA9IDA7CiAgICAgICAgICAgIHZhciBpdGVtQXJyYXkgPSBuZXcgQXJyYXkoKTsKICAgICAg
ICAgICAgCiAgICAgICAgCWl0ZW1BcnJheVtpdGVtTnVtKytdID0gbmV3IGxpc3RJdGVtKCcwMTA0
JywgJ1N1Ym1lbnUnLCAnLzIwMDdDdGkvMjAwN0N0aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAs
NDUyMCwxMTA1MDEsMDAuaHRtbCcpOyAgICAgIAogICAgICAgIAlpdGVtQXJyYXlbaXRlbU51bSsr
XSA9IG5ldyBsaXN0SXRlbSgnMDEwNDAxJywgJ1N1Ym1lbnUgaXRlbScsICcvMjAwN0N0aS8yMDA3
Q3RpLU5ld3MvMjAwN0N0aS1OZXdzLUNvbnRlbnQvMCw0NTIxLDExMDUwMSsxMTIwMDgwMjA0MDAw
NDAsMDAuaHRtbCcpOyAgICAKCiAgICAgICAgICAgIG1ha2VNZW51SXRlbSAoaXRlbUFycmF5KTsK
ICAgICAgICB9CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2hlYWQ+CiAgICA8Ym9keSBvbkxvYWQ9
ImV4ZWNITSgpOyI+CiAgICAgICAgPGRpdiBpZD0ic3ViTWVudVRhYmxlIj48dGFibGUgaWQ9VGFi
bGVfMDEgIGhlaWdodD0yMyBib3JkZXI9MCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRy
Pjx0ZCB3aWR0aD0nNTEnIGlkPSdkYWlseW5ld3NwYXBlcic+PGEgaHJlZj0naHR0cDovL3BkZi5j
aGluYXRpbWVzLmNvbS9kYWlseW5ld3NwYXBlci9pbmRleC5odG0nIHRhcmdldD0nZGFpbHluZXdz
cGFwZXInPjxpbWcgc3JjPScvMjAwN0N0aS8yMDA3Q3RpLWluZGV4L2ltYWdlcy9uZXdzZGlyXzAw
LmdpZicgaGVpZ2h0PScyMycgYm9yZGVyPScwJyB3aWR0aD0nNTEnPjwvYT48L3RkPjx0ZCB3aWR0
aD0nNzAnIGlkPScnPjxhIGhyZWY9Jy8yMDA3Q3RpLzIwMDdDdGktUG5ld3MvMjAwN0N0aS1QbmV3
cy1saXN0LzAsNDUyMywsMDAuaHRtbCc+PGltZyBzcmM9Jy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgv
aW1hZ2VzL25ld3NkaXJfMDEuZ2lmJyBoZWlnaHQ9JzIzJyBib3JkZXI9JzAnIHdpZHRoPSc3MCc+
PC9hPjwvdGQ+PHRkIHdpZHRoPSc0NCcgaWQ9J1QwMSc+PGEgaHJlZj0nLzIwMDdDdGkvMjAwN0N0
aS1OZXdzLzIwMDdDdGktTmV3cy1MaXN0LzAsNDUyMCwxMTA1MDEsMDAuaHRtbCc+PGltZyBzcmM9
Jy8yMDA3Q3RpLzIwMDdDdGktaW5kZXgvaW1hZ2VzL25ld3NkaXJfMDIuZ2lmJyBoZWlnaHQ9JzIz
JyBib3JkZXI9JzAnIHdpZHRoPSc0NCc+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PgogICAg
PC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18898</attachid>
            <date>2008-02-03 21:21:14 -0800</date>
            <delta_ts>2008-02-03 21:21:14 -0800</delta_ts>
            <desc>Further reduction</desc>
            <filename>adding.html</filename>
            <type>text/html</type>
            <size>146</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgpmdW5jdGlvbiBmKCkKewogICAgdmFyIHkgPSAwOyAgIAog
ICAgeSArPSBldmFsKCcxJyk7CiAgICBhbGVydCh5KTsKfQo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9k
eSBvbmxvYWQ9ImYoKTsiPgo8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18900</attachid>
            <date>2008-02-04 02:08:23 -0800</date>
            <delta_ts>2008-02-04 21:50:14 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>china.patch</filename>
            <type>text/plain</type>
            <size>2149</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5OTYwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMDItMDQgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgQnVnIDE2ODg5OiBSRUdSRVNTSU9OIChy
Mjk0MjUpOiBDYW52YXMtYmFzZWQgZ3JhcGhpbmcgY2FsY3VsYXRvciBmYWlscyB0byBydW4KKyAg
ICAgICAgICAgICAgQnVnIDE3MDE1OiBSRUdSRVNTSU9OIChyMjk0MTQtMjk0MjgpOiB3d3cuZm94
LmNvbSAic2hvd3MiIG1lbnUgZmFpbHMgdG8gcmVuZGVyCisgICAgICAgICAgICAgIEJ1ZyAxNzE2
NDogUkVHUkVTU0lPTjogSmF2YVNjcmlwdCBwb3AtdXAgbWVudSBhcHBlYXJzIGF0IHdyb25nIGxv
Y2F0aW9uIHdoZW4gaG92ZXJpbmcgaW1hZ2UgYXQgaHR0cDovL25ld3MuY2hpbmF0aW1lcy5jb20v
CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg5
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY5NjI1NT4KKworICAgICAgICA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTU+CisKKyAgICAgICAgPGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTY0PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyMDk0Nz4KKworICAgICAgICBUaGUgQWN0aXZhdGlvbkltcCB0ZWFyLW9mZiAocjI5
NDI1KSBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIFJlYWRNb2RpZnkKKyAgICAgICAgbm9kZXMg
dGhhdCBmaXJzdCByZXNvbHZlIGEgc2xvdCwgY2FsbCB2YWx1ZUZvclJlYWRNb2RpZnlOb2RlKCks
IGFuZCB0aGVuCisgICAgICAgIHN0b3JlIGEgdmFsdWUgaW4gdGhlIHByZXZpb3VzbHkgcmVzb2x2
ZWQgc2xvdC4gU2luY2UgdmFsdWVGb3JSZWFkTW9kaWZ5Tm9kZSgpCisgICAgICAgIG1heSBjYXVz
ZSBhIHRlYXItb2ZmLCB0aGUgc2xvdCBuZWVkcyB0byBiZSByZXNvbHZlZCBhZ2FpbiwgYnV0IHRo
aXMgd2FzCisgICAgICAgIG5vdCBoYXBwZW5pbmcgd2l0aCB0aGUgZXhpc3RpbmcgY29kZS4KKwor
ICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlMb2NhbFZh
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
dmFsdWF0ZSk6CisKIDIwMDgtMDItMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
CShyZXZpc2lvbiAyOTk1NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyNjIsNiArMzI2Miw4IEBAIEpTVmFsdWUqIFJlYWRNb2RpZnlMb2NhbFZh
ck5vZGU6OmV2YWx1YXQKICAgICBKU1ZhbHVlKiB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdu
bWVudChleGVjLCAqc2xvdCwgbV9yaWdodC5nZXQoKSwgbV9vcGVyYXRvcik7CiAKICAgICBLSlNf
Q0hFQ0tFWENFUFRJT05WQUxVRQorICAgIAorICAgIHNsb3QgPSAmZXhlYy0+bG9jYWxTdG9yYWdl
KClbbV9pbmRleF0udmFsdWU7CiAgICAgKnNsb3QgPSB2OwogICAgIHJldHVybiB2OwogfQpAQCAt
MzMzNCw3ICszMzM2LDggQEAgZm91bmQ6CiAgICAgdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2ln
bm1lbnQoZXhlYywgdjEsIG1fcmlnaHQuZ2V0KCksIG1fb3BlcmF0b3IpOwogCiAgICAgS0pTX0NI
RUNLRVhDRVBUSU9OVkFMVUUKLQorICAgIAorICAgIGJhc2UgPSAqaXRlcjsKICAgICBiYXNlLT5w
dXQoZXhlYywgbV9pZGVudCwgdik7CiAgICAgcmV0dXJuIHY7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18925</attachid>
            <date>2008-02-04 21:50:14 -0800</date>
            <delta_ts>2008-02-04 21:56:31 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>china.patch</filename>
            <type>text/plain</type>
            <size>7952</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5OTYwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMDItMDQgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgQnVnIDE2ODg5OiBSRUdSRVNTSU9OIChy
Mjk0MjUpOiBDYW52YXMtYmFzZWQgZ3JhcGhpbmcgY2FsY3VsYXRvciBmYWlscyB0byBydW4KKyAg
ICAgICAgICAgICAgQnVnIDE3MDE1OiBSRUdSRVNTSU9OIChyMjk0MTQtMjk0MjgpOiB3d3cuZm94
LmNvbSAic2hvd3MiIG1lbnUgZmFpbHMgdG8gcmVuZGVyCisgICAgICAgICAgICAgIEJ1ZyAxNzE2
NDogUkVHUkVTU0lPTjogSmF2YVNjcmlwdCBwb3AtdXAgbWVudSBhcHBlYXJzIGF0IHdyb25nIGxv
Y2F0aW9uIHdoZW4gaG92ZXJpbmcgaW1hZ2UgYXQgaHR0cDovL25ld3MuY2hpbmF0aW1lcy5jb20v
CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg5
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY5NjI1NT4KKworICAgICAgICA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTU+CisKKyAgICAgICAgPGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTY0PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyMDk0Nz4KKworICAgICAgICBUaGUgQWN0aXZhdGlvbkltcCB0ZWFyLW9mZiAocjI5
NDI1KSBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIFJlYWRNb2RpZnkKKyAgICAgICAgbm9kZXMg
dGhhdCBmaXJzdCByZXNvbHZlIGEgc2xvdCwgY2FsbCB2YWx1ZUZvclJlYWRNb2RpZnlOb2RlKCks
IGFuZCB0aGVuCisgICAgICAgIHN0b3JlIGEgdmFsdWUgaW4gdGhlIHByZXZpb3VzbHkgcmVzb2x2
ZWQgc2xvdC4gU2luY2UgdmFsdWVGb3JSZWFkTW9kaWZ5Tm9kZSgpCisgICAgICAgIG1heSBjYXVz
ZSBhIHRlYXItb2ZmLCB0aGUgc2xvdCBuZWVkcyB0byBiZSByZXNvbHZlZCBhZ2FpbiwgYnV0IHRo
aXMgd2FzCisgICAgICAgIG5vdCBoYXBwZW5pbmcgd2l0aCB0aGUgZXhpc3RpbmcgY29kZS4KKwor
ICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlMb2NhbFZh
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
dmFsdWF0ZSk6CisKIDIwMDgtMDItMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
CShyZXZpc2lvbiAyOTk1NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyODksOCArMTI4OSwxMSBAQCBKU1ZhbHVlKiBQb3N0SW5jUmVzb2x2ZU5v
ZGU6OmV2YWx1YXRlKEV4CiAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgZG8gewogICAgICAg
ICBpZiAoKCppdGVyKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpKSB7Ci0g
ICAgICAgICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gUG9zdEluY1Jlc29sdmVOb2RlOjpldmFs
dWF0ZSgpLgotCisgICAgICAgICAgICAvLyBJZiBtX2lkZW50IGlzICdhcmd1bWVudHMnLCB0aGUg
YmFzZS0+Z2V0UHJvcGVydHlTbG90KCkgbWF5IGNhdXNlIAorICAgICAgICAgICAgLy8gYmFzZSAo
d2hpY2ggbXVzdCBiZSBhbiBBY3RpdmF0aW9uSW1wIGluIHN1Y2ggdGhpcyBjYXNlKSB0byBiZSB0
b3JuCisgICAgICAgICAgICAvLyBvZmYgZnJvbSB0aGUgYWN0aXZhdGlvbiBzdGFjaywgaW4gd2hp
Y2ggY2FzZSB3ZSBuZWVkIHRvIGdldCBpdCBhZ2FpbgorICAgICAgICAgICAgLy8gZnJvbSB0aGUg
U2NvcGVDaGFpbkl0ZXJhdG9yLgorICAgICAgICAgICAgCiAgICAgICAgICAgICBKU09iamVjdCog
YmFzZSA9ICppdGVyOwogICAgICAgICAgICAgSlNWYWx1ZSogdiA9IHNsb3QuZ2V0VmFsdWUoZXhl
YywgYmFzZSwgbV9pZGVudCktPnRvSlNOdW1iZXIoZXhlYyk7CiAgICAgICAgICAgICBiYXNlLT5w
dXQoZXhlYywgbV9pZGVudCwganNOdW1iZXIodi0+dG9OdW1iZXIoZXhlYykgKyAxKSk7CkBAIC0z
MjU2LDEzICszMjU5LDE3IEBAIHZvaWQgQXNzaWduUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFi
bGUKIEpTVmFsdWUqIFJlYWRNb2RpZnlMb2NhbFZhck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBU1NFUlQoZXhlYy0+dmFyaWFibGVPYmplY3QoKSA9PSBleGVjLT5zY29w
ZUNoYWluKCkudG9wKCkpOwotICAgIEpTVmFsdWUqKiBzbG90ID0gJmV4ZWMtPmxvY2FsU3RvcmFn
ZSgpW21faW5kZXhdLnZhbHVlOwogCiAgICAgQVNTRVJUKG1fb3BlcmF0b3IgIT0gT3BFcXVhbCk7
Ci0gICAgSlNWYWx1ZSogdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoZXhlYywgKnNs
b3QsIG1fcmlnaHQuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgIEpTVmFsdWUqIHYgPSB2YWx1ZUZv
clJlYWRNb2RpZnlBc3NpZ25tZW50KGV4ZWMsIGV4ZWMtPmxvY2FsU3RvcmFnZSgpW21faW5kZXhd
LnZhbHVlLCBtX3JpZ2h0LmdldCgpLCBtX29wZXJhdG9yKTsKIAogICAgIEtKU19DSEVDS0VYQ0VQ
VElPTlZBTFVFCi0gICAgKnNsb3QgPSB2OworICAgIAorICAgIC8vIFdlIGNhbid0IHN0b3JlIGEg
cG9pbnRlciBpbnRvIGxvY2FsU3RvcmFnZSgpIGFuZCB1c2UgaXQgdGhyb3VnaG91dCB0aGUgZnVu
Y3Rpb24KKyAgICAvLyBib2R5LCBiZWNhdXNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQo
KSBtaWdodCBjYXVzZSBhbiBBY3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIGNoYW5naW5n
IHRoZSB2YWx1ZSBvZiBsb2NhbFN0b3JhZ2UoKS4KKyAgICAKKyAgICBleGVjLT5sb2NhbFN0b3Jh
Z2UoKVttX2luZGV4XS52YWx1ZSA9IHY7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTMzMzQsOCAr
MzM0MSwxMSBAQCBmb3VuZDoKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChl
eGVjLCB2MSwgbV9yaWdodC5nZXQoKSwgbV9vcGVyYXRvcik7CiAKICAgICBLSlNfQ0hFQ0tFWENF
UFRJT05WQUxVRQotCi0gICAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIHYpOworICAgIAorICAg
IC8vIFNpbmNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoKSBtaWdodCBjYXVzZSBhbiBB
Y3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIHdlIG5lZWQgdG8gZ2V0IHRoZSBiYXNlIGZy
b20gdGhlIFNjb3BlQ2hhaW5JdGVyYXRvciBhZ2Fpbi4KKyAgICAKKyAgICAoKml0ZXIpLT5wdXQo
ZXhlYywgbV9pZGVudCwgdik7CiAgICAgcmV0dXJuIHY7CiB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5OTg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMDgtMDItMDQgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBsYXlvdXQgdGVzdHMgZm9yIHRoZSBjb2xsZWN0aXZlIGZpeCBmb3IgdGhlIGZvbGxvd2lu
ZyBidWdzOgorCisgICAgICAgIEJ1ZyAxNjg4OTogUkVHUkVTU0lPTiAocjI5NDI1KTogQ2FudmFz
LWJhc2VkIGdyYXBoaW5nIGNhbGN1bGF0b3IgZmFpbHMgdG8gcnVuCisgICAgICAgIEJ1ZyAxNzAx
NTogUkVHUkVTU0lPTiAocjI5NDE0LTI5NDI4KTogd3d3LmZveC5jb20gInNob3dzIiBtZW51IGZh
aWxzIHRvIHJlbmRlcgorICAgICAgICBCdWcgMTcxNjQ6IFJFR1JFU1NJT046IEphdmFTY3JpcHQg
cG9wLXVwIG1lbnUgYXBwZWFycyBhdCB3cm9uZyBsb2NhdGlvbiB3aGVuIGhvdmVyaW5nIGltYWdl
IGF0IGh0dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tLworCisgICAgICAgIDxodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4OT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2OTYyNTU+CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDE1PgorCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE2ND4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjA5NDc+CisKKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9yZXNvdXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qczogQWRkZWQuCisKIDIwMDgtMDItMDQgIFJv
YmVydCBTZXNlayAgPHJzZXNla0BibHVlc3RhdGljLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVhZC1tb2RpZnktZXZh
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWFkLW1v
ZGlmeS1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVhZC1tb2RpZnktZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjAgQEAKK1Rlc3RzIHdoZXRoZXIgZXZhbCgpIHdvcmtzIG9uIHRoZSByaWdodC1oYW5kIHNpZGUg
b2YgZXhwcmVzc2lvbnMgdGhhdCByZWFkIGFuZCBtb2RpZnkgYSB2YWx1ZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbXVsdFRlc3QoKTsgaXMgdHJ1ZQorUEFTUyBkaXZU
ZXN0KCk7IGlzIHRydWUKK1BBU1MgYWRkVGVzdCgpOyBpcyB0cnVlCitQQVNTIHN1YlRlc3QoKTsg
aXMgdHJ1ZQorUEFTUyBsc2hpZnRUZXN0KCk7IGlzIHRydWUKK1BBU1MgcnNoaWZ0VGVzdCgpOyBp
cyB0cnVlCitQQVNTIHVyc2hpZnRUZXN0KCk7IGlzIHRydWUKK1BBU1MgYW5kVGVzdCgpOyBpcyB0
cnVlCitQQVNTIHhvclRlc3QoKTsgaXMgdHJ1ZQorUEFTUyBvclRlc3QoKTsgaXMgdHJ1ZQorUEFT
UyBtb2RUZXN0KCk7IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlYWQtbW9kaWZ5LWV2
YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlYWQtbW9kaWZ5LWV2
YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVhZC1tb2RpZnkt
ZXZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlYWQtbW9kaWZ5LWV2YWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvcmVhZC1tb2RpZnkt
ZXZhbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9yZWFk
LW1vZGlmeS1ldmFsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAor
ZGVzY3JpcHRpb24oCisnVGVzdHMgd2hldGhlciBldmFsKCkgd29ya3Mgb24gdGhlIHJpZ2h0LWhh
bmQgc2lkZSBvZiBleHByZXNzaW9ucyB0aGF0IHJlYWQgYW5kIG1vZGlmeSBhIHZhbHVlLicKKyk7
CisKK2Z1bmN0aW9uIG11bHRUZXN0KCkKK3sKKyAgICB2YXIgeCA9IDE7CisgICAgeCAqPSBldmFs
KCcyJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVuY3Rpb24gZGl2VGVzdCgpCit7Cisg
ICAgdmFyIHggPSAyOworICAgIHggLz0gZXZhbCgnMicpOworICAgIHJldHVybiB4ID09IDE7Cit9
CisKK2Z1bmN0aW9uIGFkZFRlc3QoKQoreworICAgIHZhciB4ID0gMDsKKyAgICB4ICs9IGV2YWwo
JzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlvbiBzdWJUZXN0KCkKK3sKKyAg
ICB2YXIgeCA9IDA7CisgICAgeCAtPSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gLTE7Cit9
CisKK2Z1bmN0aW9uIGxzaGlmdFRlc3QoKQoreworICAgIHZhciB4ID0gMTsKKyAgICB4IDw8PSBl
dmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVuY3Rpb24gcnNoaWZ0VGVzdCgp
Cit7CisgICAgdmFyIHggPSAxOworICAgIHggPj49IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9
PSAwOworfQorCitmdW5jdGlvbiB1cnNoaWZ0VGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAg
IHggPj4+PSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMDsKK30KKworZnVuY3Rpb24gYW5k
VGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAgIHggJj0gZXZhbCgnMScpOworICAgIHJldHVy
biB4ID09IDE7Cit9CisKK2Z1bmN0aW9uIHhvclRlc3QoKQoreworICAgIHZhciB4ID0gMDsKKyAg
ICB4IF49IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlvbiBvclRl
c3QoKQoreworICAgIHZhciB4ID0gMDsKKyAgICB4IHw9IGV2YWwoJzEnKTsKKyAgICByZXR1cm4g
eCA9PSAxOworfQorCitmdW5jdGlvbiBtb2RUZXN0KCkKK3sKKyAgICB2YXIgeCA9IDQ7CisgICAg
eCAlPSBldmFsKCczJyk7CisgICAgcmV0dXJuIHggPT0gMTsKK30KKworc2hvdWxkQmVUcnVlKCdt
dWx0VGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdkaXZUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUo
J2FkZFRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgnc3ViVGVzdCgpOycpOworc2hvdWxkQmVUcnVl
KCdsc2hpZnRUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ3JzaGlmdFRlc3QoKTsnKTsKK3Nob3Vs
ZEJlVHJ1ZSgndXJzaGlmdFRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgnYW5kVGVzdCgpOycpOwor
c2hvdWxkQmVUcnVlKCd4b3JUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ29yVGVzdCgpOycpOwor
c2hvdWxkQmVUcnVlKCdtb2RUZXN0KCk7Jyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="8270"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18926</attachid>
            <date>2008-02-04 21:56:31 -0800</date>
            <delta_ts>2008-02-04 23:15:07 -0800</delta_ts>
            <desc>Revised proposed patch</desc>
            <filename>china.patch</filename>
            <type>text/plain</type>
            <size>7924</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5OTYwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMDItMDQgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgQnVnIDE2ODg5OiBSRUdSRVNTSU9OIChy
Mjk0MjUpOiBDYW52YXMtYmFzZWQgZ3JhcGhpbmcgY2FsY3VsYXRvciBmYWlscyB0byBydW4KKyAg
ICAgICAgICAgICAgQnVnIDE3MDE1OiBSRUdSRVNTSU9OIChyMjk0MTQtMjk0MjgpOiB3d3cuZm94
LmNvbSAic2hvd3MiIG1lbnUgZmFpbHMgdG8gcmVuZGVyCisgICAgICAgICAgICAgIEJ1ZyAxNzE2
NDogUkVHUkVTU0lPTjogSmF2YVNjcmlwdCBwb3AtdXAgbWVudSBhcHBlYXJzIGF0IHdyb25nIGxv
Y2F0aW9uIHdoZW4gaG92ZXJpbmcgaW1hZ2UgYXQgaHR0cDovL25ld3MuY2hpbmF0aW1lcy5jb20v
CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg5
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY5NjI1NT4KKworICAgICAgICA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTU+CisKKyAgICAgICAgPGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTY0PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyMDk0Nz4KKworICAgICAgICBUaGUgQWN0aXZhdGlvbkltcCB0ZWFyLW9mZiAocjI5
NDI1KSBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIFJlYWRNb2RpZnkKKyAgICAgICAgbm9kZXMg
dGhhdCBmaXJzdCByZXNvbHZlIGEgc2xvdCwgY2FsbCB2YWx1ZUZvclJlYWRNb2RpZnlOb2RlKCks
IGFuZCB0aGVuCisgICAgICAgIHN0b3JlIGEgdmFsdWUgaW4gdGhlIHByZXZpb3VzbHkgcmVzb2x2
ZWQgc2xvdC4gU2luY2UgdmFsdWVGb3JSZWFkTW9kaWZ5Tm9kZSgpCisgICAgICAgIG1heSBjYXVz
ZSBhIHRlYXItb2ZmLCB0aGUgc2xvdCBuZWVkcyB0byBiZSByZXNvbHZlZCBhZ2FpbiwgYnV0IHRo
aXMgd2FzCisgICAgICAgIG5vdCBoYXBwZW5pbmcgd2l0aCB0aGUgZXhpc3RpbmcgY29kZS4KKwor
ICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlMb2NhbFZh
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
dmFsdWF0ZSk6CisKIDIwMDgtMDItMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
CShyZXZpc2lvbiAyOTk1NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyODksOCArMTI4OSwxMSBAQCBKU1ZhbHVlKiBQb3N0SW5jUmVzb2x2ZU5v
ZGU6OmV2YWx1YXRlKEV4CiAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgZG8gewogICAgICAg
ICBpZiAoKCppdGVyKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpKSB7Ci0g
ICAgICAgICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gUG9zdEluY1Jlc29sdmVOb2RlOjpldmFs
dWF0ZSgpLgotCisgICAgICAgICAgICAvLyBJZiBtX2lkZW50IGlzICdhcmd1bWVudHMnLCB0aGUg
YmFzZS0+Z2V0UHJvcGVydHlTbG90KCkgbWF5IGNhdXNlIAorICAgICAgICAgICAgLy8gYmFzZSAo
d2hpY2ggbXVzdCBiZSBhbiBBY3RpdmF0aW9uSW1wIGluIHN1Y2ggdGhpcyBjYXNlKSB0byBiZSB0
b3JuCisgICAgICAgICAgICAvLyBvZmYgZnJvbSB0aGUgYWN0aXZhdGlvbiBzdGFjaywgaW4gd2hp
Y2ggY2FzZSB3ZSBuZWVkIHRvIGdldCBpdCBhZ2FpbgorICAgICAgICAgICAgLy8gZnJvbSB0aGUg
U2NvcGVDaGFpbkl0ZXJhdG9yLgorICAgICAgICAgICAgCiAgICAgICAgICAgICBKU09iamVjdCog
YmFzZSA9ICppdGVyOwogICAgICAgICAgICAgSlNWYWx1ZSogdiA9IHNsb3QuZ2V0VmFsdWUoZXhl
YywgYmFzZSwgbV9pZGVudCktPnRvSlNOdW1iZXIoZXhlYyk7CiAgICAgICAgICAgICBiYXNlLT5w
dXQoZXhlYywgbV9pZGVudCwganNOdW1iZXIodi0+dG9OdW1iZXIoZXhlYykgKyAxKSk7CkBAIC0z
MjU2LDEzICszMjU5LDE3IEBAIHZvaWQgQXNzaWduUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFi
bGUKIEpTVmFsdWUqIFJlYWRNb2RpZnlMb2NhbFZhck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBU1NFUlQoZXhlYy0+dmFyaWFibGVPYmplY3QoKSA9PSBleGVjLT5zY29w
ZUNoYWluKCkudG9wKCkpOwotICAgIEpTVmFsdWUqKiBzbG90ID0gJmV4ZWMtPmxvY2FsU3RvcmFn
ZSgpW21faW5kZXhdLnZhbHVlOwogCiAgICAgQVNTRVJUKG1fb3BlcmF0b3IgIT0gT3BFcXVhbCk7
Ci0gICAgSlNWYWx1ZSogdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoZXhlYywgKnNs
b3QsIG1fcmlnaHQuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgIEpTVmFsdWUqIHYgPSB2YWx1ZUZv
clJlYWRNb2RpZnlBc3NpZ25tZW50KGV4ZWMsIGV4ZWMtPmxvY2FsU3RvcmFnZSgpW21faW5kZXhd
LnZhbHVlLCBtX3JpZ2h0LmdldCgpLCBtX29wZXJhdG9yKTsKIAogICAgIEtKU19DSEVDS0VYQ0VQ
VElPTlZBTFVFCi0gICAgKnNsb3QgPSB2OworICAgIAorICAgIC8vIFdlIGNhbid0IHN0b3JlIGEg
cG9pbnRlciBpbnRvIGxvY2FsU3RvcmFnZSgpIGFuZCB1c2UgaXQgdGhyb3VnaG91dCB0aGUgZnVu
Y3Rpb24KKyAgICAvLyBib2R5LCBiZWNhdXNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQo
KSBtaWdodCBjYXVzZSBhbiBBY3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIGNoYW5naW5n
IHRoZSB2YWx1ZSBvZiBsb2NhbFN0b3JhZ2UoKS4KKyAgICAKKyAgICBleGVjLT5sb2NhbFN0b3Jh
Z2UoKVttX2luZGV4XS52YWx1ZSA9IHY7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTMzMzQsOCAr
MzM0MSwxMSBAQCBmb3VuZDoKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChl
eGVjLCB2MSwgbV9yaWdodC5nZXQoKSwgbV9vcGVyYXRvcik7CiAKICAgICBLSlNfQ0hFQ0tFWENF
UFRJT05WQUxVRQotCi0gICAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIHYpOworICAgIAorICAg
IC8vIFNpbmNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoKSBtaWdodCBjYXVzZSBhbiBB
Y3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIHdlIG5lZWQgdG8gZ2V0IHRoZSBiYXNlIGZy
b20gdGhlIFNjb3BlQ2hhaW5JdGVyYXRvciBhZ2Fpbi4KKyAgICAKKyAgICAoKml0ZXIpLT5wdXQo
ZXhlYywgbV9pZGVudCwgdik7CiAgICAgcmV0dXJuIHY7CiB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5OTg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMDgtMDItMDQgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBsYXlvdXQgdGVzdHMgZm9yIHRoZSBjb2xsZWN0aXZlIGZpeCBmb3IgdGhlIGZvbGxvd2lu
ZyBidWdzOgorCisgICAgICAgIEJ1ZyAxNjg4OTogUkVHUkVTU0lPTiAocjI5NDI1KTogQ2FudmFz
LWJhc2VkIGdyYXBoaW5nIGNhbGN1bGF0b3IgZmFpbHMgdG8gcnVuCisgICAgICAgIEJ1ZyAxNzAx
NTogUkVHUkVTU0lPTiAocjI5NDE0LTI5NDI4KTogd3d3LmZveC5jb20gInNob3dzIiBtZW51IGZh
aWxzIHRvIHJlbmRlcgorICAgICAgICBCdWcgMTcxNjQ6IFJFR1JFU1NJT046IEphdmFTY3JpcHQg
cG9wLXVwIG1lbnUgYXBwZWFycyBhdCB3cm9uZyBsb2NhdGlvbiB3aGVuIGhvdmVyaW5nIGltYWdl
IGF0IGh0dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tLworCisgICAgICAgIDxodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4OT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2OTYyNTU+CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDE1PgorCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE2ND4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjA5NDc+CisKKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9yZXNvdXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qczogQWRkZWQuCisKIDIwMDgtMDItMDQgIFJv
YmVydCBTZXNlayAgPHJzZXNla0BibHVlc3RhdGljLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVhZC1tb2RpZnktZXZh
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWFkLW1v
ZGlmeS1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVhZC1tb2RpZnktZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjAgQEAKK1Rlc3RzIHdoZXRoZXIgZXZhbCgpIHdvcmtzIG9uIHRoZSByaWdodC1oYW5kIHNpZGUg
b2YgZXhwcmVzc2lvbnMgdGhhdCByZWFkIGFuZCBtb2RpZnkgYSB2YWx1ZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbXVsdFRlc3QoKTsgaXMgdHJ1ZQorUEFTUyBkaXZU
ZXN0KCk7IGlzIHRydWUKK1BBU1MgYWRkVGVzdCgpOyBpcyB0cnVlCitQQVNTIHN1YlRlc3QoKTsg
aXMgdHJ1ZQorUEFTUyBsc2hpZnRUZXN0KCk7IGlzIHRydWUKK1BBU1MgcnNoaWZ0VGVzdCgpOyBp
cyB0cnVlCitQQVNTIHVyc2hpZnRUZXN0KCk7IGlzIHRydWUKK1BBU1MgYW5kVGVzdCgpOyBpcyB0
cnVlCitQQVNTIHhvclRlc3QoKTsgaXMgdHJ1ZQorUEFTUyBvclRlc3QoKTsgaXMgdHJ1ZQorUEFT
UyBtb2RUZXN0KCk7IGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlYWQtbW9kaWZ5LWV2
YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlYWQtbW9kaWZ5LWV2
YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVhZC1tb2RpZnkt
ZXZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlYWQtbW9kaWZ5LWV2YWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvcmVhZC1tb2RpZnkt
ZXZhbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9yZWFk
LW1vZGlmeS1ldmFsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NCBAQAor
ZGVzY3JpcHRpb24oCisnVGVzdHMgd2hldGhlciBldmFsKCkgd29ya3Mgb24gdGhlIHJpZ2h0LWhh
bmQgc2lkZSBvZiBleHByZXNzaW9ucyB0aGF0IHJlYWQgYW5kIG1vZGlmeSBhIHZhbHVlLicKKyk7
CisKK2Z1bmN0aW9uIG11bHRUZXN0KCkKK3sKKyAgICB2YXIgeCA9IDE7CisgICAgeCAqPSBldmFs
KCcyJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVuY3Rpb24gZGl2VGVzdCgpCit7Cisg
ICAgdmFyIHggPSAyOworICAgIHggLz0gZXZhbCgnMicpOworICAgIHJldHVybiB4ID09IDE7Cit9
CisKK2Z1bmN0aW9uIGFkZFRlc3QoKQoreworICAgIHZhciB4ID0gMDsKKyAgICB4ICs9IGV2YWwo
JzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlvbiBzdWJUZXN0KCkKK3sKKyAg
ICB2YXIgeCA9IDA7CisgICAgeCAtPSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gLTE7Cit9
CisKK2Z1bmN0aW9uIGxzaGlmdFRlc3QoKQoreworICAgIHZhciB4ID0gMTsKKyAgICB4IDw8PSBl
dmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVuY3Rpb24gcnNoaWZ0VGVzdCgp
Cit7CisgICAgdmFyIHggPSAxOworICAgIHggPj49IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9
PSAwOworfQorCitmdW5jdGlvbiB1cnNoaWZ0VGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAg
IHggPj4+PSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMDsKK30KKworZnVuY3Rpb24gYW5k
VGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAgIHggJj0gZXZhbCgnMScpOworICAgIHJldHVy
biB4ID09IDE7Cit9CisKK2Z1bmN0aW9uIHhvclRlc3QoKQoreworICAgIHZhciB4ID0gMDsKKyAg
ICB4IF49IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlvbiBvclRl
c3QoKQoreworICAgIHZhciB4ID0gMDsKKyAgICB4IHw9IGV2YWwoJzEnKTsKKyAgICByZXR1cm4g
eCA9PSAxOworfQorCitmdW5jdGlvbiBtb2RUZXN0KCkKK3sKKyAgICB2YXIgeCA9IDQ7CisgICAg
eCAlPSBldmFsKCczJyk7CisgICAgcmV0dXJuIHggPT0gMTsKK30KKworc2hvdWxkQmVUcnVlKCdt
dWx0VGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdkaXZUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUo
J2FkZFRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgnc3ViVGVzdCgpOycpOworc2hvdWxkQmVUcnVl
KCdsc2hpZnRUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ3JzaGlmdFRlc3QoKTsnKTsKK3Nob3Vs
ZEJlVHJ1ZSgndXJzaGlmdFRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgnYW5kVGVzdCgpOycpOwor
c2hvdWxkQmVUcnVlKCd4b3JUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ29yVGVzdCgpOycpOwor
c2hvdWxkQmVUcnVlKCdtb2RUZXN0KCk7Jyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18930</attachid>
            <date>2008-02-04 23:15:07 -0800</date>
            <delta_ts>2008-02-04 23:18:51 -0800</delta_ts>
            <desc>Revised proposed patch</desc>
            <filename>china.patch</filename>
            <type>text/plain</type>
            <size>8567</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5OTYwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMDItMDQgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgQnVnIDE2ODg5OiBSRUdSRVNTSU9OIChy
Mjk0MjUpOiBDYW52YXMtYmFzZWQgZ3JhcGhpbmcgY2FsY3VsYXRvciBmYWlscyB0byBydW4KKyAg
ICAgICAgICAgICAgQnVnIDE3MDE1OiBSRUdSRVNTSU9OIChyMjk0MTQtMjk0MjgpOiB3d3cuZm94
LmNvbSAic2hvd3MiIG1lbnUgZmFpbHMgdG8gcmVuZGVyCisgICAgICAgICAgICAgIEJ1ZyAxNzE2
NDogUkVHUkVTU0lPTjogSmF2YVNjcmlwdCBwb3AtdXAgbWVudSBhcHBlYXJzIGF0IHdyb25nIGxv
Y2F0aW9uIHdoZW4gaG92ZXJpbmcgaW1hZ2UgYXQgaHR0cDovL25ld3MuY2hpbmF0aW1lcy5jb20v
CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODg5
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY5NjI1NT4KKworICAgICAgICA8aHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTU+CisKKyAgICAgICAgPGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTY0PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTcyMDk0Nz4KKworICAgICAgICBUaGUgQWN0aXZhdGlvbkltcCB0ZWFyLW9mZiAocjI5
NDI1KSBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIFJlYWRNb2RpZnkKKyAgICAgICAgbm9kZXMg
dGhhdCBmaXJzdCByZXNvbHZlIGEgc2xvdCwgY2FsbCB2YWx1ZUZvclJlYWRNb2RpZnlOb2RlKCks
IGFuZCB0aGVuCisgICAgICAgIHN0b3JlIGEgdmFsdWUgaW4gdGhlIHByZXZpb3VzbHkgcmVzb2x2
ZWQgc2xvdC4gU2luY2UgdmFsdWVGb3JSZWFkTW9kaWZ5Tm9kZSgpCisgICAgICAgIG1heSBjYXVz
ZSBhIHRlYXItb2ZmLCB0aGUgc2xvdCBuZWVkcyB0byBiZSByZXNvbHZlZCBhZ2FpbiwgYnV0IHRo
aXMgd2FzCisgICAgICAgIG5vdCBoYXBwZW5pbmcgd2l0aCB0aGUgZXhpc3RpbmcgY29kZS4KKwor
ICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6OlJlYWRNb2RpZnlMb2NhbFZh
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpl
dmFsdWF0ZSk6CisKIDIwMDgtMDItMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3Bw
CShyZXZpc2lvbiAyOTk1NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyODksOCArMTI4OSwxMSBAQCBKU1ZhbHVlKiBQb3N0SW5jUmVzb2x2ZU5v
ZGU6OmV2YWx1YXRlKEV4CiAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgZG8gewogICAgICAg
ICBpZiAoKCppdGVyKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpKSB7Ci0g
ICAgICAgICAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gUG9zdEluY1Jlc29sdmVOb2RlOjpldmFs
dWF0ZSgpLgotCisgICAgICAgICAgICAvLyBJZiBtX2lkZW50IGlzICdhcmd1bWVudHMnLCB0aGUg
YmFzZS0+Z2V0UHJvcGVydHlTbG90KCkgbWF5IGNhdXNlIAorICAgICAgICAgICAgLy8gYmFzZSAo
d2hpY2ggbXVzdCBiZSBhbiBBY3RpdmF0aW9uSW1wIGluIHN1Y2ggdGhpcyBjYXNlKSB0byBiZSB0
b3JuCisgICAgICAgICAgICAvLyBvZmYgZnJvbSB0aGUgYWN0aXZhdGlvbiBzdGFjaywgaW4gd2hp
Y2ggY2FzZSB3ZSBuZWVkIHRvIGdldCBpdCBhZ2FpbgorICAgICAgICAgICAgLy8gZnJvbSB0aGUg
U2NvcGVDaGFpbkl0ZXJhdG9yLgorICAgICAgICAgICAgCiAgICAgICAgICAgICBKU09iamVjdCog
YmFzZSA9ICppdGVyOwogICAgICAgICAgICAgSlNWYWx1ZSogdiA9IHNsb3QuZ2V0VmFsdWUoZXhl
YywgYmFzZSwgbV9pZGVudCktPnRvSlNOdW1iZXIoZXhlYyk7CiAgICAgICAgICAgICBiYXNlLT5w
dXQoZXhlYywgbV9pZGVudCwganNOdW1iZXIodi0+dG9OdW1iZXIoZXhlYykgKyAxKSk7CkBAIC0z
MjU2LDEzICszMjU5LDE3IEBAIHZvaWQgQXNzaWduUmVzb2x2ZU5vZGU6Om9wdGltaXplVmFyaWFi
bGUKIEpTVmFsdWUqIFJlYWRNb2RpZnlMb2NhbFZhck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBU1NFUlQoZXhlYy0+dmFyaWFibGVPYmplY3QoKSA9PSBleGVjLT5zY29w
ZUNoYWluKCkudG9wKCkpOwotICAgIEpTVmFsdWUqKiBzbG90ID0gJmV4ZWMtPmxvY2FsU3RvcmFn
ZSgpW21faW5kZXhdLnZhbHVlOwogCiAgICAgQVNTRVJUKG1fb3BlcmF0b3IgIT0gT3BFcXVhbCk7
Ci0gICAgSlNWYWx1ZSogdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoZXhlYywgKnNs
b3QsIG1fcmlnaHQuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgIEpTVmFsdWUqIHYgPSB2YWx1ZUZv
clJlYWRNb2RpZnlBc3NpZ25tZW50KGV4ZWMsIGV4ZWMtPmxvY2FsU3RvcmFnZSgpW21faW5kZXhd
LnZhbHVlLCBtX3JpZ2h0LmdldCgpLCBtX29wZXJhdG9yKTsKIAogICAgIEtKU19DSEVDS0VYQ0VQ
VElPTlZBTFVFCi0gICAgKnNsb3QgPSB2OworICAgIAorICAgIC8vIFdlIGNhbid0IHN0b3JlIGEg
cG9pbnRlciBpbnRvIGxvY2FsU3RvcmFnZSgpIGFuZCB1c2UgaXQgdGhyb3VnaG91dCB0aGUgZnVu
Y3Rpb24KKyAgICAvLyBib2R5LCBiZWNhdXNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQo
KSBtaWdodCBjYXVzZSBhbiBBY3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIGNoYW5naW5n
IHRoZSB2YWx1ZSBvZiBsb2NhbFN0b3JhZ2UoKS4KKyAgICAKKyAgICBleGVjLT5sb2NhbFN0b3Jh
Z2UoKVttX2luZGV4XS52YWx1ZSA9IHY7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTMzMzQsOCAr
MzM0MSwxMSBAQCBmb3VuZDoKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChl
eGVjLCB2MSwgbV9yaWdodC5nZXQoKSwgbV9vcGVyYXRvcik7CiAKICAgICBLSlNfQ0hFQ0tFWENF
UFRJT05WQUxVRQotCi0gICAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIHYpOworICAgIAorICAg
IC8vIFNpbmNlIHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoKSBtaWdodCBjYXVzZSBhbiBB
Y3RpdmF0aW9uSW1wIHRlYXItb2ZmLAorICAgIC8vIHdlIG5lZWQgdG8gZ2V0IHRoZSBiYXNlIGZy
b20gdGhlIFNjb3BlQ2hhaW5JdGVyYXRvciBhZ2Fpbi4KKyAgICAKKyAgICAoKml0ZXIpLT5wdXQo
ZXhlYywgbV9pZGVudCwgdik7CiAgICAgcmV0dXJuIHY7CiB9CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5OTg5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMDgtMDItMDQgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBsYXlvdXQgdGVzdHMgZm9yIHRoZSBjb2xsZWN0aXZlIGZpeCBmb3IgdGhlIGZvbGxvd2lu
ZyBidWdzOgorCisgICAgICAgIEJ1ZyAxNjg4OTogUkVHUkVTU0lPTiAocjI5NDI1KTogQ2FudmFz
LWJhc2VkIGdyYXBoaW5nIGNhbGN1bGF0b3IgZmFpbHMgdG8gcnVuCisgICAgICAgIEJ1ZyAxNzAx
NTogUkVHUkVTU0lPTiAocjI5NDE0LTI5NDI4KTogd3d3LmZveC5jb20gInNob3dzIiBtZW51IGZh
aWxzIHRvIHJlbmRlcgorICAgICAgICBCdWcgMTcxNjQ6IFJFR1JFU1NJT046IEphdmFTY3JpcHQg
cG9wLXVwIG1lbnUgYXBwZWFycyBhdCB3cm9uZyBsb2NhdGlvbiB3aGVuIGhvdmVyaW5nIGltYWdl
IGF0IGh0dHA6Ly9uZXdzLmNoaW5hdGltZXMuY29tLworCisgICAgICAgIDxodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4OT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzU2OTYyNTU+CisKKyAgICAgICAgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDE1PgorCisgICAgICAgIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE2ND4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MjA5NDc+CisKKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9yZXNvdXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qczogQWRkZWQuCisKIDIwMDgtMDItMDQgIFJv
YmVydCBTZXNlayAgPHJzZXNla0BibHVlc3RhdGljLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVhZC1tb2RpZnktZXZh
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWFkLW1v
ZGlmeS1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVhZC1tb2RpZnktZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjQgQEAKK1Rlc3RzIHdoZXRoZXIgZXZhbCgpIHdvcmtzIGluc2lkZSBzdGF0ZW1lbnRzIHRoYXQg
cmVhZCBhbmQgbW9kaWZ5IGEgdmFsdWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIG11bHRUZXN0KCk7IGlzIHRydWUKK1BBU1MgZGl2VGVzdCgpOyBpcyB0cnVlCitQQVNT
IGFkZFRlc3QoKTsgaXMgdHJ1ZQorUEFTUyBzdWJUZXN0KCk7IGlzIHRydWUKK1BBU1MgbHNoaWZ0
VGVzdCgpOyBpcyB0cnVlCitQQVNTIHJzaGlmdFRlc3QoKTsgaXMgdHJ1ZQorUEFTUyB1cnNoaWZ0
VGVzdCgpOyBpcyB0cnVlCitQQVNTIGFuZFRlc3QoKTsgaXMgdHJ1ZQorUEFTUyB4b3JUZXN0KCk7
IGlzIHRydWUKK1BBU1Mgb3JUZXN0KCk7IGlzIHRydWUKK1BBU1MgbW9kVGVzdCgpOyBpcyB0cnVl
CitQQVNTIHByZUluY1Rlc3QoKTsgaXMgdHJ1ZQorUEFTUyBwcmVEZWNUZXN0KCk7IGlzIHRydWUK
K1BBU1MgcG9zdEluY1Rlc3QoKTsgaXMgdHJ1ZQorUEFTUyBwb3N0RGVjVGVzdCgpOyBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWFkLW1vZGlmeS1ldmFsLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWFkLW1vZGlmeS1ldmFsLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlYWQtbW9kaWZ5LWV2YWwuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9yZWFkLW1vZGlmeS1ldmFsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3JlYWQtbW9kaWZ5LWV2YWwuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvcmVhZC1tb2RpZnktZXZhbC5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3JlYWQtbW9kaWZ5LWV2
YWwuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI3IEBACitkZXNjcmlwdGlvbigKKydUZXN0
cyB3aGV0aGVyIGV2YWwoKSB3b3JrcyBpbnNpZGUgc3RhdGVtZW50cyB0aGF0IHJlYWQgYW5kIG1v
ZGlmeSBhIHZhbHVlLicKKyk7CisKK2Z1bmN0aW9uIG11bHRUZXN0KCkKK3sKKyAgICB2YXIgeCA9
IDE7CisgICAgeCAqPSBldmFsKCcyJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVuY3Rp
b24gZGl2VGVzdCgpCit7CisgICAgdmFyIHggPSAyOworICAgIHggLz0gZXZhbCgnMicpOworICAg
IHJldHVybiB4ID09IDE7Cit9CisKK2Z1bmN0aW9uIGFkZFRlc3QoKQoreworICAgIHZhciB4ID0g
MDsKKyAgICB4ICs9IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlv
biBzdWJUZXN0KCkKK3sKKyAgICB2YXIgeCA9IDA7CisgICAgeCAtPSBldmFsKCcxJyk7CisgICAg
cmV0dXJuIHggPT0gLTE7Cit9CisKK2Z1bmN0aW9uIGxzaGlmdFRlc3QoKQoreworICAgIHZhciB4
ID0gMTsKKyAgICB4IDw8PSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMjsKK30KKworZnVu
Y3Rpb24gcnNoaWZ0VGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAgIHggPj49IGV2YWwoJzEn
KTsKKyAgICByZXR1cm4geCA9PSAwOworfQorCitmdW5jdGlvbiB1cnNoaWZ0VGVzdCgpCit7Cisg
ICAgdmFyIHggPSAxOworICAgIHggPj4+PSBldmFsKCcxJyk7CisgICAgcmV0dXJuIHggPT0gMDsK
K30KKworZnVuY3Rpb24gYW5kVGVzdCgpCit7CisgICAgdmFyIHggPSAxOworICAgIHggJj0gZXZh
bCgnMScpOworICAgIHJldHVybiB4ID09IDE7Cit9CisKK2Z1bmN0aW9uIHhvclRlc3QoKQorewor
ICAgIHZhciB4ID0gMDsKKyAgICB4IF49IGV2YWwoJzEnKTsKKyAgICByZXR1cm4geCA9PSAxOwor
fQorCitmdW5jdGlvbiBvclRlc3QoKQoreworICAgIHZhciB4ID0gMDsKKyAgICB4IHw9IGV2YWwo
JzEnKTsKKyAgICByZXR1cm4geCA9PSAxOworfQorCitmdW5jdGlvbiBtb2RUZXN0KCkKK3sKKyAg
ICB2YXIgeCA9IDQ7CisgICAgeCAlPSBldmFsKCczJyk7CisgICAgcmV0dXJuIHggPT0gMTsKK30K
KworZnVuY3Rpb24gcHJlSW5jVGVzdCgpCit7CisgICAgdmFyIHggPSB7IHZhbHVlOiAwIH07Cisg
ICAgKytldmFsKCd4JykudmFsdWU7CisgICAgcmV0dXJuIHgudmFsdWUgPT0gMTsKK30KKworZnVu
Y3Rpb24gcHJlRGVjVGVzdCgpCit7CisgICAgdmFyIHggPSB7IHZhbHVlOiAwIH07CisgICAgLS1l
dmFsKCd4JykudmFsdWU7CisgICAgcmV0dXJuIHgudmFsdWUgPT0gLTE7Cit9CisKK2Z1bmN0aW9u
IHBvc3RJbmNUZXN0KCkKK3sKKyAgICB2YXIgeCA9IHsgdmFsdWU6IDAgfTsKKyAgICBldmFsKCd4
JykudmFsdWUrKzsKKyAgICByZXR1cm4geC52YWx1ZSA9PSAxOworfQorCitmdW5jdGlvbiBwb3N0
RGVjVGVzdCgpCit7CisgICAgdmFyIHggPSB7IHZhbHVlOiAwIH07CisgICAgZXZhbCgneCcpLnZh
bHVlLS07CisgICAgcmV0dXJuIHgudmFsdWUgPT0gLTE7Cit9CisKK3Nob3VsZEJlVHJ1ZSgnbXVs
dFRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgnZGl2VGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdh
ZGRUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ3N1YlRlc3QoKTsnKTsKK3Nob3VsZEJlVHJ1ZSgn
bHNoaWZ0VGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdyc2hpZnRUZXN0KCk7Jyk7CitzaG91bGRC
ZVRydWUoJ3Vyc2hpZnRUZXN0KCk7Jyk7CitzaG91bGRCZVRydWUoJ2FuZFRlc3QoKTsnKTsKK3No
b3VsZEJlVHJ1ZSgneG9yVGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdvclRlc3QoKTsnKTsKK3No
b3VsZEJlVHJ1ZSgnbW9kVGVzdCgpOycpOworCitzaG91bGRCZVRydWUoJ3ByZUluY1Rlc3QoKTsn
KTsKK3Nob3VsZEJlVHJ1ZSgncHJlRGVjVGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdwb3N0SW5j
VGVzdCgpOycpOworc2hvdWxkQmVUcnVlKCdwb3N0RGVjVGVzdCgpOycpOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="8272"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>