<?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>14845</bug_id>
          
          <creation_ts>2007-08-01 09:03:28 -0700</creation_ts>
          <short_desc>Frame&apos;s noResize attribute can not be set by JavaScript</short_desc>
          <delta_ts>2011-05-12 15:34:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57682</dependson>
    
    <dependson>58700</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brett Wilson (Google)">brettw</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>chrome</cc>
    
    <cc>dbates</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>techrazy.yang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3301</commentid>
    <comment_count>0</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2007-08-01 09:03:28 -0700</bug_when>
    <thetext>Setting frame.noResize=true has no effect in WebKit. The attribute works when specified in the source HTML.

Since this requires frames, I will attach several files for a testcase. Save them in the same directory and open dom_frame_noresize.html. Pressing the buttons should enable and disable resizing as it does in IE and Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3302</commentid>
    <comment_count>1</comment_count>
      <attachid>15775</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2007-08-01 09:03:56 -0700</bug_when>
    <thetext>Created attachment 15775
Main example file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3303</commentid>
    <comment_count>2</comment_count>
      <attachid>15776</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2007-08-01 09:04:16 -0700</bug_when>
    <thetext>Created attachment 15776
Subframe 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3304</commentid>
    <comment_count>3</comment_count>
      <attachid>15777</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2007-08-01 09:04:37 -0700</bug_when>
    <thetext>Created attachment 15777
Subframe 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3354</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-08-01 14:00:16 -0700</bug_when>
    <thetext>Sounds easy to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67193</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-14 00:43:48 -0800</bug_when>
    <thetext>Wow.  If you look at:
void HTMLFrameElementBase::parseMappedAttribute(MappedAttribute *attr)

You&apos;ll see 10 or so FIXMEs about how none of the frame properties are editable from JS (after the frame renderer is created).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67458</commentid>
    <comment_count>6</comment_count>
      <attachid>18494</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 02:14:54 -0800</bug_when>
    <thetext>Created attachment 18494
First attempt (no test cases!)

 WebCore/html/HTMLFrameElementBase.cpp |   19 ++++++++++++-------
 1 files changed, 12 insertions(+), 7 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67459</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 02:17:38 -0800</bug_when>
    <thetext>Ok, I&apos;ve tested my first attempt with Marv&apos;s test cases.  This patch does not fix the bug, due to some strange behavior in setResize(bool), it either sets the attribute to 0 or to &quot;&quot;, the &quot;&quot;.  Clicking the &quot;resize&quot; button in marv&apos;s test case disables resize with the patch applied.

I&apos;ll come back and fix the broken js behavior.  However for this patch to move further, I need to create a bunch of test cases to test behavior of all these various attributes.  For example, should frame.noResize = &quot;false&quot;; really remove the &quot;noResize&quot; attribute from the element?  Does we&apos;ll need to test IE and FF to make sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67494</commentid>
    <comment_count>8</comment_count>
      <attachid>18494</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-01-17 10:41:46 -0800</bug_when>
    <thetext>Comment on attachment 18494
First attempt (no test cases!)

I don&apos;t think setting margin width or height on the view has any effect after it has been created, but I could be wrong.

The scrolling code is wrong.  You&apos;re getting the page(), which is the top-level frame only.  So you&apos;re not really changing the scrollbar state on subframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67508</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 11:46:42 -0800</bug_when>
    <thetext>The patch wasn&apos;t actually up for review, but I&apos;m very glad to have the feedback! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109922</commentid>
    <comment_count>10</comment_count>
      <attachid>27718</attachid>
    <who name="Bo Yang">techrazy.yang</who>
    <bug_when>2009-02-16 22:29:19 -0800</bug_when>
    <thetext>Created attachment 27718
First attempt to fix the frame resize bug

Add some new public method for HTMLFrameSetElement/RenderFrameSet, but I didn&apos;t import new dependence of the rendering system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110070</commentid>
    <comment_count>11</comment_count>
      <attachid>27748</attachid>
    <who name="Bo Yang">techrazy.yang</who>
    <bug_when>2009-02-18 05:06:48 -0800</bug_when>
    <thetext>Created attachment 27748
fix some indent problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110198</commentid>
    <comment_count>12</comment_count>
      <attachid>27748</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-19 03:35:17 -0800</bug_when>
    <thetext>Comment on attachment 27748
fix some indent problem

Could you please add an automated test to the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110470</commentid>
    <comment_count>13</comment_count>
      <attachid>27851</attachid>
    <who name="Bo Yang">techrazy.yang</who>
    <bug_when>2009-02-21 04:25:32 -0800</bug_when>
    <thetext>Created attachment 27851
Patch (with automated testcase)

Add a automated testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110499</commentid>
    <comment_count>14</comment_count>
      <attachid>27859</attachid>
    <who name="Bo Yang">techrazy.yang</who>
    <bug_when>2009-02-22 04:59:59 -0800</bug_when>
    <thetext>Created attachment 27859
A better version

Detect whether the parentNode is a FrameSet...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120639</commentid>
    <comment_count>15</comment_count>
      <attachid>27859</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-11 05:52:42 -0700</bug_when>
    <thetext>Comment on attachment 27859
