<?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>16062</bug_id>
          
          <creation_ts>2007-11-20 00:30:47 -0800</creation_ts>
          <short_desc>SVGMatrix multiply method is wrong way around</short_desc>
          <delta_ts>2009-11-05 07:28:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>javascript:alert(function(){var g = document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, &apos;g&apos;);g.setAttribute(&apos;transform&apos;, &apos;matrix(0 1 1 0 0 0) translate(1 0)&apos;);var l = g.transform.baseVal.getItem(0).matrix;var r = g.transform.baseVal.getItem(1).matrix;var x = l.multiply(r);return[x.a,x.b,x.c,x.d,x.e,x.f]}())</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Jones">drj</reporter>
          <assigned_to name="Jeff Schiller">jeffschiller</assigned_to>
          <cc>alp</cc>
    
    <cc>bckenny</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>61760</commentid>
    <comment_count>0</comment_count>
    <who name="David Jones">drj</who>
    <bug_when>2007-11-20 00:30:47 -0800</bug_when>
    <thetext>(In JavaScript) If A and B are each an SVGMatrix then A.multiply(B) multiplies them.  According to my best reading of the spec the product should be AB.  Safari computes BA. Firefox computes AB.  Opera (as far as I can tell) computes AB.

URL is a bookmarklet that alerts the results of multiplying matrix(0 1 1 0 0 0) by translate(1 0).  It should produce the 6 numbers: 0,1,1,0,0,1 (for example, on Firefox).  Safari produces: 0,1,1,0,1,0.

There&apos;s more discussion at a blog article I wrote, http://drj11.wordpress.com/2007/11/19/the-trouble-with-matrix-multiplication/ , but you probably don&apos;t need that.

If you think WebKit is right and Gecko is wrong, you can duke it out on the Moz bug I made earlier: https://bugzilla.mozilla.org/show_bug.cgi?id=404221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61771</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-20 03:16:34 -0800</bug_when>
    <thetext>Oops.  This should be easy to fix. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61772</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-20 03:17:28 -0800</bug_when>
    <thetext>This probably regressed during the initial import of KDOM and conversion of SVGMatrix to use AffineTransform.  AffineTransform does matrix math inverted from how SVGMatrix used to.  We probably never swapped this multiply correctly.  I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61774</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-20 03:54:49 -0800</bug_when>
    <thetext>Ok, trying this code with AffineTransform:

    {
        AffineTransform L(0,1,1,0,0,0);
        AffineTransform R(0,0,0,0,1,0);
        AffineTransform LR = L*R;
        AffineTransform RL = R*L;
        printf(&quot;LR: %f,%f,%f,%f,%f,%f\n&quot;, LR.a(), LR.b(), LR.c(), LR.d(), LR.e(), LR.f());
        printf(&quot;RL: %f,%f,%f,%f,%f,%f\n&quot;, RL.a(), RL.b(), RL.c(), RL.d(), RL.e(), RL.f());
    }

Produced:

LR: 0.000000,0.000000,0.000000,0.000000,1.000000,0.000000
RL: 0.000000,0.000000,0.000000,0.000000,0.000000,1.000000

Which is reversed from what is expected, according to 
http://drj11.wordpress.com/2007/11/19/the-trouble-with-matrix-multiplication/

Interesting to note, the matrix layout shown:
http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined
is different from the one used by CG:
http://developer.apple.com/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html#//apple_ref/c/func/CGAffineTransformMake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61775</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-11-20 04:01:20 -0800</bug_when>
    <thetext>If I did my math right, the differing matrix layouts could cause this issue:

When laid out the SVG-way my hand-calculated result of LR = 0,0,0,0,0,1, when laid out the CG way: 0,0,0,0,1,0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61779</commentid>
    <comment_count>5</comment_count>
    <who name="David Jones">drj</who>
    <bug_when>2007-11-20 04:51:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; Interesting to note, the matrix layout shown:
&gt; http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined
&gt; is different from the one used by CG:
&gt; http://developer.apple.com/documentation/GraphicsImaging/Reference/CGAffineTransform/Reference/reference.html#//apple_ref/c/func/CGAffineTransformMake
&gt; 

Oh-oh.  SVG is using the column vector convention where a matrix M operates on a column vector V by the multiplication MV.  Note V is a 3 row by 1 column vector so MV is too.  Looks like CG is using the row-vector convention so a matrix M operates on a vector V by VM; this time V is a 1 row by 3 column vector so VM is too.  Oh, that couldn&apos;t possibly be confusing could it?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62034</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-11-22 17:26:15 -0800</bug_when>
    <thetext>I think it&apos;s just that AffineTransform has got it wrong. I&apos;m seeing the same problem with CSS transforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62059</commentid>
    <comment_count>7</comment_count>
    <who name="David Jones">drj</who>
    <bug_when>2007-11-23 00:33:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I think it&apos;s just that AffineTransform has got it wrong. I&apos;m seeing the same
&gt; problem with CSS transforms.

I think it&apos;s just that SVG/CSS use column vectors, and CG/AffineTransform uses row vectors.

As far as I can tell AffineTransform has it right.

As you know matrices operate on vectors and can be considered as linear transformations in a vector space.  But it matters whether you talk about row vectors or column vectors.

A matrix M operates on a column vector v by acting on the left, we form the product Mv.  A matrix operates on a row vector by acting on the right: vM.

Essentially CG operates in a &quot;transpose world&quot; compared to SVG.  So instead of doing the operating Mv, in CG we do (v^T)(M^T) where (@^T) denote transpose.  That&apos;s why Eric notes in comment 3 that CG and SVG use different matrix layouts (they are transposes of each).

Essentially when SVG asks for a vector transformation Mv, what you actually perform in CG is ((v^T)(M^T))^T.  The transposition comes &quot;for free&quot; as you write the entries into the vector and matrix and read the result out.

This is no trouble until you need to multiply matrices.  If SVG asks you to compute ABv then in transpose world you need to compute (v^T)(B^T)(A^T) because (AB)^T = (B^T)(A^T).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62060</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-11-23 00:58:27 -0800</bug_when>
    <thetext>(In reply to comment #7) 
&gt; As far as I can tell AffineTransform has it right.

Yeah, I agree now. Callers need to change. I am going to change CSS transforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114327</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-03-19 10:04:50 -0700</bug_when>
    <thetext>Removing cairo keyword, as this doesn&apos;t seem to be cairo specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160307</commentid>
    <comment_count>10</comment_count>
      <attachid>42446</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-03 21:15:34 -0800</bug_when>
    <thetext>Created attachment 42446
Test case exhibiting the problem

WebKit browsers get the multiplication incorrect (m.e = 200!) while all other browsers pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160308</commentid>
    <comment_count>11</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-03 21:20:39 -0800</bug_when>
    <thetext>Did this implementation change since Comment #7?  I don&apos;t find it to match what the test case exhibits.  In the test I take two matrices:

1  0 100
0  1   0
0  0   1

and

2  0  0
0  1  0
0  0  1

Multiplying these together gives:

2  0 100
0  1   0
0  0   1

But WebKit gives:

2  0 200
0  1   0
0  0   1

And I can&apos;t figure out any matrix operation that would generate that result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160318</commentid>
    <comment_count>12</comment_count>
    <who name="Brendan Kenny">bckenny</who>
    <bug_when>2009-11-03 22:20:15 -0800</bug_when>
    <thetext>That&apos;s the expected behavior from the &quot;multiply method is wrong way around.&quot; Your first matrix (A) is a translation by 100 in x. The second (B) is a scale by a factor of 2 in x. In this case, B is applied in the global coordinates, so a space already translated by 100 in x gets scaled, translating to 200.

You are trying to multiply on the right (A*B), but since WebKit stores matrices as the transpose of what you have written there, a multiply of a transpose by a transpose on the right (A^T*B^T) is equivalent to a multiply on the left of the matrices you have written there (B*A).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160320</commentid>
    <comment_count>13</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-03 22:27:53 -0800</bug_when>
    <thetext>Yep - got it now, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160438</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-04 07:40:52 -0800</bug_when>
    <thetext>See also bug 23243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160497</commentid>
    <comment_count>15</comment_count>
      <attachid>42492</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 10:23:42 -0800</bug_when>
    <thetext>Created attachment 42492
Patch adds a custom method to JSVGMatrix to ensure proper matrix multiplication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160499</commentid>
    <comment_count>16</comment_count>
      <attachid>42492</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 10:26:49 -0800</bug_when>
    <thetext>Comment on attachment 42492
Patch adds a custom method to JSVGMatrix to ensure proper matrix multiplication

Tabs in the file.  No ChangeLog.  I&apos;m not sure this is the right place to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160511</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-04 10:54:30 -0800</bug_when>
    <thetext>Jeff and I talked this over, and we think this is the right approach. But I&apos;m not sure if JSSVGMatrix::multiply() needs to check the number of args before getting args.at(0). JSSVGMatrix::rotateFromVector() may also be bad in this regard.

The patch also needs a testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160533</commentid>
    <comment_count>18</comment_count>
    <who name="Brendan Kenny">bckenny</who>
    <bug_when>2009-11-04 11:38:37 -0800</bug_when>
    <thetext>The patch should make SVGMatrix functionally equivalent to the transpose of its actual representation, so this does seem like the best place to make the change.

Any thoughts on if a similar change should be applied to WebKitCSSMatrix? The draft spec is less explicit than SVG&apos;s, but the implication seems to be that it should follow SVGMatrix in convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160542</commentid>
    <comment_count>19</comment_count>
      <attachid>42505</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 11:59:15 -0800</bug_when>
    <thetext>Created attachment 42505
Updated patch: spaces instead of tabs, added test and changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160543</commentid>
    <comment_count>20</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 12:01:50 -0800</bug_when>
    <thetext>@Brendan: no idea about CSSMatrix, sorry.

@Simon: For your arglist checking question, I found JavaScriptCore/runtime/ArgList.h which has ArgList::at() defined:

        JSValue at(size_t idx) const
        {
            if (idx &lt; m_argCount)
                return m_args[idx];
            return jsUndefined();
        }

This means that if there are no arguments, an at(0) will return jsUndefined() - which should fail this if and return a Type Error:

    if (!args.at(0).inherits(&amp;JSSVGMatrix::s_info))

I checked DOM2 and DOM3 and there is no standard exception as far as I can tell for &apos;not enough arguments&apos;.  My own belief is that a Type Error is just fine, so that&apos;s what the patch has.

Mozilla throws a NS_ERROR_XPC_NOT_ENOUGH_ARGS exception.  Does WebKit have something similar?  If so, I can check args.size() first and throw that if you prefer.

I cannot comment on rotateFromVector() and would suggest a separate patch for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160549</commentid>
    <comment_count>21</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 12:08:41 -0800</bug_when>
    <thetext>Hm, I found this in about 20 places in WebKit:

    if (args.size() &lt; 1)
        return throwError(exec, SyntaxError, &quot;Not enough arguments&quot;);

Do we prefer that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160556</commentid>
    <comment_count>22</comment_count>
      <attachid>42507</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 12:16:14 -0800</bug_when>
    <thetext>Created attachment 42507
Updated patch: added check for enough arguments.  Also added copyright as this change is now over 10 lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160557</commentid>
    <comment_count>23</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 12:16:49 -0800</bug_when>
    <thetext>Since I prefer that (from a author/debugging point of view), I went ahead and made the syntax error check in multiply().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160594</commentid>
    <comment_count>24</comment_count>
      <attachid>42507</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-04 13:57:45 -0800</bug_when>
    <thetext>Comment on attachment 42507
Updated patch: added check for enough arguments.  Also added copyright as this change is now over 10 lines.

I think this is good, but you might want to consider adding the test to SVGMatrix-interface.svg rather than creating a new test. Ideally SVGMatrix-interface.svg would be a much more comprehensive test of the SVGMatrix interface. See LayoutTests/transforms/cssmatrix-2d-interface.xhtml which could probably be converted to SVGMatrix easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160623</commentid>
    <comment_count>25</comment_count>
      <attachid>42527</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 15:06:48 -0800</bug_when>
    <thetext>Created attachment 42527
Reworked CSSMatrix test and added further tests for all other SVGMatrix functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160628</commentid>
    <comment_count>26</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 15:16:42 -0800</bug_when>
    <thetext>If this patch is accepted, we can then remove the following test files as they are no longer needed:

LayoutTests/svg/custom/SVGMatrix-interface.svg 
LayoutTests/platform/mac/svg/custom/SVGMatrix-interface-*

(there is no reason to test this in platform-specific code, this is just a DOM object that has no visual representation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160668</commentid>
    <comment_count>27</comment_count>
      <attachid>42527</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-11-04 17:12:48 -0800</bug_when>
    <thetext>Comment on attachment 42527
Reworked CSSMatrix test and added further tests for all other SVGMatrix functionality.

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================

&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r50529

You have a conflict marker in the patch.

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================

&gt; +&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r50529

Ditto.

r=me with those fixed. You should attach a clean patch and we can put it in the commit-queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160676</commentid>
    <comment_count>28</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-11-04 17:54:07 -0800</bug_when>
    <thetext>Thanks Jeff for fixing this bug! Patch looks good to me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160684</commentid>
    <comment_count>29</comment_count>
      <attachid>42535</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-04 18:49:27 -0800</bug_when>
    <thetext>Created attachment 42535
Remove conflict markers from changelog in patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160695</commentid>
    <comment_count>30</comment_count>
      <attachid>42535</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 19:55:18 -0800</bug_when>
    <thetext>Comment on attachment 42535
Remove conflict markers from changelog in patch.

Patches have to be marked r+ as well as cq+.  Patches marked with just a cq+ get ignored by the commit-queue.  I guess I could teach it to reject patches with just a cq+, but that seems draconian.  The issue is that a committer can cq+ a patch, but it takes a reviewer&apos;s OK as well for something to get committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160696</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 19:55:53 -0800</bug_when>
    <thetext>Thanks again for the patch Jeff.  And thanks for the quick review Simon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160698</commentid>
    <comment_count>32</comment_count>
      <attachid>42535</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 19:57:33 -0800</bug_when>
    <thetext>Comment on attachment 42535
Remove conflict markers from changelog in patch.

It seems an even slicker solution would have been to have a custom JSSVGStaticPODTypeWrapper&lt;TransformationMatrix&gt; subclass called SVGMatrix which defined a special mutiply() function.  As is, this will require v8 to fix it the exact same way.  But this is OK for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160701</commentid>
    <comment_count>33</comment_count>
      <attachid>42535</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 19:58:03 -0800</bug_when>
    <thetext>Comment on attachment 42535
Remove conflict markers from changelog in patch.

Rejecting patch 42535 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Eric Seidel&apos;, &apos;--force&apos;]&quot; exit_code: 2
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patch: **** malformed patch at line 28:  

patching file WebCore/bindings/js/JSSVGMatrixCustom.cpp
patching file WebCore/svg/SVGMatrix.idl
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patch: **** malformed patch at line 25:  

patching file LayoutTests/svg/dom/SVGMatrix-interface-expected.txt
patching file LayoutTests/svg/dom/SVGMatrix-interface.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160706</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 20:02:57 -0800</bug_when>
    <thetext>Ha!  You edited the patch file directly it looks like.  Unless you know how to speak patch, that will just get you in trouble. :)

