<?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>33435</bug_id>
          
          <creation_ts>2010-01-09 15:28:49 -0800</creation_ts>
          <short_desc>selection.modify(&quot;move&quot;, &quot;left&quot;, &quot;lineboundary&quot;) in RTL text moves to the right lineboundary</short_desc>
          <delta_ts>2011-01-04 15:06:32 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Lebar">justin.lebar+bug</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>ishermandom+bugs</cc>
    
    <cc>justin.lebar+bug</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>179065</commentid>
    <comment_count>0</comment_count>
      <attachid>46224</attachid>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-01-09 15:28:49 -0800</bug_when>
    <thetext>Created attachment 46224
Testcase #3 from Mozilla bug 496275

This was noticed in https://bugzilla.mozilla.org/show_bug.cgi?id=496275, where Gecko is adding DOMSelection.modify to match WebKit.

If I call selection.modify(&quot;move&quot;, &quot;left&quot;, &quot;lineboundary&quot;) from inside a contenteditable div with dir=&quot;rtl&quot;, the cursor moves to the right line boundary, while I expect it to move to the left.

Similarly, selection.modify(&quot;move&quot;, &quot;right&quot;, &quot;lineboundary&quot;) moves the cursor to the left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179068</commentid>
    <comment_count>1</comment_count>
      <attachid>46225</attachid>
    <who name="Justin Lebar">justin.lebar+bug</who>
    <bug_when>2010-01-09 15:32:02 -0800</bug_when>
    <thetext>Created attachment 46225
Testcase #3 from Mozilla bug 496275 (better encoding?)

Trying to fix encoding of attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198543</commentid>
    <comment_count>2</comment_count>
      <attachid>50484</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-11 03:43:45 -0800</bug_when>
    <thetext>Created attachment 50484
reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318445</commentid>
    <comment_count>3</comment_count>
      <attachid>75845</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-07 14:31:27 -0800</bug_when>
    <thetext>Created attachment 75845
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318633</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-07 21:55:21 -0800</bug_when>
    <thetext>Attachment 75845 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/update-webkit&apos;]&quot; exit_code: 2
Updating OpenSource
Incomplete data: Delta source ended unexpectedly at /usr/lib/git-core/git-svn line 5061

Died at WebKitTools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319125</commentid>
    <comment_count>5</comment_count>
      <attachid>75845</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-08 16:45:13 -0800</bug_when>
    <thetext>Comment on attachment 75845
patch w/ layout test

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

&gt; WebCore/editing/SelectionController.cpp:432
&gt; +    case LineBoundary:
&gt; +        if (directionOfEnclosingBlock() == LTR)
&gt; +            pos = visualEndOfLine(startForPlatform());
&gt; +        else
&gt; +            pos = visualStartOfLine(startForPlatform());
&gt; +        break;

We should just do:
if (directionOfEnclosingBlock() == LTR)
    return visualEndOfLine(startForPlatform());
return visualStartOfLine(startForPlatform());

and modify
pos = modifyMovingForward(granularity);
to
return modifyMovingForward(granularity);

I don&apos;t know why we have a VisiblePosition local variable in the first place.

&gt; WebCore/editing/visible_units.cpp:1247
&gt; +    // Current implementation takes the 1st alternative. The caret will be
&gt; +    // displayed on the leftmost visual position for logical start of line in
&gt; +    // LTR paragraph and on the right most visual position for the RTL paragraphs.
&gt; +    return visualStartOfLine(c);
&gt; +}
&gt; +
&gt; +VisiblePosition logicalEndOfLine(const VisiblePosition&amp; c)
&gt; +{
&gt; +    // TODO: this is the current behavior that might need to be fixed.
&gt; +    return visualEndOfLine(c);
&gt; +}

Does this mean that logical/visual behaviors are the same, and we&apos;re not changing the behavior at all this in patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319131</commentid>
    <comment_count>6</comment_count>
      <attachid>75845</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-08 16:54:04 -0800</bug_when>
    <thetext>Comment on attachment 75845
patch w/ layout test

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

&gt;&gt; WebCore/editing/SelectionController.cpp:432
&gt;&gt; +        break;
&gt; 
&gt; We should just do:
&gt; if (directionOfEnclosingBlock() == LTR)
&gt;     return visualEndOfLine(startForPlatform());
&gt; return visualStartOfLine(startForPlatform());
&gt; 
&gt; and modify
&gt; pos = modifyMovingForward(granularity);
&gt; to
&gt; return modifyMovingForward(granularity);
&gt; 
&gt; I don&apos;t know why we have a VisiblePosition local variable in the first place.

I&apos;m confused about this change now.  Why are we calling different visual* functions depending on the directionality of text block?  Shouldn&apos;t visualStartOfLine always return the visually left-most offset?  When we say the start of line in RTL text, is it the right edge of the text?  Because your change seems to indicate that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319567</commentid>
    <comment_count>7</comment_count>
      <attachid>75845</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-09 10:37:09 -0800</bug_when>
    <thetext>Comment on attachment 75845
patch w/ layout test

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

&gt;&gt;&gt; WebCore/editing/SelectionController.cpp:432
&gt;&gt;&gt; +        break;
&gt;&gt; 
&gt;&gt; We should just do:
&gt;&gt; if (directionOfEnclosingBlock() == LTR)
&gt;&gt;     return visualEndOfLine(startForPlatform());
&gt;&gt; return visualStartOfLine(startForPlatform());
&gt;&gt; 
&gt;&gt; and modify
&gt;&gt; pos = modifyMovingForward(granularity);
&gt;&gt; to
&gt;&gt; return modifyMovingForward(granularity);
&gt;&gt; 
&gt;&gt; I don&apos;t know why we have a VisiblePosition local variable in the first place.
&gt; 
&gt; I&apos;m confused about this change now.  Why are we calling different visual* functions depending on the directionality of text block?  Shouldn&apos;t visualStartOfLine always return the visually left-most offset?  When we say the start of line in RTL text, is it the right edge of the text?  Because your change seems to indicate that.

The &quot;pos = ...&quot; style is in all modifyMoving.... and modifyExtending.... functions. I feel it is more easier to read and to debug. But I do not have strong opinions on it.

I agree the visualStart/EndOfLine names are confusing. In the current patch,  visual start of line in RTL text is the right edge of text. I think using left/right will be unambiguous, and I will change to that.

&gt;&gt; WebCore/editing/visible_units.cpp:1247
&gt;&gt; +}
&gt; 
&gt; Does this mean that logical/visual behaviors are the same, and we&apos;re not changing the behavior at all this in patch?

I am not sure what should be the correct behavior of logical start/end of line.

I just read the draft specs for bidi editing by Matitiahu Allouche of IBM, the chairman of the Standards Institute of Israel&apos;s committee on IT aspects of Hebrew.
On &quot;HOME/END&quot; issue it says:
&quot;Home and End keys are logical functions which move the current logical position before the first logical character (whatever its Bidi level) and after the last logical character (of the line, sentence, paragraph etc... according to whatever unit of text the non-bidi Home and End functions relate to).
The caret will be displayed on the leftmost visual position for Home in LTR paragraphs and End in RTL paragraphs, on the rightmost visual position for End in LTR paragraphs and Home in RTL paragraphs. Beside moving the caret position, Home and End must set the caret direction in accordance with the base direction of the the paragraph.&quot;

Which matches our current implementation.

In the current patch, MovingLeft/Right on line boundary always moves caret to the left/right edge of the line regardless of containing block&apos;s directionality. MovingForward on line boundary moves caret to the right edge of line if the containing block is LTR, and it moves caret to the left edge of the line if the containing block is RTL.

I prefer not changing the logical behavior in the same patch. There is a bug filed against HOME/END issue: https://bugs.webkit.org/show_bug.cgi?id=49107.
If we are going to change that, I&apos;d prefer in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319841</commentid>
    <comment_count>8</comment_count>
      <attachid>76149</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-09 18:13:25 -0800</bug_when>
    <thetext>Created attachment 76149
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320209</commentid>
    <comment_count>9</comment_count>
      <attachid>76149</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-10 09:40:23 -0800</bug_when>
    <thetext>Comment on attachment 76149
patch w/ layout test

Thanks for the clarification.  The patch makes a lot more sense now.

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

&gt; WebCore/editing/visible_units.cpp:1160
&gt; +    // There is discussion on the logical start of line in the context of
&gt; +    // bidirectional text.
&gt; +    // For example, if the paragraph direction is RTL, given the following text
&gt; +    // in logical order: &quot;hello WORLD&quot;, its visual display will be:
&gt; +    // &quot;DLROW hello&quot;. Logical start of line should be a logical position before
&gt; +    // the first logical character in a line. Should it map to the visual position
&gt; +    // at the right of &apos;o&apos; in &quot;hello&quot;, or should it map to the visual position 
&gt; +    // at the left of &apos;h&apos; in &quot;hello&quot;?
&gt; +    // For example, if the paragraph direction is LTR, given a text 
&gt; +    // &quot;HELLO world&quot;, it is visual display will be &quot;OLLEH world&quot;.

Nit: &quot;its&quot; visual display

&gt; WebCore/editing/visible_units.cpp:1167
&gt; +    // There is discussion on the logical start of line in the context of
&gt; +    // bidirectional text.
&gt; +    // For example, if the paragraph direction is RTL, given the following text
&gt; +    // in logical order: &quot;hello WORLD&quot;, its visual display will be:
&gt; +    // &quot;DLROW hello&quot;. Logical start of line should be a logical position before
&gt; +    // the first logical character in a line. Should it map to the visual position
&gt; +    // at the right of &apos;o&apos; in &quot;hello&quot;, or should it map to the visual position 
&gt; +    // at the left of &apos;h&apos; in &quot;hello&quot;?
&gt; +    // For example, if the paragraph direction is LTR, given a text 
&gt; +    // &quot;HELLO world&quot;, it is visual display will be &quot;OLLEH world&quot;.
&gt;  
&gt;  
&gt; +    // Should the logical start of line map to visual position at left of 
&gt; +    // &apos;O&apos; in &quot;OLLLEH&quot;, or should it map to the visual position at right of
&gt; +    // &apos;H&apos; in &quot;OLLEH&quot;?
&gt; +    // 
&gt; +    // Current implementation takes the 1st alternative. The caret will be
&gt; +    // displayed on the leftmost visual position for logical start of line in
&gt; +    // LTR paragraph and on the right most visual position for the RTL paragraphs.

I&apos;m not sure if we should include all of this in the code.  We should just post this on the bug 49107.  We can still add the first two lines and if someone wanted to know what&apos;s the discusion, he/she can open the bug and read.

&gt; WebCore/editing/visible_units.cpp:1184
&gt; +// For a LTR InlineBox, the logical end position for the line is the maximum caret offset of the last
&gt; +// logical node in the line. 
&gt; +// For example, if the last logical node in the line is a LTR node, the node and its position information is
&gt; +// |......(n)a(n+1)b(n+2)c(n+3)|.
&gt; +// If the last logical node in the line is a RTL node, the node and its position information is
&gt; +// |......(n)C(n+2)B(n+1)A(n+3)|.
&gt; +//
&gt; +// Same for a RTL InlineBox.
&gt; +// For example, if the last logical node in the line is a LTR node, the node and its position information is
&gt; +// |(n+3)a(n+1)b(n+2)c(n).......|.
&gt; +// If the last logical node in the line is a RTL node, the node and its position information is
&gt; +// |(n+3)C(n+2)B(n+1)A(n).......|.

I&apos;m not even sure if we should have this comment.  I suppose this is fairly complex function, but we don&apos;t normally add a long comment like this to explain a function.  You can add some comment but I think this one is too verbose.

&gt; WebCore/editing/visible_units.cpp:1246
&gt; +    if (direction == LTR)
&gt; +        return logicalStartOfLine(c);
&gt; +    return logicalEndOfLine(c);

Great. This code makes a lot more sense now!

You can do:
return direction == LTR ? logicalStartOfLine(c) : logicalEndOfLine(c);

In fact, you can make it an inline function since this is really short.  It might give us a little performance improvement since instantiating VisiblePosition is expensive.

&gt; WebCore/editing/visible_units.cpp:1253
&gt; +    if (direction == LTR)
&gt; +        return logicalEndOfLine(c);
&gt; +    return logicalStartOfLine(c);

Ditto.

&gt; WebCore/editing/visible_units.h:64
&gt; +VisiblePosition rightEdgeOfLine(const VisiblePosition &amp;, TextDirection);
&gt; +VisiblePosition leftEdgeOfLine(const VisiblePosition &amp;, TextDirection);

I&apos;m not sure if &quot;Edge&quot; makes sense.  &quot;edge&quot; seems to indicate the edge of the containing block, which isn&apos;t really the case here.
Maybe visualRightOfLine or rightBoundaryOfLine?

&gt; LayoutTests/editing/selection/home-end.html:77
&gt;                  var positionsMovingRight;
&gt;                  var positionsMovingLeft;

Maybe you should rename these variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321511</commentid>
    <comment_count>10</comment_count>
      <attachid>76459</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-13 15:53:00 -0800</bug_when>
    <thetext>Created attachment 76459
patch w/ layout test