A better version

 130         if (attached() &amp;&amp; parentNode()-&gt;renderer()-&gt;isFrameSet()) {
 131             HTMLFrameSetElement* fs = static_cast&lt;HTMLFrameSetElement*&gt;(parentNode());

seems like an unsafe check.  Just because the renderer() is a frameset, doesn&apos;t necessarily mean the Element is.  I think you should check hasTagName instead.

I&apos;ve never seen this convention before:
m_noResize = !attr-&gt;isNull();

I didn&apos;t realize that parseMappedAttribute was called when an attribute was removed?

I also don&apos;t see how attr-&gt;isNull() will return true when noResize=&quot;false&quot;?

The test case would be better if it printed PASS or FAIL instead of just printing the resulting metrics.

r- for the attr-&gt;isNull() issue.  I&apos;m confused as to if that code actually works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222820</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-07 23:06:37 -0700</bug_when>
    <thetext>*** Bug 38781 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374054</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-26 23:15:30 -0700</bug_when>
    <thetext>&gt; I&apos;ve never seen this convention before:
&gt; m_noResize = !attr-&gt;isNull();

This conventions comes up when handling HTML boolean attributes (e.g. disabled, checked). By section 2.5.2 of the HTML5 spec &lt;http://www.w3.org/TR/html5/common-microsyntaxes.html#boolean-attributes&gt; the &quot;presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.&quot;

&gt; I didn&apos;t realize that parseMappedAttribute was called when an attribute was removed?

Yes, it is called when an attribute is removed. One such call chain is via Element.removeAttribute():

WebCore::jsElementPrototypeFunctionRemoveAttribute() =&gt; WebCore::Element::removeAttribute() =&gt; WebCore::NamedNodeMap::removeNamedItem(const String&amp; name, ExceptionCode&amp; ec) =&gt; NamedNodeMap::removeNamedItem(const QualifiedName&amp; name, ExceptionCode&amp; ec) =&gt; WebCore::NamedNodeMap::removeAttribute() =&gt;  WebCore::StyledElement::attributeChanged() =&gt; WebCore::HTMLFrameElement::parseMappedAttribute()

Similar call chains exist when removing the attribute via the Web Inspector.

&gt; 
&gt; I also don&apos;t see how attr-&gt;isNull() will return true when noResize=&quot;false&quot;?

It should not return true. We want to disallow frame resize for this case by section 2.5.2 of the HTML5 spec &lt;http://www.w3.org/TR/html5/common-microsyntaxes.html#boolean-attributes&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374055</commentid>
    <comment_count>18</comment_count>
      <attachid>87056</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-03-26 23:16:28 -0700</bug_when>
    <thetext>Created attachment 87056
Patch and test cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374508</commentid>
    <comment_count>19</comment_count>
      <attachid>87056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-28 08:41:35 -0700</bug_when>
    <thetext>Comment on attachment 87056
Patch and test cases

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

OK as-is. Suggestions for further improvement.

&gt; Source/WebCore/html/HTMLFrameElement.cpp:90
&gt; +        m_noResize = !attr-&gt;isNull(); // This will evaluate to false when frame.noResize := false, which is what we want.

The reason to cache the existence of an attribute in a boolean local is performance; I do not think this code is performance critical and hence I don’t think m_noResize is a good idea.

I suggest we make the noResize() function non-inline and change it to call hasAttribute. This eliminates the need for an m_noResize data member.

I don’t understand the syntax &quot;when frame.noResize := false&quot; so I don’t know what your comment is saying.

&gt; Source/WebCore/html/HTMLFrameElement.cpp:95
&gt; +        if (HTMLFrameSetElement* frameSetElement = containingFrameSetElement(this)) {
&gt; +            RenderObject* frameSetRenderer = frameSetElement-&gt;renderer();
&gt; +            if (frameSetRenderer &amp;&amp; frameSetRenderer-&gt;isFrameSet())
&gt; +                toRenderFrameSet(frameSetRenderer)-&gt;computeEdgeInfo();
&gt; +        }

The division of labor here seems wrong. The RenderFrame is the class that knows that edge info is based on noResize and hasFrameBorder, but now the HTML frame element is responsible for calling directly to the RenderFrameSet. I don’t think that RenderFrame should be half responsible for this. Instead it should be entirely responsible.

I think that here in HTMLFrameElement we should be calling updateFromRenderer on RenderFrame and RenderFrame in turn should be turning around and calling the RenderFrameSet to say that its edge info changed and then the RenderFrameSet, based on the fact that a frame called to say its edge info changed, will decide to recompute the edge info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377942</commentid>
    <comment_count>20</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-01 11:34:53 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 87056 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=87056&amp;action=review
&gt; [...]
&gt; I suggest we make the noResize() function non-inline and change it to call hasAttribute. This eliminates the need for an m_noResize data member.

Will remove instance variable m_noResize and make noResize() a non-inline  function.

&gt; 
&gt; I don’t understand the syntax &quot;when frame.noResize := false&quot; so I don’t know what your comment is saying.

The comment was trying to explain that the expression &quot;!attr-&gt;isNull()&quot; handles both the HTML attribute logic (when the HTML attribute is added and removed) as well as the JavaScript noResize property logic because the JavaScript-binding/DOM logic translates the noResize property setter to DOM attribute addition and removal (depending on the value being set).

&gt; 
&gt; &gt; Source/WebCore/html/HTMLFrameElement.cpp:95
&gt; &gt; +        if (HTMLFrameSetElement* frameSetElement = containingFrameSetElement(this)) {
&gt; &gt; +            RenderObject* frameSetRenderer = frameSetElement-&gt;renderer();
&gt; &gt; +            if (frameSetRenderer &amp;&amp; frameSetRenderer-&gt;isFrameSet())
&gt; &gt; +                toRenderFrameSet(frameSetRenderer)-&gt;computeEdgeInfo();
&gt; &gt; +        }
&gt; [...]
&gt; I think that here in HTMLFrameElement we should be calling updateFromRenderer on RenderFrame and RenderFrame in turn should be turning around and calling the RenderFrameSet to say that its edge info changed and then the RenderFrameSet, based on the fact that a frame called to say its edge info changed, will decide to recompute the edge info.

I like this approach. Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378010</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-01 13:07:48 -0700</bug_when>
    <thetext>Committed r82712: &lt;http://trac.webkit.org/changeset/82712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378217</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-01 16:59:37 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/82747</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387056</commentid>
    <comment_count>23</comment_count>
      <attachid>89886</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-04-15 17:09:50 -0700</bug_when>
    <thetext>Created attachment 89886
Patch and layout tests

Added check for needsLayout() in RenderFrameSet::notifyFrameEdgeInfoChanged().

We need to fix bug #58700 before we can land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403213</commentid>
    <comment_count>24</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-05-12 15:34:45 -0700</bug_when>
    <thetext>Committed r86390: &lt;http://trac.webkit.org/changeset/86390&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15775</attachid>
            <date>2007-08-01 09:03:56 -0700</date>
            <delta_ts>2007-08-01 09:03:56 -0700</delta_ts>
            <desc>Main example file</desc>
            <filename>dom_frame_noresize.html</filename>
            <type>text/html</type>
            <size>159</size>
            <attacher name="Brett Wilson (Google)">brettw</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8ZnJhbWVzZXQgY29scz0iNTAlLDUwJSI+DQogIDxmcmFtZSBpZD0ibGVmdEZyYW1l
IiBzcmM9ImZyYW1lX25vcmVzaXplLmh0bSI+DQogIDxmcmFtZSBpZD0icmlnaHRGcmFtZSIgc3Jj
PSJmcmFtZV9hLmh0bSI+DQo8L2ZyYW1lc2V0Pg0KPC9odG1sPg0KDQoNCg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15776</attachid>
            <date>2007-08-01 09:04:16 -0700</date>
            <delta_ts>2007-08-01 09:04:16 -0700</delta_ts>
            <desc>Subframe 1</desc>
            <filename>frame_a.htm</filename>
            <type>text/html</type>
            <size>68</size>
            <attacher name="Brett Wilson (Google)">brettw</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8Ym9keSBiZ2NvbG9yPSIjNjZDQ0ZGIj4NCjxoMz5GcmFtZSBBPC9oMz4NCjwvYm9k
eT4NCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15777</attachid>
            <date>2007-08-01 09:04:37 -0700</date>
            <delta_ts>2007-08-01 09:04:37 -0700</delta_ts>
            <desc>Subframe 2</desc>
            <filename>frame_noresize.htm</filename>
            <type>text/html</type>
            <size>584</size>
            <attacher name="Brett Wilson (Google)">brettw</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9u
IGRpc2FibGVSZXNpemUoKQ0KICB7DQogIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGVmdEZyYW1lIikubm9SZXNpemU9dHJ1ZQ0KICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJpZ2h0RnJhbWUiKS5ub1Jlc2l6ZT10cnVlDQogIH0NCmZ1bmN0aW9uIGVuYWJsZVJlc2l6
ZSgpDQogIHsNCiAgcGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsZWZ0RnJhbWUiKS5u
b1Jlc2l6ZT1mYWxzZQ0KICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJpZ2h0RnJh
bWUiKS5ub1Jlc2l6ZT1mYWxzZQ0KICB9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCg0KPGJvZHk+DQo8
aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJkaXNhYmxlUmVzaXplKCkiIHZhbHVlPSJObyBy
ZXNpemUiIC8+DQo8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJlbmFibGVSZXNpemUoKSIg
dmFsdWU9IlJlc2l6ZSIgLz4NCjxwPlRyeSB0byByZXNpemUgdGhlIGZyYW1lcy48L3A+DQo8L2Jv
ZHk+DQoNCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18494</attachid>
            <date>2008-01-17 02:14:54 -0800</date>
            <delta_ts>2011-03-26 23:16:44 -0700</delta_ts>
            <desc>First attempt (no test cases!)</desc>
            <filename>First-attempt-no-test-cases-.patch</filename>
            <type>text/plain</type>
            <size>2522</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MGNiMjQyNmZkN2RhNmNiMmRhNzVhMGMyMzkxYTFjNDg0ZTIxZTA4ZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAKaW5kZXggNjQzOGYzYy4uNGJhMTZiYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwCkBAIC0xMjEsMjUgKzEyMSwzMCBAQCB2b2lkIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIp
CiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgbV9uYW1lID0gYXR0ci0+dmFsdWUoKTsKLSAg
ICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGRvZXNuJ3Qg
YWN0dWFsbHkgY2hhbmdlIHRoZSBmcmFtZSdzIG5hbWUuCi0gICAgICAgIC8vIEZJWE1FOiBJZiB3
ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBkb2Vzbid0IGNoZWNrIGZvciBmcmFtZSBuYW1l
Ci0gICAgICAgIC8vIGNvbmZsaWN0cyBhbmQgZ2VuZXJhdGUgYSB1bmlxdWUgZnJhbWUgbmFtZS4K
KyAgICAgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIGNvbnRlbnRGcmFtZSgpLT50cmVlKCkpIHsK
KyAgICAgICAgICAgIGNvbnRlbnRGcmFtZSgpLT50cmVlKCktPnNldE5hbWUobV9uYW1lKTsKKyAg
ICAgICAgICAgIG1fbmFtZSA9IGNvbnRlbnRGcmFtZSgpLT50cmVlKCktPm5hbWUoKTsKKyAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0cikgewog
ICAgICAgICBtX21hcmdpbldpZHRoID0gYXR0ci0+dmFsdWUoKS50b0ludCgpOwotICAgICAgICAv
LyBGSVhNRTogSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4K
KyAgICAgICAgaWYgKGNvbnRlbnRGcmFtZSgpICYmIGNvbnRlbnRGcmFtZSgpLT52aWV3KCkpCisg
ICAgICAgICAgICBjb250ZW50RnJhbWUoKS0+dmlldygpLT5zZXRNYXJnaW5IZWlnaHQobV9tYXJn
aW5XaWR0aCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbWFyZ2luaGVpZ2h0QXR0
cikgewogICAgICAgICBtX21hcmdpbkhlaWdodCA9IGF0dHItPnZhbHVlKCkudG9JbnQoKTsKLSAg
ICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBl
ZmZlY3QuCisgICAgICAgIGlmIChjb250ZW50RnJhbWUoKSAmJiBjb250ZW50RnJhbWUoKS0+dmll
dygpKQorICAgICAgICAgICAgY29udGVudEZyYW1lKCktPnZpZXcoKS0+c2V0TWFyZ2luSGVpZ2h0
KG1fbWFyZ2luSGVpZ2h0KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBub3Jlc2l6
ZUF0dHIpIHsKICAgICAgICAgbV9ub1Jlc2l6ZSA9IHRydWU7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
ZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBoYXMgbm8gZWZmZWN0LgorICAgICAgICBp
ZiAoY29udGVudEZyYW1lKCkgJiYgY29udGVudEZyYW1lKCktPnBhZ2UoKSAmJiBjb250ZW50RnJh
bWUoKS0+cGFnZSgpLT5jaHJvbWUoKSkKKyAgICAgICAgICAgIGNvbnRlbnRGcmFtZSgpLT5wYWdl
KCktPmNocm9tZSgpLT5zZXRSZXNpemFibGUoIW1fbm9SZXNpemUpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IHNjcm9sbGluZ0F0dHIpIHsKICAgICAgICAgLy8gQXV0byBhbmQgeWVz
IGJvdGggc2ltcGx5IG1lYW4gImFsbG93IHNjcm9sbGluZy4iIE5vIG1lYW5zICJkb24ndCBhbGxv
dyBzY3JvbGxpbmcuIgogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUo
KSwgImF1dG8iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAieWVzIikpCiAg
ICAgICAgICAgICBtX3Njcm9sbGluZyA9IFNjcm9sbGJhckF1dG87CiAgICAgICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJubyIpKQogICAgICAgICAgICAgbV9z
Y3JvbGxpbmcgPSBTY3JvbGxiYXJBbHdheXNPZmY7Ci0gICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBh
cmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBoYXMgbm8gZWZmZWN0LgorICAgICAgICBpZiAoY29u
dGVudEZyYW1lKCkgJiYgY29udGVudEZyYW1lKCktPnBhZ2UoKSAmJiBjb250ZW50RnJhbWUoKS0+
cGFnZSgpLT5jaHJvbWUoKSkKKyAgICAgICAgICAgIGNvbnRlbnRGcmFtZSgpLT5wYWdlKCktPmNo
cm9tZSgpLT5zZXRTY3JvbGxiYXJzVmlzaWJsZShtX3Njcm9sbGluZyAhPSBTY3JvbGxiYXJBbHdh
eXNPZmYpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZpZXdzb3VyY2VBdHRyKSB7
CiAgICAgICAgIG1fdmlld1NvdXJjZSA9ICFhdHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKGNv
bnRlbnRGcmFtZSgpKQo=
</data>
<flag name="review"
          id="8098"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27718</attachid>
            <date>2009-02-16 22:29:19 -0800</date>
            <delta_ts>2009-02-18 05:06:48 -0800</delta_ts>
            <desc>First attempt to fix the frame resize bug</desc>
            <filename>14845.patch</filename>
            <type>text/plain</type>
            <size>3614</size>
            <attacher name="Bo Yang">techrazy.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTAzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDItMTYgIEJvIFlhbmcgIDx0ZWNocmF6eS55YW5nQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKworICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZy
YW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxl
bWVudDo6Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpjaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaDoKKwogMjAwOS0wMi0xNiAgQmV0
aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAkocmV2aXNpb24g
NDEwMzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjYsNyArMTI2LDExIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBh
cnNlTWFwcGVkQXQKICAgICAgICAgbV9tYXJnaW5IZWlnaHQgPSBhdHRyLT52YWx1ZSgpLnRvSW50
KCk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBo
YXMgbm8gZWZmZWN0LgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5vcmVzaXplQXR0
cikgewotICAgICAgICBtX25vUmVzaXplID0gdHJ1ZTsKKyAgICAgICAgbV9ub1Jlc2l6ZSA9ICFh
dHRyLT5pc051bGwoKTsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkpIHsKKwkgICAgSFRNTEZyYW1l
U2V0RWxlbWVudCogZnMgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVTZXRFbGVtZW50Kj4ocGFyZW50
Tm9kZSgpKTsKKwkgICAgZnMtPmNoaWxkUmVzaXplTW9kZUNoYW5nZWQoKTsKKwl9CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBoYXMgbm8gZWZmZWN0
LgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNjcm9sbGluZ0F0dHIpIHsKICAgICAg
ICAgLy8gQXV0byBhbmQgeWVzIGJvdGggc2ltcGx5IG1lYW4gImFsbG93IHNjcm9sbGluZy4iIE5v
IG1lYW5zICJkb24ndCBhbGxvdyBzY3JvbGxpbmcuIgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNDEwMzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw0ICsyMTMsMTAgQEAgdm9pZCBI
VE1MRnJhbWVTZXRFbGVtZW50OjpzZXRSb3dzKGNvbnN0IAogICAgIHNldEF0dHJpYnV0ZShyb3dz
QXR0ciwgdmFsdWUpOwogfQogCit2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNoaWxkUmVzaXpl
TW9kZUNoYW5nZWQoKQoreworICAgIGlmIChhdHRhY2hlZCgpKQorICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJGcmFtZVNldCo+KHJlbmRlcmVyKCkpLT5jaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKCk7
Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkocmV2aXNpb24gNDEw
MzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgqIHJvd0xlbmd0aHMo
KSBjb25zdCB7IHJldHVybiBtX3Jvd3M7IH0KICAgICBjb25zdCBMZW5ndGgqIGNvbExlbmd0aHMo
KSBjb25zdCB7IHJldHVybiBtX2NvbHM7IH0KIAorICAgIHZvaWQgY2hpbGRSZXNpemVNb2RlQ2hh
bmdlZCgpOworCiBwcml2YXRlOgogICAgIExlbmd0aCogbV9yb3dzOwogICAgIExlbmd0aCogbV9j
b2xzOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gNDEw
MzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYxOSw2ICs2MTksMTEgQEAgYm9vbCBSZW5kZXJGcmFtZVNldDo6Y2FuUmVzaXplQ29s
dW1uKGNvbgogICAgIHJldHVybiBjICE9IG5vU3BsaXQgJiYgbV9jb2xzLm1fYWxsb3dCb3JkZXJb
Y10gJiYgIW1fY29scy5tX3ByZXZlbnRSZXNpemVbY107CiB9CiAKK3ZvaWQgUmVuZGVyRnJhbWVT
ZXQ6OmNoaWxkUmVzaXplTW9kZUNoYW5nZWQoKQoreworICAgIGNvbXB1dGVFZGdlSW5mbygpOwor
fQorCiBpbnQgUmVuZGVyRnJhbWVTZXQ6OnNwbGl0UG9zaXRpb24oY29uc3QgR3JpZEF4aXMmIGF4
aXMsIGludCBzcGxpdCkgY29uc3QKIHsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAkocmV2aXNpb24gNDEwMzYpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw4IEBA
IHB1YmxpYzoKICAgICBib29sIGNhblJlc2l6ZVJvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0Owog
ICAgIGJvb2wgY2FuUmVzaXplQ29sdW1uKGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKKyAgICB2
b2lkIGNoaWxkUmVzaXplTW9kZUNoYW5nZWQoKTsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgaW50IG5vU3BsaXQgPSAtMTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27748</attachid>
            <date>2009-02-18 05:06:48 -0800</date>
            <delta_ts>2009-02-21 04:25:32 -0800</delta_ts>
            <desc>fix some indent problem</desc>
            <filename>14845.patch</filename>
            <type>text/plain</type>
            <size>3739</size>
            <attacher name="Bo Yang">techrazy.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTA1NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDItMTggIEJvIFlhbmcgIDx0ZWNocmF6eS55YW5nQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKworICAgICAgICBO
b3RpZnkgdGhlIHBhcmVudCBIVE1MRnJhbWVTZXRFbGVtZW50IHdoZW4gSFRNTEZyYW1lRWxlbWVu
dCdzCisgICAgICAgIG5vUmVzaXplIGF0dHJpYnV0ZSBpcyBzZXQuCisKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6
OmNoaWxkUmVzaXplTW9kZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxl
bWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0Lmg6CisKIDIwMDktMDItMTggIFhhbiBMb3Bl
eiAgPHhhbkBnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA0MTA1MCkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNiw3ICsxMjYsMTEgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRB
dAogICAgICAgICBtX21hcmdpbkhlaWdodCA9IGF0dHItPnZhbHVlKCkudG9JbnQoKTsKICAgICAg
ICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZl
Y3QuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm9yZXNpemVBdHRyKSB7Ci0gICAg
ICAgIG1fbm9SZXNpemUgPSB0cnVlOworICAgICAgICBtX25vUmVzaXplID0gIWF0dHItPmlzTnVs
bCgpOworICAgICAgICBpZiAoYXR0YWNoZWQoKSkgeworICAgICAgICAgICAgSFRNTEZyYW1lU2V0
RWxlbWVudCogZnMgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVTZXRFbGVtZW50Kj4ocGFyZW50Tm9k
ZSgpKTsKKyAgICAgICAgICAgIGZzLT5jaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKCk7CisgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhh
cyBubyBlZmZlY3QuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2Nyb2xsaW5nQXR0
cikgewogICAgICAgICAvLyBBdXRvIGFuZCB5ZXMgYm90aCBzaW1wbHkgbWVhbiAiYWxsb3cgc2Ny
b2xsaW5nLiIgTm8gbWVhbnMgImRvbid0IGFsbG93IHNjcm9sbGluZy4iCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MTA1MCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDQgKzIxMywx
MCBAQCB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnNldFJvd3MoY29uc3QgCiAgICAgc2V0QXR0
cmlidXRlKHJvd3NBdHRyLCB2YWx1ZSk7CiB9CiAKK3ZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6
Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCgpCit7CisgICAgaWYgKGF0dGFjaGVkKCkpCisgICAgICAg
IHN0YXRpY19jYXN0PFJlbmRlckZyYW1lU2V0Kj4ocmVuZGVyZXIoKSktPmNoaWxkUmVzaXplTW9k
ZUNoYW5nZWQoKTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCShy
ZXZpc2lvbiA0MTA1MCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0aCog
cm93TGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fcm93czsgfQogICAgIGNvbnN0IExlbmd0aCog
Y29sTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIG1fY29sczsgfQogCisgICAgdm9pZCBjaGlsZFJl
c2l6ZU1vZGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgTGVuZ3RoKiBtX3Jvd3M7CiAgICAg
TGVuZ3RoKiBtX2NvbHM7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShy
ZXZpc2lvbiA0MTA1MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjE5LDYgKzYxOSwxMSBAQCBib29sIFJlbmRlckZyYW1lU2V0Ojpj
YW5SZXNpemVDb2x1bW4oY29uCiAgICAgcmV0dXJuIGMgIT0gbm9TcGxpdCAmJiBtX2NvbHMubV9h
bGxvd0JvcmRlcltjXSAmJiAhbV9jb2xzLm1fcHJldmVudFJlc2l6ZVtjXTsKIH0KIAordm9pZCBS
ZW5kZXJGcmFtZVNldDo6Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCgpCit7CisgICAgY29tcHV0ZUVk
Z2VJbmZvKCk7Cit9CisKIGludCBSZW5kZXJGcmFtZVNldDo6c3BsaXRQb3NpdGlvbihjb25zdCBH
cmlkQXhpcyYgYXhpcywgaW50IHNwbGl0KSBjb25zdAogewogICAgIGlmIChuZWVkc0xheW91dCgp
KQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCShyZXZpc2lvbiA0MTA1MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDYgKzgxLDggQEAgcHVibGljOgogICAgIGJvb2wgY2FuUmVzaXplUm93KGNvbnN0IEludFBvaW50
JikgY29uc3Q7CiAgICAgYm9vbCBjYW5SZXNpemVDb2x1bW4oY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKIAorICAgIHZvaWQgY2hpbGRSZXNpemVNb2RlQ2hhbmdlZCgpOworCiBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCBpbnQgbm9TcGxpdCA9IC0xOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27851</attachid>
            <date>2009-02-21 04:25:32 -0800</date>
            <delta_ts>2009-02-22 04:59:59 -0800</delta_ts>
            <desc>Patch (with automated testcase)</desc>
            <filename>14845.patch</filename>
            <type>text/plain</type>
            <size>8379</size>
            <attacher name="Bo Yang">techrazy.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTEyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDItMjEgIEJvIFlhbmcgIDx0ZWNocmF6eS55YW5nQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKyAgICAgICAgVGVz
dDogZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNpemUuaHRtbAorCisgICAgICAgIE5vdGlmeSB0aGUg
cGFyZW50IEhUTUxGcmFtZVNldEVsZW1lbnQgd2hlbiBIVE1MRnJhbWVFbGVtZW50J3MKKyAgICAg
ICAgbm9SZXNpemUgYXR0cmlidXRlIGlzIHNldC4KKworICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6Y2hpbGRSZXNp
emVNb2RlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYW1lU2V0OjpjaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuaDoKKwogMjAwOS0wMi0yMSAgSGlyb25vcmkgQm9ubyAgPGhi
b25vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA0
MTEyMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw4ICsxMjYsMTEgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFy
c2VNYXBwZWRBdAogICAgICAgICBtX21hcmdpbkhlaWdodCA9IGF0dHItPnZhbHVlKCkudG9JbnQo
KTsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhh
cyBubyBlZmZlY3QuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm9yZXNpemVBdHRy
KSB7Ci0gICAgICAgIG1fbm9SZXNpemUgPSB0cnVlOwotICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
YXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KKyAgICAgICAgbV9ub1Jl
c2l6ZSA9ICFhdHRyLT5pc051bGwoKTsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkpIHsKKyAgICAg
ICAgICAgIEhUTUxGcmFtZVNldEVsZW1lbnQqIGZzID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lU2V0
RWxlbWVudCo+KHBhcmVudE5vZGUoKSk7CisgICAgICAgICAgICBmcy0+Y2hpbGRSZXNpemVNb2Rl
Q2hhbmdlZCgpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2Ny
b2xsaW5nQXR0cikgewogICAgICAgICAvLyBBdXRvIGFuZCB5ZXMgYm90aCBzaW1wbHkgbWVhbiAi
YWxsb3cgc2Nyb2xsaW5nLiIgTm8gbWVhbnMgImRvbid0IGFsbG93IHNjcm9sbGluZy4iCiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJ5ZXMiKSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDQxMTIyKQorKysgV2ViQ29yZS9odG1sL0hUTUxG
cmFtZVNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNCArMjEzLDEwIEBAIHZv
aWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6c2V0Um93cyhjb25zdCAKICAgICBzZXRBdHRyaWJ1dGUo
cm93c0F0dHIsIHZhbHVlKTsKIH0KIAordm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpjaGlsZFJl
c2l6ZU1vZGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAoYXR0YWNoZWQoKSkKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyRnJhbWVTZXQqPihyZW5kZXJlcigpKS0+Y2hpbGRSZXNpemVNb2RlQ2hhbmdl
ZCgpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHJldmlzaW9u
IDQxMTIyKQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoKiByb3dMZW5n
dGhzKCkgY29uc3QgeyByZXR1cm4gbV9yb3dzOyB9CiAgICAgY29uc3QgTGVuZ3RoKiBjb2xMZW5n
dGhzKCkgY29uc3QgeyByZXR1cm4gbV9jb2xzOyB9CiAKKyAgICB2b2lkIGNoaWxkUmVzaXplTW9k
ZUNoYW5nZWQoKTsKKwogcHJpdmF0ZToKICAgICBMZW5ndGgqIG1fcm93czsKICAgICBMZW5ndGgq
IG1fY29sczsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9u
IDQxMTIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MTksNiArNjE5LDExIEBAIGJvb2wgUmVuZGVyRnJhbWVTZXQ6OmNhblJlc2l6
ZUNvbHVtbihjb24KICAgICByZXR1cm4gYyAhPSBub1NwbGl0ICYmIG1fY29scy5tX2FsbG93Qm9y
ZGVyW2NdICYmICFtX2NvbHMubV9wcmV2ZW50UmVzaXplW2NdOwogfQogCit2b2lkIFJlbmRlckZy
YW1lU2V0OjpjaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKCkKK3sKKyAgICBjb21wdXRlRWRnZUluZm8o
KTsKK30KKwogaW50IFJlbmRlckZyYW1lU2V0OjpzcGxpdFBvc2l0aW9uKGNvbnN0IEdyaWRBeGlz
JiBheGlzLCBpbnQgc3BsaXQpIGNvbnN0CiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgJKHJldmlzaW9uIDQxMTIyKQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5SZXNpemVSb3coY29uc3QgSW50UG9pbnQmKSBjb25z
dDsKICAgICBib29sIGNhblJlc2l6ZUNvbHVtbihjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisg
ICAgdm9pZCBjaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IGludCBub1NwbGl0ID0gLTE7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxMTIyKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MDktMDItMjEgIEJvIFlhbmcgIDx0ZWNocmF6eS55YW5nQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKworICAgICAgICBUZXN0IHRoZSBmcmFtZSdzIG5v
UmVzaXplIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL2ZyYW1lLW5vcmVzaXpl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNp
emUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLW5v
cmVzaXplLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAyLTIxICBIaXJvbm9yaSBCb25v
ICA8aGJvbm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9z
a3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1ub3Jlc2l6ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUt
bm9yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZnJhbWUtbm9yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK0FMRVJUOiBPbmUgIGlzIHJlc2l6YWJsZQorQUxFUlQ6IE9uZSAgaXMgbm8gcmVzaXph
YmxlCitBTEVSVDogT25lICBpcyByZXNpemFibGUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZnJhbWUtbm9yZXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9mcmFtZS1ub3Jlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MCBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2
YXIgUlMgPSAiaXMgcmVzaXphYmxlIjsKKyAgICAgICAgICAgIHZhciBOUiA9ICJpcyBubyByZXNp
emFibGUiOworCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAg
ICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBpbml0LCBmYWxzZSk7CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGxvZyhmcmFtZSwgc3VjY2VzcykgeworICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgaWYg
KHN1Y2Nlc3MgJiYgIWZyYW1lLm5vUmVzaXplKQorICAgICAgICAgICAgICAgICAgICB2YXIgbWVz
c2FnZSA9IFJTOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdWNjZXNzICYmIGZyYW1lLm5v
UmVzaXplKQorICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IE5SOworICAgICAgICAg
ICAgICAgIGFsZXJ0KGZyYW1lLm5hbWUgKyAiICAiICsgbWVzc2FnZSk7CisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJPbmUiKTsKKwor
ICAgICAgICAgICAgICAgICAgICAvL1RyeSB0byBtb3ZlIHRoZSBmaXJzdCB2ZXJ0aWNhbCByZXNp
emVyIHRlbiBwaXhlbHMgd2VzdC4uLgorICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyg0MDAsIDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg0
MTAsIDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgICAgICAgICAgICAgbG9nKGZyYW1lLCBPbmUuZnJhbWVFbGVtZW50LndpZHRoID09IDQx
MCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy9NYWtlIHRoZSBmaXJzdCB2ZXJ0aWNhbCByZXNp
emVyIGZyZWV6ZQorICAgICAgICAgICAgICAgICAgICBmcmFtZS5ub1Jlc2l6ZSA9IHRydWU7CisK
KyAgICAgICAgICAgICAgICAgICAgLy9UcnkgdG8gbW92ZSBhZ2FpbgorICAgICAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg0MTAsIDQwMCk7CisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyg0MjAsIDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nKGZyYW1lLCBPbmUuZnJhbWVF
bGVtZW50LndpZHRoID09IDQyMCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy9NYWtlIHRoZSBm
aXJzdCB2ZXJ0aWNhbCByZXNpemVyIG1vdmFibGUKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUu
bm9SZXNpemUgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICAvL1RyeSB0byBtb3ZlIGFn
YWluCisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDQxMCwgNDAw
KTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDQyMCwgNDAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgICAgICAgICBs
b2coZnJhbWUsIE9uZS5mcmFtZUVsZW1lbnQud2lkdGggPT0gNDIwKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
ZnJhbWVzZXQgY29scz0nNDAwLConPgorICAgICAgICA8ZnJhbWUgaWQ9Ik9uZSIgZnJhbWVtYXJn
aW49MCBmcmFtZWJvcmRlcj0xIG5hbWU9Ik9uZSIgZnJhbWVzcGFjaW5nPTEgc3JjPSJyZXNvdXJj
ZXMvZnJhbWUtbm9yZXNpemUtc3ViZnJhbWUuaHRtbCIvPgorICAgICAgICA8ZnJhbWUgZnJhbWVt
YXJnaW49MCBmcmFtZWJvcmRlcj0xIG5hbWU9IlR3byIgZnJhbWVzcGFjaW5nPTEgLz4KKyAgICA8
L2ZyYW1lc2V0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2ZyYW1lLW5vcmVzaXplLXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLW5vcmVzaXplLXN1YmZyYW1lLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvZnJhbWUtbm9y
ZXNpemUtc3ViZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGRpc2FibGVSZXNpemUoKSB7CisgICAgICAgICAgICAgICAgcGFy
ZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJPbmUiKS5ub1Jlc2l6ZSA9IHRydWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGVuYWJsZVJlc2l6ZSgpIHsKKyAgICAg
ICAgICAgICAgICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk9uZSIpLm5vUmVzaXpl
ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KworICAgIDxib2R5PgorICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJkaXNh
YmxlUmVzaXplKCkiIHZhbHVlPSJObyByZXNpemUiIC8+CisgICAgICAgIDxpbnB1dCB0eXBlPSJi
dXR0b24iIG9uY2xpY2s9ImVuYWJsZVJlc2l6ZSgpIiB2YWx1ZT0iUmVzaXplIiAvPgorICAgICAg
ICA8cD5UcnkgdG8gcmVzaXplIHRoZSBmcmFtZXMuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27859</attachid>
            <date>2009-02-22 04:59:59 -0800</date>
            <delta_ts>2011-03-26 23:16:28 -0700</delta_ts>
            <desc>A better version</desc>
            <filename>14845.patch</filename>
            <type>text/plain</type>
            <size>8421</size>
            <attacher name="Bo Yang">techrazy.yang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTEyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMDktMDItMjEgIEJvIFlhbmcgIDx0ZWNocmF6eS55YW5nQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKyAgICAgICAgVGVz
dDogZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNpemUuaHRtbAorCisgICAgICAgIE5vdGlmeSB0aGUg
cGFyZW50IEhUTUxGcmFtZVNldEVsZW1lbnQgd2hlbiBIVE1MRnJhbWVFbGVtZW50J3MKKyAgICAg
ICAgbm9SZXNpemUgYXR0cmlidXRlIGlzIHNldC4KKworICAgICAgICAqIGh0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6Y2hpbGRSZXNp
emVNb2RlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYW1lU2V0OjpjaGlsZFJlc2l6ZU1vZGVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuaDoKKwogMjAwOS0wMi0yMSAgSGlyb25vcmkgQm9ubyAgPGhi
b25vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA0
MTEyMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw4ICsxMjYsMTEgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFy
c2VNYXBwZWRBdAogICAgICAgICBtX21hcmdpbkhlaWdodCA9IGF0dHItPnZhbHVlKCkudG9JbnQo
KTsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhh
cyBubyBlZmZlY3QuCiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm9yZXNpemVBdHRy
KSB7Ci0gICAgICAgIG1fbm9SZXNpemUgPSB0cnVlOwotICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
YXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KKyAgICAgICAgbV9ub1Jl
c2l6ZSA9ICFhdHRyLT5pc051bGwoKTsKKyAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgcGFyZW50
Tm9kZSgpLT5yZW5kZXJlcigpLT5pc0ZyYW1lU2V0KCkpIHsKKyAgICAgICAgICAgIEhUTUxGcmFt
ZVNldEVsZW1lbnQqIGZzID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lU2V0RWxlbWVudCo+KHBhcmVu
dE5vZGUoKSk7CisgICAgICAgICAgICBmcy0+Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCgpOworICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2Nyb2xsaW5nQXR0cikgewog
ICAgICAgICAvLyBBdXRvIGFuZCB5ZXMgYm90aCBzaW1wbHkgbWVhbiAiYWxsb3cgc2Nyb2xsaW5n
LiIgTm8gbWVhbnMgImRvbid0IGFsbG93IHNjcm9sbGluZy4iCiAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJ5ZXMiKSkKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAJKHJldmlzaW9uIDQxMTIyKQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNCArMjEzLDEwIEBAIHZvaWQgSFRNTEZyYW1lU2V0
RWxlbWVudDo6c2V0Um93cyhjb25zdCAKICAgICBzZXRBdHRyaWJ1dGUocm93c0F0dHIsIHZhbHVl
KTsKIH0KIAordm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50OjpjaGlsZFJlc2l6ZU1vZGVDaGFuZ2Vk
KCkKK3sKKyAgICBpZiAoYXR0YWNoZWQoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyRnJh
bWVTZXQqPihyZW5kZXJlcigpKS0+Y2hpbGRSZXNpemVNb2RlQ2hhbmdlZCgpOworfQorCiB9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHJldmlzaW9uIDQxMTIyKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiAr
NjksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgTGVuZ3RoKiByb3dMZW5ndGhzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb3dzOyB9CiAgICAgY29uc3QgTGVuZ3RoKiBjb2xMZW5ndGhzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xzOyB9CiAKKyAgICB2b2lkIGNoaWxkUmVzaXplTW9kZUNoYW5nZWQoKTsKKwog
cHJpdmF0ZToKICAgICBMZW5ndGgqIG1fcm93czsKICAgICBMZW5ndGgqIG1fY29sczsKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDQxMTIyKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTks
NiArNjE5LDExIEBAIGJvb2wgUmVuZGVyRnJhbWVTZXQ6OmNhblJlc2l6ZUNvbHVtbihjb24KICAg
ICByZXR1cm4gYyAhPSBub1NwbGl0ICYmIG1fY29scy5tX2FsbG93Qm9yZGVyW2NdICYmICFtX2Nv
bHMubV9wcmV2ZW50UmVzaXplW2NdOwogfQogCit2b2lkIFJlbmRlckZyYW1lU2V0OjpjaGlsZFJl
c2l6ZU1vZGVDaGFuZ2VkKCkKK3sKKyAgICBjb21wdXRlRWRnZUluZm8oKTsKK30KKwogaW50IFJl
bmRlckZyYW1lU2V0OjpzcGxpdFBvc2l0aW9uKGNvbnN0IEdyaWRBeGlzJiBheGlzLCBpbnQgc3Bs
aXQpIGNvbnN0CiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0KCkpCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFtZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmgJKHJldmlzaW9uIDQxMTIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjYW5SZXNpemVSb3coY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBib29sIGNh
blJlc2l6ZUNvbHVtbihjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisgICAgdm9pZCBjaGlsZFJl
c2l6ZU1vZGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBub1Nw
bGl0ID0gLTE7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxMTIyKQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDItMjEgIEJvIFlh
bmcgIDx0ZWNocmF6eS55YW5nQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ4NDUKKworICAgICAgICBUZXN0IHRoZSBmcmFtZSdzIG5vUmVzaXplIGF0dHJpYnV0
ZS4KKworICAgICAgICAqIGZhc3QvZnJhbWVzL2ZyYW1lLW5vcmVzaXplLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNpemUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLW5vcmVzaXplLXN1YmZyYW1l
Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTAyLTIxICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1ub3Jlc2l6ZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtbm9yZXNpemUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtbm9y
ZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0FMRVJUOiBP
bmUgIGlzIHJlc2l6YWJsZQorQUxFUlQ6IE9uZSAgaXMgbm8gcmVzaXphYmxlCitBTEVSVDogT25l
ICBpcyByZXNpemFibGUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtbm9y
ZXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1u
b3Jlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJh
bWUtbm9yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgUlMgPSAiaXMgcmVz
aXphYmxlIjsKKyAgICAgICAgICAgIHZhciBOUiA9ICJpcyBubyByZXNpemFibGUiOworCisgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBpbml0LCBmYWxzZSk7CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGxvZyhmcmFtZSwgc3VjY2VzcykgeworICAgICAgICAgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIWZy
YW1lLm5vUmVzaXplKQorICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IFJTOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFzdWNjZXNzICYmIGZyYW1lLm5vUmVzaXplKQorICAgICAg
ICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IE5SOworICAgICAgICAgICAgICAgIGFsZXJ0KGZy
YW1lLm5hbWUgKyAiICAiICsgbWVzc2FnZSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBm
cmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJPbmUiKTsKKworICAgICAgICAgICAgICAg
ICAgICAvL1RyeSB0byBtb3ZlIHRoZSBmaXJzdCB2ZXJ0aWNhbCByZXNpemVyIHRlbiBwaXhlbHMg
d2VzdC4uLgorICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg0MDAs
IDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
ICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg0MTAsIDQwMCk7CisgICAg
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbG9nKGZyYW1lLCBPbmUuZnJhbWVFbGVtZW50LndpZHRoID09IDQxMCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy9NYWtlIHRoZSBmaXJzdCB2ZXJ0aWNhbCByZXNpemVyIGZyZWV6ZQorICAg
ICAgICAgICAgICAgICAgICBmcmFtZS5ub1Jlc2l6ZSA9IHRydWU7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy9UcnkgdG8gbW92ZSBhZ2FpbgorICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyg0MTAsIDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byg0MjAsIDQwMCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICAgICAgICAgICAgICAgICAgbG9nKGZyYW1lLCBPbmUuZnJhbWVFbGVtZW50LndpZHRoID09
IDQyMCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy9NYWtlIHRoZSBmaXJzdCB2ZXJ0aWNhbCBy
ZXNpemVyIG1vdmFibGUKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUubm9SZXNpemUgPSBmYWxz
ZTsKKworICAgICAgICAgICAgICAgICAgICAvL1RyeSB0byBtb3ZlIGFnYWluCisgICAgICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDQxMCwgNDAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDQyMCwgNDAwKTsKKyAgICAgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgICAgICAgICBsb2coZnJhbWUsIE9uZS5m
cmFtZUVsZW1lbnQud2lkdGggPT0gNDIwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8ZnJhbWVzZXQgY29scz0n
NDAwLConPgorICAgICAgICA8ZnJhbWUgaWQ9Ik9uZSIgZnJhbWVtYXJnaW49MCBmcmFtZWJvcmRl
cj0xIG5hbWU9Ik9uZSIgZnJhbWVzcGFjaW5nPTEgc3JjPSJyZXNvdXJjZXMvZnJhbWUtbm9yZXNp
emUtc3ViZnJhbWUuaHRtbCIvPgorICAgICAgICA8ZnJhbWUgZnJhbWVtYXJnaW49MCBmcmFtZWJv
cmRlcj0xIG5hbWU9IlR3byIgZnJhbWVzcGFjaW5nPTEgLz4KKyAgICA8L2ZyYW1lc2V0PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLW5vcmVz
aXplLXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2ZyYW1lLW5vcmVzaXplLXN1YmZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvZnJhbWUtbm9yZXNpemUtc3ViZnJhbWUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgIGZ1bmN0
aW9uIGRpc2FibGVSZXNpemUoKSB7CisgICAgICAgICAgICAgICAgcGFyZW50LmRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJPbmUiKS5ub1Jlc2l6ZSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGVuYWJsZVJlc2l6ZSgpIHsKKyAgICAgICAgICAgICAgICBwYXJl
bnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk9uZSIpLm5vUmVzaXplID0gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAgIDxib2R5Pgor
ICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJkaXNhYmxlUmVzaXplKCkiIHZh
bHVlPSJObyByZXNpemUiIC8+CisgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9
ImVuYWJsZVJlc2l6ZSgpIiB2YWx1ZT0iUmVzaXplIiAvPgorICAgICAgICA8cD5UcnkgdG8gcmVz
aXplIHRoZSBmcmFtZXMuPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="13558"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87056</attachid>
            <date>2011-03-26 23:16:28 -0700</date>
            <delta_ts>2011-04-15 17:09:50 -0700</delta_ts>
            <desc>Patch and test cases</desc>
            <filename>bug14845.patch</filename>
            <type>text/plain</type>
            <size>16186</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyMDU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMjYgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZyYW1lJ3Mgbm9SZXNpemUgYXR0cmlidXRlIGNhbiBub3QgYmUgc2V0
IGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODQ1CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1t
YXRpYy1ub3Jlc2l6ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9mcmFtZS13aXRo
LW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVz
aXplZC1hZnRlci1zZXR0aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKKworICAgICAgICBJbXBs
ZW1lbnRzIHN1cHBvcnQgdG8gcHJvZ3JhbW1hdGljYWxseSBhbGxvdyBhbmQgZGlzYWxsb3cgZnJh
bWUgcmVzaXppbmcuCisKKyAgICAgICAgQ3VycmVudGx5LCBIVE1MRnJhbWVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSgpIGlzIGhhcmRjb2RlZCB0byBkaXNhbGxvdyBmcmFtZSByZXNpemUg
KGkuZS4KKyAgICAgICAgbV9ub1Jlc2l6ZSA9IHRydWUpIHdoZW4gZWl0aGVyIHRoZSBub3Jlc2l6
ZSBET00gYXR0cmlidXRlIGlzIHNwZWNpZmllZCAob3IgZXhpc3RlZCBhdCBzb21lCisgICAgICAg
IHBvaW50IGluIHRpbWUpIG9yIHRoZSB2YWx1ZSBvZiB0aGUgbm9SZXNpemUgYXR0cmlidXRlIGlz
IG1vZGlmaWVkLiBJbnN0ZWFkIHdlIHNob3VsZCBhbGxvdy9kaXNhbGxvdworICAgICAgICBmcmFt
ZSByZXNpemUgZGVwZW5kaW5nIG9uIHRoZSBwcmVzZW5jZSBvZiB0aGUgbm9yZXNpemUgRE9NIGF0
dHJpYnV0ZS90aGUgdmFsdWUgb2YgdGhlIG5vUmVzaXplCisgICAgICAgIGF0dHJpYnV0ZS4KKwor
ICAgICAgICAqIGh0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0Lmg6IEV4cG9zZSBjb21wdXRlRWRnZUluZm8oKSBzbyB0aGF0IGl0
IGNhbiBiZSBjYWxsZWQgZnJvbQorICAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKCkuCisKIDIwMTEtMDMtMjYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDgxNTY1KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcs
MTAgKzg3LDEyIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAg
ICAgICAgbV9mcmFtZUJvcmRlclNldCA9ICFhdHRyLT5pc051bGwoKTsKICAgICAgICAgLy8gRklY
TUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm9yZXNpemVBdHRyKSB7Ci0gICAgICAgIG1fbm9S
ZXNpemUgPSB0cnVlOwotICAgICAgICAvLyBGSVhNRTogSWYgd2UgYXJlIGFscmVhZHkgYXR0YWNo
ZWQsIHRoaXMgaGFzIG5vIGVmZmVjdC4KLSAgICAgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgZG9l
cyBub3QgY2hlY2sgYXR0ci0+aXNOdWxsKCksIGl0IGNhbgotICAgICAgICAvLyBuZXZlciByZXNl
dCBtX25vUmVzaXplIHRvIGZhbHNlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgcmVtb3ZlZC4KKyAgICAg
ICAgbV9ub1Jlc2l6ZSA9ICFhdHRyLT5pc051bGwoKTsgLy8gVGhpcyB3aWxsIGV2YWx1YXRlIHRv
IGZhbHNlIHdoZW4gZnJhbWUubm9SZXNpemUgOj0gZmFsc2UsIHdoaWNoIGlzIHdoYXQgd2Ugd2Fu
dC4KKyAgICAgICAgaWYgKEhUTUxGcmFtZVNldEVsZW1lbnQqIGZyYW1lU2V0RWxlbWVudCA9IGNv
bnRhaW5pbmdGcmFtZVNldEVsZW1lbnQodGhpcykpIHsKKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogZnJhbWVTZXRSZW5kZXJlciA9IGZyYW1lU2V0RWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgICAgIGlmIChmcmFtZVNldFJlbmRlcmVyICYmIGZyYW1lU2V0UmVuZGVyZXItPmlzRnJhbWVT
ZXQoKSkKKyAgICAgICAgICAgICAgICB0b1JlbmRlckZyYW1lU2V0KGZyYW1lU2V0UmVuZGVyZXIp
LT5jb21wdXRlRWRnZUluZm8oKTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAkocmV2aXNpb24gODE1NjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAKICAgICBGcmFtZUVkZ2VJbmZv
IGVkZ2VJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBjb21wdXRlRWRnZUluZm8oKTsKIAogICAgIGJv
b2wgdXNlclJlc2l6ZShNb3VzZUV2ZW50Kik7CiAKQEAgLTEwNCw3ICsxMDUsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0SXNSZXNpemluZyhib29sKTsKIAogICAgIHZvaWQgbGF5T3V0QXhpcyhH
cmlkQXhpcyYsIGNvbnN0IExlbmd0aCosIGludCBhdmFpbGFibGVTcGFjZSk7Ci0gICAgdm9pZCBj
b21wdXRlRWRnZUluZm8oKTsKICAgICB2b2lkIGZpbGxGcm9tRWRnZUluZm8oY29uc3QgRnJhbWVF
ZGdlSW5mbyYgZWRnZUluZm8sIGludCByLCBpbnQgYyk7CiAgICAgdm9pZCBwb3NpdGlvbkZyYW1l
cygpOwogICAgIHZvaWQgcG9zaXRpb25GcmFtZXNXaXRoRmxhdHRlbmluZygpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gODIwNTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwzMSBAQAorMjAxMS0wMy0yNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnJh
bWUncyBub1Jlc2l6ZSBhdHRyaWJ1dGUgY2FuIG5vdCBiZSBzZXQgYnkgSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDUKKworICAg
ICAgICBUZXN0cyB0aGF0IGZyYW1lIHJlc2l6aW5nIGlzIGFsbG93ZWQgYW5kIGRpc2FsbG93ZWQg
ZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbm9SZXNpemUgcHJvcGVydHkuCisKKyAgICAg
ICAgQWxzbywgdGVzdHMgdG8gZW5zdXJlIHRoYXQgZnJhbWUgcmVzaXppbmcgaXMgYWxsb3dlZCBh
bmQgZGlzYWxsb3dlZCB3aGVuIHByb2dyYW1tYXRpY2FsbHkKKyAgICAgICAgcmVtb3ZpbmcgYW5k
IGFkZGluZyB0aGUgbm9yZXNpemUgYXR0cmlidXRlLCByZXNwZWN0aXZlbHkuCisKKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1j
YW4tYmUtcmVzaXplZC1hZnRlci1yZW1vdmFsLW9mLW5vcmVzaXplLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVz
aXplZC1hZnRlci1yZW1vdmFsLW9mLW5vcmVzaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItc2V0dGlu
Zy1ub1Jlc2l6ZS10by1mYWxzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItc2V0dGluZy1u
b1Jlc2l6ZS10by1mYWxzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNv
dXJjZXMvZnJhbWUtcHJvZ3JhbW1hdGljLXJlc2l6ZS5qczogQWRkZWQuCisgICAgICAgIChzZXRU
ZXN0RnJhbWVCeUlkKToKKyAgICAgICAgKGRlbHRhV2lkdGgpOgorICAgICAgICAoc2hvdWxkRGlz
YWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKToKKyAgICAgICAgKHNob3VsZEFs
bG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZSk6CisgICAgICAgIChjaGVja1Rlc3RG
cmFtZVdpZHRoRXF1YWxzKToKKyAgICAgICAgKHJlc2l6ZVRlc3RGcmFtZUJ5KToKKyAgICAgICAg
KGxvZyk6CisgICAgICAgIChkZXNjcmlwdGlvbik6CisKIDIwMTEtMDMtMjYgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hv
d2lhay4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1tYXRpYy1u
b3Jlc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvZnJhbWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKworCistLS0tLS0tLQor
RnJhbWU6ICd0ZXN0RnJhbWUnCistLS0tLS0tLQorCisKKy0tLS0tLS0tCitGcmFtZTogJ3Jlc3Vs
dHMnCistLS0tLS0tLQorVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHJlc2l6aW5nIGlzIGFsbG93ZWQg
YW5kIGRpc2FsbG93ZWQgd2hlbiBwcm9ncmFtbWF0aWNhbGx5IHJlbW92aW5nIGFuZCBhZGRpbmcg
dGhlIG5vcmVzaXplIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5LgorCitUZXN0IGRpc2FsbG93IGZy
YW1lIHJlc2l6ZSB2aWEgbm9SZXNpemUgSURMIGF0dHJpYnV0ZToKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlzIDIwMAorCitUZXN0IGFsbG93IGZyYW1l
IHJlc2l6ZSB3aGVuIG5vUmVzaXplIElETCBhdHRyaWJ1dGUgaGFzIHZhbHVlIHVuZGVmaW5lZDoK
K1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlzIDIxMAor
CitUZXN0IGFsbG93IGZyYW1lIHJlc2l6ZSB3aGVuIG5vUmVzaXplIElETCBhdHRyaWJ1dGUgaGFz
IHZhbHVlIG51bGw6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53
aWR0aCBpcyAyMjAKKworVGVzdCBkaXNhbGxvdyBmcmFtZSByZXNpemUgdmlhIG5vcmVzaXplIGNv
bnRlbnQgYXR0cmlidXRlOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1l
Iikud2lkdGggaXMgMjIwCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUi
KS53aWR0aCBpcyAyMjAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIp
LndpZHRoIGlzIDIyMAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIiku
d2lkdGggaXMgMjIwCisKK1Rlc3QgZGlzYWxsb3cgdGhlbiBhbGxvdyBmcmFtZSByZXNpemUgdmlh
IG5vUmVzaXplIElETCBhdHRyaWJ1dGUgKGkuZS4gaW5jcmVhc2UgZnJhbWUgd2lkdGggYnkgMTAg
cGl4ZWxzKToKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRo
IGlzIDIyMAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikud2lkdGgg
aXMgMjMwCisKK1Rlc3QgZGlzYWxsb3cgdGhlbiBhbGxvdyBmcmFtZSByZXNpemUgdmlhIG5vcmVz
aXplIGNvbnRlbnQgYXR0cmlidXRlIChpLmUuIGluY3JlYXNlIGZyYW1lIHdpZHRoIGJ5IDEwIHBp
eGVscyk6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBp
cyAyMzAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlz
IDI0MAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMt
bm9yZXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFt
ZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9mcmFtZS1wcm9ncmFtbWF0aWMtcmVzaXplLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworfQorCit3aW5kb3cub25sb2FkID0gcnVuVGVzdHM7CisKK2Z1bmN0aW9uIHJ1blRl
c3RzKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOyAv
LyBDYW5ub3QgcnVuIHRoaXMgdGVzdCB3aXRob3V0IERSVC4KKworICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgZnJhbWUgcmVzaXppbmcgaXMgYWxsb3dlZCBhbmQgZGlzYWxsb3dlZCB3
aGVuIHByb2dyYW1tYXRpY2FsbHkgcmVtb3ZpbmcgYW5kIGFkZGluZyB0aGUgbm9yZXNpemUgYXR0
cmlidXRlLCByZXNwZWN0aXZlbHkuIik7CisgICAgc2V0VGVzdEZyYW1lQnlJZCgidGVzdEZyYW1l
Iik7CisKKyAgICBsb2coIlRlc3QgZGlzYWxsb3cgZnJhbWUgcmVzaXplIHZpYSBub1Jlc2l6ZSBJ
REwgYXR0cmlidXRlOiIpOworICAgIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nl
c3NpbmdGcmFtZShmdW5jdGlvbihmcmFtZSkgeyBmcmFtZS5ub1Jlc2l6ZSA9IHRydWUgfSk7CisK
KyAgICBsb2coIlxuVGVzdCBhbGxvdyBmcmFtZSByZXNpemUgd2hlbiBub1Jlc2l6ZSBJREwgYXR0
cmlidXRlIGhhcyB2YWx1ZSB1bmRlZmluZWQ6Iik7CisgICAgc2hvdWxkQWxsb3dGcmFtZVJlc2l6
ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9uKGZyYW1lKSB7IGZyYW1lLm5vUmVzaXplID0g
dW5kZWZpbmVkIH0pOworCisgICAgbG9nKCJcblRlc3QgYWxsb3cgZnJhbWUgcmVzaXplIHdoZW4g
bm9SZXNpemUgSURMIGF0dHJpYnV0ZSBoYXMgdmFsdWUgbnVsbDoiKTsKKyAgICBzaG91bGRBbGxv
d0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUu
bm9SZXNpemUgPSBudWxsIH0pOworCisgICAgbG9nKCJcblRlc3QgZGlzYWxsb3cgZnJhbWUgcmVz
aXplIHZpYSBub3Jlc2l6ZSBjb250ZW50IGF0dHJpYnV0ZToiKTsKKyAgICAvLyBOb3RlLCBub3Jl
c2l6ZSBpcyBhIGJvb2xlYW4gYXR0cmlidXRlLiBUaGF0IGlzLCBpdHMgcHJlc2VuY2UgaW5kaWNh
dGVzIHRydWUgcmVnYXJkbGVzcyBvZiBpdHMgdmFsdWUuCisgICAgc2hvdWxkRGlzYWxsb3dGcmFt
ZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9uKGZyYW1lKSB7IGZyYW1lLnNldEF0
dHJpYnV0ZSgibm9yZXNpemUiLCAidHJ1ZSIpIH0pOworICAgIHNob3VsZERpc2FsbG93RnJhbWVS
ZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5jdGlvbihmcmFtZSkgeyBmcmFtZS5zZXRBdHRy
aWJ1dGUoIm5vcmVzaXplIiwgImZhbHNlIikgfSk7CisgICAgc2hvdWxkRGlzYWxsb3dGcmFtZVJl
c2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9uKGZyYW1lKSB7IGZyYW1lLnNldEF0dHJp
YnV0ZSgibm9yZXNpemUiLCAiZHVtbXkiKSB9KTsKKyAgICBzaG91bGREaXNhbGxvd0ZyYW1lUmVz
aXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUuc2V0QXR0cmli
dXRlKCJub3Jlc2l6ZSIsIFN0cmluZygpKSB9KTsKKworICAgIGxvZygiXG5UZXN0IGRpc2FsbG93
IHRoZW4gYWxsb3cgZnJhbWUgcmVzaXplIHZpYSBub1Jlc2l6ZSBJREwgYXR0cmlidXRlIChpLmUu
IGluY3JlYXNlIGZyYW1lIHdpZHRoIGJ5ICIgKyBkZWx0YVdpZHRoKCkgKyAiIHBpeGVscyk6Iik7
CisgICAgc2hvdWxkRGlzYWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0
aW9uKGZyYW1lKSB7IGZyYW1lLm5vUmVzaXplID0gdHJ1ZSB9KTsKKyAgICBzaG91bGRBbGxvd0Zy
YW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUubm9S
ZXNpemUgPSBmYWxzZSB9KTsKKworICAgIGxvZygiXG5UZXN0IGRpc2FsbG93IHRoZW4gYWxsb3cg
ZnJhbWUgcmVzaXplIHZpYSBub3Jlc2l6ZSBjb250ZW50IGF0dHJpYnV0ZSAoaS5lLiBpbmNyZWFz
ZSBmcmFtZSB3aWR0aCBieSAiICsgZGVsdGFXaWR0aCgpICsgIiBwaXhlbHMpOiIpOworICAgIHNo
b3VsZERpc2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5jdGlvbihmcmFt
ZSkgeyBmcmFtZS5zZXRBdHRyaWJ1dGUoIm5vcmVzaXplIiwgInRydWUiKSB9KTsKKyAgICBzaG91
bGRBbGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsg
ZnJhbWUucmVtb3ZlQXR0cmlidXRlKCJub3Jlc2l6ZSIpIH0pOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8ZnJhbWVzZXQgY29scz0iMjAwLCoiIGJvcmRlcj0iMTAiPgorICAgIDxmcmFtZSBpZD0i
dGVzdEZyYW1lIiBzcmM9ImFib3V0OmJsYW5rIj4KKyAgICA8ZnJhbWUgaWQ9InJlc3VsdHMiIHNy
Yz0iZGF0YTp0ZXh0L2h0bWwsPHAgaWQ9J2Rlc2NyaXB0aW9uJz5UaGlzIHRlc3QgY2FuIG9ubHkg
YmUgcnVuIHVzaW5nIERSVC48L3A+PHByZSBpZD0nY29uc29sZSc+PC9wcmU+Ij4KKzwvZnJhbWVz
ZXQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5v
cmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9y
ZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5v
cmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACisKKworLS0tLS0tLS0KK0ZyYW1lOiAn
dGVzdEZyYW1lJworLS0tLS0tLS0KKworCistLS0tLS0tLQorRnJhbWU6ICdyZXN1bHRzJworLS0t
LS0tLS0KK1RoaXMgdGVzdHMgdGhhdCBhIGZyYW1lIHdpdGggYSBzb3VyY2UgY29kZS1zcGVjaWZp
ZWQgbm9yZXNpemUgYXR0cmlidXRlIGNhbiBiZSByZXNpemVkIGFmdGVyIHByb2dyYW1tYXRpY2Fs
bHkgcmVtb3ZpbmcgaXRzIG5vcmVzaXplIGF0dHJpYnV0ZS4KKworUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdEZyYW1lIikud2lkdGggaXMgMjEwCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVt
b3ZhbC1vZi1ub3Jlc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJh
bWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1u
b3Jlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJh
bWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1vdmFsLW9mLW5vcmVzaXpl
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2ZyYW1lLXByb2dyYW1tYXRpYy1yZXNpemUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBydW5UZXN0czsK
KworZnVuY3Rpb24gcnVuVGVzdHMoKQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQor
ICAgICAgICByZXR1cm47IC8vIENhbm5vdCBydW4gdGhpcyB0ZXN0IHdpdGhvdXQgRFJULgorCisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIGZyYW1lIHdpdGggYSBzb3VyY2UgY29k
ZS1zcGVjaWZpZWQgbm9yZXNpemUgYXR0cmlidXRlIGNhbiBiZSByZXNpemVkIGFmdGVyIHByb2dy
YW1tYXRpY2FsbHkgcmVtb3ZpbmcgaXRzIG5vcmVzaXplIGF0dHJpYnV0ZS4iKTsKKyAgICBzZXRU
ZXN0RnJhbWVCeUlkKCJ0ZXN0RnJhbWUiKTsKKyAgICBzaG91bGRBbGxvd0ZyYW1lUmVzaXplQWZ0
ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUucmVtb3ZlQXR0cmlidXRl
KCJub3Jlc2l6ZSIpIH0pOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8ZnJhbWVzZXQgY29scz0i
MjAwLCoiIGJvcmRlcj0iMTAiPgorICAgIDxmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9ImFib3V0
OmJsYW5rIiBub3Jlc2l6ZT4KKyAgICA8ZnJhbWUgaWQ9InJlc3VsdHMiIHNyYz0iZGF0YTp0ZXh0
L2h0bWwsPHAgaWQ9J2Rlc2NyaXB0aW9uJz5UaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIHVzaW5n
IERSVC48L3A+PHByZSBpZD0nY29uc29sZSc+PC9wcmU+Ij4KKzwvZnJhbWVzZXQ+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1i
ZS1yZXNpemVkLWFmdGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUt
Y2FuLWJlLXJlc2l6ZWQtYWZ0ZXItc2V0dGluZy1ub1Jlc2l6ZS10by1mYWxzZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5v
cmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACisKKworLS0tLS0tLS0KK0Zy
YW1lOiAndGVzdEZyYW1lJworLS0tLS0tLS0KKworCistLS0tLS0tLQorRnJhbWU6ICdyZXN1bHRz
JworLS0tLS0tLS0KK1RoaXMgdGVzdHMgdGhhdCBhIGZyYW1lIHdpdGggYSBzb3VyY2UgY29kZS1z
cGVjaWZpZWQgbm9yZXNpemUgYXR0cmlidXRlIGNhbiBiZSByZXNpemVkIGFmdGVyIHNldHRpbmcg
ZnJhbWUubm9SZXNpemUgdG8gZmFsc2UuCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3RGcmFtZSIpLndpZHRoIGlzIDIxMAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmctbm9SZXNp
emUtdG8tZmFsc2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9m
cmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmctbm9SZXNpemUt
dG8tZmFsc2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zy
YW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItc2V0dGluZy1ub1Jlc2l6ZS10
by1mYWxzZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcmFtZS1wcm9ncmFtbWF0aWMtcmVzaXplLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCit3aW5kb3cub25sb2FkID0gcnVu
VGVzdHM7CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgcnVuIHRoaXMgdGVzdCB3aXRob3V0IERS
VC4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBmcmFtZSB3aXRoIGEgc291
cmNlIGNvZGUtc3BlY2lmaWVkIG5vcmVzaXplIGF0dHJpYnV0ZSBjYW4gYmUgcmVzaXplZCBhZnRl
ciBzZXR0aW5nIGZyYW1lLm5vUmVzaXplIHRvIGZhbHNlLiIpOworICAgIHNldFRlc3RGcmFtZUJ5
SWQoInRlc3RGcmFtZSIpOworICAgIHNob3VsZEFsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3Np
bmdGcmFtZShmdW5jdGlvbihmcmFtZSkgeyBmcmFtZS5ub1Jlc2l6ZSA9IGZhbHNlIH0pOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8ZnJhbWVzZXQgY29scz0iMjAwLCoiIGJvcmRlcj0iMTAiPgor
ICAgIDxmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9ImFib3V0OmJsYW5rIiBub3Jlc2l6ZT4KKyAg
ICA8ZnJhbWUgaWQ9InJlc3VsdHMiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPHAgaWQ9J2Rlc2NyaXB0
aW9uJz5UaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIERSVC48L3A+PHByZSBpZD0nY29u
c29sZSc+PC9wcmU+Ij4KKzwvZnJhbWVzZXQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1hdGljLXJlc2l6ZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1h
dGljLXJlc2l6ZS5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9mcmFtZS1wcm9ncmFtbWF0aWMtcmVzaXplLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYzIEBACit2YXIgX3Rlc3RGcmFtZTsKK3ZhciBfdGVzdEZyYW1lSWQ7IC8vIFdlIGtlZXAg
dGhlIGlkIG9mIHRoZSB0ZXN0IGZyYW1lIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBhIHBlcnNvbiB0
byBpbnRlcnByZXQgdGhlIHRlc3QgcmVzdWx0cy4KKworZnVuY3Rpb24gc2V0VGVzdEZyYW1lQnlJ
ZChpZCkKK3sKKyAgICBfdGVzdEZyYW1lSWQgPSBpZDsKKyAgICBfdGVzdEZyYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpOworfQorCitmdW5jdGlvbiBkZWx0YVdpZHRoKCkKK3sKKyAg
ICByZXR1cm4gMTA7IC8vIEEgcmVzb25hYmxlIGFtb3VudCB0byBiZSBhYmxlIHRvIGRldGVjdCB0
aGF0IHRoZSBmcmFtZSB3aWR0aCBjaGFuZ2VkLgorfQorCitmdW5jdGlvbiBzaG91bGREaXNhbGxv
d0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUocHJvY2Vzc0ZyYW1lRnVuY3Rpb24pCit7
CisgICAgdmFyIGV4cGVjdGVkV2lkdGggPSBfdGVzdEZyYW1lLndpZHRoOworICAgIHByb2Nlc3NG
cmFtZUZ1bmN0aW9uKF90ZXN0RnJhbWUpOworICAgIHJlc2l6ZVRlc3RGcmFtZUJ5KGRlbHRhV2lk
dGgoKSk7CisgICAgY2hlY2tUZXN0RnJhbWVXaWR0aEVxdWFscyhleHBlY3RlZFdpZHRoKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKHBy
b2Nlc3NGcmFtZUZ1bmN0aW9uKQoreworICAgIHZhciBleHBlY3RlZFdpZHRoID0gX3Rlc3RGcmFt
ZS53aWR0aCArIGRlbHRhV2lkdGgoKTsKKyAgICBwcm9jZXNzRnJhbWVGdW5jdGlvbihfdGVzdEZy
YW1lKTsKKyAgICByZXNpemVUZXN0RnJhbWVCeShkZWx0YVdpZHRoKCkpOworICAgIGNoZWNrVGVz
dEZyYW1lV2lkdGhFcXVhbHMoZXhwZWN0ZWRXaWR0aCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrVGVz
dEZyYW1lV2lkdGhFcXVhbHMoZXhwZWN0ZWRXaWR0aCkKK3sKKyAgICBpZiAoX3Rlc3RGcmFtZS53
aWR0aCA9PT0gZXhwZWN0ZWRXaWR0aCkKKyAgICAgICAgbG9nKCdQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCInICsgX3Rlc3RGcmFtZUlkICsgJyIpLndpZHRoIGlzICcgKyBleHBlY3RlZFdp
ZHRoKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygnRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiJyArIF90ZXN0RnJhbWVJZCArICciKS53aWR0aCBzaG91bGQgYmUgJyArIGV4cGVjdGVkV2lk
dGggKyAnLiBXYXMgJyArIF90ZXN0RnJhbWUud2lkdGggKyAnLicpOworfQorCitmdW5jdGlvbiBy
ZXNpemVUZXN0RnJhbWVCeShkZWx0YVdpZHRoSW5QaXhlbHMpCit7CisgICAgdmFyIGJvcmRlcldp
ZHRoID0gcGFyc2VJbnQoX3Rlc3RGcmFtZS5wYXJlbnROb2RlLmdldEF0dHJpYnV0ZSgiYm9yZGVy
IikpOworCisgICAgdmFyIHN0YXJ0WCA9IF90ZXN0RnJhbWUub2Zmc2V0V2lkdGggKyBib3JkZXJX
aWR0aCAvIDI7CisgICAgdmFyIHN0YXJ0WSA9IF90ZXN0RnJhbWUub2Zmc2V0SGVpZ2h0IC8gMjsK
KyAgICB2YXIgZW5kWCA9IHN0YXJ0WCArIGRlbHRhV2lkdGhJblBpeGVsczsKKyAgICB2YXIgZW5k
WSA9IHN0YXJ0WTsKKworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0WCwgc3RhcnRZ
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5sZWFwRm9y
d2FyZCgxMDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFgsIGVuZFkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5jb250ZW50RG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlICsgIlxuIikpOworfQorCitmdW5jdGlvbiBkZXNjcmlwdGlvbihtZXNzYWdlKQor
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuY29udGVudERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkZXNjcmlwdGlvbiIpLmlubmVyVGV4dCA9IG1lc3NhZ2U7Cit9Cg==
</data>
<flag name="review"
          id="79448"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89886</attachid>
            <date>2011-04-15 17:09:50 -0700</date>
            <delta_ts>2011-04-26 16:13:32 -0700</delta_ts>
            <desc>Patch and layout tests</desc>
            <filename>Bug14845_041511.patch</filename>
            <type>text/plain</type>
            <size>22119</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MDM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDQtMTUgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZyYW1lJ3Mgbm9SZXNpemUgYXR0cmlidXRlIGNhbiBub3QgYmUgc2V0
IGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODQ1CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZnJhbWVzL2ZyYW1lLWluaGVyaXQt
bm9yZXNpemUtZnJvbS1mcmFtZXNldC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZyYW1lcy9m
cmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9mcmFt
ZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1vdmFsLW9mLW5v
cmVzaXplLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNp
emUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItc2V0dGluZy1ub1Jlc2l6ZS10by1mYWxzZS5odG1sCisK
KyAgICAgICAgSW1wbGVtZW50cyBzdXBwb3J0IHRvIHByb2dyYW1tYXRpY2FsbHkgYWxsb3cgYW5k
IGRpc2FsbG93IGZyYW1lIHJlc2l6aW5nLgorCisgICAgICAgIEN1cnJlbnRseSwgSFRNTEZyYW1l
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoKSBpcyBoYXJkY29kZWQgdG8gZGlzYWxsb3cg
ZnJhbWUgcmVzaXplIChpLmUuCisgICAgICAgIG1fbm9SZXNpemUgPSB0cnVlKSB3aGVuIGVpdGhl
ciB0aGUgbm9yZXNpemUgRE9NIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgKG9yIGV4aXN0ZWQgYXQg
c29tZQorICAgICAgICBwb2ludCBpbiB0aW1lKSBvciB0aGUgdmFsdWUgb2YgdGhlIG5vUmVzaXpl
IGF0dHJpYnV0ZSBpcyBtb2RpZmllZC4gSW5zdGVhZCB3ZSBzaG91bGQgYWxsb3cvZGlzYWxsb3cK
KyAgICAgICAgZnJhbWUgcmVzaXplIGRlcGVuZGluZyBvbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIG5v
cmVzaXplIERPTSBhdHRyaWJ1dGUvdGhlIHZhbHVlIG9mIHRoZSBub1Jlc2l6ZQorICAgICAgICBh
dHRyaWJ1dGUuCisKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudDo6SFRNTEZyYW1lRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50Ojpub1Jlc2l6ZSk6IE1hZGUgdGhpcyBhIG5vbi1p
bmxpbmUgZnVuY3Rpb24gc2luY2UgdGhpcworICAgICAgICBjb2RlIHBhdGggaXNuJ3QgcGVyZm9y
bWFuY2UgY3JpdGljYWwuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50OjphdHRh
Y2gpOiBSZW1vdmVkIGNvZGUgdG8gaW5oZXJpdCBub3Jlc2l6ZSBhdHRyaWJ1dGUgZnJvbQorICAg
ICAgICBwYXJlbnQgPGZyYW1lc2V0PiBzaW5jZSB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcGFydCBv
ZiBSZW5kZXJGcmFtZVNldDo6Y29tcHV0ZUVkZ2VJbmZvKCkuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9I
VE1MRnJhbWVFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lOjp1cGRhdGVGcm9tRWxlbWVudCk6IEFkZGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6
bm90aWZ5RnJhbWVFZGdlSW5mb0NoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuaDoKKwogMjAxMS0wNC0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDgzOTE2
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNiBAQCBpbmxpbmUgSFRNTEZyYW1lRWxlbWVudDo6SFRNTEZyYW1l
RWxlbWVuCiAgICAgOiBIVE1MRnJhbWVFbGVtZW50QmFzZSh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIG1fZnJhbWVCb3JkZXIodHJ1ZSkKICAgICAsIG1fZnJhbWVCb3JkZXJTZXQoZmFsc2UpCi0g
ICAgLCBtX25vUmVzaXplKGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGZyYW1lVGFn
KSk7CiB9CkBAIC02OCw2ICs2NywxMSBAQCBzdGF0aWMgaW5saW5lIEhUTUxGcmFtZVNldEVsZW1l
bnQqIGNvbnRhCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgSFRNTEZyYW1lRWxlbWVudDo6bm9S
ZXNpemUoKSBjb25zdAoreworICAgIHJldHVybiBoYXNBdHRyaWJ1dGUobm9yZXNpemVBdHRyKTsK
K30KKwogdm9pZCBIVE1MRnJhbWVFbGVtZW50OjphdHRhY2goKQogewogICAgIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjphdHRhY2goKTsKQEAgLTc1LDggKzc5LDYgQEAgdm9pZCBIVE1MRnJhbWVFbGVt
ZW50OjphdHRhY2goKQogICAgIGlmIChIVE1MRnJhbWVTZXRFbGVtZW50KiBmcmFtZVNldEVsZW1l
bnQgPSBjb250YWluaW5nRnJhbWVTZXRFbGVtZW50KHRoaXMpKSB7CiAgICAgICAgIGlmICghbV9m
cmFtZUJvcmRlclNldCkKICAgICAgICAgICAgIG1fZnJhbWVCb3JkZXIgPSBmcmFtZVNldEVsZW1l
bnQtPmhhc0ZyYW1lQm9yZGVyKCk7Ci0gICAgICAgIGlmICghbV9ub1Jlc2l6ZSkKLSAgICAgICAg
ICAgIG1fbm9SZXNpemUgPSBmcmFtZVNldEVsZW1lbnQtPm5vUmVzaXplKCk7CiAgICAgfQogfQog
CkBAIC04NywxMCArODksOCBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmliCiAgICAgICAgIG1fZnJhbWVCb3JkZXJTZXQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB3ZSBhcmUgYWxyZWFkeSBhdHRhY2hlZCwgdGhpcyBoYXMgbm8gZWZmZWN0
LgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5vcmVzaXplQXR0cikgewotICAgICAg
ICBtX25vUmVzaXplID0gdHJ1ZTsKLSAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5
IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCi0gICAgICAgIC8vIEZJWE1FOiBTaW5jZSB0
aGlzIGRvZXMgbm90IGNoZWNrIGF0dHItPmlzTnVsbCgpLCBpdCBjYW4KLSAgICAgICAgLy8gbmV2
ZXIgcmVzZXQgbV9ub1Jlc2l6ZSB0byBmYWxzZSBpZiB0aGUgYXR0cmlidXRlIGlzIHJlbW92ZWQu
CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDgzOTE2KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNGcmFtZUJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVC
b3JkZXI7IH0KIAotICAgIGJvb2wgbm9SZXNpemUoKSBjb25zdCB7IHJldHVybiBtX25vUmVzaXpl
OyB9CisgICAgYm9vbCBub1Jlc2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxGcmFt
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC00OCw4ICs0OCw2
IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZnJhbWVCb3JkZXI7CiAgICAgYm9vbCBtX2ZyYW1l
Qm9yZGVyU2V0OwotCi0gICAgYm9vbCBtX25vUmVzaXplOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCShy
ZXZpc2lvbiA4MzkxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDEyIEBAIEZyYW1lRWRnZUluZm8gUmVuZGVy
RnJhbWU6OmVkZ2VJbmZvKCkgY28KICAgICByZXR1cm4gRnJhbWVFZGdlSW5mbyhlbGVtZW50LT5u
b1Jlc2l6ZSgpLCBlbGVtZW50LT5oYXNGcmFtZUJvcmRlcigpKTsKIH0KIAordm9pZCBSZW5kZXJG
cmFtZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQoreworICAgIGlmIChwYXJlbnQoKSAmJiBwYXJlbnQo
KS0+aXNGcmFtZVNldCgpKQorICAgICAgICB0b1JlbmRlckZyYW1lU2V0KHBhcmVudCgpKS0+bm90
aWZ5RnJhbWVFZGdlSW5mb0NoYW5nZWQoKTsKK30KKwogdm9pZCBSZW5kZXJGcmFtZTo6dmlld0Ns
ZWFyZWQoKQogewogICAgIEhUTUxGcmFtZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZS5oCShyZXZpc2lvbiA4MzkxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlckZyYW1lIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CisKICAgICB2
aXJ0dWFsIHZvaWQgdmlld0NsZWFyZWQoKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gODM5MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODAsNiArMzgwLDE1IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMoR3JpZEF4aXMK
ICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyRnJhbWVTZXQ6Om5vdGlmeUZyYW1lRWRnZUluZm9DaGFu
Z2VkKCkKK3sKKyAgICBpZiAobmVlZHNMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgb25seSByZWNvbXB1dGUgdGhlIGVkZ2UgaW5mbyB3aXRoIHJlc3Bl
Y3QgdG8gdGhlIGZyYW1lIHRoYXQgY2hhbmdlZAorICAgIC8vIGFuZCBpdHMgYWRqYWNlbnQgZnJh
bWUocykgaW5zdGVhZCBvZiByZWNvbXB1dGluZyB0aGUgZWRnZSBpbmZvIGZvciB0aGUgZW50aXJl
IGZyYW1lc2V0LgorICAgIGNvbXB1dGVFZGdlSW5mbygpOworfQorCiB2b2lkIFJlbmRlckZyYW1l
U2V0OjpmaWxsRnJvbUVkZ2VJbmZvKGNvbnN0IEZyYW1lRWRnZUluZm8mIGVkZ2VJbmZvLCBpbnQg
ciwgaW50IGMpCiB7CiAgICAgaWYgKGVkZ2VJbmZvLmFsbG93Qm9yZGVyKExlZnRGcmFtZUVkZ2Up
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgJKHJldmlz
aW9uIDgzOTE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBIVE1MRnJhbWVTZXRFbGVtZW50OwogY2xhc3MgTW91c2VFdmVudDsKK2NsYXNzIFJlbmRl
ckZyYW1lOwogCiBlbnVtIEZyYW1lRWRnZSB7IExlZnRGcmFtZUVkZ2UsIFJpZ2h0RnJhbWVFZGdl
LCBUb3BGcmFtZUVkZ2UsIEJvdHRvbUZyYW1lRWRnZSB9OwogCkBAIC03MCw2ICs3MSw4IEBAIHB1
YmxpYzoKICAgICBib29sIGNhblJlc2l6ZVJvdyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAg
IGJvb2wgY2FuUmVzaXplQ29sdW1uKGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKKyAgICB2b2lk
IG5vdGlmeUZyYW1lRWRnZUluZm9DaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNv
bnN0IGludCBub1NwbGl0ID0gLTE7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0MDM5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEt
MDQtMTUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYW1lJ3Mgbm9SZXNpemUgYXR0cmlidXRl
IGNhbiBub3QgYmUgc2V0IGJ5IEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODQ1CisKKyAgICAgICAgVGVzdHMgdGhhdCBmcmFtZSBy
ZXNpemluZyBpcyBhbGxvd2VkIGFuZCBkaXNhbGxvd2VkIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUg
b2YgdGhlIG5vUmVzaXplIHByb3BlcnR5LgorCisgICAgICAgIEFsc28sIHRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IGZyYW1lIHJlc2l6aW5nIGlzIGFsbG93ZWQgYW5kIGRpc2FsbG93ZWQgd2hlbiBwcm9n
cmFtbWF0aWNhbGx5CisgICAgICAgIHJlbW92aW5nIGFuZCBhZGRpbmcgdGhlIG5vcmVzaXplIGF0
dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtaW5o
ZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9mcmFtZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWw6
IEFkZGVkLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzYw
ND4uCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mcmFtZXMvZnJhbWUtcHJvZ3JhbW1h
dGljLW5vcmVzaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2ZyYW1lLXdp
dGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNp
emUtY2FuLWJlLXJlc2l6ZWQtYWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVk
LWFmdGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFm
dGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLXByb2dyYW1tYXRpYy1yZXNpemUuanM6IEFkZGVkLgor
ICAgICAgICAoc2V0VGVzdEZyYW1lQnlJZCk6CisgICAgICAgIChkZWx0YVdpZHRoKToKKyAgICAg
ICAgKHNob3VsZEFsbG93RnJhbWVSZXNpemUpOgorICAgICAgICAoc2hvdWxkRGlzYWxsb3dGcmFt
ZVJlc2l6ZSk6CisgICAgICAgIChzaG91bGREaXNhbGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNz
aW5nRnJhbWUpOgorICAgICAgICAoc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2lu
Z0ZyYW1lKToKKyAgICAgICAgKGNoZWNrVGVzdEZyYW1lV2lkdGhFcXVhbHMpOgorICAgICAgICAo
cmVzaXplVGVzdEZyYW1lQnkpOgorICAgICAgICAobG9nKToKKyAgICAgICAgKGRlc2NyaXB0aW9u
KToKKwogMjAxMS0wNC0xNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9mcmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLWluaGVyaXQt
bm9yZXNpemUtZnJvbS1mcmFtZXNldC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACisKKworLS0tLS0tLS0K
K0ZyYW1lOiAndGVzdEZyYW1lJworLS0tLS0tLS0KKworCistLS0tLS0tLQorRnJhbWU6ICdyZXN1
bHRzJworLS0tLS0tLS0KK1RoaXMgdGVzdHMgdGhhdCBhIGZyYW1lIGluaGVyaXRzIHRoZSBub3Jl
c2l6ZSBhdHRyaWJ1dGUgb2YgaXRzIHBhcmVudCBmcmFtZXNldCBieSBkZWZhdWx0LiBOb3RlLCB0
aGlzIGJlaGF2aW9yIGRvZXNuJ3Qgc2VlbSB0byBjb25mb3JtIHRvIGFueSBXM0Mgc3BlYyBvciBN
U0ROIGRvY3VtZW50YXRpb24uIFNlZSBXZWJLaXQgQnVnIDU3NjA0LgorCitQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBpcyAyMDAKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtaW5oZXJpdC1ub3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtaW5oZXJpdC1u
b3Jlc2l6ZS1mcm9tLWZyYW1lc2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9mcmFtZS1pbmhlcml0LW5vcmVzaXplLWZyb20tZnJhbWVzZXQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1hdGljLXJlc2l6ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKK30KKword2luZG93Lm9ubG9hZCA9IHJ1blRlc3RzOworCitmdW5jdGlv
biBydW5UZXN0cygpCit7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJl
dHVybjsgLy8gQ2Fubm90IHJ1biB0aGlzIHRlc3Qgd2l0aG91dCBEUlQuCisKKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgZnJhbWUgaW5oZXJpdHMgdGhlIG5vcmVzaXplIGF0dHJp
YnV0ZSBvZiBpdHMgcGFyZW50IGZyYW1lc2V0IGJ5IGRlZmF1bHQuIE5vdGUsIHRoaXMgYmVoYXZp
b3IgZG9lc24ndCBzZWVtIHRvIGNvbmZvcm0gdG8gYW55IFczQyBzcGVjIG9yIE1TRE4gZG9jdW1l
bnRhdGlvbi4gU2VlIFdlYktpdCBCdWcgNTc2MDQuIik7CisgICAgc2V0VGVzdEZyYW1lQnlJZCgi
dGVzdEZyYW1lIik7CisgICAgc2hvdWxkRGlzYWxsb3dGcmFtZVJlc2l6ZSgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8ZnJhbWVzZXQgY29scz0iMjAwLCoiIGJvcmRlcj0iMTAiIG5vcmVzaXpl
PgorICAgIDxmcmFtZSBpZD0idGVzdEZyYW1lIiBzcmM9ImFib3V0OmJsYW5rIj4KKyAgICA8ZnJh
bWUgaWQ9InJlc3VsdHMiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPHAgaWQ9J2Rlc2NyaXB0aW9uJz5U
aGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIHVzaW5nIERSVC48L3A+PHByZSBpZD0nY29uc29sZSc+
PC9wcmU+Ij4KKzwvZnJhbWVzZXQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXByb2dyYW1tYXRpYy1ub3Jlc2l6ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFt
ZS1wcm9ncmFtbWF0aWMtbm9yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM1IEBACisKKworLS0tLS0tLS0KK0ZyYW1lOiAndGVzdEZyYW1lJworLS0tLS0tLS0KKwor
CistLS0tLS0tLQorRnJhbWU6ICdyZXN1bHRzJworLS0tLS0tLS0KK1RoaXMgdGVzdHMgdGhhdCBm
cmFtZSByZXNpemluZyBpcyBhbGxvd2VkIGFuZCBkaXNhbGxvd2VkIHdoZW4gcHJvZ3JhbW1hdGlj
YWxseSByZW1vdmluZyBhbmQgYWRkaW5nIHRoZSBub3Jlc2l6ZSBhdHRyaWJ1dGUsIHJlc3BlY3Rp
dmVseS4KKworVGVzdCBkaXNhbGxvdyBmcmFtZSByZXNpemUgdmlhIG5vUmVzaXplIElETCBhdHRy
aWJ1dGU6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBp
cyAyMDAKKworVGVzdCBhbGxvdyBmcmFtZSByZXNpemUgd2hlbiBub1Jlc2l6ZSBJREwgYXR0cmli
dXRlIGhhcyB2YWx1ZSB1bmRlZmluZWQ6CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0RnJhbWUiKS53aWR0aCBpcyAyMTAKKworVGVzdCBhbGxvdyBmcmFtZSByZXNpemUgd2hlbiBu
b1Jlc2l6ZSBJREwgYXR0cmlidXRlIGhhcyB2YWx1ZSBudWxsOgorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGVzdEZyYW1lIikud2lkdGggaXMgMjIwCisKK1Rlc3QgZGlzYWxsb3cgZnJh
bWUgcmVzaXplIHZpYSBub3Jlc2l6ZSBjb250ZW50IGF0dHJpYnV0ZToKK1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlzIDIyMAorUEFTUyBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikud2lkdGggaXMgMjIwCitQQVNTIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBpcyAyMjAKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlzIDIyMAorCitUZXN0IGRpc2FsbG93IHRo
ZW4gYWxsb3cgZnJhbWUgcmVzaXplIHZpYSBub1Jlc2l6ZSBJREwgYXR0cmlidXRlIChpLmUuIGlu
Y3JlYXNlIGZyYW1lIHdpZHRoIGJ5IDEwIHBpeGVscyk6CitQQVNTIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBpcyAyMjAKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlzIDIzMAorCitUZXN0IGRpc2FsbG93IHRoZW4gYWxs
b3cgZnJhbWUgcmVzaXplIHZpYSBub3Jlc2l6ZSBjb250ZW50IGF0dHJpYnV0ZSAoaS5lLiBpbmNy
ZWFzZSBmcmFtZSB3aWR0aCBieSAxMCBwaXhlbHMpOgorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEZyYW1lIikud2lkdGggaXMgMjMwCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBpcyAyNDAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvZnJhbWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtcHJvZ3JhbW1hdGljLW5vcmVzaXplLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS1wcm9ncmFtbWF0aWMt
bm9yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1hdGljLXJlc2l6ZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKword2luZG93Lm9ubG9hZCA9IHJ1
blRlc3RzOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRT
ZW5kZXIpCisgICAgICAgIHJldHVybjsgLy8gQ2Fubm90IHJ1biB0aGlzIHRlc3Qgd2l0aG91dCBE
UlQuCisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHJlc2l6aW5nIGlz
IGFsbG93ZWQgYW5kIGRpc2FsbG93ZWQgd2hlbiBwcm9ncmFtbWF0aWNhbGx5IHJlbW92aW5nIGFu
ZCBhZGRpbmcgdGhlIG5vcmVzaXplIGF0dHJpYnV0ZSwgcmVzcGVjdGl2ZWx5LiIpOworICAgIHNl
dFRlc3RGcmFtZUJ5SWQoInRlc3RGcmFtZSIpOworCisgICAgbG9nKCJUZXN0IGRpc2FsbG93IGZy
YW1lIHJlc2l6ZSB2aWEgbm9SZXNpemUgSURMIGF0dHJpYnV0ZToiKTsKKyAgICBzaG91bGREaXNh
bGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJh
bWUubm9SZXNpemUgPSB0cnVlIH0pOworCisgICAgbG9nKCJcblRlc3QgYWxsb3cgZnJhbWUgcmVz
aXplIHdoZW4gbm9SZXNpemUgSURMIGF0dHJpYnV0ZSBoYXMgdmFsdWUgdW5kZWZpbmVkOiIpOwor
ICAgIHNob3VsZEFsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5jdGlvbihm
cmFtZSkgeyBmcmFtZS5ub1Jlc2l6ZSA9IHVuZGVmaW5lZCB9KTsKKworICAgIGxvZygiXG5UZXN0
IGFsbG93IGZyYW1lIHJlc2l6ZSB3aGVuIG5vUmVzaXplIElETCBhdHRyaWJ1dGUgaGFzIHZhbHVl
IG51bGw6Iik7CisgICAgc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1l
KGZ1bmN0aW9uKGZyYW1lKSB7IGZyYW1lLm5vUmVzaXplID0gbnVsbCB9KTsKKworICAgIGxvZygi
XG5UZXN0IGRpc2FsbG93IGZyYW1lIHJlc2l6ZSB2aWEgbm9yZXNpemUgY29udGVudCBhdHRyaWJ1
dGU6Iik7CisgICAgLy8gTm90ZSwgbm9yZXNpemUgaXMgYSBib29sZWFuIGF0dHJpYnV0ZS4gVGhh
dCBpcywgaXRzIHByZXNlbmNlIGluZGljYXRlcyB0cnVlIHJlZ2FyZGxlc3Mgb2YgaXRzIHZhbHVl
LgorICAgIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5j
dGlvbihmcmFtZSkgeyBmcmFtZS5zZXRBdHRyaWJ1dGUoIm5vcmVzaXplIiwgInRydWUiKSB9KTsK
KyAgICBzaG91bGREaXNhbGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rp
b24oZnJhbWUpIHsgZnJhbWUuc2V0QXR0cmlidXRlKCJub3Jlc2l6ZSIsICJmYWxzZSIpIH0pOwor
ICAgIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5jdGlv
bihmcmFtZSkgeyBmcmFtZS5zZXRBdHRyaWJ1dGUoIm5vcmVzaXplIiwgImR1bW15IikgfSk7Cisg
ICAgc2hvdWxkRGlzYWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9u
KGZyYW1lKSB7IGZyYW1lLnNldEF0dHJpYnV0ZSgibm9yZXNpemUiLCBTdHJpbmcoKSkgfSk7CisK
KyAgICBsb2coIlxuVGVzdCBkaXNhbGxvdyB0aGVuIGFsbG93IGZyYW1lIHJlc2l6ZSB2aWEgbm9S
ZXNpemUgSURMIGF0dHJpYnV0ZSAoaS5lLiBpbmNyZWFzZSBmcmFtZSB3aWR0aCBieSAiICsgZGVs
dGFXaWR0aCgpICsgIiBwaXhlbHMpOiIpOworICAgIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemVB
ZnRlclByb2Nlc3NpbmdGcmFtZShmdW5jdGlvbihmcmFtZSkgeyBmcmFtZS5ub1Jlc2l6ZSA9IHRy
dWUgfSk7CisgICAgc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1
bmN0aW9uKGZyYW1lKSB7IGZyYW1lLm5vUmVzaXplID0gZmFsc2UgfSk7CisKKyAgICBsb2coIlxu
VGVzdCBkaXNhbGxvdyB0aGVuIGFsbG93IGZyYW1lIHJlc2l6ZSB2aWEgbm9yZXNpemUgY29udGVu
dCBhdHRyaWJ1dGUgKGkuZS4gaW5jcmVhc2UgZnJhbWUgd2lkdGggYnkgIiArIGRlbHRhV2lkdGgo
KSArICIgcGl4ZWxzKToiKTsKKyAgICBzaG91bGREaXNhbGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9j
ZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUuc2V0QXR0cmlidXRlKCJub3Jlc2l6
ZSIsICJ0cnVlIikgfSk7CisgICAgc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2lu
Z0ZyYW1lKGZ1bmN0aW9uKGZyYW1lKSB7IGZyYW1lLnJlbW92ZUF0dHJpYnV0ZSgibm9yZXNpemUi
KSB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGZyYW1lc2V0IGNvbHM9IjIwMCwqIiBib3Jk
ZXI9IjEwIj4KKyAgICA8ZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJhYm91dDpibGFuayI+Cisg
ICAgPGZyYW1lIGlkPSJyZXN1bHRzIiBzcmM9ImRhdGE6dGV4dC9odG1sLDxwIGlkPSdkZXNjcmlw
dGlvbic+VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biB1c2luZyBEUlQuPC9wPjxwcmUgaWQ9J2Nv
bnNvbGUnPjwvcHJlPiI+Cis8L2ZyYW1lc2V0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1v
dmFsLW9mLW5vcmVzaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92
YWwtb2Ytbm9yZXNpemUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1yZW1v
dmFsLW9mLW5vcmVzaXplLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBA
QAorCisKKy0tLS0tLS0tCitGcmFtZTogJ3Rlc3RGcmFtZScKKy0tLS0tLS0tCisKKworLS0tLS0t
LS0KK0ZyYW1lOiAncmVzdWx0cycKKy0tLS0tLS0tCitUaGlzIHRlc3RzIHRoYXQgYSBmcmFtZSB3
aXRoIGEgc291cmNlIGNvZGUtc3BlY2lmaWVkIG5vcmVzaXplIGF0dHJpYnV0ZSBjYW4gYmUgcmVz
aXplZCBhZnRlciBwcm9ncmFtbWF0aWNhbGx5IHJlbW92aW5nIGl0cyBub3Jlc2l6ZSBhdHRyaWJ1
dGUuCisKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLndpZHRoIGlz
IDIxMAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXpl
LWNhbi1iZS1yZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1y
ZXNpemVkLWFmdGVyLXJlbW92YWwtb2Ytbm9yZXNpemUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXdpdGgtbm9yZXNpemUtY2FuLWJlLXJlc2l6ZWQt
YWZ0ZXItcmVtb3ZhbC1vZi1ub3Jlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mcmFtZS1wcm9ncmFt
bWF0aWMtcmVzaXplLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCit3
aW5kb3cub25sb2FkID0gcnVuVGVzdHM7CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkKK3sKKyAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgcnVuIHRo
aXMgdGVzdCB3aXRob3V0IERSVC4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQg
YSBmcmFtZSB3aXRoIGEgc291cmNlIGNvZGUtc3BlY2lmaWVkIG5vcmVzaXplIGF0dHJpYnV0ZSBj
YW4gYmUgcmVzaXplZCBhZnRlciBwcm9ncmFtbWF0aWNhbGx5IHJlbW92aW5nIGl0cyBub3Jlc2l6
ZSBhdHRyaWJ1dGUuIik7CisgICAgc2V0VGVzdEZyYW1lQnlJZCgidGVzdEZyYW1lIik7CisgICAg
c2hvdWxkQWxsb3dGcmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9uKGZyYW1l
KSB7IGZyYW1lLnJlbW92ZUF0dHJpYnV0ZSgibm9yZXNpemUiKSB9KTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGZyYW1lc2V0IGNvbHM9IjIwMCwqIiBib3JkZXI9IjEwIj4KKyAgICA8ZnJhbWUg
aWQ9InRlc3RGcmFtZSIgc3JjPSJhYm91dDpibGFuayIgbm9yZXNpemU+CisgICAgPGZyYW1lIGlk
PSJyZXN1bHRzIiBzcmM9ImRhdGE6dGV4dC9odG1sLDxwIGlkPSdkZXNjcmlwdGlvbic+VGhpcyB0
ZXN0IGNhbiBvbmx5IGJlIHJ1biB1c2luZyBEUlQuPC9wPjxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJl
PiI+Cis8L2ZyYW1lc2V0PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0aW5nLW5vUmVzaXpl
LXRvLWZhbHNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zy
YW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVkLWFmdGVyLXNldHRpbmctbm9S
ZXNpemUtdG8tZmFsc2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXplZC1hZnRlci1zZXR0
aW5nLW5vUmVzaXplLXRvLWZhbHNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNCBAQAorCisKKy0tLS0tLS0tCitGcmFtZTogJ3Rlc3RGcmFtZScKKy0tLS0tLS0tCisKKwor
LS0tLS0tLS0KK0ZyYW1lOiAncmVzdWx0cycKKy0tLS0tLS0tCitUaGlzIHRlc3RzIHRoYXQgYSBm
cmFtZSB3aXRoIGEgc291cmNlIGNvZGUtc3BlY2lmaWVkIG5vcmVzaXplIGF0dHJpYnV0ZSBjYW4g
YmUgcmVzaXplZCBhZnRlciBzZXR0aW5nIGZyYW1lLm5vUmVzaXplIHRvIGZhbHNlLgorCitQQVNT
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS53aWR0aCBpcyAyMTAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVz
aXplZC1hZnRlci1zZXR0aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtd2l0aC1ub3Jlc2l6ZS1jYW4tYmUtcmVzaXpl
ZC1hZnRlci1zZXR0aW5nLW5vUmVzaXplLXRvLWZhbHNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aXRoLW5vcmVzaXplLWNhbi1iZS1yZXNpemVk
LWFmdGVyLXNldHRpbmctbm9SZXNpemUtdG8tZmFsc2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnJhbWUt
cHJvZ3JhbW1hdGljLXJlc2l6ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
K30KKword2luZG93Lm9ubG9hZCA9IHJ1blRlc3RzOworCitmdW5jdGlvbiBydW5UZXN0cygpCit7
CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsgLy8gQ2Fubm90
IHJ1biB0aGlzIHRlc3Qgd2l0aG91dCBEUlQuCisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGF0IGEgZnJhbWUgd2l0aCBhIHNvdXJjZSBjb2RlLXNwZWNpZmllZCBub3Jlc2l6ZSBhdHRy
aWJ1dGUgY2FuIGJlIHJlc2l6ZWQgYWZ0ZXIgc2V0dGluZyBmcmFtZS5ub1Jlc2l6ZSB0byBmYWxz
ZS4iKTsKKyAgICBzZXRUZXN0RnJhbWVCeUlkKCJ0ZXN0RnJhbWUiKTsKKyAgICBzaG91bGRBbGxv
d0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJhbWUoZnVuY3Rpb24oZnJhbWUpIHsgZnJhbWUu
bm9SZXNpemUgPSBmYWxzZSB9KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGZyYW1lc2V0IGNv
bHM9IjIwMCwqIiBib3JkZXI9IjEwIj4KKyAgICA8ZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJh
Ym91dDpibGFuayIgbm9yZXNpemU+CisgICAgPGZyYW1lIGlkPSJyZXN1bHRzIiBzcmM9ImRhdGE6
dGV4dC9odG1sLDxwIGlkPSdkZXNjcmlwdGlvbic+VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biB1
c2luZyBEUlQuPC9wPjxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPiI+Cis8L2ZyYW1lc2V0PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2ZyYW1lLXByb2dy
YW1tYXRpYy1yZXNpemUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2ZyYW1lLXByb2dyYW1tYXRpYy1yZXNpemUuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvZnJhbWUtcHJvZ3JhbW1hdGljLXJlc2l6
ZS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAordmFyIF90ZXN0RnJhbWU7Cit2YXIg
X3Rlc3RGcmFtZUlkOyAvLyBXZSBrZWVwIHRoZSBpZCBvZiB0aGUgdGVzdCBmcmFtZSB0byBtYWtl
IGl0IGVhc2llciBmb3IgYSBwZXJzb24gdG8gaW50ZXJwcmV0IHRoZSB0ZXN0IHJlc3VsdHMuCisK
K2Z1bmN0aW9uIHNldFRlc3RGcmFtZUJ5SWQoaWQpCit7CisgICAgX3Rlc3RGcmFtZUlkID0gaWQ7
CisgICAgX3Rlc3RGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKK30KKworZnVu
Y3Rpb24gZGVsdGFXaWR0aCgpCit7CisgICAgcmV0dXJuIDEwOyAvLyBBIHJlc29uYWJsZSBhbW91
bnQgdG8gYmUgYWJsZSB0byBkZXRlY3QgdGhhdCB0aGUgZnJhbWUgd2lkdGggY2hhbmdlZC4KK30K
KworZnVuY3Rpb24gc2hvdWxkQWxsb3dGcmFtZVJlc2l6ZSgpCit7CisgICAgc2hvdWxkQWxsb3dG
cmFtZVJlc2l6ZUFmdGVyUHJvY2Vzc2luZ0ZyYW1lKGZ1bmN0aW9uKGZyYW1lKSB7IC8qIERvIG5v
dGhpbmcuICovfSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemUoKQor
eworICAgIHNob3VsZERpc2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShmdW5j
dGlvbihmcmFtZSkgeyAvKiBEbyBub3RoaW5nLiAqL30pCit9CisKK2Z1bmN0aW9uIHNob3VsZERp
c2FsbG93RnJhbWVSZXNpemVBZnRlclByb2Nlc3NpbmdGcmFtZShwcm9jZXNzRnJhbWVGdW5jdGlv
bikKK3sKKyAgICB2YXIgZXhwZWN0ZWRXaWR0aCA9IF90ZXN0RnJhbWUud2lkdGg7CisgICAgcHJv
Y2Vzc0ZyYW1lRnVuY3Rpb24oX3Rlc3RGcmFtZSk7CisgICAgcmVzaXplVGVzdEZyYW1lQnkoZGVs
dGFXaWR0aCgpKTsKKyAgICBjaGVja1Rlc3RGcmFtZVdpZHRoRXF1YWxzKGV4cGVjdGVkV2lkdGgp
OworfQorCitmdW5jdGlvbiBzaG91bGRBbGxvd0ZyYW1lUmVzaXplQWZ0ZXJQcm9jZXNzaW5nRnJh
bWUocHJvY2Vzc0ZyYW1lRnVuY3Rpb24pCit7CisgICAgdmFyIGV4cGVjdGVkV2lkdGggPSBfdGVz
dEZyYW1lLndpZHRoICsgZGVsdGFXaWR0aCgpOworICAgIHByb2Nlc3NGcmFtZUZ1bmN0aW9uKF90
ZXN0RnJhbWUpOworICAgIHJlc2l6ZVRlc3RGcmFtZUJ5KGRlbHRhV2lkdGgoKSk7CisgICAgY2hl
Y2tUZXN0RnJhbWVXaWR0aEVxdWFscyhleHBlY3RlZFdpZHRoKTsKK30KKworZnVuY3Rpb24gY2hl
Y2tUZXN0RnJhbWVXaWR0aEVxdWFscyhleHBlY3RlZFdpZHRoKQoreworICAgIGlmIChfdGVzdEZy
YW1lLndpZHRoID09PSBleHBlY3RlZFdpZHRoKQorICAgICAgICBsb2coJ1BBU1MgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoIicgKyBfdGVzdEZyYW1lSWQgKyAnIikud2lkdGggaXMgJyArIGV4cGVj
dGVkV2lkdGgpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCdGQUlMIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCInICsgX3Rlc3RGcmFtZUlkICsgJyIpLndpZHRoIHNob3VsZCBiZSAnICsgZXhwZWN0
ZWRXaWR0aCArICcuIFdhcyAnICsgX3Rlc3RGcmFtZS53aWR0aCArICcuJyk7Cit9CisKK2Z1bmN0
aW9uIHJlc2l6ZVRlc3RGcmFtZUJ5KGRlbHRhV2lkdGhJblBpeGVscykKK3sKKyAgICB2YXIgYm9y
ZGVyV2lkdGggPSBwYXJzZUludChfdGVzdEZyYW1lLnBhcmVudE5vZGUuZ2V0QXR0cmlidXRlKCJi
b3JkZXIiKSk7CisKKyAgICB2YXIgc3RhcnRYID0gX3Rlc3RGcmFtZS5vZmZzZXRXaWR0aCArIGJv
cmRlcldpZHRoIC8gMjsKKyAgICB2YXIgc3RhcnRZID0gX3Rlc3RGcmFtZS5vZmZzZXRIZWlnaHQg
LyAyOworICAgIHZhciBlbmRYID0gc3RhcnRYICsgZGVsdGFXaWR0aEluUGl4ZWxzOworICAgIHZh
ciBlbmRZID0gc3RhcnRZOworCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRYLCBz
dGFydFkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxl
YXBGb3J3YXJkKDEwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kWCwgZW5kWSk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmNvbnRlbnREb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAiXG4iKSk7Cit9CisKK2Z1bmN0aW9uIGRlc2NyaXB0aW9uKG1lc3Nh
Z2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5jb250ZW50RG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIikuaW5uZXJUZXh0ID0gbWVzc2FnZTsK
K30K
</data>
<flag name="review"
          id="82595"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>