You can read the documentation on unified diffs here: http://en.wikipedia.org/wiki/Diff#Unified_format  But the better thing to do is to just always re-make the patch instead of modifying the patch file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160707</commentid>
    <comment_count>35</comment_count>
      <attachid>42535</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-04 20:03:41 -0800</bug_when>
    <thetext>Comment on attachment 42535
Remove conflict markers from changelog in patch.

This can&apos;t be landed as is with the broken patch file, so marking r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160786</commentid>
    <comment_count>36</comment_count>
      <attachid>42556</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-05 04:34:33 -0800</bug_when>
    <thetext>Created attachment 42556
Updated correct patch via svn-create-patch with apologies :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160787</commentid>
    <comment_count>37</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-05 04:37:03 -0800</bug_when>
    <thetext>Sorry about the malformed patch, Eric.

About Comment #32, I didn&apos;t realize (but I should have) that this would require separate fixing from V8 side.  Looks like it&apos;s time for me to check out chromium :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160813</commentid>
    <comment_count>38</comment_count>
      <attachid>42556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-05 07:04:54 -0800</bug_when>
    <thetext>Comment on attachment 42556
Updated correct patch via svn-create-patch with apologies :)

Rejecting patch 42556 from commit-queue.

codedread@gmail.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/modules/committers.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160814</commentid>
    <comment_count>39</comment_count>
      <attachid>42556</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-05 07:12:18 -0800</bug_when>
    <thetext>Comment on attachment 42556
Updated correct patch via svn-create-patch with apologies :)

Going to try commit-queue? again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160816</commentid>
    <comment_count>40</comment_count>
      <attachid>42556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-05 07:28:46 -0800</bug_when>
    <thetext>Comment on attachment 42556
Updated correct patch via svn-create-patch with apologies :)

Clearing flags on attachment: 42556

Committed r50561: &lt;http://trac.webkit.org/changeset/50561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160817</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-05 07:28:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42446</attachid>
            <date>2009-11-03 21:15:34 -0800</date>
            <delta_ts>2009-11-03 21:15:34 -0800</delta_ts>
            <desc>Test case exhibiting the problem</desc>
            <filename>matmult.svg</filename>
            <type>image/svg+xml</type>
            <size>880</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CiAgPHJlY3QgaWQ9InJlc3VsdCIgeD0iNTAiIHk9IjUwIiB3aWR0aD0iMzAwIiBoZWln
aHQ9IjEwMCIgZmlsbD0icmVkIiAvPgogIDx0ZXh0IGlkPSJleHBlY3QiIHg9IjYwIiB5PSI4MCI+
TWF0cml4IHNob3VsZCBiZSBbMiwgMCwgMCwgMSwgMTAwLCAwXTwvdGV4dD4KICA8dGV4dCBpZD0i
YWN0dWFsIiB4PSI2MCIgeT0iMTIwIi8+CiAgPHNjcmlwdD48IVtDREFUQVsKICB2YXIgc3Zncm9v
dCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICB2YXIgdHggPSBzdmdyb290LmNyZWF0ZVNW
R01hdHJpeCgpLAogICAgICBzeCA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7CiAgdHggPSB0
eC50cmFuc2xhdGUoMTAwLDApOwogIHN4ID0gc3guc2NhbGVOb25Vbmlmb3JtKDIsMSk7CiAgdmFy
IG0gPSB0eC5tdWx0aXBseShzeCk7CiAgdmFyIGFjdHVhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJhY3R1YWwiKTsKICBhY3R1YWwuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKAogIAkiTWF0cml4IGFjdHVhbGx5IGlzIFsiICsgbS5hICsgIiwgIiArIG0uYiArICIsICIg
KyBtLmMgKyAiLCAiICsKICAJbS5kICsgIiwgIiArIG0uZSArICIsICIgKyBtLmYgKyAiXSIpICk7
CiAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKICBpZiAo
bS5hID09IDIgJiYgbS5iID09IDAgJiYgbS5jID09IDAgJiYgbS5kID09IDEgJiYgbS5lID09IDEw
MCAmJiBtLmYgPT0gMCkgewogIAlyZXN1bHQuc2V0QXR0cmlidXRlKCJmaWxsIiwgImxpbWUiKTsK
ICB9CiAgXV0+PC9zY3JpcHQ+Cjwvc3ZnPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42492</attachid>
            <date>2009-11-04 10:23:42 -0800</date>
            <delta_ts>2009-11-04 11:59:15 -0800</delta_ts>
            <desc>Patch adds a custom method to JSVGMatrix to ensure proper matrix multiplication</desc>
            <filename>bug16062.patch.txt</filename>
            <type>text/plain</type>
            <size>1635</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCShyZXZpc2lv
biA1MDUxNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMjcgQEAKIAogI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK0pTVmFsdWUgSlNTVkdNYXRyaXg6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKK3sKKwlpZiAoIWFyZ3MuYXQoMCkuaW5oZXJpdHMoJkpTU1ZHTWF0cml4
OjpzX2luZm8pKQorCQlyZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJzZWNvbmRN
YXRyaXggYXJndW1lbnQgd2FzIG5vdCBhIFNWR01hdHJpeCIpOworCQorCUpTU1ZHTWF0cml4KiBt
YXRyaXhPYmogPSBzdGF0aWNfY2FzdDxKU1NWR01hdHJpeCo+KGFzT2JqZWN0KGFyZ3MuYXQoMCkp
KTsKKworCVRyYW5zZm9ybWF0aW9uTWF0cml4IG0xKCppbXBsKCkpOworCVRyYW5zZm9ybWF0aW9u
TWF0cml4IG0yKCoobWF0cml4T2JqLT5pbXBsKCkpKTsKKwkKKyAgICBKU0M6OkpTVmFsdWUgcmVz
dWx0ID0gdG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMp
LCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRl
KG0xLm11bHRMZWZ0KG0yKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZSBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGltcCgq
aW1wbCgpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gNTA1MTYpCisrKyBXZWJDb3JlL3N2
Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAg
IGF0dHJpYnV0ZSBkb3VibGUgZTsKICAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBmOwogCi0gICAg
ICAgIFtJbW11dGFibGVdIFNWR01hdHJpeCBtdWx0aXBseShpbiBTVkdNYXRyaXggc2Vjb25kTWF0
cml4KTsKKyAgICAgICAgW0N1c3RvbV0gU1ZHTWF0cml4IG11bHRpcGx5KGluIFNWR01hdHJpeCBz
ZWNvbmRNYXRyaXgpOwogICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggaW52ZXJzZSgpCiAgICAg
ICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgW0ltbXV0YWJsZV0gU1ZHTWF0
cml4IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsK
</data>
<flag name="review"
          id="24030"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42505</attachid>
            <date>2009-11-04 11:59:15 -0800</date>
            <delta_ts>2009-11-04 12:16:14 -0800</delta_ts>
            <desc>Updated patch: spaces instead of tabs, added test and changelogs</desc>
            <filename>bug16062.patch.txt</filename>
            <type>text/plain</type>
            <size>4968</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3Qgb3JkZXIgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIGZvciBTVkdNYXRyaXguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisg
ICAgICAgIFRlc3Q6IHN2Zy9kb20vbWF0cml4LW11bHRpcGxpY2F0aW9uLmh0bWwKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5pZGw6CisK
IDIwMDktMTEtMDQgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2ZXJ0IDUwNTE5IHdoaWxlIEkgd29yayBvdXQgd2hhdCB3ZW50IHdyb25nLgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDUwNTE4
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDExICsyNCwyNyBAQAogCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorSlNW
YWx1ZSBKU1NWR01hdHJpeDo6bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQoreworICAgIGlmICghYXJncy5hdCgwKS5pbmhlcml0cygmSlNTVkdNYXRyaXg6OnNf
aW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgInNlY29u
ZE1hdHJpeCBhcmd1bWVudCB3YXMgbm90IGEgU1ZHTWF0cml4Iik7CisKKyAgICBKU1NWR01hdHJp
eCogbWF0cml4T2JqID0gc3RhdGljX2Nhc3Q8SlNTVkdNYXRyaXgqPihhc09iamVjdChhcmdzLmF0
KDApKSk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtMSgqaW1wbCgpKTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtMigqKG1hdHJpeE9iai0+aW1wbCgpKSk7CisKKyAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90
eXBlKGV4ZWMpLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4
Pjo6Y3JlYXRlKG0xLm11bHRMZWZ0KG0yKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiBKU1ZhbHVlIEpTU1ZHTWF0cml4OjppbnZlcnNlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aW1wKCppbXBsKCkpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiA1MDUxOCkKKysrIFdlYkNv
cmUvc3ZnL1NWR01hdHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbW9k
dWxlIHN2ZyB7CiAgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZTsKICAgICAgICAgYXR0cmlidXRl
IGRvdWJsZSBmOwogCi0gICAgICAgIFtJbW11dGFibGVdIFNWR01hdHJpeCBtdWx0aXBseShpbiBT
VkdNYXRyaXggc2Vjb25kTWF0cml4KTsKKyAgICAgICAgW0N1c3RvbV0gU1ZHTWF0cml4IG11bHRp
cGx5KGluIFNWR01hdHJpeCBzZWNvbmRNYXRyaXgpOwogICAgICAgICBbQ3VzdG9tXSBTVkdNYXRy
aXggaW52ZXJzZSgpCiAgICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAg
W0ltbXV0YWJsZV0gU1ZHTWF0cml4IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDUwNTIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxj
b2RlZHJlYWRAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIHRlc3QgdG8gZW5zdXJlIHByb3BlciBvcmRlciBvZiBtYXRyaXgg
bXVsdGlwbGljYXRpb24gd2l0aCBTVkdNYXRyaXguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisgICAgICAgICogc3ZnL2RvbS9tYXRyaXgt
bXVsdGlwbGljYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL21h
dHJpeC1tdWx0aXBsaWNhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAwOS0xMS0wNCAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1dCB0ZXN0IGludG8gc2tp
cGxpc3QgYWRkZWQgaW4gcjUwNDg5IGJlY2F1c2UKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20v
bWF0cml4LW11bHRpcGxpY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0byBz
ZWUgaWYgbWF0cml4IG11bHRpcGxpY2F0aW9uIGlzIHBlcmZvcm1lZCBpbiB0aGUgY29ycmVjdCBv
cmRlciBmb3IgU1ZHTWF0cml4IG9iamVjdHMuCisKK0lmIHRoZSB0ZXN0IHBhc3NlcywgeW91IHNo
b3VsZCBzZWUgb25lIGxpbmUgYmVsb3cgYWJvdXQgdGhlIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBw
YXNzaW5nLgorCitNYXRyaXggTXVsdGlwbGljYXRpb24gUGFzc2VkLgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9kb20vbWF0cml4LW11bHRpcGxpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKK3sKKyAgICB2YXIgcGFyYWdyYXBo
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBzdmdyb290ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2
ZyIpOworICAgIHZhciB0eCA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7CisgICAgdmFyIHN4
ID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgoKTsKKyAgICB0eCA9IHR4LnRyYW5zbGF0ZSgxMDAs
MCk7CisgICAgc3ggPSBzeC5zY2FsZU5vblVuaWZvcm0oMiwxKTsKKyAgICB2YXIgbSA9IHR4Lm11
bHRpcGx5KHN4KTsKKworICAgIGlmIChtLmEgPT0gMiAmJiBtLmIgPT0gMCAmJiBtLmMgPT0gMCAm
JiBtLmQgPT0gMSAmJiBtLmUgPT0gMTAwICYmIG0uZiA9PSAwICYmIHN4LmEgPT0gMiAmJiBzeC5i
ID09IDAgJiYgc3guYyA9PSAwICYmIHN4LmQgPT0gMSAmJiBzeC5lID09IDAgJiYgc3guZiA9PSAw
KQorICAgIAlwcmludCgiTWF0cml4IE11bHRpcGxpY2F0aW9uIFBhc3NlZC4iKTsKKyAgICBlbHNl
CisgICAgCXByaW50KCJNYXRyaXggTXVsdGlwbGljYXRpb24gRmFpbGVkLiIpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tz
IHRvIHNlZSBpZiBtYXRyaXggbXVsdGlwbGljYXRpb24gaXMgcGVyZm9ybWVkIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIGZvciBTVkdNYXRyaXggb2JqZWN0cy48L3A+Cis8cD5JZiB0aGUgdGVzdCBwYXNz
ZXMsIHlvdSBzaG91bGQgc2VlIG9uZSBsaW5lIGJlbG93IGFib3V0IHRoZSBtYXRyaXggbXVsdGlw
bGljYXRpb24gcGFzc2luZy48L3A+Cis8aHI+Cis8cD48b2wgaWQ9Y29uc29sZT48L29sPjwvcD4K
KzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42507</attachid>
            <date>2009-11-04 12:16:14 -0800</date>
            <delta_ts>2009-11-04 15:06:48 -0800</delta_ts>
            <desc>Updated patch: added check for enough arguments.  Also added copyright as this change is now over 10 lines.</desc>
            <filename>bug16062.patch.txt</filename>
            <type>text/plain</type>
            <size>5355</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3Qgb3JkZXIgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIGZvciBTVkdNYXRyaXguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisg
ICAgICAgIFRlc3Q6IHN2Zy9kb20vbWF0cml4LW11bHRpcGxpY2F0aW9uLmh0bWwKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5pZGw6CisK
IDIwMDktMTEtMDQgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2ZXJ0IDUwNTE5IHdoaWxlIEkgd29yayBvdXQgd2hhdCB3ZW50IHdyb25nLgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDUwNTE4
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEplZmYgU2NoaWxsZXIgPGNvZGVkcmVhZEBnbWFpbC5jb20+CiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDExICsyNSwzMCBAQAogCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
SlNWYWx1ZSBKU1NWR01hdHJpeDo6bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKwor
ICAgIGlmICghYXJncy5hdCgwKS5pbmhlcml0cygmSlNTVkdNYXRyaXg6OnNfaW5mbykpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgInNlY29uZE1hdHJpeCBhcmd1
bWVudCB3YXMgbm90IGEgU1ZHTWF0cml4Iik7CisKKyAgICBKU1NWR01hdHJpeCogbWF0cml4T2Jq
ID0gc3RhdGljX2Nhc3Q8SlNTVkdNYXRyaXgqPihhc09iamVjdChhcmdzLmF0KDApKSk7CisKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtMSgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtMigqKG1hdHJpeE9iai0+aW1wbCgpKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhleGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpLCBK
U1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRlKG0x
Lm11bHRMZWZ0KG0yKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiBKU1ZhbHVlIEpTU1ZHTWF0cml4OjppbnZlcnNlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkp
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdNYXRyaXguaWRsCShyZXZpc2lvbiA1MDUxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR01h
dHJpeC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxlIHN2ZyB7CiAg
ICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgZTsKICAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBmOwog
Ci0gICAgICAgIFtJbW11dGFibGVdIFNWR01hdHJpeCBtdWx0aXBseShpbiBTVkdNYXRyaXggc2Vj
b25kTWF0cml4KTsKKyAgICAgICAgW0N1c3RvbV0gU1ZHTWF0cml4IG11bHRpcGx5KGluIFNWR01h
dHJpeCBzZWNvbmRNYXRyaXgpOwogICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggaW52ZXJzZSgp
CiAgICAgICAgICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgW0ltbXV0YWJsZV0g
U1ZHTWF0cml4IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDUwNTIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3QgdG8gZW5zdXJlIHByb3BlciBvcmRlciBvZiBtYXRyaXggbXVsdGlwbGljYXRp
b24gd2l0aCBTVkdNYXRyaXguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA2MgorCisgICAgICAgICogc3ZnL2RvbS9tYXRyaXgtbXVsdGlwbGljYXRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL21hdHJpeC1tdWx0aXBs
aWNhdGlvbi5odG1sOiBBZGRlZC4KKwogMjAwOS0xMS0wNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1dCB0ZXN0IGludG8gc2tpcGxpc3QgYWRkZWQg
aW4gcjUwNDg5IGJlY2F1c2UKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vbWF0cml4LW11bHRp
cGxpY2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZG9t
L21hdHJpeC1tdWx0aXBsaWNhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNiBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0byBzZWUgaWYgbWF0cml4
IG11bHRpcGxpY2F0aW9uIGlzIHBlcmZvcm1lZCBpbiB0aGUgY29ycmVjdCBvcmRlciBmb3IgU1ZH
TWF0cml4IG9iamVjdHMuCisKK0lmIHRoZSB0ZXN0IHBhc3NlcywgeW91IHNob3VsZCBzZWUgb25l
IGxpbmUgYmVsb3cgYWJvdXQgdGhlIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBwYXNzaW5nLgorCitN
YXRyaXggTXVsdGlwbGljYXRpb24gUGFzc2VkLgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9t
L21hdHJpeC1tdWx0aXBsaWNhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9kb20vbWF0cml4LW11bHRpcGxpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zdmcvZG9tL21hdHJpeC1tdWx0aXBsaWNhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gcHJpbnQobWVzc2FnZSkKK3sKKyAgICB2YXIgcGFyYWdyYXBoID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBzdmdyb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpOworICAgIHZh
ciB0eCA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7CisgICAgdmFyIHN4ID0gc3Zncm9vdC5j
cmVhdGVTVkdNYXRyaXgoKTsKKyAgICB0eCA9IHR4LnRyYW5zbGF0ZSgxMDAsMCk7CisgICAgc3gg
PSBzeC5zY2FsZU5vblVuaWZvcm0oMiwxKTsKKyAgICB2YXIgbSA9IHR4Lm11bHRpcGx5KHN4KTsK
KworICAgIGlmIChtLmEgPT0gMiAmJiBtLmIgPT0gMCAmJiBtLmMgPT0gMCAmJiBtLmQgPT0gMSAm
JiBtLmUgPT0gMTAwICYmIG0uZiA9PSAwICYmIHN4LmEgPT0gMiAmJiBzeC5iID09IDAgJiYgc3gu
YyA9PSAwICYmIHN4LmQgPT0gMSAmJiBzeC5lID09IDAgJiYgc3guZiA9PSAwKQorICAgIAlwcmlu
dCgiTWF0cml4IE11bHRpcGxpY2F0aW9uIFBhc3NlZC4iKTsKKyAgICBlbHNlCisgICAgCXByaW50
KCJNYXRyaXggTXVsdGlwbGljYXRpb24gRmFpbGVkLiIpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBt
YXRyaXggbXVsdGlwbGljYXRpb24gaXMgcGVyZm9ybWVkIGluIHRoZSBjb3JyZWN0IG9yZGVyIGZv
ciBTVkdNYXRyaXggb2JqZWN0cy48L3A+Cis8cD5JZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSBzaG91
bGQgc2VlIG9uZSBsaW5lIGJlbG93IGFib3V0IHRoZSBtYXRyaXggbXVsdGlwbGljYXRpb24gcGFz
c2luZy48L3A+Cis8aHI+Cis8cD48b2wgaWQ9Y29uc29sZT48L29sPjwvcD4KKzwvYm9keT4K
</data>
<flag name="review"
          id="24050"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42527</attachid>
            <date>2009-11-04 15:06:48 -0800</date>
            <delta_ts>2009-11-04 18:49:27 -0800</delta_ts>
            <desc>Reworked CSSMatrix test and added further tests for all other SVGMatrix functionality.</desc>
            <filename>bug16062.patch2.txt</filename>
            <type>text/plain</type>
            <size>15302</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3Qgb3JkZXIgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIGZvciBTVkdNYXRyaXguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisg
ICAgICAgIFRlc3Q6IHN2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS54aHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdNYXRyaXg6Om11bHRpcGx5KToKKyAgICAgICAgKiBzdmcvU1ZHTWF0cml4LmlkbDoKKwog
MjAwOS0xMS0wNCAgUGF0cmljayBNdWVsbGVyICA8UGF0cmlja19NdWVsbGVyQHVzLmlibS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpAQCAtMTQyLDYgKzE1NSw3
IEBACiAgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKICAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKIAorPj4+Pj4+
PiAucjUwNTI5CiAyMDA5LTExLTA0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmVydCA1MDUxOSB3aGlsZSBJIHdvcmsgb3V0IHdoYXQgd2VudCB3cm9u
Zy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCShyZXZp
c2lvbiA1MDUyOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBKZWZmIFNjaGlsbGVyIDxjb2RlZHJlYWRAZ21haWwuY29tPgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwxMSArMjUsMzAgQEAKIAogI2luY2x1ZGUgIlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8
cnVudGltZS9FcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK0pTVmFsdWUgSlNTVkdNYXRyaXg6Om11bHRpcGx5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgPCAxKQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1l
bnRzIik7CisKKyAgICBpZiAoIWFyZ3MuYXQoMCkuaW5oZXJpdHMoJkpTU1ZHTWF0cml4OjpzX2lu
Zm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJzZWNvbmRN
YXRyaXggYXJndW1lbnQgd2FzIG5vdCBhIFNWR01hdHJpeCIpOworCisgICAgSlNTVkdNYXRyaXgq
IG1hdHJpeE9iaiA9IHN0YXRpY19jYXN0PEpTU1ZHTWF0cml4Kj4oYXNPYmplY3QoYXJncy5hdCgw
KSkpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbTEoKmltcGwoKSk7CisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbTIoKihtYXRyaXhPYmotPmltcGwoKSkpOworCisgICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlw
ZShleGVjKSwgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46
OmNyZWF0ZShtMS5tdWx0TGVmdChtMikpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogSlNWYWx1ZSBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlt
cCgqaW1wbCgpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gNTA1MjkpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG1vZHVs
ZSBzdmcgewogICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGU7CiAgICAgICAgIGF0dHJpYnV0ZSBk
b3VibGUgZjsKIAotICAgICAgICBbSW1tdXRhYmxlXSBTVkdNYXRyaXggbXVsdGlwbHkoaW4gU1ZH
TWF0cml4IHNlY29uZE1hdHJpeCk7CisgICAgICAgIFtDdXN0b21dIFNWR01hdHJpeCBtdWx0aXBs
eShpbiBTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKICAgICAgICAgW0N1c3RvbV0gU1ZHTWF0cml4
IGludmVyc2UoKQogICAgICAgICAgICAgcmFpc2VzKFNWR0V4Y2VwdGlvbik7CiAgICAgICAgIFtJ
bW11dGFibGVdIFNWR01hdHJpeCB0cmFuc2xhdGUoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA1MDUyOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDA5LTExLTA0ICBKZWZmIFNjaGlsbGVyICA8Y29k
ZWRyZWFkQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0IHRvIGVuc3VyZSBwcm9wZXIgb3JkZXIgb2YgbWF0cml4IG11
bHRpcGxpY2F0aW9uIHdpdGggU1ZHTWF0cml4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNjIKKworICAgICAgICAqIHN2Zy9kb20vU1ZHTWF0cml4
LWludGVyZmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vU1ZHTWF0
cml4LWludGVyZmFjZS54aHRtbDogQWRkZWQuCisKIDIwMDktMTEtMDQgIENocmlzIEZsZWl6YWNo
ICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2lu
LgpAQCAtMTAsNiArMjAsNyBAQAogICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2FyaWEtY29tYm9ib3gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2tpcHBlZDoKIAorPj4+Pj4+PiAucjUwNTI5CiAyMDA5LTExLTA0ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHV0IHRlc3QgaW50byBza2lwbGlz
dCBhZGRlZCBpbiByNTA0ODkgYmVjYXVzZQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdN
YXRyaXgtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOTIgQEAKK1RoaXMgdGVzdCBleGVyY2lzZXMgdGhlIFNWR01h
dHJpeCBpbnRlcmZhY2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NWR01hdHJp
eCBjb25zdHJ1Y3RvcnMKK1BBU1MgZGVmYXVsdCBjb25zdHJ1Y3RvcgorCitUZXN0IGF0dHJpYnV0
ZXMgb24gZGVmYXVsdCBtYXRyaXgKK1BBU1MgbS5hIGlzIDEKK1BBU1MgbS5iIGlzIDAKK1BBU1Mg
bS5jIGlzIDAKK1BBU1MgbS5kIGlzIDEKK1BBU1MgbS5lIGlzIDAKK1BBU1MgbS5mIGlzIDAKKwor
VGVzdCBhdHRyaWJ1dGVzIG9uIHRyYW5zbGF0ZSgpIGFuZCBhY2N1bXVsYXRpb24KK1BBU1MgbTIu
YSBpcyAxCitQQVNTIG0yLmIgaXMgMAorUEFTUyBtMi5jIGlzIDAKK1BBU1MgbTIuZCBpcyAxCitQ
QVNTIG0yLmUgaXMgMTAwCitQQVNTIG0yLmYgaXMgNTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Yg
dHJhbnNsYXRlKCkKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdCht
LmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQp
IGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlz
IDAKKworVGVzdCBhdHRyaWJ1dGVzIG9uIHNjYWxlKCkKK1BBU1MgbTMuYSBpcyA1CitQQVNTIG0z
LmIgaXMgMAorUEFTUyBtMy5jIGlzIDAKK1BBU1MgbTMuZCBpcyA1CitQQVNTIG0zLmUgaXMgMTAw
CitQQVNTIG0zLmYgaXMgNTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2NhbGUoKQorUEFTUyBw
YXJzZUZsb2F0KG0yLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtMi5iKSBpcyAwCitQQVNTIHBh
cnNlRmxvYXQobTIuYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLmQpIGlzIDEKK1BBU1MgcGFy
c2VGbG9hdChtMi5lKSBpcyAxMDAKK1BBU1MgcGFyc2VGbG9hdChtMi5mKSBpcyA1MAorCitUZXN0
IGF0dHJpYnV0ZXMgb24gc2NhbGVOb25Vbmlmb3JtKCkKK1BBU1MgbTQuYSBpcyAxMAorUEFTUyBt
NC5iIGlzIDAKK1BBU1MgbTQuYyBpcyAwCitQQVNTIG00LmQgaXMgNQorUEFTUyBtNC5lIGlzIDEw
MAorUEFTUyBtNC5mIGlzIDUwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIHNjYWxlTm9uVW5pZm9y
bSgpCitQQVNTIHBhcnNlRmxvYXQobTMuYSkgaXMgNQorUEFTUyBwYXJzZUZsb2F0KG0zLmIpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtMy5jKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTMuZCkgaXMg
NQorUEFTUyBwYXJzZUZsb2F0KG0zLmUpIGlzIDEwMAorUEFTUyBwYXJzZUZsb2F0KG0zLmYpIGlz
IDUwCisKK1Rlc3Qgcm90YXRlKCkKK1BBU1MgcGFyc2VGbG9hdChtMi5hLnRvUHJlY2lzaW9uKDYp
KSBpcyAwLjk4NDgwOAorUEFTUyBwYXJzZUZsb2F0KG0yLmIudG9QcmVjaXNpb24oNikpIGlzIDAu
MTczNjQ4CitQQVNTIHBhcnNlRmxvYXQobTIuYy50b1ByZWNpc2lvbig2KSkgaXMgLTAuMTczNjQ4
CitQQVNTIHBhcnNlRmxvYXQobTIuZC50b1ByZWNpc2lvbig2KSkgaXMgMC45ODQ4MDgKK1BBU1Mg
bS5lIGlzIDAKK1BBU1MgbS5mIGlzIDAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlKCkK
K1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDEKK1BBU1Mg
cGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDAKKworVGVzdCBm
bGlwWCgpCitQQVNTIG00LmEgaXMgLTUKK1BBU1MgbTQuYiBpcyAwCitQQVNTIG00LmMgaXMgMAor
UEFTUyBtNC5kIGlzIDUKK1BBU1MgbTQuZSBpcyAxMDAKK1BBU1MgbTQuZiBpcyA1MAorCitUZXN0
IGltbXV0YWJpbGl0eSBvZiBmbGlwWCgpCitQQVNTIHBhcnNlRmxvYXQobTMuYSkgaXMgNQorUEFT
UyBwYXJzZUZsb2F0KG0zLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5jKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobTMuZCkgaXMgNQorUEFTUyBwYXJzZUZsb2F0KG0zLmUpIGlzIDEwMAorUEFT
UyBwYXJzZUZsb2F0KG0zLmYpIGlzIDUwCisKK1Rlc3QgZmxpcFkoKQorUEFTUyBtNC5hIGlzIDUK
K1BBU1MgbTQuYiBpcyAwCitQQVNTIG00LmMgaXMgMAorUEFTUyBtNC5kIGlzIC01CitQQVNTIG00
LmUgaXMgMTAwCitQQVNTIG00LmYgaXMgNTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2YgZmxpcFko
KQorUEFTUyBwYXJzZUZsb2F0KG0zLmEpIGlzIDUKK1BBU1MgcGFyc2VGbG9hdChtMy5iKSBpcyAw
CitQQVNTIHBhcnNlRmxvYXQobTMuYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLmQpIGlzIDUK
K1BBU1MgcGFyc2VGbG9hdChtMy5lKSBpcyAxMDAKK1BBU1MgcGFyc2VGbG9hdChtMy5mKSBpcyA1
MAorCitUZXN0IHNrZXdYKCkKK1BBU1MgbTIuYSBpcyAxCitQQVNTIG0yLmIgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0yLmMudG9QcmVjaXNpb24oNikpIGlzIDAuNTc3MzUwCitQQVNTIG0yLmQgaXMg
MQorUEFTUyBtMi5lIGlzIDAKK1BBU1MgbTIuZiBpcyAwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9m
IHNrZXdYKCkKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmIp
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlz
IDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDAK
KworVGVzdCBza2V3WSgpCitQQVNTIG0yLmEgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0yLmIudG9Q
cmVjaXNpb24oNikpIGlzIDAuNTc3MzUwCitQQVNTIG0yLmMgaXMgMAorUEFTUyBtMi5kIGlzIDEK
K1BBU1MgbTIuZSBpcyAwCitQQVNTIG0yLmYgaXMgMAorCitUZXN0IGltbXV0YWJpbGl0eSBvZiBz
a2V3WSgpCitQQVNTIHBhcnNlRmxvYXQobS5hKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQobS5iKSBp
cyAwCitQQVNTIHBhcnNlRmxvYXQobS5jKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5kKSBpcyAx
CitQQVNTIHBhcnNlRmxvYXQobS5lKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5mKSBpcyAwCisK
K1Rlc3QgbXVsdGlwbHkKK1BBU1MgbS5hIGlzIDIKK1BBU1MgbS5iIGlzIDAKK1BBU1MgbS5jIGlz
IDAKK1BBU1MgbS5kIGlzIDEKK1BBU1MgbS5lIGlzIDEwMAorUEFTUyBtLmYgaXMgMAorCitUZXN0
IGltbXV0YWJpbGl0eSBvZiBtdWx0aXBseQorUEFTUyB0eC5hIGlzIDEKK1BBU1MgdHguYiBpcyAw
CitQQVNTIHR4LmMgaXMgMAorUEFTUyB0eC5kIGlzIDEKK1BBU1MgdHguZSBpcyAxMDAKK1BBU1Mg
dHguZiBpcyAwCitQQVNTIHN4LmEgaXMgMgorUEFTUyBzeC5iIGlzIDAKK1BBU1Mgc3guYyBpcyAw
CitQQVNTIHN4LmQgaXMgMQorUEFTUyBzeC5lIGlzIDAKK1BBU1Mgc3guZiBpcyAwCisKK1Rlc3Qg
bXVsdGlwbHkgd2l0aCBtaXNzaW5nIGFyZ3VtZW50CitQQVNTIG0gaXMgbnVsbAorCitUZXN0IGlu
dmVyc2UKK1BBU1MgcGFyc2VGbG9hdChtMi5hKSBpcyAwLjUKK1BBU1MgcGFyc2VGbG9hdChtMi5i
KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIuYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLmQp
IGlzIDAuNQorUEFTUyBwYXJzZUZsb2F0KG0yLmUpIGlzIC01CitQQVNTIHBhcnNlRmxvYXQobTIu
ZikgaXMgLTEwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIGludmVyc2UKK1BBU1MgcGFyc2VGbG9h
dChtLmEpIGlzIDIKK1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdCht
LmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmQpIGlzIDIKK1BBU1MgcGFyc2VGbG9hdChtLmUp
IGlzIDEwCitQQVNTIHBhcnNlRmxvYXQobS5mKSBpcyAyMAorCitUZXN0IHRocm93aW5nIGV4Y2Vw
dGlvbiBmcm9tIGludmVyc2UKK1BBU1MgbS5pbnZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3N2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS54aHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNjcgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Ij4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZXhlcmNpc2VzIHRoZSBTVkdNYXRyaXgg
aW50ZXJmYWNlIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJTVkdNYXRyaXggY29uc3RydWN0b3Jz
Iik7CisKK3ZhciBzdmdyb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZycsICdzdmcnKTsKK3ZhciBtID0gbnVsbDsKK20gPSBzdmdyb290LmNy
ZWF0ZVNWR01hdHJpeCgpOworaWYgKG0pCisgIHRlc3RQYXNzZWQoImRlZmF1bHQgY29uc3RydWN0
b3IiKTsKK2Vsc2UKKyAgdGVzdEZhaWxlZCgiZGVmYXVsdCBjb25zdHJ1Y3RvciIpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCBhdHRyaWJ1dGVzIG9uIGRlZmF1bHQgbWF0cml4Iik7CitzaG91
bGRCZSgnbS5hJywgJzEnKTsKK3Nob3VsZEJlKCdtLmInLCAnMCcpOworc2hvdWxkQmUoJ20uYycs
ICcwJyk7CitzaG91bGRCZSgnbS5kJywgJzEnKTsKK3Nob3VsZEJlKCdtLmUnLCAnMCcpOworc2hv
dWxkQmUoJ20uZicsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMg
b24gdHJhbnNsYXRlKCkgYW5kIGFjY3VtdWxhdGlvbiIpOwordmFyIG0yID0gbS50cmFuc2xhdGUo
NTAsMCk7CittMiA9IG0yLnRyYW5zbGF0ZSg1MCw1MCk7CitzaG91bGRCZSgnbTIuYScsICcxJyk7
CitzaG91bGRCZSgnbTIuYicsICcwJyk7CitzaG91bGRCZSgnbTIuYycsICcwJyk7CitzaG91bGRC
ZSgnbTIuZCcsICcxJyk7CitzaG91bGRCZSgnbTIuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtMi5m
JywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFu
c2xhdGUoKSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5hKScsICcxJyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtLmIpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYyknLCAnMCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5kKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtLmUpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZiknLCAnMCcpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCBhdHRyaWJ1dGVzIG9uIHNjYWxlKCkiKTsKK3ZhciBtMyA9IG0y
LnNjYWxlKDUpOworc2hvdWxkQmUoJ20zLmEnLCAnNScpOworc2hvdWxkQmUoJ20zLmInLCAnMCcp
Oworc2hvdWxkQmUoJ20zLmMnLCAnMCcpOworc2hvdWxkQmUoJ20zLmQnLCAnNScpOworc2hvdWxk
QmUoJ20zLmUnLCAnMTAwJyk7CitzaG91bGRCZSgnbTMuZicsICc1MCcpOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2NhbGUoKSIpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQobTIuYSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYiknLCAnMCcpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTIuZCknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuZSknLCAnMTAwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMi5mKScsICc1MCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVz
dCBhdHRyaWJ1dGVzIG9uIHNjYWxlTm9uVW5pZm9ybSgpIik7Cit2YXIgbTQgPSBtMy5zY2FsZU5v
blVuaWZvcm0oMiwxKTsKK3Nob3VsZEJlKCdtNC5hJywgJzEwJyk7CitzaG91bGRCZSgnbTQuYics
ICcwJyk7CitzaG91bGRCZSgnbTQuYycsICcwJyk7CitzaG91bGRCZSgnbTQuZCcsICc1Jyk7Citz
aG91bGRCZSgnbTQuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtNC5mJywgJzUwJyk7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBzY2FsZU5vblVuaWZvcm0oKSIpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuYSknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTMuYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuYyknLCAnMCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTMuZCknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZSkn
LCAnMTAwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5mKScsICc1MCcpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCByb3RhdGUoKSIpOworbSA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4
KCk7CittMiA9IG0ucm90YXRlKDEwKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmEudG9QcmVj
aXNpb24oNikpJywgJzAuOTg0ODA4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5iLnRvUHJl
Y2lzaW9uKDYpKScsICcwLjE3MzY0OCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYy50b1By
ZWNpc2lvbig2KSknLCAnLTAuMTczNjQ4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5kLnRv
UHJlY2lzaW9uKDYpKScsICcwLjk4NDgwOCcpOworc2hvdWxkQmUoJ20uZScsICcwJyk7CitzaG91
bGRCZSgnbS5mJywgJzAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5
IG9mIHJvdGF0ZSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0uZSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICcwJyk7CisK
Ky8vIFRPRE86IHdyaXRlIHRlc3RzIGZvciByb3RhdGVGcm9tVmVjdG9yKCkgYW5kIGltbXV0YWJp
bGl0eQorCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBmbGlwWCgpIik7CittNCA9IG0zLmZsaXBY
KCk7CitzaG91bGRCZSgnbTQuYScsICctNScpOworc2hvdWxkQmUoJ200LmInLCAnMCcpOworc2hv
dWxkQmUoJ200LmMnLCAnMCcpOworc2hvdWxkQmUoJ200LmQnLCAnNScpOworc2hvdWxkQmUoJ200
LmUnLCAnMTAwJyk7CitzaG91bGRCZSgnbTQuZicsICc1MCcpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCBpbW11dGFiaWxpdHkgb2YgZmxpcFgoKSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTMuYSknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuYiknLCAnMCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTMuYyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZCkn
LCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZSknLCAnMTAwJyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtMy5mKScsICc1MCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBmbGlw
WSgpIik7CittNCA9IG0zLmZsaXBZKCk7CitzaG91bGRCZSgnbTQuYScsICc1Jyk7CitzaG91bGRC
ZSgnbTQuYicsICcwJyk7CitzaG91bGRCZSgnbTQuYycsICcwJyk7CitzaG91bGRCZSgnbTQuZCcs
ICctNScpOworc2hvdWxkQmUoJ200LmUnLCAnMTAwJyk7CitzaG91bGRCZSgnbTQuZicsICc1MCcp
OworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2YgZmxpcFkoKSIpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuYSknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTMuYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuYyknLCAnMCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTMuZCknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMuZSkn
LCAnMTAwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5mKScsICc1MCcpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCBza2V3WCgpIik7CittID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgo
KTsKK20yID0gbS5za2V3WCgzMCk7CitzaG91bGRCZSgnbTIuYScsICcxJyk7CitzaG91bGRCZSgn
bTIuYicsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5jLnRvUHJlY2lzaW9uKDYpKScs
ICcwLjU3NzM1MCcpOworc2hvdWxkQmUoJ20yLmQnLCAnMScpOworc2hvdWxkQmUoJ20yLmUnLCAn
MCcpOworc2hvdWxkQmUoJ20yLmYnLCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBp
bW11dGFiaWxpdHkgb2Ygc2tld1goKSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5hKScsICcx
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmIpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0uYyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5kKScsICcxJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtLmUpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZikn
LCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBza2V3WSgpIik7CittID0gc3Zncm9v
dC5jcmVhdGVTVkdNYXRyaXgoKTsKK20yID0gbS5za2V3WSgzMCk7CitzaG91bGRCZSgnbTIuYScs
ICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5iLnRvUHJlY2lzaW9uKDYpKScsICcwLjU3
NzM1MCcpOworc2hvdWxkQmUoJ20yLmMnLCAnMCcpOworc2hvdWxkQmUoJ20yLmQnLCAnMScpOwor
c2hvdWxkQmUoJ20yLmUnLCAnMCcpOworc2hvdWxkQmUoJ20yLmYnLCAnMCcpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2tld1koKSIpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobS5hKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmIpJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5kKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmUpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0uZiknLCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBtdWx0
aXBseSIpOwordmFyIHR4ID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgoKTsKK3ZhciBzeCA9IHN2
Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7Cit0eCA9IHR4LnRyYW5zbGF0ZSgxMDAsMCk7CitzeCA9
IHN4LnNjYWxlTm9uVW5pZm9ybSgyLDEpOworbSA9IHR4Lm11bHRpcGx5KHN4KTsKK3Nob3VsZEJl
KCdtLmEnLCAnMicpOworc2hvdWxkQmUoJ20uYicsICcwJyk7CitzaG91bGRCZSgnbS5jJywgJzAn
KTsKK3Nob3VsZEJlKCdtLmQnLCAnMScpOworc2hvdWxkQmUoJ20uZScsICcxMDAnKTsKK3Nob3Vs
ZEJlKCdtLmYnLCAnMCcpOworCitkZWJ1ZygiIikKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBv
ZiBtdWx0aXBseSIpOworc2hvdWxkQmUoJ3R4LmEnLCAnMScpOworc2hvdWxkQmUoJ3R4LmInLCAn
MCcpOworc2hvdWxkQmUoJ3R4LmMnLCAnMCcpOworc2hvdWxkQmUoJ3R4LmQnLCAnMScpOworc2hv
dWxkQmUoJ3R4LmUnLCAnMTAwJyk7CitzaG91bGRCZSgndHguZicsICcwJyk7CitzaG91bGRCZSgn
c3guYScsICcyJyk7CitzaG91bGRCZSgnc3guYicsICcwJyk7CitzaG91bGRCZSgnc3guYycsICcw
Jyk7CitzaG91bGRCZSgnc3guZCcsICcxJyk7CitzaG91bGRCZSgnc3guZScsICcwJyk7CitzaG91
bGRCZSgnc3guZicsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IG11bHRpcGx5IHdp
dGggbWlzc2luZyBhcmd1bWVudCIpOworbSA9IG51bGw7Cit0cnkgeworICAgIG0gPSB0eC5tdWx0
aXBseSgpOworfSBjYXRjaChlKSB7fQorc2hvdWxkQmUoJ20nLCAnbnVsbCcpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCBpbnZlcnNlIik7CittID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgo
KTsKK20gPSBtLnRyYW5zbGF0ZSgxMCwyMCk7CittID0gbS5zY2FsZSgyKTsKK20yID0gbS5pbnZl
cnNlKCk7CisKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmEpJywgJzAuNScpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIuYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYyknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuZCknLCAnMC41Jyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMi5lKScsICctNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuZiknLCAnLTEw
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBpbnZlcnNlIik7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0uYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtLmQpJywgJzInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAn
MTAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZiknLCAnMjAnKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZSIpOworbSA9IG5ldyBX
ZWJLaXRDU1NNYXRyaXgoIm1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSIpOyAvLyBub3QgaW52ZXJ0
aWJsZQorc2hvdWxkVGhyb3coJ20uaW52ZXJzZSgpJyk7CisKK2RlYnVnKCIiKTsKK3N1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cis8L3Nj
cmlwdD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="24072"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42535</attachid>
            <date>2009-11-04 18:49:27 -0800</date>
            <delta_ts>2009-11-05 04:34:33 -0800</delta_ts>
            <desc>Remove conflict markers from changelog in patch.</desc>
            <filename>bug16062.patch2.txt</filename>
            <type>text/plain</type>
            <size>15268</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3Qgb3JkZXIgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIGZvciBTVkdNYXRyaXguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisg
ICAgICAgIFRlc3Q6IHN2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS54aHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdNYXRyaXg6Om11bHRpcGx5KToKKyAgICAgICAgKiBzdmcvU1ZHTWF0cml4LmlkbDoKKwog
MjAwOS0xMS0wNCAgUGF0cmljayBNdWVsbGVyICA8UGF0cmlja19NdWVsbGVyQHVzLmlibS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpAQCAtMTQyLDYgKzE1NSw3
IEBACiAgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKICAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKToKIAogMjAwOS0x
MS0wNCAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZl
cnQgNTA1MTkgd2hpbGUgSSB3b3JrIG91dCB3aGF0IHdlbnQgd3JvbmcuCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcAkocmV2aXNpb24gNTA1MjkpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgSmVmZiBTY2hpbGxlciA8Y29kZWRyZWFkQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjQsMTEgKzI1LDMwIEBACiAKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitKU1ZhbHVl
IEpTU1ZHTWF0cml4OjptdWx0aXBseShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworCisgICAgaWYg
KCFhcmdzLmF0KDApLmluaGVyaXRzKCZKU1NWR01hdHJpeDo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAic2Vjb25kTWF0cml4IGFyZ3VtZW50IHdh
cyBub3QgYSBTVkdNYXRyaXgiKTsKKworICAgIEpTU1ZHTWF0cml4KiBtYXRyaXhPYmogPSBzdGF0
aWNfY2FzdDxKU1NWR01hdHJpeCo+KGFzT2JqZWN0KGFyZ3MuYXQoMCkpKTsKKworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG0xKCppbXBsKCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG0y
KCoobWF0cml4T2JqLT5pbXBsKCkpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pT
KGV4ZWMsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoZXhlYyksIEpTU1ZHU3Rh
dGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpjcmVhdGUobTEubXVsdExl
ZnQobTIpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIEpTVmFsdWUgSlNTVkdNYXRyaXg6OmludmVyc2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JikKIHsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAoKmltcGwoKSk7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R01hdHJpeC5pZGwJKHJldmlzaW9uIDUwNTI5KQorKysgV2ViQ29yZS9zdmcvU1ZHTWF0cml4Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBtb2R1bGUgc3ZnIHsKICAgICAgICAg
YXR0cmlidXRlIGRvdWJsZSBlOwogICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGY7CiAKLSAgICAg
ICAgW0ltbXV0YWJsZV0gU1ZHTWF0cml4IG11bHRpcGx5KGluIFNWR01hdHJpeCBzZWNvbmRNYXRy
aXgpOworICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggbXVsdGlwbHkoaW4gU1ZHTWF0cml4IHNl
Y29uZE1hdHJpeCk7CiAgICAgICAgIFtDdXN0b21dIFNWR01hdHJpeCBpbnZlcnNlKCkKICAgICAg
ICAgICAgIHJhaXNlcyhTVkdFeGNlcHRpb24pOwogICAgICAgICBbSW1tdXRhYmxlXSBTVkdNYXRy
aXggdHJhbnNsYXRlKGluIGZsb2F0IHgsIGluIGZsb2F0IHkpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NTA1MjkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAwOS0xMS0wNCAgSmVmZiBTY2hpbGxlciAgPGNvZGVkcmVhZEBnbWFpbC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdCB0byBlbnN1cmUgcHJvcGVyIG9yZGVyIG9mIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiB3aXRo
IFNWR01hdHJpeC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MDYyCisKKyAgICAgICAgKiBzdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UueGh0
bWw6IEFkZGVkLgorCiAyMDA5LTExLTA0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KQEAgLTEwLDYgKzIwLDcg
QEAKICAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLWNvbWJvYm94LWV4
cGVjdGVkLnR4dDogQWRkZWQuCiAgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CiAKIDIw
MDktMTEtMDQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBQdXQgdGVzdCBpbnRvIHNraXBsaXN0IGFkZGVkIGluIHI1MDQ4OSBiZWNhdXNlCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRl
cmZhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorVGhpcyB0
ZXN0IGV4ZXJjaXNlcyB0aGUgU1ZHTWF0cml4IGludGVyZmFjZQorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworU1ZHTWF0cml4IGNvbnN0cnVjdG9ycworUEFTUyBkZWZhdWx0IGNvbnN0
cnVjdG9yCisKK1Rlc3QgYXR0cmlidXRlcyBvbiBkZWZhdWx0IG1hdHJpeAorUEFTUyBtLmEgaXMg
MQorUEFTUyBtLmIgaXMgMAorUEFTUyBtLmMgaXMgMAorUEFTUyBtLmQgaXMgMQorUEFTUyBtLmUg
aXMgMAorUEFTUyBtLmYgaXMgMAorCitUZXN0IGF0dHJpYnV0ZXMgb24gdHJhbnNsYXRlKCkgYW5k
IGFjY3VtdWxhdGlvbgorUEFTUyBtMi5hIGlzIDEKK1BBU1MgbTIuYiBpcyAwCitQQVNTIG0yLmMg
aXMgMAorUEFTUyBtMi5kIGlzIDEKK1BBU1MgbTIuZSBpcyAxMDAKK1BBU1MgbTIuZiBpcyA1MAor
CitUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFuc2xhdGUoKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkg
aXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMg
MAorUEFTUyBwYXJzZUZsb2F0KG0uZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAor
UEFTUyBwYXJzZUZsb2F0KG0uZikgaXMgMAorCitUZXN0IGF0dHJpYnV0ZXMgb24gc2NhbGUoKQor
UEFTUyBtMy5hIGlzIDUKK1BBU1MgbTMuYiBpcyAwCitQQVNTIG0zLmMgaXMgMAorUEFTUyBtMy5k
IGlzIDUKK1BBU1MgbTMuZSBpcyAxMDAKK1BBU1MgbTMuZiBpcyA1MAorCitUZXN0IGltbXV0YWJp
bGl0eSBvZiBzY2FsZSgpCitQQVNTIHBhcnNlRmxvYXQobTIuYSkgaXMgMQorUEFTUyBwYXJzZUZs
b2F0KG0yLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5jKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQobTIuZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0yLmUpIGlzIDEwMAorUEFTUyBwYXJzZUZs
b2F0KG0yLmYpIGlzIDUwCisKK1Rlc3QgYXR0cmlidXRlcyBvbiBzY2FsZU5vblVuaWZvcm0oKQor
UEFTUyBtNC5hIGlzIDEwCitQQVNTIG00LmIgaXMgMAorUEFTUyBtNC5jIGlzIDAKK1BBU1MgbTQu
ZCBpcyA1CitQQVNTIG00LmUgaXMgMTAwCitQQVNTIG00LmYgaXMgNTAKKworVGVzdCBpbW11dGFi
aWxpdHkgb2Ygc2NhbGVOb25Vbmlmb3JtKCkKK1BBU1MgcGFyc2VGbG9hdChtMy5hKSBpcyA1CitQ
QVNTIHBhcnNlRmxvYXQobTMuYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLmMpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtMy5kKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobTMuZSkgaXMgMTAwCitQ
QVNTIHBhcnNlRmxvYXQobTMuZikgaXMgNTAKKworVGVzdCByb3RhdGUoKQorUEFTUyBwYXJzZUZs
b2F0KG0yLmEudG9QcmVjaXNpb24oNikpIGlzIDAuOTg0ODA4CitQQVNTIHBhcnNlRmxvYXQobTIu
Yi50b1ByZWNpc2lvbig2KSkgaXMgMC4xNzM2NDgKK1BBU1MgcGFyc2VGbG9hdChtMi5jLnRvUHJl
Y2lzaW9uKDYpKSBpcyAtMC4xNzM2NDgKK1BBU1MgcGFyc2VGbG9hdChtMi5kLnRvUHJlY2lzaW9u
KDYpKSBpcyAwLjk4NDgwOAorUEFTUyBtLmUgaXMgMAorUEFTUyBtLmYgaXMgMAorCitUZXN0IGlt
bXV0YWJpbGl0eSBvZiByb3RhdGUoKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMQorUEFTUyBw
YXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0uZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAorUEFTUyBwYXJzZUZs
b2F0KG0uZikgaXMgMAorCitUZXN0IGZsaXBYKCkKK1BBU1MgbTQuYSBpcyAtNQorUEFTUyBtNC5i
IGlzIDAKK1BBU1MgbTQuYyBpcyAwCitQQVNTIG00LmQgaXMgNQorUEFTUyBtNC5lIGlzIDEwMAor
UEFTUyBtNC5mIGlzIDUwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIGZsaXBYKCkKK1BBU1MgcGFy
c2VGbG9hdChtMy5hKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobTMuYikgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0zLmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5kKSBpcyA1CitQQVNTIHBhcnNl
RmxvYXQobTMuZSkgaXMgMTAwCitQQVNTIHBhcnNlRmxvYXQobTMuZikgaXMgNTAKKworVGVzdCBm
bGlwWSgpCitQQVNTIG00LmEgaXMgNQorUEFTUyBtNC5iIGlzIDAKK1BBU1MgbTQuYyBpcyAwCitQ
QVNTIG00LmQgaXMgLTUKK1BBU1MgbTQuZSBpcyAxMDAKK1BBU1MgbTQuZiBpcyA1MAorCitUZXN0
IGltbXV0YWJpbGl0eSBvZiBmbGlwWSgpCitQQVNTIHBhcnNlRmxvYXQobTMuYSkgaXMgNQorUEFT
UyBwYXJzZUZsb2F0KG0zLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5jKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobTMuZCkgaXMgNQorUEFTUyBwYXJzZUZsb2F0KG0zLmUpIGlzIDEwMAorUEFT
UyBwYXJzZUZsb2F0KG0zLmYpIGlzIDUwCisKK1Rlc3Qgc2tld1goKQorUEFTUyBtMi5hIGlzIDEK
K1BBU1MgbTIuYiBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIuYy50b1ByZWNpc2lvbig2KSkgaXMg
MC41NzczNTAKK1BBU1MgbTIuZCBpcyAxCitQQVNTIG0yLmUgaXMgMAorUEFTUyBtMi5mIGlzIDAK
KworVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2tld1goKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMg
MQorUEFTUyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAor
UEFTUyBwYXJzZUZsb2F0KG0uZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAorUEFT
UyBwYXJzZUZsb2F0KG0uZikgaXMgMAorCitUZXN0IHNrZXdZKCkKK1BBU1MgbTIuYSBpcyAxCitQ
QVNTIHBhcnNlRmxvYXQobTIuYi50b1ByZWNpc2lvbig2KSkgaXMgMC41NzczNTAKK1BBU1MgbTIu
YyBpcyAwCitQQVNTIG0yLmQgaXMgMQorUEFTUyBtMi5lIGlzIDAKK1BBU1MgbTIuZiBpcyAwCisK
K1Rlc3QgaW1tdXRhYmlsaXR5IG9mIHNrZXdZKCkKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEK
K1BBU1MgcGFyc2VGbG9hdChtLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtLmQpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1Mg
cGFyc2VGbG9hdChtLmYpIGlzIDAKKworVGVzdCBtdWx0aXBseQorUEFTUyBtLmEgaXMgMgorUEFT
UyBtLmIgaXMgMAorUEFTUyBtLmMgaXMgMAorUEFTUyBtLmQgaXMgMQorUEFTUyBtLmUgaXMgMTAw
CitQQVNTIG0uZiBpcyAwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5CitQQVNTIHR4
LmEgaXMgMQorUEFTUyB0eC5iIGlzIDAKK1BBU1MgdHguYyBpcyAwCitQQVNTIHR4LmQgaXMgMQor
UEFTUyB0eC5lIGlzIDEwMAorUEFTUyB0eC5mIGlzIDAKK1BBU1Mgc3guYSBpcyAyCitQQVNTIHN4
LmIgaXMgMAorUEFTUyBzeC5jIGlzIDAKK1BBU1Mgc3guZCBpcyAxCitQQVNTIHN4LmUgaXMgMAor
UEFTUyBzeC5mIGlzIDAKKworVGVzdCBtdWx0aXBseSB3aXRoIG1pc3NpbmcgYXJndW1lbnQKK1BB
U1MgbSBpcyBudWxsCisKK1Rlc3QgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0yLmEpIGlzIDAu
NQorUEFTUyBwYXJzZUZsb2F0KG0yLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5jKSBpcyAw
CitQQVNTIHBhcnNlRmxvYXQobTIuZCkgaXMgMC41CitQQVNTIHBhcnNlRmxvYXQobTIuZSkgaXMg
LTUKK1BBU1MgcGFyc2VGbG9hdChtMi5mKSBpcyAtMTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Yg
aW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMgorUEFTUyBwYXJzZUZsb2F0KG0uYikg
aXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uZCkgaXMg
MgorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMTAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDIw
CisKK1Rlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZQorUEFTUyBtLmludmVyc2Uo
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9u
IDkuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UueGh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLnhodG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNl
LnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2NyBAQAorPGh0bWwgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBl
eGVyY2lzZXMgdGhlIFNWR01hdHJpeCBpbnRlcmZhY2UiKTsKKworZGVidWcoIiIpOworZGVidWco
IlNWR01hdHJpeCBjb25zdHJ1Y3RvcnMiKTsKKwordmFyIHN2Z3Jvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpOwordmFyIG0g
PSBudWxsOworbSA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7CitpZiAobSkKKyAgdGVzdFBh
c3NlZCgiZGVmYXVsdCBjb25zdHJ1Y3RvciIpOworZWxzZQorICB0ZXN0RmFpbGVkKCJkZWZhdWx0
IGNvbnN0cnVjdG9yIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24g
ZGVmYXVsdCBtYXRyaXgiKTsKK3Nob3VsZEJlKCdtLmEnLCAnMScpOworc2hvdWxkQmUoJ20uYics
ICcwJyk7CitzaG91bGRCZSgnbS5jJywgJzAnKTsKK3Nob3VsZEJlKCdtLmQnLCAnMScpOworc2hv
dWxkQmUoJ20uZScsICcwJyk7CitzaG91bGRCZSgnbS5mJywgJzAnKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3QgYXR0cmlidXRlcyBvbiB0cmFuc2xhdGUoKSBhbmQgYWNjdW11bGF0aW9uIik7
Cit2YXIgbTIgPSBtLnRyYW5zbGF0ZSg1MCwwKTsKK20yID0gbTIudHJhbnNsYXRlKDUwLDUwKTsK
K3Nob3VsZEJlKCdtMi5hJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5iJywgJzAnKTsKK3Nob3VsZEJl
KCdtMi5jJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5kJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5lJywg
JzEwMCcpOworc2hvdWxkQmUoJ20yLmYnLCAnNTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRl
c3QgaW1tdXRhYmlsaXR5IG9mIHRyYW5zbGF0ZSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
LmEpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobS5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQpJywgJzEn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobS5mKScsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24g
c2NhbGUoKSIpOwordmFyIG0zID0gbTIuc2NhbGUoNSk7CitzaG91bGRCZSgnbTMuYScsICc1Jyk7
CitzaG91bGRCZSgnbTMuYicsICcwJyk7CitzaG91bGRCZSgnbTMuYycsICcwJyk7CitzaG91bGRC
ZSgnbTMuZCcsICc1Jyk7CitzaG91bGRCZSgnbTMuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtMy5m
JywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBzY2Fs
ZSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5hKScsICcxJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMi5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5jKScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5kKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMi5lKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmYpJywgJzUwJyk7CisK
K2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24gc2NhbGVOb25Vbmlmb3JtKCki
KTsKK3ZhciBtNCA9IG0zLnNjYWxlTm9uVW5pZm9ybSgyLDEpOworc2hvdWxkQmUoJ200LmEnLCAn
MTAnKTsKK3Nob3VsZEJlKCdtNC5iJywgJzAnKTsKK3Nob3VsZEJlKCdtNC5jJywgJzAnKTsKK3No
b3VsZEJlKCdtNC5kJywgJzUnKTsKK3Nob3VsZEJlKCdtNC5lJywgJzEwMCcpOworc2hvdWxkQmUo
J200LmYnLCAnNTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5IG9m
IHNjYWxlTm9uVW5pZm9ybSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMy5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMy5lKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0z
LmYpJywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHJvdGF0ZSgpIik7CittID0g
c3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgoKTsKK20yID0gbS5yb3RhdGUoMTApOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIuYS50b1ByZWNpc2lvbig2KSknLCAnMC45ODQ4MDgnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0yLmIudG9QcmVjaXNpb24oNikpJywgJzAuMTczNjQ4Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5jLnRvUHJlY2lzaW9uKDYpKScsICctMC4xNzM2NDgnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0yLmQudG9QcmVjaXNpb24oNikpJywgJzAuOTg0ODA4Jyk7CitzaG91
bGRCZSgnbS5lJywgJzAnKTsKK3Nob3VsZEJlKCdtLmYnLCAnMCcpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlKCkiKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0uYSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCkn
LCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5lKScsICcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtLmYpJywgJzAnKTsKKworLy8gVE9ETzogd3JpdGUgdGVzdHMgZm9yIHJvdGF0ZUZy
b21WZWN0b3IoKSBhbmQgaW1tdXRhYmlsaXR5CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGZs
aXBYKCkiKTsKK200ID0gbTMuZmxpcFgoKTsKK3Nob3VsZEJlKCdtNC5hJywgJy01Jyk7CitzaG91
bGRCZSgnbTQuYicsICcwJyk7CitzaG91bGRCZSgnbTQuYycsICcwJyk7CitzaG91bGRCZSgnbTQu
ZCcsICc1Jyk7CitzaG91bGRCZSgnbTQuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtNC5mJywgJzUw
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBmbGlwWCgpIik7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMy5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5jKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5l
KScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLmYpJywgJzUwJyk7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IGZsaXBZKCkiKTsKK200ID0gbTMuZmxpcFkoKTsKK3Nob3VsZEJl
KCdtNC5hJywgJzUnKTsKK3Nob3VsZEJlKCdtNC5iJywgJzAnKTsKK3Nob3VsZEJlKCdtNC5jJywg
JzAnKTsKK3Nob3VsZEJlKCdtNC5kJywgJy01Jyk7CitzaG91bGRCZSgnbTQuZScsICcxMDAnKTsK
K3Nob3VsZEJlKCdtNC5mJywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0
YWJpbGl0eSBvZiBmbGlwWSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMy5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMy5lKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0z
LmYpJywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNrZXdYKCkiKTsKK20gPSBz
dmdyb290LmNyZWF0ZVNWR01hdHJpeCgpOworbTIgPSBtLnNrZXdYKDMwKTsKK3Nob3VsZEJlKCdt
Mi5hJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5iJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0yLmMudG9QcmVjaXNpb24oNikpJywgJzAuNTc3MzUwJyk7CitzaG91bGRCZSgnbTIuZCcsICcx
Jyk7CitzaG91bGRCZSgnbTIuZScsICcwJyk7CitzaG91bGRCZSgnbTIuZicsICcwJyk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBza2V3WCgpIik7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtLmQpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0
IHNrZXdZKCkiKTsKK20gPSBzdmdyb290LmNyZWF0ZVNWR01hdHJpeCgpOworbTIgPSBtLnNrZXdZ
KDMwKTsKK3Nob3VsZEJlKCdtMi5hJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmIu
dG9QcmVjaXNpb24oNikpJywgJzAuNTc3MzUwJyk7CitzaG91bGRCZSgnbTIuYycsICcwJyk7Citz
aG91bGRCZSgnbTIuZCcsICcxJyk7CitzaG91bGRCZSgnbTIuZScsICcwJyk7CitzaG91bGRCZSgn
bTIuZicsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBz
a2V3WSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0uYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0uZSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICcwJyk7CisKK2RlYnVn
KCIiKTsKK2RlYnVnKCJUZXN0IG11bHRpcGx5Iik7Cit2YXIgdHggPSBzdmdyb290LmNyZWF0ZVNW
R01hdHJpeCgpOwordmFyIHN4ID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgoKTsKK3R4ID0gdHgu
dHJhbnNsYXRlKDEwMCwwKTsKK3N4ID0gc3guc2NhbGVOb25Vbmlmb3JtKDIsMSk7CittID0gdHgu
bXVsdGlwbHkoc3gpOworc2hvdWxkQmUoJ20uYScsICcyJyk7CitzaG91bGRCZSgnbS5iJywgJzAn
KTsKK3Nob3VsZEJlKCdtLmMnLCAnMCcpOworc2hvdWxkQmUoJ20uZCcsICcxJyk7CitzaG91bGRC
ZSgnbS5lJywgJzEwMCcpOworc2hvdWxkQmUoJ20uZicsICcwJyk7CisKK2RlYnVnKCIiKQorZGVi
dWcoIlRlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5Iik7CitzaG91bGRCZSgndHguYScsICcx
Jyk7CitzaG91bGRCZSgndHguYicsICcwJyk7CitzaG91bGRCZSgndHguYycsICcwJyk7CitzaG91
bGRCZSgndHguZCcsICcxJyk7CitzaG91bGRCZSgndHguZScsICcxMDAnKTsKK3Nob3VsZEJlKCd0
eC5mJywgJzAnKTsKK3Nob3VsZEJlKCdzeC5hJywgJzInKTsKK3Nob3VsZEJlKCdzeC5iJywgJzAn
KTsKK3Nob3VsZEJlKCdzeC5jJywgJzAnKTsKK3Nob3VsZEJlKCdzeC5kJywgJzEnKTsKK3Nob3Vs
ZEJlKCdzeC5lJywgJzAnKTsKK3Nob3VsZEJlKCdzeC5mJywgJzAnKTsKKworZGVidWcoIiIpOwor
ZGVidWcoIlRlc3QgbXVsdGlwbHkgd2l0aCBtaXNzaW5nIGFyZ3VtZW50Iik7CittID0gbnVsbDsK
K3RyeSB7CisgICAgbSA9IHR4Lm11bHRpcGx5KCk7Cit9IGNhdGNoKGUpIHt9CitzaG91bGRCZSgn
bScsICdudWxsJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGludmVyc2UiKTsKK20gPSBz
dmdyb290LmNyZWF0ZVNWR01hdHJpeCgpOworbSA9IG0udHJhbnNsYXRlKDEwLDIwKTsKK20gPSBt
LnNjYWxlKDIpOworbTIgPSBtLmludmVyc2UoKTsKKworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIu
YSknLCAnMC41Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5iKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5kKScs
ICcwLjUnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmUpJywgJy01Jyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtMi5mKScsICctMTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1t
dXRhYmlsaXR5IG9mIGludmVyc2UiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSknLCAnMicp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMicpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobS5lKScsICcxMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScs
ICcyMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJv
bSBpbnZlcnNlIik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4KDAsIDAsIDAsIDAs
IDAsIDApIik7IC8vIG5vdCBpbnZlcnRpYmxlCitzaG91bGRUaHJvdygnbS5pbnZlcnNlKCknKTsK
KworZGVidWcoIiIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKworPHNjcmlwdD4KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="24086"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="24082"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42556</attachid>
            <date>2009-11-05 04:34:33 -0800</date>
            <delta_ts>2009-11-05 07:28:46 -0800</delta_ts>
            <desc>Updated correct patch via svn-create-patch with apologies :)</desc>
            <filename>bug16062.patch3.txt</filename>
            <type>text/plain</type>
            <size>14803</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENvcnJlY3Qgb3JkZXIgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIGZvciBTVkdNYXRyaXguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MgorCisg