update per rniwa&apos;s feedback except I did not make left/rightBoundarOfLine() inline to avoid introducing dependency on VisiblePosition.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329248</commentid>
    <comment_count>11</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-01-04 15:06:32 -0800</bug_when>
    <thetext>Committed r75018: &lt;http://trac.webkit.org/changeset/75018&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>46224</attachid>
            <date>2010-01-09 15:28:49 -0800</date>
            <delta_ts>2010-01-09 15:32:02 -0800</delta_ts>
            <desc>Testcase #3 from Mozilla bug 496275</desc>
            <filename>Testcase #3 for bug 496275.htm</filename>
            <type>text/html</type>
            <size>1620</size>
            <attacher name="Justin Lebar">justin.lebar+bug</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNjMpaHR0cHM6Ly9idWc0OTYy
NzUuYnVnemlsbGEubW96aWxsYS5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9NDIwMTEzIC0tPgo8SFRN
TCBkaXI9InJ0bCI+PEhFQUQ+PE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjU1Ij48VElUTEU+VGVzdGNhc2UgIzMgZm9y
IGJ1ZyA0OTYyNzU8L1RJVExFPgogIAo8U0NSSVBUPgp2YXIgZm9jdXNlZD1mYWxzZTsKdmFyICRp
ZCA9IGZ1bmN0aW9uKGlkKSB7CiAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsK
fTsKCihmdW5jdGlvbigpIHsKICB2YXIgbW92ZVNlbGVjdGlvbiA9IGZ1bmN0aW9uKCkgewogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gnKS52YWx1ZT0iIjsgCiAgICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgdHJ5IHtzZWxlY3Rpb24ubW9kaWZ5KCRpZCgi
YWx0ZXIiKS52YWx1ZSwgJGlkKCJkaXJlY3Rpb24iKS52YWx1ZSwgJGlkKCJncmFudWxhcml0eSIp
LnZhbHVlKTt9IGNhdGNoIChlKSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gnKS52YWx1ZT1l
fQogICAgJGlkKCJzZWwiKS52YWx1ZT0nYW5jaG9yT2Zmc2V0PScgKyBzZWxlY3Rpb24uYW5jaG9y
T2Zmc2V0ICsgJyAgZm9jdXNPZmZzZXQ9JyArIHNlbGVjdGlvbi5mb2N1c09mZnNldDsKICB9OwoK
ICB3aW5kb3cuc2V0SW50ZXJ2YWwobW92ZVNlbGVjdGlvbiwgMjAwMCk7Cn0pKCk7Cgo8L1NDUklQ
VD4KPFNUWUxFPgouYmxhaCB7CiAgZm9udDogbm9ybWFsIHNtYWxsIGFyaWFsOwogIHdpZHRoOiAz
MDBweDsKICBoZWlnaHQ6IDMwMHB4Owp9CjwvU1RZTEU+CjwvSEVBRD48Qk9EWT4KCjxESVYgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIiBjbGFzcz0iYmxhaCIgaWQ9ImRpdiI+CiAgICAgICAgICAgICA8
UD48Qj5GaXJlZm94IDMuNS42PC9CPjxCUj4KICAgICAgICAgICAgIOT6+OLl7SDk4Of45e8g+fTp
+ufw5SDk5eAg8uHl+CA8QSBocmVmPSJodHRwczovL2J1ZzQ5NjI3NS5idWd6aWxsYS5tb3ppbGxh
Lm9yZy9maXJlZm94LyI+RmlyZWZveAogICAgICAgICAgICAgMy41LjY8L0E+LiD3+ODlIOD6IDxB
IGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5jb20vZW4tVVMvZmlyZWZveC8zLjUuNi9yZWxlYXNl
bm90ZXMvIj7k8vjl+gogICAgICAgICAgICAg5OT09uQ8L0E+ICjg8OLs6fopIOzk5fjg5fog5fj5
6e76IOHy6eX6IOnj5fLl+i4KPC9QPjwvRElWPgoKPERJViBkaXI9Imx0ciIgbGFuZz0iZW4iPgo8
SU5QVVQgdHlwZT0idGV4dCIgaWQ9ImFsdGVyIiBuYW1lPSJhbHRlciIgdmFsdWU9Im1vdmUiPgo8
SU5QVVQgdHlwZT0idGV4dCIgaWQ9ImRpcmVjdGlvbiIgbmFtZT0iZGlyZWN0aW9uIiB2YWx1ZT0i
bGVmdCI+CjxJTlBVVCB0eXBlPSJ0ZXh0IiBpZD0iZ3JhbnVsYXJpdHkiIG5hbWU9ImdyYW51bGFy
aXR5IiB2YWx1ZT0ibGluZWJvdW5kYXJ5Ij4KPEJSPjxJTlBVVCB0eXBlPSJ0ZXh0IiBpZD0ieCIg
c2l6ZT0iODAiPgo8QlI+PElOUFVUIHR5cGU9InRleHQiIGlkPSJzZWwiIHNpemU9IjgwIj4KPC9E
SVY+CgoKCgoKPC9CT0RZPjwvSFRNTD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>46225</attachid>
            <date>2010-01-09 15:32:02 -0800</date>
            <delta_ts>2010-01-09 15:33:30 -0800</delta_ts>
            <desc>Testcase #3 from Mozilla bug 496275 (better encoding?)</desc>
            <filename>Testcase #3 for bug 496275.htm</filename>
            <type>text/html; charset=windows-1255</type>
            <size>1488</size>
            <attacher name="Justin Lebar">justin.lebar+bug</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sIGRpcj0icnRsIj4KPGhlYWQ+PHRpdGxlPlRlc3RjYXNlICMz
IGZvciBidWcgNDk2Mjc1PC90aXRsZT4KICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTUiPgo8c2NyaXB0Pgp2YXIg
Zm9jdXNlZD1mYWxzZTsKdmFyICRpZCA9IGZ1bmN0aW9uKGlkKSB7CiAgcmV0dXJuIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGlkKTsKfTsKCihmdW5jdGlvbigpIHsKICB2YXIgbW92ZVNlbGVjdGlv
biA9IGZ1bmN0aW9uKCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gnKS52YWx1ZT0i
IjsgCiAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgdHJ5IHtz
ZWxlY3Rpb24ubW9kaWZ5KCRpZCgiYWx0ZXIiKS52YWx1ZSwgJGlkKCJkaXJlY3Rpb24iKS52YWx1
ZSwgJGlkKCJncmFudWxhcml0eSIpLnZhbHVlKTt9IGNhdGNoIChlKSB7ZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3gnKS52YWx1ZT1lfQogICAgJGlkKCJzZWwiKS52YWx1ZT0nYW5jaG9yT2Zmc2V0
PScgKyBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0ICsgJyAgZm9jdXNPZmZzZXQ9JyArIHNlbGVjdGlv
bi5mb2N1c09mZnNldDsKICB9OwoKICB3aW5kb3cuc2V0SW50ZXJ2YWwobW92ZVNlbGVjdGlvbiwg
MjAwMCk7Cn0pKCk7Cgo8L3NjcmlwdD4KPHN0eWxlPgouYmxhaCB7CiAgZm9udDogbm9ybWFsIHNt
YWxsIGFyaWFsOwogIHdpZHRoOiAzMDBweDsKICBoZWlnaHQ6IDMwMHB4Owp9Cjwvc3R5bGU+Cjwv
aGVhZD4KPGJvZHk+Cgo8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgY2xhc3M9ImJsYWgiIGlk
PSJkaXYiPgogICAgICAgICAgICAgPHA+PGI+RmlyZWZveCAzLjUuNjwvYj48YnI+CiAgICAgICAg
ICAgICDk+vji5e0g5ODn+OXvIPn06frn8OUg5OXgIPLh5fggPGEgaHJlZj0iL2ZpcmVmb3gvIj5G
aXJlZm94CiAgICAgICAgICAgICAzLjUuNjwvYT4uIPf44OUg4PogPGEgaHJlZj0iaHR0cDovL3d3
dy5tb3ppbGxhLmNvbS9lbi1VUy9maXJlZm94LzMuNS42L3JlbGVhc2Vub3Rlcy8iPuTy+OX6CiAg
ICAgICAgICAgICDk5PT25DwvYT4gKODw4uzp+ikg7OTl+ODl+iDl+Pnp7vog4fLp5fog6ePl8uX6
Lgo8L2Rpdj4KCjxESVYgZGlyPSJsdHIiIGxhbmc9ImVuIj4KPElOUFVUIHR5cGU9InRleHQiIGlk
ID0iYWx0ZXIiIG5hbWU9ImFsdGVyIiB2YWx1ZT0ibW92ZSI+CjxJTlBVVCB0eXBlPSJ0ZXh0IiBp
ZD0iZGlyZWN0aW9uIiBuYW1lPSJkaXJlY3Rpb24iIHZhbHVlPSJsZWZ0Ij4KPElOUFVUIHR5cGU9
InRleHQiIGlkPSJncmFudWxhcml0eSIgbmFtZT0iZ3JhbnVsYXJpdHkiIHZhbHVlPSJsaW5lYm91
bmRhcnkiPgo8YnI+PElOUFVUIHR5cGU9InRleHQiIGlkID0ieCIgc2l6ZT0iODAiPgo8YnI+PElO
UFVUIHR5cGU9InRleHQiIGlkID0ic2VsIiBzaXplPSI4MCI+CjwvZGl2PgoKCjwvYm9keT4KCjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>50484</attachid>
            <date>2010-03-11 03:43:45 -0800</date>
            <delta_ts>2010-03-11 03:43:45 -0800</delta_ts>
            <desc>reduction</desc>
            <filename>33435-1.html</filename>
            <type>text/html</type>
            <size>767</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sID4KPGhlYWQ+CjxzY3JpcHQ+CmZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQp7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCAr
PSAobWVzc2FnZSArICJcbiIpOwp9CgpmdW5jdGlvbiB0ZXN0KCkKewogICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKICAgIGRpdi5mb2N1cygpOwogICAgdmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwoKICAgIHNlbC5tb2RpZnkoIm1vdmUiLCAicmln
aHQiLCAibGluZWJvdW5kYXJ5Iik7CiAgICBpZiAoMCA9PSBzZWwuYmFzZU9mZnNldCkKICAgICAg
IGxvZygiUEFTUyIpOwogICAgZWxzZQogICAgICAgbG9nKCJGQUlMOiIgKyAwICsgIiAhPSAiICsg
c2VsLmJhc2VPZmZzZXQpIDsKCiAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImxlZnQiLCAibGluZWJv
dW5kYXJ5Iik7CiAgICBpZiAoZGl2LnRleHRDb250ZW50Lmxlbmd0aCA9PSBzZWwuYmFzZU9mZnNl
dCkKICAgICAgIGxvZygiUEFTUyIpOwogICAgZWxzZQogICAgICAgbG9nKCJGQUlMOiIgKyBkaXYu
dGV4dENvbnRlbnQubGVuZ3RoICsgIiAhPSAiICsgc2VsLmJhc2VPZmZzZXQpIDsKCn0KCjwvc2Ny
aXB0Pgo8L2hlYWQ+Cjxib2R5IG9ubG9hZD0idGVzdCgpIj4KICA8ZGl2IGRpcj0icnRsIiBjb250
ZW50ZWRpdGFibGU9InRydWUiIGlkPSJkaXYiPmhlbGxvPC9kaXY+CiAgPHByZSBpZD0iY29uc29s
ZSI+PC9wcmU+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75845</attachid>
            <date>2010-12-07 14:31:27 -0800</date>
            <delta_ts>2010-12-09 18:13:25 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>33435.v1</filename>
            <type>text/plain</type>
            <size>16449</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzQ2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMTItMDcgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBzZWwubW9kaWZ5KCdtb3ZlJywgJ2xlZnQnLydyaWdodCcsICdsaW5lQm91bmRhcnknKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDM1CisK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAg
ICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFN0
YXJ0UG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFN0YXJ0T2ZMaW5l
KToKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbEVuZFBvc2l0aW9uRm9yTGluZSk6CisgICAgICAg
IChXZWJDb3JlOjp2aXN1YWxFbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbFN0
YXJ0T2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxFbmRPZkxpbmUpOgorICAgICAg
ICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5oOgorCiAyMDEwLTEyLTA3ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA3MzQxMCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDE5LDEyICs0MTksMTcgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVj
dGlvbkNvbnRyb2xsZXI6Om1vZAogICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgogICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNh
c2UgTGluZUJvdW5kYXJ5OgogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUg
YWJvdmUuCiAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICAgICAgaWYgKGRpcmVj
dGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgICAgICBwb3MgPSB2aXN1YWxF
bmRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cG9zID0gdmlzdWFsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkBAIC01NzAsMTIgKzU3NSwxNyBAQCBWaXNp
YmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kCiAgICAgY2FzZSBMaW5lR3JhbnVs
YXJpdHk6CiAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgY2FzZSBQYXJhZ3JhcGhCb3Vu
ZGFyeToKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4KICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToK
KyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAg
ICAgICBwb3MgPSB2aXN1YWxTdGFydE9mTGluZShzdGFydEZvclBsYXRmb3JtKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBwb3MgPSB2aXN1YWxFbmRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9y
bSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBwb3M7CiB9CkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA3MzQxMCkKKysrIFdlYkNvcmUvZWRp
dGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwMiw3ICsxMTAyLDE5
IEBAIHN0YXRpYyB2b2lkIGdldExvZ2ljYWxFbmRCb3hBbmROb2RlKFJvb3QKICAgICB9CiB9CiAK
LXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYykKKy8vIEZvciBhIExUUiBJbmxpbmVCb3gsIHRoZSB2aXN1YWwg
c3RhcnQgcG9zaXRpb24gZm9yIHRoZSBsaW5lIGlzIHRoZSBtaW5pbXVtIGNhcmV0IG9mZnNldCBv
ZiB0aGUgZmlyc3QKKy8vIGxvZ2ljYWwgbm9kZSBpbiB0aGUgbGluZS4gCisvLyBGb3IgZXhhbXBs
ZSwgaWYgdGhlIGZpcnN0IGxvZ2ljYWwgbm9kZSBpbiB0aGUgbGluZSBpcyBhIExUUiBub2RlLCB0
aGUgbm9kZSBhbmQgaXRzIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzCisvLyB8KDApYSgxKWIoMilj
KDMpLi4uLnwuCisvLyBJZiB0aGUgZmlyc3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5lIGlzIGEg
UlRMIG5vZGUsIHRoZSBub2RlIGFuZCBpdHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMKKy8vIHwo
MClDKDIpQigxKUEoMykuLi4ufC4KKy8vCisvLyBTYW1lIGZvciBhIFJUTCBJbmxpbmVCb3guCisv
LyBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpcnN0IGxvZ2ljYWwgbm9kZSBpbiB0aGUgbGluZSBpcyBh
IExUUiBub2RlLCB0aGUgbm9kZSBhbmQgaXRzIHBvc2l0aW9uIGluZm9ybWF0aW9uIGlzCisvLyB8
Li4uLi4uLi4oMylhKDEpYigyKWMoMCl8LgorLy8gSWYgdGhlIGZpcnN0IGxvZ2ljYWwgbm9kZSBp
biB0aGUgbGluZSBpcyBhIFJUTCBub2RlLCB0aGUgbm9kZSBhbmQgaXRzIHBvc2l0aW9uIGluZm9y
bWF0aW9uIGlzCisvLyB8Li4uLi4uLi4uKDMpQygyKUIoMSlBKDApfC4KK3N0YXRpYyBWaXNpYmxl
UG9zaXRpb24gdmlzdWFsU3RhcnRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBjKQogewogICAgIGlmIChjLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0
aW9uKCk7CkBAIC0xMTMxLDE0ICsxMTQzLDI2IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9n
aWNhbFN0YXJ0UG9zaXQKICAgICByZXR1cm4gcG9zaXRpb25Bdm9pZGluZ0ZpcnN0UG9zaXRpb25J
blRhYmxlKHZpc1Bvcyk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3RhcnRPZkxpbmUo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQorVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFN0YXJ0T2ZM
aW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlz
UG9zID0gbG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKGMpOworICAgIFZpc2libGVQb3NpdGlv
biB2aXNQb3MgPSB2aXN1YWxTdGFydFBvc2l0aW9uRm9yTGluZShjKTsKICAgICAKICAgICByZXR1
cm4gYy5ob25vckVkaXRhYmxlQm91bmRhcnlBdE9yQWZ0ZXIodmlzUG9zKTsKIH0KIAotc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBsb2dpY2FsRW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYykKKy8vIEZvciBhIExUUiBJbmxpbmVCb3gsIHRoZSB2aXN1YWwgZW5kIHBvc2l0
aW9uIGZvciB0aGUgbGluZSBpcyB0aGUgbWF4aW11bSBjYXJldCBvZmZzZXQgb2YgdGhlIGxhc3QK
Ky8vIGxvZ2ljYWwgbm9kZSBpbiB0aGUgbGluZS4gCisvLyBGb3IgZXhhbXBsZSwgaWYgdGhlIGxh
c3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5lIGlzIGEgTFRSIG5vZGUsIHRoZSBub2RlIGFuZCBp
dHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMKKy8vIHwuLi4uLi4obilhKG4rMSliKG4rMiljKG4r
Myl8LgorLy8gSWYgdGhlIGxhc3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5lIGlzIGEgUlRMIG5v
ZGUsIHRoZSBub2RlIGFuZCBpdHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMKKy8vIHwuLi4uLi4o
bilDKG4rMilCKG4rMSlBKG4rMyl8LgorLy8KKy8vIFNhbWUgZm9yIGEgUlRMIElubGluZUJveC4K
Ky8vIEZvciBleGFtcGxlLCBpZiB0aGUgbGFzdCBsb2dpY2FsIG5vZGUgaW4gdGhlIGxpbmUgaXMg
YSBMVFIgbm9kZSwgdGhlIG5vZGUgYW5kIGl0cyBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcworLy8g
fChuKzMpYShuKzEpYihuKzIpYyhuKS4uLi4uLi58LgorLy8gSWYgdGhlIGxhc3QgbG9naWNhbCBu
b2RlIGluIHRoZSBsaW5lIGlzIGEgUlRMIG5vZGUsIHRoZSBub2RlIGFuZCBpdHMgcG9zaXRpb24g
aW5mb3JtYXRpb24gaXMKKy8vIHwobiszKUMobisyKUIobisxKUEobikuLi4uLi4ufC4KK3N0YXRp
YyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsRW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYykKIHsKICAgICBpZiAoYy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwpAQCAtMTE3Nyw5ICsxMjAxLDkgQEAgYm9vbCBpblNhbWVMb2dpY2FsTGlu
ZShjb25zdCBWaXNpYmxlUG9zaQogICAgIHJldHVybiBhLmlzTm90TnVsbCgpICYmIGxvZ2ljYWxT
dGFydE9mTGluZShhKSA9PSBsb2dpY2FsU3RhcnRPZkxpbmUoYik7CiB9CiAKLVZpc2libGVQb3Np
dGlvbiBsb2dpY2FsRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKK1Zpc2libGVQ
b3NpdGlvbiB2aXN1YWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogewotICAg
IFZpc2libGVQb3NpdGlvbiB2aXNQb3MgPSBsb2dpY2FsRW5kUG9zaXRpb25Gb3JMaW5lKGMpOwor
ICAgIFZpc2libGVQb3NpdGlvbiB2aXNQb3MgPSB2aXN1YWxFbmRQb3NpdGlvbkZvckxpbmUoYyk7
CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbmQgb2YgbGluZSBpcyBhdCB0aGUgc2FtZSBs
aW5lIGFzIHRoZSBnaXZlbiBpbnB1dCBwb3NpdGlvbi4gRm9yIGEgd3JhcHBpbmcgbGluZSwgdGhl
IGxvZ2ljYWwgZW5kCiAgICAgLy8gcG9zaXRpb24gZm9yIHRoZSBub3QtbGFzdC0yLWxpbmVzIG1p
Z2h0IGluY29ycmVjdGx5IGhhbmQgYmFjayB0aGUgbG9naWNhbCBiZWdpbm5pbmcgb2YgdGhlIG5l
eHQgbGluZS4gCkBAIC0xMTkyLDQgKzEyMTYsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxF
bmRPZkxpbmUoY29uc3QgVgogICAgIHJldHVybiBjLmhvbm9yRWRpdGFibGVCb3VuZGFyeUF0T3JC
ZWZvcmUodmlzUG9zKTsKIH0KIAorVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxTdGFydE9mTGluZShj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGMpCit7CisgICAgLy8gVE9ETzogdGhpcyBpcyB0aGUgY3Vy
cmVudCBiZWhhdmlvciB0aGF0IG1pZ2h0IG5lZWQgdG8gYmUgZml4ZWQuCisgICAgLy8KKyAgICAv
LyBUaGVyZSBpcyBkaXNjdXNzaW9uIG9uIHRoZSBsb2dpY2FsIHN0YXJ0IG9mIGxpbmUgaW4gdGhl
IGNvbnRleHQgb2YKKyAgICAvLyBiaWRpcmVjdGlvbmFsIHRleHQuCisgICAgLy8gRm9yIGV4YW1w
bGUsIGlmIHRoZSBwYXJhZ3JhcGggZGlyZWN0aW9uIGlzIFJUTCwgZ2l2ZW4gdGhlIGZvbGxvd2lu
ZyB0ZXh0CisgICAgLy8gaW4gbG9naWNhbCBvcmRlcjogImhlbGxvIFdPUkxEIiwgaXRzIHZpc3Vh
bCBkaXNwbGF5IHdpbGwgYmU6CisgICAgLy8gIkRMUk9XIGhlbGxvIi4gTG9naWNhbCBzdGFydCBv
ZiBsaW5lIHNob3VsZCBiZSBhIGxvZ2ljYWwgcG9zaXRpb24gYmVmb3JlCisgICAgLy8gdGhlIGZp
cnN0IGxvZ2ljYWwgY2hhcmFjdGVyIGluIGEgbGluZS4gU2hvdWxkIGl0IG1hcCB0byB0aGUgdmlz
dWFsIHBvc2l0aW9uCisgICAgLy8gYXQgdGhlIHJpZ2h0IG9mICdvJyBpbiAiaGVsbG8iLCBvciBz
aG91bGQgaXQgbWFwIHRvIHRoZSB2aXN1YWwgcG9zaXRpb24gCisgICAgLy8gYXQgdGhlIGxlZnQg
b2YgJ2gnIGluICJoZWxsbyI/CisgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZSBwYXJhZ3JhcGgg
ZGlyZWN0aW9uIGlzIExUUiwgZ2l2ZW4gYSB0ZXh0IAorICAgIC8vICJIRUxMTyB3b3JsZCIsIGl0
IGlzIHZpc3VhbCBkaXNwbGF5IHdpbGwgYmUgIk9MTEVIIHdvcmxkIi4KKyAgICAvLyBTaG91bGQg
dGhlIGxvZ2ljYWwgc3RhcnQgb2YgbGluZSBtYXAgdG8gdmlzdWFsIHBvc2l0aW9uIGF0IGxlZnQg
b2YgCisgICAgLy8gJ08nIGluICJPTExMRUgiLCBvciBzaG91bGQgaXQgbWFwIHRvIHRoZSB2aXN1
YWwgcG9zaXRpb24gYXQgcmlnaHQgb2YKKyAgICAvLyAnSCcgaW4gIk9MTEVIIj8KKyAgICAvLyAK
KyAgICAvLyBDdXJyZW50IGltcGxlbWVudGF0aW9uIHRha2VzIHRoZSAxc3QgYWx0ZXJuYXRpdmUu
IFRoZSBjYXJldCB3aWxsIGJlCisgICAgLy8gZGlzcGxheWVkIG9uIHRoZSBsZWZ0bW9zdCB2aXN1
YWwgcG9zaXRpb24gZm9yIGxvZ2ljYWwgc3RhcnQgb2YgbGluZSBpbgorICAgIC8vIExUUiBwYXJh
Z3JhcGggYW5kIG9uIHRoZSByaWdodCBtb3N0IHZpc3VhbCBwb3NpdGlvbiBmb3IgdGhlIFJUTCBw
YXJhZ3JhcGhzLgorICAgIHJldHVybiB2aXN1YWxTdGFydE9mTGluZShjKTsKK30KKworVmlzaWJs
ZVBvc2l0aW9uIGxvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQorewor
ICAgIC8vIFRPRE86IHRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3IgdGhhdCBtaWdodCBuZWVk
IHRvIGJlIGZpeGVkLgorICAgIHJldHVybiB2aXN1YWxFbmRPZkxpbmUoYyk7Cit9CisKIH0KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuaAkocmV2aXNpb24gNzM0MTApCisrKyBXZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIGJv
b2wgaXNTdGFydE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24KIGJvb2wgaXNFbmRPZkxpbmUo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOwogVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxTdGFydE9m
TGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CiBWaXNpYmxlUG9zaXRpb24gbG9naWNhbEVu
ZE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CitWaXNpYmxlUG9zaXRpb24gdmlzdWFs
U3RhcnRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uICYpOworVmlzaWJsZVBvc2l0aW9uIHZp
c3VhbEVuZE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CiAKIC8vIHBhcmFncmFwaHMg
KHBlcmhhcHMgYSBtaXNub21lciwgY2FuIGJlIGRpdmlkZWQgYnkgbGluZSBicmVhayBlbGVtZW50
cykKIFZpc2libGVQb3NpdGlvbiBzdGFydE9mUGFyYWdyYXBoKGNvbnN0IFZpc2libGVQb3NpdGlv
biYsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDY0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMTItMDcgIFhpYW9tZWkgSmkg
IDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBzZWwubW9kaWZ5KCdtb3ZlJywgJ2xlZnQnLydyaWdodCcs
ICdsaW5lQm91bmRhcnknKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMzNDM1CisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQuaHRtbDoK
KwogMjAxMC0xMi0wNiAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2hvbWUtZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDczNDEw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAorVGVzdCBNb3ZpbmcgZm9yd2FyZC9iYWNr
d2FyZAogVGVzdCAxLCBMVFI6CiAgIE1vdmluZyBmb3J3YXJkOiAiXG5hYmMgQUJDIHh5eiBERUYg
ZGVmXG4iWzEsIDIwXQogICBNb3ZpbmcgYmFja3dhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVm
XG4iWzIwLCAxXQpAQCAtMTI0LDQgKzEyNSwxMzEgQEAgVGVzdCAyMSwgTFRSOgogVGVzdCAyMSwg
UlRMOgogICBNb3ZpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWzAsIDhdCiAgIE1vdmluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4LCAwXQorVGVzdCBNb3Zp
bmcgcmlnaHQvbGVmdAorVGVzdCAxLCBMVFI6CisgIE1vdmluZyByaWdodDogIlxuYWJjIEFCQyB4
eXogREVGIGRlZlxuIlsxLCAyMF0KKyAgTW92aW5nIGxlZnQ6ICAiXG5hYmMgQUJDIHh5eiBERUYg
ZGVmXG4iWzIwLCAxXQorVGVzdCAxLCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiXG5hYmMgQUJDIHh5
eiBERUYgZGVmXG4iWzEsIDIwXQorICBNb3ZpbmcgcmlnaHQ6ICAiXG5hYmMgQUJDIHh5eiBERUYg
ZGVmXG4iWzIwLCAxXQorVGVzdCAyLCBMVFI6CisgIE1vdmluZyByaWdodDogIlxuQUJDIHh5eiBE
RUYgZGVmIEdISVxuIlsxLCAyMF0KKyAgTW92aW5nIGxlZnQ6ICAiXG5BQkMgeHl6IERFRiBkZWYg
R0hJXG4iWzIwLCAxXQorVGVzdCAyLCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiXG5BQkMgeHl6IERF
RiBkZWYgR0hJXG4iWzEsIDIwXQorICBNb3ZpbmcgcmlnaHQ6ICAiXG5BQkMgeHl6IERFRiBkZWYg
R0hJXG4iWzIwLCAxXQorVGVzdCAzLCBMVFI6CisgIE1vdmluZyByaWdodDogIlxuQUJDIERFRiBB
QkNcbiJbMSwgMTJdCisgIE1vdmluZyBsZWZ0OiAgIlxuQUJDIERFRiBBQkNcbiJbMTIsIDFdCitU
ZXN0IDMsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJcbkFCQyBERUYgQUJDXG4iWzEsIDEyXQorICBN
b3ZpbmcgcmlnaHQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsxMiwgMV0KK1Rlc3QgNCwgTFRSOgorICBN
b3ZpbmcgcmlnaHQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbMSwgMTRdCisgIE1vdmluZyBsZWZ0OiAg
IlxuYWJjIGVmZCBkYWJlYlxuIlsxNCwgMV0KK1Rlc3QgNCwgUlRMOgorICBNb3ZpbmcgbGVmdDog
IlxuYWJjIGVmZCBkYWJlYlxuIlsxLCAxNF0KKyAgTW92aW5nIHJpZ2h0OiAgIlxuYWJjIGVmZCBk
YWJlYlxuIlsxNCwgMV0KK1Rlc3QgNSwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzBd
LCAiIGFtZXQiWzVdCisgIE1vdmluZyBsZWZ0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rl
c3QgNSwgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92
aW5nIHJpZ2h0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rlc3QgNiwgTFRSOgorICBNb3Zp
bmcgcmlnaHQ6ICJMb3JlbSAiWzBdLCAiaXBzdW0gZG9sb3IiWzExXQorICBNb3ZpbmcgbGVmdDog
ICJpcHN1bSBkb2xvciJbMTFdLCAiTG9yZW0gIlswXQorVGVzdCA2LCBSVEw6CisgIE1vdmluZyBs
ZWZ0OiAiTG9yZW0gIlswXSwgImlwc3VtIGRvbG9yIlsxMV0KKyAgTW92aW5nIHJpZ2h0OiAgImlw
c3VtIGRvbG9yIlsxMV0sICJMb3JlbSAiWzBdCitUZXN0IDcsIExUUjoKKyAgTW92aW5nIHJpZ2h0
OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgbGVmdDogICIgYW1ldCJbNV0sICJM
b3JlbSAiWzBdCitUZXN0IDcsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzBdLCAiIGFt
ZXQiWzVdCisgIE1vdmluZyByaWdodDogICIgYW1ldCJbNV0sICJMb3JlbSAiWzBdCitUZXN0IDgs
IExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiTG9yZW0gIlswLCA1XQorICBNb3ZpbmcgbGVmdDogICJM
b3JlbSAiWzUsIDBdCitUZXN0IDgsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzAsIDVd
CisgIE1vdmluZyByaWdodDogICJMb3JlbSAiWzUsIDBdCitUZXN0IDksIExUUjoKKyAgTW92aW5n
IHJpZ2h0OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgbGVmdDogICIgYW1ldCJb
NV0sICJMb3JlbSAiWzBdCitUZXN0IDksIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzBd
LCAiIGFtZXQiWzVdCisgIE1vdmluZyByaWdodDogICIgYW1ldCJbNV0sICJMb3JlbSAiWzBdCitU
ZXN0IDEwLCBMVFI6CisgIE1vdmluZyByaWdodDogIkxvcmVtICJbMF0sICJpcHN1bSBkb2xvciJb
MTFdCisgIE1vdmluZyBsZWZ0OiAgImlwc3VtIGRvbG9yIlsxMV0sICJMb3JlbSAiWzBdCitUZXN0
IDEwLCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiTG9yZW0gIlswXSwgImlwc3VtIGRvbG9yIlsxMV0K
KyAgTW92aW5nIHJpZ2h0OiAgImlwc3VtIGRvbG9yIlsxMV0sICJMb3JlbSAiWzBdCitUZXN0IDEx
LCBMVFI6CisgIE1vdmluZyByaWdodDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92aW5n
IGxlZnQ6ICAiIGFtZXQiWzVdLCAiTG9yZW0gIlswXQorVGVzdCAxMSwgUlRMOgorICBNb3Zpbmcg
bGVmdDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92aW5nIHJpZ2h0OiAgIiBhbWV0Ils1
XSwgIkxvcmVtICJbMF0KK1Rlc3QgMTIsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiTG9yZW0gIlsw
LCA1XQorICBNb3ZpbmcgbGVmdDogICJMb3JlbSAiWzUsIDBdCitUZXN0IDEyLCBSVEw6CisgIE1v
dmluZyBsZWZ0OiAiTG9yZW0gIlswLCA1XQorICBNb3ZpbmcgcmlnaHQ6ICAiTG9yZW0gIls1LCAw
XQorVGVzdCAxMywgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJcbiBKdXN0XG4gIlsyXSwgIlxuIEJG
RFhcbiJbNl0KKyAgTW92aW5nIGxlZnQ6ICAiXG4gQkZEWFxuIls2XSwgIlxuIEp1c3RcbiAiWzJd
CitUZXN0IDEzLCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiXG4gSnVzdFxuICJbMl0sICJcbiBCRkRY
XG4iWzZdCisgIE1vdmluZyByaWdodDogICJcbiBCRkRYXG4iWzZdLCAiXG4gSnVzdFxuICJbMl0K
K1Rlc3QgMTQsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiXG4gSnVzdFxuICJbMl0sICJcbiBldmVy
XG4iWzZdCisgIE1vdmluZyBsZWZ0OiAgIlxuIGV2ZXJcbiJbNl0sICJcbiBKdXN0XG4gIlsyXQor
VGVzdCAxNCwgUlRMOgorICBNb3ZpbmcgbGVmdDogIlxuIEp1c3RcbiAiWzJdLCAiXG4gZXZlclxu
Ils2XQorICBNb3ZpbmcgcmlnaHQ6ICAiXG4gZXZlclxuIls2XSwgIlxuIEp1c3RcbiAiWzJdCitU
ZXN0IDE1LCBMVFI6CisgIE1vdmluZyByaWdodDogImNhciBtZWFucyBBQkMuIlswLCAxNF0KKyAg
TW92aW5nIGxlZnQ6ICAiY2FyIG1lYW5zIEFCQy4iWzE0LCAwXQorVGVzdCAxNSwgUlRMOgorICBN
b3ZpbmcgbGVmdDogImNhciBtZWFucyBBQkMuIlswLCAxNF0KKyAgTW92aW5nIHJpZ2h0OiAgImNh
ciBtZWFucyBBQkMuIlsxNCwgMF0KK1Rlc3QgMTYsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi4aqc
Y2FyIERFRiBBQkMu4aqdIlswLCAxNF0KKyAgTW92aW5nIGxlZnQ6ICAi4aqcY2FyIERFRiBBQkMu
4aqdIlsxNCwgMF0KK1Rlc3QgMTYsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICLhqpxjYXIgREVGIEFC
Qy7hqp0iWzAsIDE0XQorICBNb3ZpbmcgcmlnaHQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsxNCwg
MF0KK1Rlc3QgMTcsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiaGUgc2FpZCAi4aqcY2FyIERFRiBB
QkPhqp0uIiJbMCwgMjRdCisgIE1vdmluZyBsZWZ0OiAgImhlIHNhaWQgIuGqnGNhciBERUYgQUJD
4aqdLiIiWzI0LCAwXQorVGVzdCAxNywgUlRMOgorICBNb3ZpbmcgbGVmdDogImhlIHNhaWQgIuGq
nGNhciBERUYgQUJD4aqdLiIiWzAsIDI0XQorICBNb3ZpbmcgcmlnaHQ6ICAiaGUgc2FpZCAi4aqc
Y2FyIERFRiBBQkPhqp0uIiJbMjQsIDBdCitUZXN0IDE4LCBMVFI6CisgIE1vdmluZyByaWdodDog
IkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbMCwgNDBd
CisgIE1vdmluZyBsZWZ0OiAgIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnSLhqp0nPyJbNDAsIDBdCitUZXN0IDE4LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiR0hJIEpL
TCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlswLCA0MF0KKyAgTW92
aW5nIHJpZ2h0OiAgIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLh
qp0nPyJbNDAsIDBdCitUZXN0IDE5LCBMVFI6CisgIE1vdmluZyByaWdodDogIkFCQyBhYmMgREVG
IlswLCAxMV0KKyAgTW92aW5nIGxlZnQ6ICAiQUJDIGFiYyBERUYiWzExLCAwXQorVGVzdCAxOSwg
UlRMOgorICBNb3ZpbmcgbGVmdDogIkFCQyBhYmMgREVGIlswLCAxMV0KKyAgTW92aW5nIHJpZ2h0
OiAgIkFCQyBhYmMgREVGIlsxMSwgMF0KK1Rlc3QgMjAsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0K
KyAgTW92aW5nIGxlZnQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnICJbOCwgMF0KK1Rlc3QgMjAsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3Zp
bmcgcmlnaHQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbOCwgMF0KK1Rlc3QgMjEsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KKyAgTW92aW5nIGxl
ZnQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJb
OCwgMF0KK1Rlc3QgMjEsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3ZpbmcgcmlnaHQ6ICAi
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbOCwgMF0K
IApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC5odG1sCShy
ZXZpc2lvbiA3MzQxMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtZW5k
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKIAogICAgICAgICAgICAgdmFy
IHRlc3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidGVzdCIpOwogICAgICAg
ICAgICAgdmFyIHNlbCA9IGdldFNlbGVjdGlvbigpOworICAgICAgICAgICAgbG9nKCJUZXN0IE1v
dmluZyBmb3J3YXJkL2JhY2t3YXJkXG4iKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb25zTW92
aW5nUmlnaHQ7CiAgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uc01vdmluZ0xlZnQ7CkBAIC05
OSw2ICsxMDAsMzggQEAKICAgICAgICAgICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92
aW5nUmlnaHQpOwogICAgICAgICAgICAgICAgIGxvZygiXG4iKTsKIAorICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbG9nKCJUZXN0IE1vdmluZyByaWdodC9sZWZ0XG4iKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcG9zaXRpb25zTW92aW5nUmlnaHQ7CisgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9u
c01vdmluZ0xlZnQ7CisKKyAgICAgICAgICAgICAgICB0ZXN0c1tpXS5zdHlsZS5kaXJlY3Rpb24g
PSAibHRyIjsKKyAgICAKKyAgICAgICAgICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAi
LCBMVFI6XG4gIE1vdmluZyByaWdodDogIik7CisgICAgICAgICAgICAgICAgc2VsLnNldFBvc2l0
aW9uKHRlc3RzW2ldLCAwKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdSaWdodCA9
IHBvc2l0aW9uc01vdmluZ0luRGlyZWN0aW9uKHNlbCwgInJpZ2h0Iik7CisgICAgICAgICAgICAg
ICAgbG9nUG9zaXRpb25zKHBvc2l0aW9uc01vdmluZ1JpZ2h0KTsKKyAgICAgICAgICAgICAgICBs
b2coIlxuIik7CisKKyAgICAgICAgICAgICAgICBsb2coIiAgTW92aW5nIGxlZnQ6ICAiKTsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdMZWZ0ID0gcG9zaXRpb25zTW92aW5nSW5EaXJl
Y3Rpb24oc2VsLCAibGVmdCIpOworICAgICAgICAgICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlv
bnNNb3ZpbmdMZWZ0KTsKKyAgICAgICAgICAgICAgICBsb2coIlxuIik7CisKKyAgICAgICAgICAg
ICAgICB0ZXN0c1tpXS5zdHlsZS5kaXJlY3Rpb24gPSAicnRsIjsKKworICAgICAgICAgICAgICAg
IGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiAgTW92aW5nIGxlZnQ6ICIpOworICAg
ICAgICAgICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb25zTW92aW5nTGVmdCA9IHBvc2l0aW9uc01vdmluZ0luRGlyZWN0aW9uKHNlbCwg
ImxlZnQiKTsKKyAgICAgICAgICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92aW5nTGVm
dCk7CisgICAgICAgICAgICAgICAgbG9nKCJcbiIpOworCisgICAgICAgICAgICAgICAgbG9nKCIg
IE1vdmluZyByaWdodDogICIpOworICAgICAgICAgICAgICAgIHBvc2l0aW9uc01vdmluZ1JpZ2h0
ID0gcG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAicmlnaHQiKTsKKyAgICAgICAgICAg
ICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92aW5nUmlnaHQpOworICAgICAgICAgICAgICAg
IGxvZygiXG4iKTsKKwogICAgICAgICAgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76149</attachid>
            <date>2010-12-09 18:13:25 -0800</date>
            <delta_ts>2010-12-13 15:53:00 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>33435.v2</filename>
            <type>text/plain</type>
            <size>15752</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzY2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMDkgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBzZWwubW9kaWZ5KCdtb3ZlJywgJ2xlZnQnLydyaWdodCcsICdsaW5lQm91bmRhcnknKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDM1CisK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAg
ICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxT
dGFydE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsRW5kT2ZMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxlZnRFZGdlT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0RWRn
ZU9mTGluZSk6CisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmg6CisKIDIwMTAtMTIt
MDkgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9y
dCBDb2xvcjo6d2hpdGUgYW5kIENvbG9yOjp0cmFuc3BhcmVudC4KSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDczNDEwKQorKysgV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTksMTIg
KzQxOSwxNCBAQCBWaXNpYmxlUG9zaXRpb24gU2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kCiAgICAg
Y2FzZSBMaW5lR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKICAg
ICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CiAgICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBhYm92ZS4KICAgICAgICAgcG9zID0gbW9k
aWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TGluZUJvdW5kYXJ5OgorICAgICAgICBwb3MgPSByaWdodEVkZ2VPZkxpbmUoc3RhcnRGb3JQbGF0
Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkpOworICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTU3MCwxMiArNTcyLDE0IEBAIFZpc2libGVQb3Np
dGlvbiBTZWxlY3Rpb25Db250cm9sbGVyOjptb2QKICAgICBjYXNlIExpbmVHcmFudWxhcml0eToK
ICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgIGNhc2UgU2VudGVuY2VCb3VuZGFy
eToKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKICAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5Ogog
ICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBh
bGwgb2YgdGhlIGFib3ZlLgogICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFu
dWxhcml0eSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgICAg
ICBwb3MgPSBsZWZ0RWRnZU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcG9zOwog
fQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gNzM0MTApCisrKyBX
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDIs
NiArMTEwMiwxOCBAQCBzdGF0aWMgdm9pZCBnZXRMb2dpY2FsRW5kQm94QW5kTm9kZShSb290CiAg
ICAgfQogfQogCisvLyBGb3IgYSBMVFIgSW5saW5lQm94LCB0aGUgbG9naWNhbCBzdGFydCBwb3Np
dGlvbiBmb3IgdGhlIGxpbmUgaXMgdGhlIG1pbmltdW0gY2FyZXQgb2Zmc2V0IG9mIHRoZSBmaXJz
dAorLy8gbG9naWNhbCBub2RlIGluIHRoZSBsaW5lLiAKKy8vIEZvciBleGFtcGxlLCBpZiB0aGUg
Zmlyc3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5lIGlzIGEgTFRSIG5vZGUsIHRoZSBub2RlIGFu
ZCBpdHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMKKy8vIHwoMClhKDEpYigyKWMoMykuLi4ufC4K
Ky8vIElmIHRoZSBmaXJzdCBsb2dpY2FsIG5vZGUgaW4gdGhlIGxpbmUgaXMgYSBSVEwgbm9kZSwg
dGhlIG5vZGUgYW5kIGl0cyBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcworLy8gfCgwKUMoMilCKDEp
QSgzKS4uLi58LgorLy8KKy8vIFNhbWUgZm9yIGEgUlRMIElubGluZUJveC4KKy8vIEZvciBleGFt
cGxlLCBpZiB0aGUgZmlyc3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5lIGlzIGEgTFRSIG5vZGUs
IHRoZSBub2RlIGFuZCBpdHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMKKy8vIHwuLi4uLi4uLigz
KWEoMSliKDIpYygwKXwuCisvLyBJZiB0aGUgZmlyc3QgbG9naWNhbCBub2RlIGluIHRoZSBsaW5l
IGlzIGEgUlRMIG5vZGUsIHRoZSBub2RlIGFuZCBpdHMgcG9zaXRpb24gaW5mb3JtYXRpb24gaXMK
Ky8vIHwuLi4uLi4uLi4oMylDKDIpQigxKUEoMCl8Lgogc3RhdGljIFZpc2libGVQb3NpdGlvbiBs
b2dpY2FsU3RhcnRQb3NpdGlvbkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogewog
ICAgIGlmIChjLmlzTnVsbCgpKQpAQCAtMTEzMywxMSArMTE0NSw0MyBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGxvZ2ljYWxTdGFydFBvc2l0CiAKIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3Rh
cnRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogeworICAgIC8vIFRPRE86IHRoaXMg
aXMgdGhlIGN1cnJlbnQgYmVoYXZpb3IgdGhhdCBtaWdodCBuZWVkIHRvIGJlIGZpeGVkLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNworICAgIC8v
CisgICAgLy8gVGhlcmUgaXMgZGlzY3Vzc2lvbiBvbiB0aGUgbG9naWNhbCBzdGFydCBvZiBsaW5l
IGluIHRoZSBjb250ZXh0IG9mCisgICAgLy8gYmlkaXJlY3Rpb25hbCB0ZXh0LgorICAgIC8vIEZv
ciBleGFtcGxlLCBpZiB0aGUgcGFyYWdyYXBoIGRpcmVjdGlvbiBpcyBSVEwsIGdpdmVuIHRoZSBm
b2xsb3dpbmcgdGV4dAorICAgIC8vIGluIGxvZ2ljYWwgb3JkZXI6ICJoZWxsbyBXT1JMRCIsIGl0
cyB2aXN1YWwgZGlzcGxheSB3aWxsIGJlOgorICAgIC8vICJETFJPVyBoZWxsbyIuIExvZ2ljYWwg
c3RhcnQgb2YgbGluZSBzaG91bGQgYmUgYSBsb2dpY2FsIHBvc2l0aW9uIGJlZm9yZQorICAgIC8v
IHRoZSBmaXJzdCBsb2dpY2FsIGNoYXJhY3RlciBpbiBhIGxpbmUuIFNob3VsZCBpdCBtYXAgdG8g
dGhlIHZpc3VhbCBwb3NpdGlvbgorICAgIC8vIGF0IHRoZSByaWdodCBvZiAnbycgaW4gImhlbGxv
Iiwgb3Igc2hvdWxkIGl0IG1hcCB0byB0aGUgdmlzdWFsIHBvc2l0aW9uIAorICAgIC8vIGF0IHRo
ZSBsZWZ0IG9mICdoJyBpbiAiaGVsbG8iPworICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgcGFy
YWdyYXBoIGRpcmVjdGlvbiBpcyBMVFIsIGdpdmVuIGEgdGV4dCAKKyAgICAvLyAiSEVMTE8gd29y
bGQiLCBpdCBpcyB2aXN1YWwgZGlzcGxheSB3aWxsIGJlICJPTExFSCB3b3JsZCIuCisgICAgLy8g
U2hvdWxkIHRoZSBsb2dpY2FsIHN0YXJ0IG9mIGxpbmUgbWFwIHRvIHZpc3VhbCBwb3NpdGlvbiBh
dCBsZWZ0IG9mIAorICAgIC8vICdPJyBpbiAiT0xMTEVIIiwgb3Igc2hvdWxkIGl0IG1hcCB0byB0
aGUgdmlzdWFsIHBvc2l0aW9uIGF0IHJpZ2h0IG9mCisgICAgLy8gJ0gnIGluICJPTExFSCI/Cisg
ICAgLy8gCisgICAgLy8gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiB0YWtlcyB0aGUgMXN0IGFsdGVy
bmF0aXZlLiBUaGUgY2FyZXQgd2lsbCBiZQorICAgIC8vIGRpc3BsYXllZCBvbiB0aGUgbGVmdG1v
c3QgdmlzdWFsIHBvc2l0aW9uIGZvciBsb2dpY2FsIHN0YXJ0IG9mIGxpbmUgaW4KKyAgICAvLyBM
VFIgcGFyYWdyYXBoIGFuZCBvbiB0aGUgcmlnaHQgbW9zdCB2aXN1YWwgcG9zaXRpb24gZm9yIHRo
ZSBSVEwgcGFyYWdyYXBocy4KICAgICBWaXNpYmxlUG9zaXRpb24gdmlzUG9zID0gbG9naWNhbFN0
YXJ0UG9zaXRpb25Gb3JMaW5lKGMpOwogICAgIAogICAgIHJldHVybiBjLmhvbm9yRWRpdGFibGVC
b3VuZGFyeUF0T3JBZnRlcih2aXNQb3MpOwogfQogCisvLyBGb3IgYSBMVFIgSW5saW5lQm94LCB0
aGUgbG9naWNhbCBlbmQgcG9zaXRpb24gZm9yIHRoZSBsaW5lIGlzIHRoZSBtYXhpbXVtIGNhcmV0
IG9mZnNldCBvZiB0aGUgbGFzdAorLy8gbG9naWNhbCBub2RlIGluIHRoZSBsaW5lLiAKKy8vIEZv
ciBleGFtcGxlLCBpZiB0aGUgbGFzdCBsb2dpY2FsIG5vZGUgaW4gdGhlIGxpbmUgaXMgYSBMVFIg
bm9kZSwgdGhlIG5vZGUgYW5kIGl0cyBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcworLy8gfC4uLi4u
LihuKWEobisxKWIobisyKWMobiszKXwuCisvLyBJZiB0aGUgbGFzdCBsb2dpY2FsIG5vZGUgaW4g
dGhlIGxpbmUgaXMgYSBSVEwgbm9kZSwgdGhlIG5vZGUgYW5kIGl0cyBwb3NpdGlvbiBpbmZvcm1h
dGlvbiBpcworLy8gfC4uLi4uLihuKUMobisyKUIobisxKUEobiszKXwuCisvLworLy8gU2FtZSBm
b3IgYSBSVEwgSW5saW5lQm94LgorLy8gRm9yIGV4YW1wbGUsIGlmIHRoZSBsYXN0IGxvZ2ljYWwg
bm9kZSBpbiB0aGUgbGluZSBpcyBhIExUUiBub2RlLCB0aGUgbm9kZSBhbmQgaXRzIHBvc2l0aW9u
IGluZm9ybWF0aW9uIGlzCisvLyB8KG4rMylhKG4rMSliKG4rMiljKG4pLi4uLi4uLnwuCisvLyBJ
ZiB0aGUgbGFzdCBsb2dpY2FsIG5vZGUgaW4gdGhlIGxpbmUgaXMgYSBSVEwgbm9kZSwgdGhlIG5v
ZGUgYW5kIGl0cyBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcworLy8gfChuKzMpQyhuKzIpQihuKzEp
QShuKS4uLi4uLi58Lgogc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsRW5kUG9zaXRpb25G
b3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsKICAgICBpZiAoYy5pc051bGwoKSkK
QEAgLTExNzksNiArMTIyMyw5IEBAIGJvb2wgaW5TYW1lTG9naWNhbExpbmUoY29uc3QgVmlzaWJs
ZVBvc2kKIAogVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBjKQogeworICAgIC8vIFRPRE86IHRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Ig
dGhhdCBtaWdodCBuZWVkIHRvIGJlIGZpeGVkLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTEwNworCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc1BvcyA9
IGxvZ2ljYWxFbmRQb3NpdGlvbkZvckxpbmUoYyk7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBlbmQgb2YgbGluZSBpcyBhdCB0aGUgc2FtZSBsaW5lIGFzIHRoZSBnaXZlbiBpbnB1dCBwb3Np
dGlvbi4gRm9yIGEgd3JhcHBpbmcgbGluZSwgdGhlIGxvZ2ljYWwgZW5kCkBAIC0xMTkyLDQgKzEy
MzksMTggQEAgVmlzaWJsZVBvc2l0aW9uIGxvZ2ljYWxFbmRPZkxpbmUoY29uc3QgVgogICAgIHJl
dHVybiBjLmhvbm9yRWRpdGFibGVCb3VuZGFyeUF0T3JCZWZvcmUodmlzUG9zKTsKIH0KIAorVmlz
aWJsZVBvc2l0aW9uIGxlZnRFZGdlT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpCisgICAg
ICAgIHJldHVybiBsb2dpY2FsU3RhcnRPZkxpbmUoYyk7CisgICAgcmV0dXJuIGxvZ2ljYWxFbmRP
ZkxpbmUoYyk7Cit9CisKK1Zpc2libGVQb3NpdGlvbiByaWdodEVkZ2VPZkxpbmUoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZGly
ZWN0aW9uID09IExUUikKKyAgICAgICAgcmV0dXJuIGxvZ2ljYWxFbmRPZkxpbmUoYyk7CisgICAg
cmV0dXJuIGxvZ2ljYWxTdGFydE9mTGluZShjKTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9lZGl0
aW5nL3Zpc2libGVfdW5pdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvdmlzaWJs
ZV91bml0cy5oCShyZXZpc2lvbiA3MzQxMCkKKysrIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgYm9vbCBpc1N0YXJ0T2ZMaW5l
KGNvbnN0IFZpc2libGVQb3NpdGlvbgogYm9vbCBpc0VuZE9mTGluZShjb25zdCBWaXNpYmxlUG9z
aXRpb24gJik7CiBWaXNpYmxlUG9zaXRpb24gbG9naWNhbFN0YXJ0T2ZMaW5lKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmKTsKIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsRW5kT2ZMaW5lKGNvbnN0IFZp
c2libGVQb3NpdGlvbiAmKTsKK1Zpc2libGVQb3NpdGlvbiByaWdodEVkZ2VPZkxpbmUoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICYsIFRleHREaXJlY3Rpb24pOworVmlzaWJsZVBvc2l0aW9uIGxlZnRF
ZGdlT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmLCBUZXh0RGlyZWN0aW9uKTsKIAogLy8g
cGFyYWdyYXBocyAocGVyaGFwcyBhIG1pc25vbWVyLCBjYW4gYmUgZGl2aWRlZCBieSBsaW5lIGJy
ZWFrIGVsZW1lbnRzKQogVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM2NjgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMi0wOSAg
WGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQuaHRtbDoKKwor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2hvbWUtZW5kLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC5odG1sOgorCiAyMDEwLTEyLTA5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSdXNzZWxsLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9t
ZS1lbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2hvbWUtZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzM0MTApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0IEBACitUZXN0IE1vdmluZyBmb3J3YXJkL2JhY2t3YXJkCiBUZXN0IDEs
IExUUjoKICAgTW92aW5nIGZvcndhcmQ6ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbMSwgMjBd
CiAgIE1vdmluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbMjAsIDFdCkBA
IC0xMjQsNCArMTI1LDEzMSBAQCBUZXN0IDIxLCBMVFI6CiBUZXN0IDIxLCBSVEw6CiAgIE1vdmlu
ZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbMCwgOF0KICAgTW92aW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzgsIDBdCitUZXN0IE1vdmluZyByaWdodC9sZWZ0
CitUZXN0IDEsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4i
WzEsIDIwXQorICBNb3ZpbmcgbGVmdDogICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbMjAsIDFd
CitUZXN0IDEsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJb
MSwgMjBdCisgIE1vdmluZyByaWdodDogICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbMjAsIDFd
CitUZXN0IDIsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4i
WzEsIDIwXQorICBNb3ZpbmcgbGVmdDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbMjAsIDFd
CitUZXN0IDIsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJb
MSwgMjBdCisgIE1vdmluZyByaWdodDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbMjAsIDFd
CitUZXN0IDMsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiXG5BQkMgREVGIEFCQ1xuIlsxLCAxMl0K
KyAgTW92aW5nIGxlZnQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsxMiwgMV0KK1Rlc3QgMywgUlRMOgor
ICBNb3ZpbmcgbGVmdDogIlxuQUJDIERFRiBBQkNcbiJbMSwgMTJdCisgIE1vdmluZyByaWdodDog
ICJcbkFCQyBERUYgQUJDXG4iWzEyLCAxXQorVGVzdCA0LCBMVFI6CisgIE1vdmluZyByaWdodDog
IlxuYWJjIGVmZCBkYWJlYlxuIlsxLCAxNF0KKyAgTW92aW5nIGxlZnQ6ICAiXG5hYmMgZWZkIGRh
YmViXG4iWzE0LCAxXQorVGVzdCA0LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiXG5hYmMgZWZkIGRh
YmViXG4iWzEsIDE0XQorICBNb3ZpbmcgcmlnaHQ6ICAiXG5hYmMgZWZkIGRhYmViXG4iWzE0LCAx
XQorVGVzdCA1LCBMVFI6CisgIE1vdmluZyByaWdodDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0K
KyAgTW92aW5nIGxlZnQ6ICAiIGFtZXQiWzVdLCAiTG9yZW0gIlswXQorVGVzdCA1LCBSVEw6Cisg
IE1vdmluZyBsZWZ0OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgcmlnaHQ6ICAi
IGFtZXQiWzVdLCAiTG9yZW0gIlswXQorVGVzdCA2LCBMVFI6CisgIE1vdmluZyByaWdodDogIkxv
cmVtICJbMF0sICJpcHN1bSBkb2xvciJbMTFdCisgIE1vdmluZyBsZWZ0OiAgImlwc3VtIGRvbG9y
IlsxMV0sICJMb3JlbSAiWzBdCitUZXN0IDYsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAi
WzBdLCAiaXBzdW0gZG9sb3IiWzExXQorICBNb3ZpbmcgcmlnaHQ6ICAiaXBzdW0gZG9sb3IiWzEx
XSwgIkxvcmVtICJbMF0KK1Rlc3QgNywgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzBd
LCAiIGFtZXQiWzVdCisgIE1vdmluZyBsZWZ0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rl
c3QgNywgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92
aW5nIHJpZ2h0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rlc3QgOCwgTFRSOgorICBNb3Zp
bmcgcmlnaHQ6ICJMb3JlbSAiWzAsIDVdCisgIE1vdmluZyBsZWZ0OiAgIkxvcmVtICJbNSwgMF0K
K1Rlc3QgOCwgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxvcmVtICJbMCwgNV0KKyAgTW92aW5nIHJp
Z2h0OiAgIkxvcmVtICJbNSwgMF0KK1Rlc3QgOSwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJMb3Jl
bSAiWzBdLCAiIGFtZXQiWzVdCisgIE1vdmluZyBsZWZ0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJb
MF0KK1Rlc3QgOSwgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxvcmVtICJbMF0sICIgYW1ldCJbNV0K
KyAgTW92aW5nIHJpZ2h0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rlc3QgMTAsIExUUjoK
KyAgTW92aW5nIHJpZ2h0OiAiTG9yZW0gIlswXSwgImlwc3VtIGRvbG9yIlsxMV0KKyAgTW92aW5n
IGxlZnQ6ICAiaXBzdW0gZG9sb3IiWzExXSwgIkxvcmVtICJbMF0KK1Rlc3QgMTAsIFJUTDoKKyAg
TW92aW5nIGxlZnQ6ICJMb3JlbSAiWzBdLCAiaXBzdW0gZG9sb3IiWzExXQorICBNb3Zpbmcgcmln
aHQ6ICAiaXBzdW0gZG9sb3IiWzExXSwgIkxvcmVtICJbMF0KK1Rlc3QgMTEsIExUUjoKKyAgTW92
aW5nIHJpZ2h0OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgbGVmdDogICIgYW1l
dCJbNV0sICJMb3JlbSAiWzBdCitUZXN0IDExLCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiTG9yZW0g
IlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgcmlnaHQ6ICAiIGFtZXQiWzVdLCAiTG9yZW0gIlsw
XQorVGVzdCAxMiwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzAsIDVdCisgIE1vdmlu
ZyBsZWZ0OiAgIkxvcmVtICJbNSwgMF0KK1Rlc3QgMTIsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJM
b3JlbSAiWzAsIDVdCisgIE1vdmluZyByaWdodDogICJMb3JlbSAiWzUsIDBdCitUZXN0IDEzLCBM
VFI6CisgIE1vdmluZyByaWdodDogIlxuIEp1c3RcbiAiWzJdLCAiXG4gQkZEWFxuIls2XQorICBN
b3ZpbmcgbGVmdDogICJcbiBCRkRYXG4iWzZdLCAiXG4gSnVzdFxuICJbMl0KK1Rlc3QgMTMsIFJU
TDoKKyAgTW92aW5nIGxlZnQ6ICJcbiBKdXN0XG4gIlsyXSwgIlxuIEJGRFhcbiJbNl0KKyAgTW92
aW5nIHJpZ2h0OiAgIlxuIEJGRFhcbiJbNl0sICJcbiBKdXN0XG4gIlsyXQorVGVzdCAxNCwgTFRS
OgorICBNb3ZpbmcgcmlnaHQ6ICJcbiBKdXN0XG4gIlsyXSwgIlxuIGV2ZXJcbiJbNl0KKyAgTW92
aW5nIGxlZnQ6ICAiXG4gZXZlclxuIls2XSwgIlxuIEp1c3RcbiAiWzJdCitUZXN0IDE0LCBSVEw6
CisgIE1vdmluZyBsZWZ0OiAiXG4gSnVzdFxuICJbMl0sICJcbiBldmVyXG4iWzZdCisgIE1vdmlu
ZyByaWdodDogICJcbiBldmVyXG4iWzZdLCAiXG4gSnVzdFxuICJbMl0KK1Rlc3QgMTUsIExUUjoK
KyAgTW92aW5nIHJpZ2h0OiAiY2FyIG1lYW5zIEFCQy4iWzAsIDE0XQorICBNb3ZpbmcgbGVmdDog
ICJjYXIgbWVhbnMgQUJDLiJbMTQsIDBdCitUZXN0IDE1LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAi
Y2FyIG1lYW5zIEFCQy4iWzAsIDE0XQorICBNb3ZpbmcgcmlnaHQ6ICAiY2FyIG1lYW5zIEFCQy4i
WzE0LCAwXQorVGVzdCAxNiwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICLhqpxjYXIgREVGIEFCQy7h
qp0iWzAsIDE0XQorICBNb3ZpbmcgbGVmdDogICLhqpxjYXIgREVGIEFCQy7hqp0iWzE0LCAwXQor
VGVzdCAxNiwgUlRMOgorICBNb3ZpbmcgbGVmdDogIuGqnGNhciBERUYgQUJDLuGqnSJbMCwgMTRd
CisgIE1vdmluZyByaWdodDogICLhqpxjYXIgREVGIEFCQy7hqp0iWzE0LCAwXQorVGVzdCAxNywg
TFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlswLCAy
NF0KKyAgTW92aW5nIGxlZnQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbMjQsIDBd
CitUZXN0IDE3LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPh
qp0uIiJbMCwgMjRdCisgIE1vdmluZyByaWdodDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+Gq
nS4iIlsyNCwgMF0KK1Rlc3QgMTgsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiR0hJIEpLTCBNTk8g
J+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlswLCA0MF0KKyAgTW92aW5nIGxl
ZnQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/Ils0
MCwgMF0KK1Rlc3QgMTgsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJHSEkgSktMIE1OTyAn4aqbaGUg
c2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWzAsIDQwXQorICBNb3ZpbmcgcmlnaHQ6ICAi
R0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/Ils0MCwgMF0K
K1Rlc3QgMTksIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiQUJDIGFiYyBERUYiWzAsIDExXQorICBN
b3ZpbmcgbGVmdDogICJBQkMgYWJjIERFRiJbMTEsIDBdCitUZXN0IDE5LCBSVEw6CisgIE1vdmlu
ZyBsZWZ0OiAiQUJDIGFiYyBERUYiWzAsIDExXQorICBNb3ZpbmcgcmlnaHQ6ICAiQUJDIGFiYyBE
RUYiWzExLCAwXQorVGVzdCAyMCwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3ZpbmcgbGVm
dDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4
LCAwXQorVGVzdCAyMCwgUlRMOgorICBNb3ZpbmcgbGVmdDogImFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzAsIDhdCisgIE1vdmluZyByaWdodDogICJh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4LCAwXQor
VGVzdCAyMSwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQorICBNb3ZpbmcgbGVmdDogICJhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4LCAwXQorVGVzdCAy
MSwgUlRMOgorICBNb3ZpbmcgbGVmdDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyAiWzAsIDhdCisgIE1vdmluZyByaWdodDogICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4LCAwXQogCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtZW5kLmh0bWwJKHJldmlzaW9uIDczNDEw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQAogCiAgICAgICAgICAgICB2YXIgdGVzdHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0ZXN0Iik7CiAgICAgICAgICAgICB2YXIgc2Vs
ID0gZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICBsb2coIlRlc3QgTW92aW5nIGZvcndhcmQv
YmFja3dhcmRcbiIpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbnNNb3ZpbmdSaWdodDsKICAg
ICAgICAgICAgICAgICB2YXIgcG9zaXRpb25zTW92aW5nTGVmdDsKQEAgLTk5LDYgKzEwMCwzOCBA
QAogICAgICAgICAgICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnNNb3ZpbmdSaWdodCk7CiAg
ICAgICAgICAgICAgICAgbG9nKCJcbiIpOwogCisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
b2coIlRlc3QgTW92aW5nIHJpZ2h0L2xlZnRcbiIpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBwb3NpdGlv
bnNNb3ZpbmdSaWdodDsKKyAgICAgICAgICAgICAgICB2YXIgcG9zaXRpb25zTW92aW5nTGVmdDsK
KworICAgICAgICAgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJsdHIiOworICAg
IAorICAgICAgICAgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgTW92
aW5nIHJpZ2h0OiAiKTsKKyAgICAgICAgICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0s
IDApOworICAgICAgICAgICAgICAgIHBvc2l0aW9uc01vdmluZ1JpZ2h0ID0gcG9zaXRpb25zTW92
aW5nSW5EaXJlY3Rpb24oc2VsLCAicmlnaHQiKTsKKyAgICAgICAgICAgICAgICBsb2dQb3NpdGlv
bnMocG9zaXRpb25zTW92aW5nUmlnaHQpOworICAgICAgICAgICAgICAgIGxvZygiXG4iKTsKKwor
ICAgICAgICAgICAgICAgIGxvZygiICBNb3ZpbmcgbGVmdDogICIpOworICAgICAgICAgICAgICAg
IHBvc2l0aW9uc01vdmluZ0xlZnQgPSBwb3NpdGlvbnNNb3ZpbmdJbkRpcmVjdGlvbihzZWwsICJs
ZWZ0Iik7CisgICAgICAgICAgICAgICAgbG9nUG9zaXRpb25zKHBvc2l0aW9uc01vdmluZ0xlZnQp
OworICAgICAgICAgICAgICAgIGxvZygiXG4iKTsKKworICAgICAgICAgICAgICAgIHRlc3RzW2ld
LnN0eWxlLmRpcmVjdGlvbiA9ICJydGwiOworCisgICAgICAgICAgICAgICAgbG9nKCJUZXN0ICIg
KyAoaSArIDEpICsgIiwgUlRMOlxuICBNb3ZpbmcgbGVmdDogIik7CisgICAgICAgICAgICAgICAg
c2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNN
b3ZpbmdMZWZ0ID0gcG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAibGVmdCIpOworICAg
ICAgICAgICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnNNb3ZpbmdMZWZ0KTsKKyAgICAgICAg
ICAgICAgICBsb2coIlxuIik7CisKKyAgICAgICAgICAgICAgICBsb2coIiAgTW92aW5nIHJpZ2h0
OiAgIik7CisgICAgICAgICAgICAgICAgcG9zaXRpb25zTW92aW5nUmlnaHQgPSBwb3NpdGlvbnNN
b3ZpbmdJbkRpcmVjdGlvbihzZWwsICJyaWdodCIpOworICAgICAgICAgICAgICAgIGxvZ1Bvc2l0
aW9ucyhwb3NpdGlvbnNNb3ZpbmdSaWdodCk7CisgICAgICAgICAgICAgICAgbG9nKCJcbiIpOwor
CiAgICAgICAgICAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76459</attachid>
            <date>2010-12-13 15:53:00 -0800</date>
            <delta_ts>2010-12-28 11:30:17 -0800</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>33435.v3</filename>
            <type>text/plain</type>
            <size>14463</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzk3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMTItMTMgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBzZWwubW9kaWZ5KCdtb3ZlJywgJ2xlZnQnLydyaWdodCcsICdsaW5lQm91bmRhcnknKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNDM1CisK
KyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAg
ICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxT
dGFydE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsRW5kT2ZMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpyaWdo
dEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuaDoKKwog
MjAxMC0xMi0xMyAgSm9vbmUgSHVyICA8am9vbmVAa2xkcC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA3MzQxMCkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE5LDEyICs0MTksMTQgQEAgVmlzaWJsZVBv
c2l0aW9uIFNlbGVjdGlvbkNvbnRyb2xsZXI6Om1vZAogICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgogICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBTZW50ZW5jZUJvdW5k
YXJ5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6
CiAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3Jh
bnVsYXJpdHkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICAg
ICAgcG9zID0gcmlnaHRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4g
cG9zOwogfQpAQCAtNTcwLDEyICs1NzIsMTQgQEAgVmlzaWJsZVBvc2l0aW9uIFNlbGVjdGlvbkNv
bnRyb2xsZXI6Om1vZAogICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgogICAgIGNhc2UgUGFyYWdy
YXBoR3JhbnVsYXJpdHk6CiAgICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgTGlu
ZUJvdW5kYXJ5OgogICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CiAgICAgY2FzZSBEb2N1bWVu
dEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUu
CiAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAgIHBvcyA9IGxlZnRCb3Vu
ZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcG9zOwogfQpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gNzM0MTApCisrKyBXZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzMsNiArMTEzMyw4IEBA
IHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXQKIAogVmlzaWJsZVBvc2l0
aW9uIGxvZ2ljYWxTdGFydE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMpCiB7CisgICAg
Ly8gVE9ETzogdGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvciB0aGF0IG1pZ2h0IG5lZWQgdG8g
YmUgZml4ZWQuCisgICAgLy8gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00OTEwNyBmb3IgZGV0YWlsLgogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNQb3MgPSBsb2dpY2FsU3RhcnRQb3NpdGlvbkZvckxpbmUoYyk7CiAgICAgCiAgICAgcmV0dXJu
IGMuaG9ub3JFZGl0YWJsZUJvdW5kYXJ5QXRPckFmdGVyKHZpc1Bvcyk7CkBAIC0xMTc5LDYgKzEx
ODEsOSBAQCBib29sIGluU2FtZUxvZ2ljYWxMaW5lKGNvbnN0IFZpc2libGVQb3NpCiAKIFZpc2li
bGVQb3NpdGlvbiBsb2dpY2FsRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsK
KyAgICAvLyBUT0RPOiB0aGlzIGlzIHRoZSBjdXJyZW50IGJlaGF2aW9yIHRoYXQgbWlnaHQgbmVl
ZCB0byBiZSBmaXhlZC4KKyAgICAvLyBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTA3IGZvciBkZXRhaWwuCisKICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzUG9zID0gbG9naWNhbEVuZFBvc2l0aW9uRm9yTGluZShjKTsKICAgICAKICAgICAv
LyBNYWtlIHN1cmUgdGhlIGVuZCBvZiBsaW5lIGlzIGF0IHRoZSBzYW1lIGxpbmUgYXMgdGhlIGdp
dmVuIGlucHV0IHBvc2l0aW9uLiBGb3IgYSB3cmFwcGluZyBsaW5lLCB0aGUgbG9naWNhbCBlbmQK
QEAgLTExOTIsNCArMTE5NywxNCBAQCBWaXNpYmxlUG9zaXRpb24gbG9naWNhbEVuZE9mTGluZShj
b25zdCBWCiAgICAgcmV0dXJuIGMuaG9ub3JFZGl0YWJsZUJvdW5kYXJ5QXRPckJlZm9yZSh2aXNQ
b3MpOwogfQogCitWaXNpYmxlUG9zaXRpb24gbGVmdEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBMVFIgPyBsb2dpY2FsU3RhcnRPZkxpbmUoYykgOiBsb2dpY2FsRW5kT2ZMaW5l
KGMpOworfQorCitWaXNpYmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGMsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIHJldHVybiBk
aXJlY3Rpb24gPT0gTFRSID8gbG9naWNhbEVuZE9mTGluZShjKSA6IGxvZ2ljYWxTdGFydE9mTGlu
ZShjKTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA3MzQx
MCkKKysrIFdlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDggQEAgYm9vbCBpc1N0YXJ0T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbgog
Ym9vbCBpc0VuZE9mTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24gJik7CiBWaXNpYmxlUG9zaXRp
b24gbG9naWNhbFN0YXJ0T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKIFZpc2libGVQ
b3NpdGlvbiBsb2dpY2FsRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKTsKK1Zpc2li
bGVQb3NpdGlvbiBsZWZ0Qm91bmRhcnlPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4
dERpcmVjdGlvbik7CitWaXNpYmxlUG9zaXRpb24gcmlnaHRCb3VuZGFyeU9mTGluZShjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBUZXh0RGlyZWN0aW9uKTsKIAogLy8gcGFyYWdyYXBocyAocGVyaGFw
cyBhIG1pc25vbWVyLCBjYW4gYmUgZGl2aWRlZCBieSBsaW5lIGJyZWFrIGVsZW1lbnRzKQogVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgRWRp
dGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNzM5NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMi0xMyAgWGlhb21laSBKaSAgPHhqaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHNlbC5tb2RpZnkoJ21vdmUnLCAnbGVm
dCcvJ3JpZ2h0JywgJ2xpbmVCb3VuZGFyeScpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM0MzUKKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24v
aG9tZS1lbmQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2hvbWUt
ZW5kLmh0bWw6CisKIDIwMTAtMTItMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaG9tZS1lbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUtZW5kLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNzM0MTApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVuZC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACitUZXN0IE1vdmluZyBm
b3J3YXJkL2JhY2t3YXJkCiBUZXN0IDEsIExUUjoKICAgTW92aW5nIGZvcndhcmQ6ICJcbmFiYyBB
QkMgeHl6IERFRiBkZWZcbiJbMSwgMjBdCiAgIE1vdmluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMg
eHl6IERFRiBkZWZcbiJbMjAsIDFdCkBAIC0xMjQsNCArMTI1LDEzMSBAQCBUZXN0IDIxLCBMVFI6
CiBUZXN0IDIxLCBSVEw6CiAgIE1vdmluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbMCwgOF0KICAgTW92aW5nIGJhY2t3YXJkOiAg
ImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzgsIDBd
CitUZXN0IE1vdmluZyByaWdodC9sZWZ0CitUZXN0IDEsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi
XG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWzEsIDIwXQorICBNb3ZpbmcgbGVmdDogICJcbmFiYyBB
QkMgeHl6IERFRiBkZWZcbiJbMjAsIDFdCitUZXN0IDEsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJc
bmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbMSwgMjBdCisgIE1vdmluZyByaWdodDogICJcbmFiYyBB
QkMgeHl6IERFRiBkZWZcbiJbMjAsIDFdCitUZXN0IDIsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi
XG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWzEsIDIwXQorICBNb3ZpbmcgbGVmdDogICJcbkFCQyB4
eXogREVGIGRlZiBHSElcbiJbMjAsIDFdCitUZXN0IDIsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJc
bkFCQyB4eXogREVGIGRlZiBHSElcbiJbMSwgMjBdCisgIE1vdmluZyByaWdodDogICJcbkFCQyB4
eXogREVGIGRlZiBHSElcbiJbMjAsIDFdCitUZXN0IDMsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi
XG5BQkMgREVGIEFCQ1xuIlsxLCAxMl0KKyAgTW92aW5nIGxlZnQ6ICAiXG5BQkMgREVGIEFCQ1xu
IlsxMiwgMV0KK1Rlc3QgMywgUlRMOgorICBNb3ZpbmcgbGVmdDogIlxuQUJDIERFRiBBQkNcbiJb
MSwgMTJdCisgIE1vdmluZyByaWdodDogICJcbkFCQyBERUYgQUJDXG4iWzEyLCAxXQorVGVzdCA0
LCBMVFI6CisgIE1vdmluZyByaWdodDogIlxuYWJjIGVmZCBkYWJlYlxuIlsxLCAxNF0KKyAgTW92
aW5nIGxlZnQ6ICAiXG5hYmMgZWZkIGRhYmViXG4iWzE0LCAxXQorVGVzdCA0LCBSVEw6CisgIE1v
dmluZyBsZWZ0OiAiXG5hYmMgZWZkIGRhYmViXG4iWzEsIDE0XQorICBNb3ZpbmcgcmlnaHQ6ICAi
XG5hYmMgZWZkIGRhYmViXG4iWzE0LCAxXQorVGVzdCA1LCBMVFI6CisgIE1vdmluZyByaWdodDog
IkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92aW5nIGxlZnQ6ICAiIGFtZXQiWzVdLCAiTG9y
ZW0gIlswXQorVGVzdCA1LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiTG9yZW0gIlswXSwgIiBhbWV0
Ils1XQorICBNb3ZpbmcgcmlnaHQ6ICAiIGFtZXQiWzVdLCAiTG9yZW0gIlswXQorVGVzdCA2LCBM
VFI6CisgIE1vdmluZyByaWdodDogIkxvcmVtICJbMF0sICJpcHN1bSBkb2xvciJbMTFdCisgIE1v
dmluZyBsZWZ0OiAgImlwc3VtIGRvbG9yIlsxMV0sICJMb3JlbSAiWzBdCitUZXN0IDYsIFJUTDoK
KyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzBdLCAiaXBzdW0gZG9sb3IiWzExXQorICBNb3Zpbmcg
cmlnaHQ6ICAiaXBzdW0gZG9sb3IiWzExXSwgIkxvcmVtICJbMF0KK1Rlc3QgNywgTFRSOgorICBN
b3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzBdLCAiIGFtZXQiWzVdCisgIE1vdmluZyBsZWZ0OiAgIiBh
bWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rlc3QgNywgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxvcmVt
ICJbMF0sICIgYW1ldCJbNV0KKyAgTW92aW5nIHJpZ2h0OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJb
MF0KK1Rlc3QgOCwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzAsIDVdCisgIE1vdmlu
ZyBsZWZ0OiAgIkxvcmVtICJbNSwgMF0KK1Rlc3QgOCwgUlRMOgorICBNb3ZpbmcgbGVmdDogIkxv
cmVtICJbMCwgNV0KKyAgTW92aW5nIHJpZ2h0OiAgIkxvcmVtICJbNSwgMF0KK1Rlc3QgOSwgTFRS
OgorICBNb3ZpbmcgcmlnaHQ6ICJMb3JlbSAiWzBdLCAiIGFtZXQiWzVdCisgIE1vdmluZyBsZWZ0
OiAgIiBhbWV0Ils1XSwgIkxvcmVtICJbMF0KK1Rlc3QgOSwgUlRMOgorICBNb3ZpbmcgbGVmdDog
IkxvcmVtICJbMF0sICIgYW1ldCJbNV0KKyAgTW92aW5nIHJpZ2h0OiAgIiBhbWV0Ils1XSwgIkxv
cmVtICJbMF0KK1Rlc3QgMTAsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiTG9yZW0gIlswXSwgImlw
c3VtIGRvbG9yIlsxMV0KKyAgTW92aW5nIGxlZnQ6ICAiaXBzdW0gZG9sb3IiWzExXSwgIkxvcmVt
ICJbMF0KK1Rlc3QgMTAsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzBdLCAiaXBzdW0g
ZG9sb3IiWzExXQorICBNb3ZpbmcgcmlnaHQ6ICAiaXBzdW0gZG9sb3IiWzExXSwgIkxvcmVtICJb
MF0KK1Rlc3QgMTEsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1
XQorICBNb3ZpbmcgbGVmdDogICIgYW1ldCJbNV0sICJMb3JlbSAiWzBdCitUZXN0IDExLCBSVEw6
CisgIE1vdmluZyBsZWZ0OiAiTG9yZW0gIlswXSwgIiBhbWV0Ils1XQorICBNb3ZpbmcgcmlnaHQ6
ICAiIGFtZXQiWzVdLCAiTG9yZW0gIlswXQorVGVzdCAxMiwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6
ICJMb3JlbSAiWzAsIDVdCisgIE1vdmluZyBsZWZ0OiAgIkxvcmVtICJbNSwgMF0KK1Rlc3QgMTIs
IFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJMb3JlbSAiWzAsIDVdCisgIE1vdmluZyByaWdodDogICJM
b3JlbSAiWzUsIDBdCitUZXN0IDEzLCBMVFI6CisgIE1vdmluZyByaWdodDogIlxuIEp1c3RcbiAi
WzJdLCAiXG4gQkZEWFxuIls2XQorICBNb3ZpbmcgbGVmdDogICJcbiBCRkRYXG4iWzZdLCAiXG4g
SnVzdFxuICJbMl0KK1Rlc3QgMTMsIFJUTDoKKyAgTW92aW5nIGxlZnQ6ICJcbiBKdXN0XG4gIlsy
XSwgIlxuIEJGRFhcbiJbNl0KKyAgTW92aW5nIHJpZ2h0OiAgIlxuIEJGRFhcbiJbNl0sICJcbiBK
dXN0XG4gIlsyXQorVGVzdCAxNCwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJcbiBKdXN0XG4gIlsy
XSwgIlxuIGV2ZXJcbiJbNl0KKyAgTW92aW5nIGxlZnQ6ICAiXG4gZXZlclxuIls2XSwgIlxuIEp1
c3RcbiAiWzJdCitUZXN0IDE0LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiXG4gSnVzdFxuICJbMl0s
ICJcbiBldmVyXG4iWzZdCisgIE1vdmluZyByaWdodDogICJcbiBldmVyXG4iWzZdLCAiXG4gSnVz
dFxuICJbMl0KK1Rlc3QgMTUsIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAiY2FyIG1lYW5zIEFCQy4i
WzAsIDE0XQorICBNb3ZpbmcgbGVmdDogICJjYXIgbWVhbnMgQUJDLiJbMTQsIDBdCitUZXN0IDE1
LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiY2FyIG1lYW5zIEFCQy4iWzAsIDE0XQorICBNb3Zpbmcg
cmlnaHQ6ICAiY2FyIG1lYW5zIEFCQy4iWzE0LCAwXQorVGVzdCAxNiwgTFRSOgorICBNb3Zpbmcg
cmlnaHQ6ICLhqpxjYXIgREVGIEFCQy7hqp0iWzAsIDE0XQorICBNb3ZpbmcgbGVmdDogICLhqpxj
YXIgREVGIEFCQy7hqp0iWzE0LCAwXQorVGVzdCAxNiwgUlRMOgorICBNb3ZpbmcgbGVmdDogIuGq
nGNhciBERUYgQUJDLuGqnSJbMCwgMTRdCisgIE1vdmluZyByaWdodDogICLhqpxjYXIgREVGIEFC
Qy7hqp0iWzE0LCAwXQorVGVzdCAxNywgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJoZSBzYWlkICLh
qpxjYXIgREVGIEFCQ+GqnS4iIlswLCAyNF0KKyAgTW92aW5nIGxlZnQ6ICAiaGUgc2FpZCAi4aqc
Y2FyIERFRiBBQkPhqp0uIiJbMjQsIDBdCitUZXN0IDE3LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAi
aGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbMCwgMjRdCisgIE1vdmluZyByaWdodDogICJo
ZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsyNCwgMF0KK1Rlc3QgMTgsIExUUjoKKyAgTW92
aW5nIHJpZ2h0OiAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGq
nSc/IlswLCA0MF0KKyAgTW92aW5nIGxlZnQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGq
nGNhciBERUYgQUJD4aqdIuGqnSc/Ils0MCwgMF0KK1Rlc3QgMTgsIFJUTDoKKyAgTW92aW5nIGxl
ZnQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWzAs
IDQwXQorICBNb3ZpbmcgcmlnaHQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBE
RUYgQUJD4aqdIuGqnSc/Ils0MCwgMF0KK1Rlc3QgMTksIExUUjoKKyAgTW92aW5nIHJpZ2h0OiAi
QUJDIGFiYyBERUYiWzAsIDExXQorICBNb3ZpbmcgbGVmdDogICJBQkMgYWJjIERFRiJbMTEsIDBd
CitUZXN0IDE5LCBSVEw6CisgIE1vdmluZyBsZWZ0OiAiQUJDIGFiYyBERUYiWzAsIDExXQorICBN
b3ZpbmcgcmlnaHQ6ICAiQUJDIGFiYyBERUYiWzExLCAwXQorVGVzdCAyMCwgTFRSOgorICBNb3Zp
bmcgcmlnaHQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIlswLCA4XQorICBNb3ZpbmcgbGVmdDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgIls4LCAwXQorVGVzdCAyMCwgUlRMOgorICBNb3ZpbmcgbGVm
dDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzAs
IDhdCisgIE1vdmluZyByaWdodDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgIls4LCAwXQorVGVzdCAyMSwgTFRSOgorICBNb3ZpbmcgcmlnaHQ6ICJh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlswLCA4XQor
ICBNb3ZpbmcgbGVmdDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgIls4LCAwXQorVGVzdCAyMSwgUlRMOgorICBNb3ZpbmcgbGVmdDogImFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWzAsIDhdCisgIE1vdmlu
ZyByaWdodDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIls4LCAwXQogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ob21lLWVu
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2hvbWUt
ZW5kLmh0bWwJKHJldmlzaW9uIDczNDEwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaG9tZS1lbmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzEsMzEgKzcxLDY0IEBACiAKICAg
ICAgICAgICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInRl
c3QiKTsKICAgICAgICAgICAgIHZhciBzZWwgPSBnZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAg
IGxvZygiVGVzdCBNb3ZpbmcgZm9yd2FyZC9iYWNrd2FyZFxuIik7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IHBvc2l0aW9uc01vdmluZ0ZvcndhcmQ7CisgICAgICAgICAgICAgICAgdmFyIHBvc2l0aW9uc01v
dmluZ0JhY2t3YXJkOworICAgIAorICAgICAgICAgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAx
KSArICIsIExUUjpcbiAgTW92aW5nIGZvcndhcmQ6ICIpOworICAgICAgICAgICAgICAgIHNlbC5z
ZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7CisgICAgICAgICAgICAgICAgcG9zaXRpb25zTW92aW5n
Rm9yd2FyZCA9IHBvc2l0aW9uc01vdmluZ0luRGlyZWN0aW9uKHNlbCwgImZvcndhcmQiKTsKKyAg
ICAgICAgICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92aW5nRm9yd2FyZCk7CisgICAg
ICAgICAgICAgICAgbG9nKCJcbiIpOworCisgICAgICAgICAgICAgICAgbG9nKCIgIE1vdmluZyBi
YWNrd2FyZDogICIpOworICAgICAgICAgICAgICAgIHBvc2l0aW9uc01vdmluZ0JhY2t3YXJkID0g
cG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAiYmFja3dhcmQiKTsKKyAgICAgICAgICAg
ICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92aW5nQmFja3dhcmQpOworICAgICAgICAgICAg
ICAgIGxvZygiXG4iKTsKKworICAgICAgICAgICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlv
biA9ICJydGwiOworCisgICAgICAgICAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwg
UlRMOlxuICBNb3ZpbmcgZm9yd2FyZDogIik7CisgICAgICAgICAgICAgICAgc2VsLnNldFBvc2l0
aW9uKHRlc3RzW2ldLCAwKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdGb3J3YXJk
ID0gcG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAiZm9yd2FyZCIpOworICAgICAgICAg
ICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnNNb3ZpbmdGb3J3YXJkKTsKKyAgICAgICAgICAg
ICAgICBsb2coIlxuIik7CisKKyAgICAgICAgICAgICAgICBsb2coIiAgTW92aW5nIGJhY2t3YXJk
OiAgIik7CisgICAgICAgICAgICAgICAgcG9zaXRpb25zTW92aW5nQmFja3dhcmQgPSBwb3NpdGlv
bnNNb3ZpbmdJbkRpcmVjdGlvbihzZWwsICJiYWNrd2FyZCIpOworICAgICAgICAgICAgICAgIGxv
Z1Bvc2l0aW9ucyhwb3NpdGlvbnNNb3ZpbmdCYWNrd2FyZCk7CisgICAgICAgICAgICAgICAgbG9n
KCJcbiIpOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2coIlRlc3QgTW92aW5nIHJp
Z2h0L2xlZnRcbiIpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5n
dGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbnNNb3ZpbmdSaWdodDsKICAg
ICAgICAgICAgICAgICB2YXIgcG9zaXRpb25zTW92aW5nTGVmdDsKKworICAgICAgICAgICAgICAg
IHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJsdHIiOwogICAgIAotICAgICAgICAgICAgICAg
IGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgTW92aW5nIGZvcndhcmQ6ICIpOwor
ICAgICAgICAgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgTW92aW5n
IHJpZ2h0OiAiKTsKICAgICAgICAgICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDAp
OwotICAgICAgICAgICAgICAgIHBvc2l0aW9uc01vdmluZ1JpZ2h0ID0gcG9zaXRpb25zTW92aW5n
SW5EaXJlY3Rpb24oc2VsLCAiZm9yd2FyZCIpOworICAgICAgICAgICAgICAgIHBvc2l0aW9uc01v
dmluZ1JpZ2h0ID0gcG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAicmlnaHQiKTsKICAg
ICAgICAgICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zTW92aW5nUmlnaHQpOwogICAgICAg
ICAgICAgICAgIGxvZygiXG4iKTsKIAotICAgICAgICAgICAgICAgIGxvZygiICBNb3ZpbmcgYmFj
a3dhcmQ6ICAiKTsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdMZWZ0ID0gcG9zaXRp
b25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAiYmFja3dhcmQiKTsKKyAgICAgICAgICAgICAgICBs
b2coIiAgTW92aW5nIGxlZnQ6ICAiKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdM
ZWZ0ID0gcG9zaXRpb25zTW92aW5nSW5EaXJlY3Rpb24oc2VsLCAibGVmdCIpOwogICAgICAgICAg
ICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnNNb3ZpbmdMZWZ0KTsKICAgICAgICAgICAgICAg
ICBsb2coIlxuIik7CiAKICAgICAgICAgICAgICAgICB0ZXN0c1tpXS5zdHlsZS5kaXJlY3Rpb24g
PSAicnRsIjsKIAotICAgICAgICAgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJU
TDpcbiAgTW92aW5nIGZvcndhcmQ6ICIpOworICAgICAgICAgICAgICAgIGxvZygiVGVzdCAiICsg
KGkgKyAxKSArICIsIFJUTDpcbiAgTW92aW5nIGxlZnQ6ICIpOwogICAgICAgICAgICAgICAgIHNl
bC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgICAgICAgICAgcG9zaXRpb25zTW92
aW5nTGVmdCA9IHBvc2l0aW9uc01vdmluZ0luRGlyZWN0aW9uKHNlbCwgImZvcndhcmQiKTsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbnNNb3ZpbmdMZWZ0ID0gcG9zaXRpb25zTW92aW5nSW5EaXJl
Y3Rpb24oc2VsLCAibGVmdCIpOwogICAgICAgICAgICAgICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlv
bnNNb3ZpbmdMZWZ0KTsKICAgICAgICAgICAgICAgICBsb2coIlxuIik7CiAKLSAgICAgICAgICAg
ICAgICBsb2coIiAgTW92aW5nIGJhY2t3YXJkOiAgIik7Ci0gICAgICAgICAgICAgICAgcG9zaXRp
b25zTW92aW5nUmlnaHQgPSBwb3NpdGlvbnNNb3ZpbmdJbkRpcmVjdGlvbihzZWwsICJiYWNrd2Fy
ZCIpOworICAgICAgICAgICAgICAgIGxvZygiICBNb3ZpbmcgcmlnaHQ6ICAiKTsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbnNNb3ZpbmdSaWdodCA9IHBvc2l0aW9uc01vdmluZ0luRGlyZWN0aW9u
KHNlbCwgInJpZ2h0Iik7CiAgICAgICAgICAgICAgICAgbG9nUG9zaXRpb25zKHBvc2l0aW9uc01v
dmluZ1JpZ2h0KTsKICAgICAgICAgICAgICAgICBsb2coIlxuIik7CiAK
</data>
<flag name="review"
          id="67400"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>