ICAgICAgIFRlc3Q6IHN2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS54aHRtbAorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdNYXRyaXg6Om11bHRpcGx5KToKKyAgICAgICAgKiBzdmcvU1ZHTWF0cml4LmlkbDoKKwog
MjAwOS0xMS0wNCAgUGF0cmljayBNdWVsbGVyICA8UGF0cmlja19NdWVsbGVyQHVzLmlibS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHJldmlzaW9uIDUwNTI5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEplZmYgU2NoaWxsZXIgPGNvZGVkcmVhZEBnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTI0LDExICsyNSwzMCBAQAogCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
ICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorSlNWYWx1ZSBK
U1NWR01hdHJpeDo6bXVsdGlwbHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQoreworICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKworICAgIGlmICgh
YXJncy5hdCgwKS5pbmhlcml0cygmSlNTVkdNYXRyaXg6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgInNlY29uZE1hdHJpeCBhcmd1bWVudCB3YXMg
bm90IGEgU1ZHTWF0cml4Iik7CisKKyAgICBKU1NWR01hdHJpeCogbWF0cml4T2JqID0gc3RhdGlj
X2Nhc3Q8SlNTVkdNYXRyaXgqPihhc09iamVjdChhcmdzLmF0KDApKSk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtMSgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtMigq
KG1hdHJpeE9iai0+aW1wbCgpKSk7CisKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhl
eGVjLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKGV4ZWMpLCBKU1NWR1N0YXRp
Y1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRlKG0xLm11bHRMZWZ0
KG0yKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiBKU1ZhbHVlIEpTU1ZHTWF0cml4OjppbnZlcnNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJn
TGlzdCYpCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkpOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdN
YXRyaXguaWRsCShyZXZpc2lvbiA1MDUyOSkKKysrIFdlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbW9kdWxlIHN2ZyB7CiAgICAgICAgIGF0
dHJpYnV0ZSBkb3VibGUgZTsKICAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBmOwogCi0gICAgICAg
IFtJbW11dGFibGVdIFNWR01hdHJpeCBtdWx0aXBseShpbiBTVkdNYXRyaXggc2Vjb25kTWF0cml4
KTsKKyAgICAgICAgW0N1c3RvbV0gU1ZHTWF0cml4IG11bHRpcGx5KGluIFNWR01hdHJpeCBzZWNv
bmRNYXRyaXgpOwogICAgICAgICBbQ3VzdG9tXSBTVkdNYXRyaXggaW52ZXJzZSgpCiAgICAgICAg
ICAgICByYWlzZXMoU1ZHRXhjZXB0aW9uKTsKICAgICAgICAgW0ltbXV0YWJsZV0gU1ZHTWF0cml4
IHRyYW5zbGF0ZShpbiBmbG9hdCB4LCBpbiBmbG9hdCB5KTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUw
NTI5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMDktMTEtMDQgIEplZmYgU2NoaWxsZXIgIDxjb2RlZHJlYWRAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRl
c3QgdG8gZW5zdXJlIHByb3BlciBvcmRlciBvZiBtYXRyaXggbXVsdGlwbGljYXRpb24gd2l0aCBT
VkdNYXRyaXguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjA2MgorCisgICAgICAgICogc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLnhodG1s
OiBBZGRlZC4KKwogMjAwOS0xMS0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4uCkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHTWF0cml4LWludGVyZmFjZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MiBAQAorVGhpcyB0ZXN0IGV4ZXJj
aXNlcyB0aGUgU1ZHTWF0cml4IGludGVyZmFjZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworU1ZHTWF0cml4IGNvbnN0cnVjdG9ycworUEFTUyBkZWZhdWx0IGNvbnN0cnVjdG9yCisK
K1Rlc3QgYXR0cmlidXRlcyBvbiBkZWZhdWx0IG1hdHJpeAorUEFTUyBtLmEgaXMgMQorUEFTUyBt
LmIgaXMgMAorUEFTUyBtLmMgaXMgMAorUEFTUyBtLmQgaXMgMQorUEFTUyBtLmUgaXMgMAorUEFT
UyBtLmYgaXMgMAorCitUZXN0IGF0dHJpYnV0ZXMgb24gdHJhbnNsYXRlKCkgYW5kIGFjY3VtdWxh
dGlvbgorUEFTUyBtMi5hIGlzIDEKK1BBU1MgbTIuYiBpcyAwCitQQVNTIG0yLmMgaXMgMAorUEFT
UyBtMi5kIGlzIDEKK1BBU1MgbTIuZSBpcyAxMDAKK1BBU1MgbTIuZiBpcyA1MAorCitUZXN0IGlt
bXV0YWJpbGl0eSBvZiB0cmFuc2xhdGUoKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMQorUEFT
UyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0uZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0uZikgaXMgMAorCitUZXN0IGF0dHJpYnV0ZXMgb24gc2NhbGUoKQorUEFTUyBtMy5h
IGlzIDUKK1BBU1MgbTMuYiBpcyAwCitQQVNTIG0zLmMgaXMgMAorUEFTUyBtMy5kIGlzIDUKK1BB
U1MgbTMuZSBpcyAxMDAKK1BBU1MgbTMuZiBpcyA1MAorCitUZXN0IGltbXV0YWJpbGl0eSBvZiBz
Y2FsZSgpCitQQVNTIHBhcnNlRmxvYXQobTIuYSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0yLmIp
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5jKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIuZCkg
aXMgMQorUEFTUyBwYXJzZUZsb2F0KG0yLmUpIGlzIDEwMAorUEFTUyBwYXJzZUZsb2F0KG0yLmYp
IGlzIDUwCisKK1Rlc3QgYXR0cmlidXRlcyBvbiBzY2FsZU5vblVuaWZvcm0oKQorUEFTUyBtNC5h
IGlzIDEwCitQQVNTIG00LmIgaXMgMAorUEFTUyBtNC5jIGlzIDAKK1BBU1MgbTQuZCBpcyA1CitQ
QVNTIG00LmUgaXMgMTAwCitQQVNTIG00LmYgaXMgNTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2Yg
c2NhbGVOb25Vbmlmb3JtKCkKK1BBU1MgcGFyc2VGbG9hdChtMy5hKSBpcyA1CitQQVNTIHBhcnNl
RmxvYXQobTMuYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0zLmMpIGlzIDAKK1BBU1MgcGFyc2VG
bG9hdChtMy5kKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobTMuZSkgaXMgMTAwCitQQVNTIHBhcnNl
RmxvYXQobTMuZikgaXMgNTAKKworVGVzdCByb3RhdGUoKQorUEFTUyBwYXJzZUZsb2F0KG0yLmEu
dG9QcmVjaXNpb24oNikpIGlzIDAuOTg0ODA4CitQQVNTIHBhcnNlRmxvYXQobTIuYi50b1ByZWNp
c2lvbig2KSkgaXMgMC4xNzM2NDgKK1BBU1MgcGFyc2VGbG9hdChtMi5jLnRvUHJlY2lzaW9uKDYp
KSBpcyAtMC4xNzM2NDgKK1BBU1MgcGFyc2VGbG9hdChtMi5kLnRvUHJlY2lzaW9uKDYpKSBpcyAw
Ljk4NDgwOAorUEFTUyBtLmUgaXMgMAorUEFTUyBtLmYgaXMgMAorCitUZXN0IGltbXV0YWJpbGl0
eSBvZiByb3RhdGUoKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0
KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0u
ZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uZikg
aXMgMAorCitUZXN0IGZsaXBYKCkKK1BBU1MgbTQuYSBpcyAtNQorUEFTUyBtNC5iIGlzIDAKK1BB
U1MgbTQuYyBpcyAwCitQQVNTIG00LmQgaXMgNQorUEFTUyBtNC5lIGlzIDEwMAorUEFTUyBtNC5m
IGlzIDUwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIGZsaXBYKCkKK1BBU1MgcGFyc2VGbG9hdCht
My5hKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobTMuYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0z
LmMpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5kKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobTMu
ZSkgaXMgMTAwCitQQVNTIHBhcnNlRmxvYXQobTMuZikgaXMgNTAKKworVGVzdCBmbGlwWSgpCitQ
QVNTIG00LmEgaXMgNQorUEFTUyBtNC5iIGlzIDAKK1BBU1MgbTQuYyBpcyAwCitQQVNTIG00LmQg
aXMgLTUKK1BBU1MgbTQuZSBpcyAxMDAKK1BBU1MgbTQuZiBpcyA1MAorCitUZXN0IGltbXV0YWJp
bGl0eSBvZiBmbGlwWSgpCitQQVNTIHBhcnNlRmxvYXQobTMuYSkgaXMgNQorUEFTUyBwYXJzZUZs
b2F0KG0zLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMy5jKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQobTMuZCkgaXMgNQorUEFTUyBwYXJzZUZsb2F0KG0zLmUpIGlzIDEwMAorUEFTUyBwYXJzZUZs
b2F0KG0zLmYpIGlzIDUwCisKK1Rlc3Qgc2tld1goKQorUEFTUyBtMi5hIGlzIDEKK1BBU1MgbTIu
YiBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIuYy50b1ByZWNpc2lvbig2KSkgaXMgMC41NzczNTAK
K1BBU1MgbTIuZCBpcyAxCitQQVNTIG0yLmUgaXMgMAorUEFTUyBtMi5mIGlzIDAKKworVGVzdCBp
bW11dGFiaWxpdHkgb2Ygc2tld1goKQorUEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMQorUEFTUyBw
YXJzZUZsb2F0KG0uYikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0uZCkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0uZSkgaXMgMAorUEFTUyBwYXJzZUZs
b2F0KG0uZikgaXMgMAorCitUZXN0IHNrZXdZKCkKK1BBU1MgbTIuYSBpcyAxCitQQVNTIHBhcnNl
RmxvYXQobTIuYi50b1ByZWNpc2lvbig2KSkgaXMgMC41NzczNTAKK1BBU1MgbTIuYyBpcyAwCitQ
QVNTIG0yLmQgaXMgMQorUEFTUyBtMi5lIGlzIDAKK1BBU1MgbTIuZiBpcyAwCisKK1Rlc3QgaW1t
dXRhYmlsaXR5IG9mIHNrZXdZKCkKK1BBU1MgcGFyc2VGbG9hdChtLmEpIGlzIDEKK1BBU1MgcGFy
c2VGbG9hdChtLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLmMpIGlzIDAKK1BBU1MgcGFyc2VG
bG9hdChtLmQpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLmUpIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChtLmYpIGlzIDAKKworVGVzdCBtdWx0aXBseQorUEFTUyBtLmEgaXMgMgorUEFTUyBtLmIgaXMg
MAorUEFTUyBtLmMgaXMgMAorUEFTUyBtLmQgaXMgMQorUEFTUyBtLmUgaXMgMTAwCitQQVNTIG0u
ZiBpcyAwCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5CitQQVNTIHR4LmEgaXMgMQor
UEFTUyB0eC5iIGlzIDAKK1BBU1MgdHguYyBpcyAwCitQQVNTIHR4LmQgaXMgMQorUEFTUyB0eC5l
IGlzIDEwMAorUEFTUyB0eC5mIGlzIDAKK1BBU1Mgc3guYSBpcyAyCitQQVNTIHN4LmIgaXMgMAor
UEFTUyBzeC5jIGlzIDAKK1BBU1Mgc3guZCBpcyAxCitQQVNTIHN4LmUgaXMgMAorUEFTUyBzeC5m
IGlzIDAKKworVGVzdCBtdWx0aXBseSB3aXRoIG1pc3NpbmcgYXJndW1lbnQKK1BBU1MgbSBpcyBu
dWxsCisKK1Rlc3QgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0yLmEpIGlzIDAuNQorUEFTUyBw
YXJzZUZsb2F0KG0yLmIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5jKSBpcyAwCitQQVNTIHBh
cnNlRmxvYXQobTIuZCkgaXMgMC41CitQQVNTIHBhcnNlRmxvYXQobTIuZSkgaXMgLTUKK1BBU1Mg
cGFyc2VGbG9hdChtMi5mKSBpcyAtMTAKKworVGVzdCBpbW11dGFiaWxpdHkgb2YgaW52ZXJzZQor
UEFTUyBwYXJzZUZsb2F0KG0uYSkgaXMgMgorUEFTUyBwYXJzZUZsb2F0KG0uYikgaXMgMAorUEFT
UyBwYXJzZUZsb2F0KG0uYykgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0uZCkgaXMgMgorUEFTUyBw
YXJzZUZsb2F0KG0uZSkgaXMgMTAKK1BBU1MgcGFyc2VGbG9hdChtLmYpIGlzIDIwCisKK1Rlc3Qg
dGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZQorUEFTUyBtLmludmVyc2UoKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvZG9tL1NWR01hdHJpeC1pbnRlcmZhY2UueGh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLnhodG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdNYXRyaXgtaW50ZXJmYWNlLnhodG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2NyBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBleGVyY2lzZXMg
dGhlIFNWR01hdHJpeCBpbnRlcmZhY2UiKTsKKworZGVidWcoIiIpOworZGVidWcoIlNWR01hdHJp
eCBjb25zdHJ1Y3RvcnMiKTsKKwordmFyIHN2Z3Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpOwordmFyIG0gPSBudWxsOwor
bSA9IHN2Z3Jvb3QuY3JlYXRlU1ZHTWF0cml4KCk7CitpZiAobSkKKyAgdGVzdFBhc3NlZCgiZGVm
YXVsdCBjb25zdHJ1Y3RvciIpOworZWxzZQorICB0ZXN0RmFpbGVkKCJkZWZhdWx0IGNvbnN0cnVj
dG9yIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24gZGVmYXVsdCBt
YXRyaXgiKTsKK3Nob3VsZEJlKCdtLmEnLCAnMScpOworc2hvdWxkQmUoJ20uYicsICcwJyk7Citz
aG91bGRCZSgnbS5jJywgJzAnKTsKK3Nob3VsZEJlKCdtLmQnLCAnMScpOworc2hvdWxkQmUoJ20u
ZScsICcwJyk7CitzaG91bGRCZSgnbS5mJywgJzAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRl
c3QgYXR0cmlidXRlcyBvbiB0cmFuc2xhdGUoKSBhbmQgYWNjdW11bGF0aW9uIik7Cit2YXIgbTIg
PSBtLnRyYW5zbGF0ZSg1MCwwKTsKK20yID0gbTIudHJhbnNsYXRlKDUwLDUwKTsKK3Nob3VsZEJl
KCdtMi5hJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5iJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5jJywg
JzAnKTsKK3Nob3VsZEJlKCdtMi5kJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5lJywgJzEwMCcpOwor
c2hvdWxkQmUoJ20yLmYnLCAnNTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRh
YmlsaXR5IG9mIHRyYW5zbGF0ZSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzEn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobS5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQpJywgJzEnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScs
ICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24gc2NhbGUoKSIp
OwordmFyIG0zID0gbTIuc2NhbGUoNSk7CitzaG91bGRCZSgnbTMuYScsICc1Jyk7CitzaG91bGRC
ZSgnbTMuYicsICcwJyk7CitzaG91bGRCZSgnbTMuYycsICcwJyk7CitzaG91bGRCZSgnbTMuZCcs
ICc1Jyk7CitzaG91bGRCZSgnbTMuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtMy5mJywgJzUwJyk7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBzY2FsZSgpIik7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMi5hKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
Mi5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5jKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5kKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5lKScs
ICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmYpJywgJzUwJyk7CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24gc2NhbGVOb25Vbmlmb3JtKCkiKTsKK3ZhciBt
NCA9IG0zLnNjYWxlTm9uVW5pZm9ybSgyLDEpOworc2hvdWxkQmUoJ200LmEnLCAnMTAnKTsKK3No
b3VsZEJlKCdtNC5iJywgJzAnKTsKK3Nob3VsZEJlKCdtNC5jJywgJzAnKTsKK3Nob3VsZEJlKCdt
NC5kJywgJzUnKTsKK3Nob3VsZEJlKCdtNC5lJywgJzEwMCcpOworc2hvdWxkQmUoJ200LmYnLCAn
NTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5IG9mIHNjYWxlTm9u
VW5pZm9ybSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5jKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMy5lKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLmYpJywgJzUw
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHJvdGF0ZSgpIik7CittID0gc3Zncm9vdC5j
cmVhdGVTVkdNYXRyaXgoKTsKK20yID0gbS5yb3RhdGUoMTApOworc2hvdWxkQmUoJ3BhcnNlRmxv
YXQobTIuYS50b1ByZWNpc2lvbig2KSknLCAnMC45ODQ4MDgnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0yLmIudG9QcmVjaXNpb24oNikpJywgJzAuMTczNjQ4Jyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtMi5jLnRvUHJlY2lzaW9uKDYpKScsICctMC4xNzM2NDgnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0yLmQudG9QcmVjaXNpb24oNikpJywgJzAuOTg0ODA4Jyk7CitzaG91bGRCZSgnbS5l
JywgJzAnKTsKK3Nob3VsZEJlKCdtLmYnLCAnMCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVz
dCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlKCkiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSkn
LCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtLmMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5lKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
LmYpJywgJzAnKTsKKworLy8gVE9ETzogd3JpdGUgdGVzdHMgZm9yIHJvdGF0ZUZyb21WZWN0b3Io
KSBhbmQgaW1tdXRhYmlsaXR5CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGZsaXBYKCkiKTsK
K200ID0gbTMuZmxpcFgoKTsKK3Nob3VsZEJlKCdtNC5hJywgJy01Jyk7CitzaG91bGRCZSgnbTQu
YicsICcwJyk7CitzaG91bGRCZSgnbTQuYycsICcwJyk7CitzaG91bGRCZSgnbTQuZCcsICc1Jyk7
CitzaG91bGRCZSgnbTQuZScsICcxMDAnKTsKK3Nob3VsZEJlKCdtNC5mJywgJzUwJyk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBmbGlwWCgpIik7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5iKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5jKScsICcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5lKScsICcxMDAn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLmYpJywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0IGZsaXBZKCkiKTsKK200ID0gbTMuZmxpcFkoKTsKK3Nob3VsZEJlKCdtNC5hJywg
JzUnKTsKK3Nob3VsZEJlKCdtNC5iJywgJzAnKTsKK3Nob3VsZEJlKCdtNC5jJywgJzAnKTsKK3No
b3VsZEJlKCdtNC5kJywgJy01Jyk7CitzaG91bGRCZSgnbTQuZScsICcxMDAnKTsKK3Nob3VsZEJl
KCdtNC5mJywgJzUwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBv
ZiBmbGlwWSgpIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5hKScsICc1Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMy5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5jKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5kKScsICc1Jyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMy5lKScsICcxMDAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLmYpJywgJzUw
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNrZXdYKCkiKTsKK20gPSBzdmdyb290LmNy
ZWF0ZVNWR01hdHJpeCgpOworbTIgPSBtLnNrZXdYKDMwKTsKK3Nob3VsZEJlKCdtMi5hJywgJzEn
KTsKK3Nob3VsZEJlKCdtMi5iJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmMudG9Q
cmVjaXNpb24oNikpJywgJzAuNTc3MzUwJyk7CitzaG91bGRCZSgnbTIuZCcsICcxJyk7CitzaG91
bGRCZSgnbTIuZScsICcwJyk7CitzaG91bGRCZSgnbTIuZicsICcwJyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBza2V3WCgpIik7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtLmEpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYiknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmQp
JywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAnMCcpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobS5mKScsICcwJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNrZXdZKCki
KTsKK20gPSBzdmdyb290LmNyZWF0ZVNWR01hdHJpeCgpOworbTIgPSBtLnNrZXdZKDMwKTsKK3No
b3VsZEJlKCdtMi5hJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmIudG9QcmVjaXNp
b24oNikpJywgJzAuNTc3MzUwJyk7CitzaG91bGRCZSgnbTIuYycsICcwJyk7CitzaG91bGRCZSgn
bTIuZCcsICcxJyk7CitzaG91bGRCZSgnbTIuZScsICcwJyk7CitzaG91bGRCZSgnbTIuZicsICcw
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiBza2V3WSgpIik7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmEpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0uYiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5jKScsICcwJyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtLmQpJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZSknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICcwJyk7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0IG11bHRpcGx5Iik7Cit2YXIgdHggPSBzdmdyb290LmNyZWF0ZVNWR01hdHJpeCgp
OwordmFyIHN4ID0gc3Zncm9vdC5jcmVhdGVTVkdNYXRyaXgoKTsKK3R4ID0gdHgudHJhbnNsYXRl
KDEwMCwwKTsKK3N4ID0gc3guc2NhbGVOb25Vbmlmb3JtKDIsMSk7CittID0gdHgubXVsdGlwbHko
c3gpOworc2hvdWxkQmUoJ20uYScsICcyJyk7CitzaG91bGRCZSgnbS5iJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLmMnLCAnMCcpOworc2hvdWxkQmUoJ20uZCcsICcxJyk7CitzaG91bGRCZSgnbS5lJywg
JzEwMCcpOworc2hvdWxkQmUoJ20uZicsICcwJyk7CisKK2RlYnVnKCIiKQorZGVidWcoIlRlc3Qg
aW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5Iik7CitzaG91bGRCZSgndHguYScsICcxJyk7CitzaG91
bGRCZSgndHguYicsICcwJyk7CitzaG91bGRCZSgndHguYycsICcwJyk7CitzaG91bGRCZSgndHgu
ZCcsICcxJyk7CitzaG91bGRCZSgndHguZScsICcxMDAnKTsKK3Nob3VsZEJlKCd0eC5mJywgJzAn
KTsKK3Nob3VsZEJlKCdzeC5hJywgJzInKTsKK3Nob3VsZEJlKCdzeC5iJywgJzAnKTsKK3Nob3Vs
ZEJlKCdzeC5jJywgJzAnKTsKK3Nob3VsZEJlKCdzeC5kJywgJzEnKTsKK3Nob3VsZEJlKCdzeC5l
JywgJzAnKTsKK3Nob3VsZEJlKCdzeC5mJywgJzAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRl
c3QgbXVsdGlwbHkgd2l0aCBtaXNzaW5nIGFyZ3VtZW50Iik7CittID0gbnVsbDsKK3RyeSB7Cisg
ICAgbSA9IHR4Lm11bHRpcGx5KCk7Cit9IGNhdGNoKGUpIHt9CitzaG91bGRCZSgnbScsICdudWxs
Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGludmVyc2UiKTsKK20gPSBzdmdyb290LmNy
ZWF0ZVNWR01hdHJpeCgpOworbSA9IG0udHJhbnNsYXRlKDEwLDIwKTsKK20gPSBtLnNjYWxlKDIp
OworbTIgPSBtLmludmVyc2UoKTsKKworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIuYSknLCAnMC41
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtMi5jKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5kKScsICcwLjUnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLmUpJywgJy01Jyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMi5mKScsICctMTAnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5
IG9mIGludmVyc2UiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uYSknLCAnMicpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobS5iKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLmMpJywg
JzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0uZCknLCAnMicpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQobS5lKScsICcxMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5mKScsICcyMCcpOwor
CitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJvbSBpbnZlcnNl
Iik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4KDAsIDAsIDAsIDAsIDAsIDApIik7
IC8vIG5vdCBpbnZlcnRpYmxlCitzaG91bGRUaHJvdygnbS5pbnZlcnNlKCknKTsKKworZGVidWco
IiIpOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKwor
PHNjcmlwdD4KKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>