<?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>15123</bug_id>
          
          <creation_ts>2007-08-31 05:44:20 -0700</creation_ts>
          <short_desc>Self-replicating code makes Safari hang and eventually crash</short_desc>
          <delta_ts>2011-02-03 09:33:55 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>christopher.reiss</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mark.piper</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-08-31 05:44:20 -0700</bug_when>
    <thetext>The attached test case makes Safari hang and eventually crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104</commentid>
    <comment_count>1</comment_count>
      <attachid>16168</attachid>
    <who name="">mitz</who>
    <bug_when>2007-08-31 05:45:17 -0700</bug_when>
    <thetext>Created attachment 16168
Test case (will crash)

Causes Firefox to hang, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-31 07:29:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/5453375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-31 07:34:36 -0700</bug_when>
    <thetext>Not a regression as Safari 2.0.4 (419.3) with original WebKit on Mac OS X 10.4.10 (8R218) also exhibits this behavior.

Console message (repeated ad nauseum until crash):

[6861] http://bugs.webkit.org/attachment.cgi?id=16168&amp;action=view:Error - Recursion too deep

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329579</commentid>
    <comment_count>4</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-05 08:38:52 -0800</bug_when>
    <thetext>I&apos;ve started working on this ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331874</commentid>
    <comment_count>5</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-10 13:10:02 -0800</bug_when>
    <thetext>This creates infinite recursion in WebCore::Document::write( ).

A simple fix seems to be to simply limit the depth of this recursion.

Would this break anything?  It&apos;s hard for me to envision a real world example 
more than a level or two deep (and those are pretty strange.)

Feedback welcome ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331942</commentid>
    <comment_count>6</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-10 14:26:17 -0800</bug_when>
    <thetext>I tested this on Firefox (3.6.3, ubuntu release) and it handled this gracefully, bailing at 150 levels deep.

I see mention of this bug here https://bugzilla.mozilla.org/show_bug.cgi?id=82042.   Their solution refers vaguely to &apos;recursion checks&apos;, i&apos;m looking for the exact gecko code that implements this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332324</commentid>
    <comment_count>7</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-11 07:41:57 -0800</bug_when>
    <thetext>So gecko fixed this bug here, 
   https://bugzilla.mozilla.org/show_bug.cgi?id=197052.   

The patch imposes a recursion limit on document.write( ) of 20 (not 150, sorry.)

Since this has survived since mid 2008, this appears to be a safe fix.

Patch coming soon ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332375</commentid>
    <comment_count>8</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-11 08:59:37 -0800</bug_when>
    <thetext>bug 18689 appears to be a duplicate of this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332384</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-11 09:08:12 -0800</bug_when>
    <thetext>&gt; (not 150, sorry.)

Why not 150?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332398</commentid>
    <comment_count>10</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-11 09:25:27 -0800</bug_when>
    <thetext>150 was a miscalculation on my part before i went into the Gecko source.

The Gecko limit is given here :

content/html/document/src/nsHTMLDocument.cpp:151

    #define NS_MAX_DOCUMENT_WRITE_DEPTH 20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334634</commentid>
    <comment_count>11</comment_count>
      <attachid>79006</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-14 14:50:30 -0800</bug_when>
    <thetext>Created attachment 79006
defense against infinite recursion in document.write( )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334636</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 14:53:36 -0800</bug_when>
    <thetext>Attachment 79006 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/dom/html/level2/html/selfRepli...&quot; exit_code: 1

Source/WebCore/dom/Document.cpp:2251:  Missing spaces around ==  [whitespace/operators] [3]
Source/WebCore/dom/Document.cpp:2251:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/dom/Document.cpp:2252:  Missing spaces around =  [whitespace/operators] [4]
Source/WebCore/dom/Document.h:1397:  Extra space between int and m_writeRecursionDepth  [whitespace/declaration] [3]
Total errors found: 4 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334752</commentid>
    <comment_count>13</comment_count>
      <attachid>79006</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-14 17:05:32 -0800</bug_when>
    <thetext>Comment on attachment 79006
defense against infinite recursion in document.write( )

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

&gt; WebCore/dom/Document.cpp:214
&gt; +#define MAX_WRITE_RECURSION_DEPTH 20

We usually use constants instead of pre-processor macros.

&gt; WebCore/dom/Document.cpp:425
&gt; +    , m_tooDeepWriteRecursion(false)
&gt; +    , m_writeRecursionDepth(0)

Why do we have both of these variables?  One would seem to be sufficient.

&gt; WebCore/dom/Document.cpp:2222
&gt; +    // Prevent DOS attack from self-replicating javascript which causes infinite recursion here

This comment isn&apos;t necessary.

&gt; WebCore/dom/Document.cpp:2233
&gt; +    if (m_tooDeepWriteRecursion) {
&gt; +       m_writeRecursionDepth--;
&gt; +       return;
&gt; +    } else {
&gt; +       m_writeRecursionDepth++;
&gt; +    }

This logic doesn&apos;t make much sense to me.  Typically for these recursion-depth counts, we use a small class that increments the counter on construction and decrements the counter on destruction.  That way we know that we never leak a count.  There are examples of how to do this in the HTML parser related to the script nesting level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335390</commentid>
    <comment_count>14</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-17 10:36:46 -0800</bug_when>
    <thetext>Thanks for the quick feedback, i&apos;ll rework this to use const and a counter class.

As for the second variable,  m_tooDeepWriteRecursion,  and the odd logic here - 

&gt; +    if (m_tooDeepWriteRecursion) {
&gt; +       m_writeRecursionDepth--;
&gt; +       return;
&gt; +    } else {
&gt; +       m_writeRecursionDepth++;
&gt; +    }




these were counterintuitive to me too.  My first cut at fixing this just returned one level up when
 m_writeRecursionDepth &gt; MAX_WRITE_RECURSION_DEPTH.   This didn&apos;t fix the crash.

I noticed that Gecko&apos;s fix included extra logic to &apos;panic&apos; all the way up the stack the moment the recursion depth is exceeded.  
(see https://bug197052.bugzilla.mozilla.org/attachment.cgi?id=293907.)   

After a bit of research I found the javascript self-replication actually makes a tree of recursive calls like so - 

The first time through Script A appends an extra copy of itself : 

Script-A  --&gt;  Script-A  + Script-A 

          --&gt;  4 * Script-A

and so on.    So just bouncing up one level still allows a million or so copies to replicate.

Since the recursion is depth-first, Gecko takes the approach if the recursion depth has been 
exceeded, keep returning all the way up the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335472</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-17 13:00:02 -0800</bug_when>
    <thetext>I mean, there&apos;s no way to stop this crash in general.  Is this a problem in the real world or only in pathological cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335497</commentid>
    <comment_count>16</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-17 13:34:35 -0800</bug_when>
    <thetext>Not a real-world web page; but the bug makes for an easy DOS attack (with one line of javascript code, a page can be created which hangs and crashes any webkit based browser.)

Updated the patch just now, i&apos;m pretty sure this will handle any simple case of recursive document.write( ) &apos;s.

However, if a person is aware of the max-recursion-depth, it may be possible to come up with a somewhat more complicated variant ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335499</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-17 13:40:07 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Not a real-world web page; but the bug makes for an easy DOS attack (with one line of javascript code, a page can be created which hangs and crashes any webkit based browser.)

There are plenty of other one-liners that do the same thing.  There&apos;s no way for us to remove them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335507</commentid>
    <comment_count>18</comment_count>
      <attachid>79213</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-17 13:55:57 -0800</bug_when>
    <thetext>Created attachment 79213
updated fix to infinite recursion in document.write( )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335508</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-17 13:57:49 -0800</bug_when>
    <thetext>Attachment 79213 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/dom/html/level2/html/selfRepli...&quot; exit_code: 1

Source/WebCore/dom/Document.cpp:2248:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebCore/dom/Document.cpp:2250:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335512</commentid>
    <comment_count>20</comment_count>
      <attachid>79215</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-17 14:07:44 -0800</bug_when>
    <thetext>Created attachment 79215
updated fix w/ tabs(!) removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335516</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-17 14:17:10 -0800</bug_when>
    <thetext>Attachment 79213 did not build on chromium:
Build output: http://queues.webkit.org/results/7548176</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335517</commentid>
    <comment_count>22</comment_count>
      <attachid>79215</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-01-17 14:18:37 -0800</bug_when>
    <thetext>Comment on attachment 79215
updated fix w/ tabs(!) removed

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

This patch needs a ChangeLog, please see http://trac.webkit.org/wiki/QtWebKitContrib for more information on how to make patches.

Also, there are a number of coding style violations and unnecessary whitespace changes, please fix those for the next iteration.

&gt; WebCore/dom/Document.h:22
&gt; - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; + * the Free Software Foundation, Inc.,killed myspace 51 Franklin Street, Fifth Floor,

Not sure what&apos;s going on here ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335518</commentid>
    <comment_count>23</comment_count>
      <attachid>79215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-17 14:20:04 -0800</bug_when>
    <thetext>Comment on attachment 79215
updated fix w/ tabs(!) removed

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

It seems fine to fix this specific case that Firefox gets right, but I&apos;ll let it for others (Adam) to decide.

The below are just some style nits.

Please do add ChangeLogs: http://webkit.org/coding/contributing.html

&gt; WebCore/dom/Document.h:22
&gt; + * the Free Software Foundation, Inc.,killed myspace 51 Franklin Street, Fifth Floor,

I didn&apos;t know that!

&gt; WebCore/dom/Document.h:1383
&gt; +    bool m_tooDeepWriteRecursion;

For better readability, &quot;m_writeRecursionIsTooDeep&quot;.

&gt; WebCore/dom/Document.h:1384
&gt; +    unsigned int m_writeRecursionDepth;

We just use &quot;unsigned&quot;, not &quot;unsigned int&quot;.

&gt; WebCore/dom/Document.cpp:100
&gt; +#include &quot;NestingLevelIncrementer.h&quot;
&gt;  #include &quot;MediaQueryList.h&quot;

Includes should be in alphabetical order.

&gt; WebCore/dom/Document.cpp:215
&gt; +static const  int cMaxWriteRecursionDepth= 20;

There shouldn&apos;t be two spaces between const and int, and there should be a space before &quot;=&quot;.

&gt; WebCore/dom/Document.cpp:2226
&gt; +    m_tooDeepWriteRecursion = (m_writeRecursionDepth&gt;1) &amp;&amp; m_tooDeepWriteRecursion;
&gt; +    m_tooDeepWriteRecursion = (m_writeRecursionDepth&gt;cMaxWriteRecursionDepth) || m_tooDeepWriteRecursion;

There should be spaces around &quot;&gt;&quot;.

&gt; WebCore/dom/Document.cpp:2242
&gt;      if (!hasInsertionPoint &amp;&amp; m_ignoreDestructiveWriteCount)
&gt;          return;
&gt;  
&gt; +
&gt;      if (!hasInsertionPoint)
&gt;          open(ownerDocument);

Why did you add this empty line?

&gt; WebCore/dom/Document.cpp:2250
&gt; -#endif    
&gt; +#endif   

You removed one space, which is fine, but why not the other three?

&gt; LayoutTests/dom/html/level2/html/selfReplicatingJS.html:6
&gt; +&lt;script type=&apos;text/javascript&apos; src=&apos;selfhtml.js&apos;&gt;&lt;/script&gt;&lt;script type=&apos;text/javascript&apos;&gt;function loadComplete() { startTest(); }&lt;/script&gt;&lt;/HEAD&gt;

Please don&apos;t add new tests to LayoutTests/dom, and use an appropriate subdirectory of LayoutTests/fast/dom instead. These are imported W3C tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335522</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-17 14:29:14 -0800</bug_when>
    <thetext>Attachment 79215 did not build on chromium:
Build output: http://queues.webkit.org/results/7595185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336662</commentid>
    <comment_count>25</comment_count>
      <attachid>79455</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-19 11:24:10 -0800</bug_when>
    <thetext>Created attachment 79455
multiple style fixes, layout tests removed, changelogs updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339258</commentid>
    <comment_count>26</comment_count>
      <attachid>79975</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-24 14:11:15 -0800</bug_when>
    <thetext>Created attachment 79975
fix for document write recursion

Changed max recursion depth by 1 so output exactly matches that of Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339261</commentid>
    <comment_count>27</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-24 14:20:14 -0800</bug_when>
    <thetext>To summarize, this patch is the same logic as in FireFox patch https://bug197052.bugzilla.mozilla.org/attachment.cgi?id=293907 in bug 
https://bugzilla.mozilla.org/show_bug.cgi?id=197052 .

This latest tweak corrects an off-by-one count so that webkit&apos;s output matches that of firefox.

IE also handles this special case, but with a lower max recursion depth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339723</commentid>
    <comment_count>28</comment_count>
      <attachid>80078</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-25 10:23:24 -0800</bug_when>
    <thetext>Created attachment 80078
same as above, updated to merge cleanly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340134</commentid>
    <comment_count>29</comment_count>
      <attachid>80078</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-25 21:29:25 -0800</bug_when>
    <thetext>Comment on attachment 80078
same as above, updated to merge cleanly

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

&gt; Source/WebCore/dom/Document.cpp:105
&gt; +#include &quot;NestingLevelIncrementer.h&quot;

Technically we shouldn&apos;t be including headers from the parser directory in other parts of the project.  Ideally we&apos;d move this class to WebCore/platform or to WTF, but I&apos;m not going to make you do that in this patch.  It would be nice to do as a follow-up patch though.

&gt; Source/WebCore/dom/Document.cpp:2256
&gt; +    NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth);

I worry that the parser can destroy the document and then we&apos;ll be twiddling unallocated memory in this object&apos;s destructor.  If you look inside the parser, you&apos;ll see that it refs the document in some cases.  Some of the comments there or the svn blame for when those refs were added should give you some ideas for how to write a test to see this issue.

&gt; Source/WebCore/dom/Document.cpp:2259
&gt; +    m_writeRecursionIsTooDeep = (m_writeRecursionDepth &gt; 1) &amp;&amp; m_writeRecursionIsTooDeep;
&gt; +    m_writeRecursionIsTooDeep = (m_writeRecursionDepth &gt; cMaxWriteRecursionDepth) || m_writeRecursionIsTooDeep;

It&apos;s slightly strange that after we panic to the top of the stack m_writeRecursionIsTooDeep is still true even though there&apos;s not recursing on the stack.  m_writeRecursionIsTooDeep only gets cleared when write is finally called again with a clean stack.  I&apos;m not sure I see a clean way of clearing the variable though...

&gt; Source/WebCore/ChangeLog:7
&gt; +        Self-replicating code makes Safari hang and eventually crash
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=15123
&gt; +

It would be nice to explain more about why we&apos;re making this change.  For example, I would mention that we&apos;re trying to match Firefox, which is where these values and the &quot;panic to the top of the stack&quot; behavior come from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340138</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-25 21:30:34 -0800</bug_when>
    <thetext>See HTMLDocumentParser::insert for the ref() issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340139</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-25 21:31:52 -0800</bug_when>
    <thetext>Here&apos;s the change where those refs were added:

http://trac.webkit.org/changeset/65692

We should test patterns like the ones tested in that patch together with this panic / unwinding code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341534</commentid>
    <comment_count>32</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-28 11:03:14 -0800</bug_when>
    <thetext>So if I understand you correctly, what&apos;s needed is this guard code : 

    RefPtr&lt;Document&gt; protect(this);
    {
       NestingLevelIncrementer nestingLevelIncrementer(m_writeRecursionDepth);

         m_writeRecursionIsTooDeep = (m_writeRecursionDepth &gt; 1) &amp;&amp; m_writeRecursionIsTooDeep;
         m_writeRecursionIsTooDeep = (m_writeRecursionDepth &gt; cMaxWriteRecursionDepth) || m_writeRecursionIsTooDeep;

        if (m_writeRecursionIsTooDeep)
           return;
    }

and then essentially the same tests as for http://trac.webkit.org/changeset/65692

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341578</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 11:43:54 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; So if I understand you correctly, what&apos;s needed is this guard code :

It&apos;s a question.  It might be the case that the parser gets blown away but the document remains.  In any case, we should add the tests.  If the test pass then we don&apos;t need to change the code.  If the tests crash, we&apos;ll want to not crash.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341676</commentid>
    <comment_count>34</comment_count>
      <attachid>80488</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-28 13:09:22 -0800</bug_when>
    <thetext>Created attachment 80488
write recursion fix

added tests (non-crashing) and explanation to change-log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341711</commentid>
    <comment_count>35</comment_count>
      <attachid>80488</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 13:56:22 -0800</bug_when>
    <thetext>Comment on attachment 80488
write recursion fix

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

Thanks for adding the extra tests!

&gt; LayoutTests/fast/dom/Document/document-close-iframe-load.html:6
&gt; +&lt;!--iframe onload=&quot;document.open();document.close();&quot; --&gt;

Is there a reason this is commented out? This test doesn&apos;t seem like it tests very much...

&gt; LayoutTests/fast/dom/Document/document-close-iframe-load-expected.txt:2
&gt; +ALERT: PASS (just to make expected.txt non-empty)
&gt; +

I&apos;m not sure how this expected file gets generated here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341787</commentid>
    <comment_count>36</comment_count>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-28 15:21:28 -0800</bug_when>
    <thetext>you&apos;re right, that shouldn&apos;t be commented out, shall i patch on top of it once this lands to correct that?  (i did test with the comments removed!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341790</commentid>
    <comment_count>37</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 15:22:52 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; you&apos;re right, that shouldn&apos;t be commented out, shall i patch on top of it once this lands to correct that?  (i did test with the comments removed!)

I&apos;d just upload a new version of the patch.  The commit-queue should reject the patch if the test fails.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342065</commentid>
    <comment_count>38</comment_count>
      <attachid>80488</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-29 02:28:00 -0800</bug_when>
    <thetext>Comment on attachment 80488
write recursion fix

Rejecting attachment 80488 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;build-...&quot; exit_code: 2

Last 500 characters of output:
....................................................................................................................
fast/dom/Attr ....
fast/dom/CSSStyleDeclaration .....
fast/dom/DOMException ....
fast/dom/DOMImplementation .....
fast/dom/Document .....
fast/dom/Document/document-close-iframe-load.html -&gt; failed

Exiting early after 1 failures. 7141 tests run.
150.05s total testing time

7140 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
4 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7506476</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342613</commentid>
    <comment_count>39</comment_count>
      <attachid>80647</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-31 09:27:22 -0800</bug_when>
    <thetext>Created attachment 80647
write recursion fix

Fixed layout test ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342614</commentid>
    <comment_count>40</comment_count>
      <attachid>80648</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-01-31 09:32:42 -0800</bug_when>
    <thetext>Created attachment 80648
write recursion fix

fixed Layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342888</commentid>
    <comment_count>41</comment_count>
      <attachid>80488</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-31 16:05:53 -0800</bug_when>
    <thetext>Comment on attachment 80488
write recursion fix

Cleared Adam Barth&apos;s review+ from obsolete attachment 80488 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343049</commentid>
    <comment_count>42</comment_count>
      <attachid>80648</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-31 23:12:27 -0800</bug_when>
    <thetext>Comment on attachment 80648
write recursion fix

Rejecting attachment 80648 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;build-...&quot; exit_code: 2

Last 500 characters of output:
.................................................................................................................
fast/dom/Attr ....
fast/dom/CSSStyleDeclaration .....
fast/dom/DOMException ....
fast/dom/DOMImplementation .....
fast/dom/Document ..........
fast/dom/Document/document-write-recursion.html -&gt; failed

Exiting early after 1 failures. 7149 tests run.
150.76s total testing time

7148 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
4 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7685464</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343543</commentid>
    <comment_count>43</comment_count>
      <attachid>80827</attachid>
    <who name="chris reiss">christopher.reiss</who>
    <bug_when>2011-02-01 14:22:22 -0800</bug_when>
    <thetext>Created attachment 80827
write recursion fix

Another test fix.   Apologies to adam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343650</commentid>
    <comment_count>44</comment_count>
      <attachid>80827</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-01 16:23:04 -0800</bug_when>
    <thetext>Comment on attachment 80827
write recursion fix

Clearing flags on attachment: 80827

Committed r77333: &lt;http://trac.webkit.org/changeset/77333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343651</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-01 16:23:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343656</commentid>
    <comment_count>46</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-01 16:29:08 -0800</bug_when>
    <thetext>Yay~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344779</commentid>
    <comment_count>47</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-03 09:33:55 -0800</bug_when>
    <thetext>*** Bug 18689 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16168</attachid>
            <date>2007-08-31 05:45:17 -0700</date>
            <delta_ts>2007-08-31 05:45:17 -0700</delta_ts>
            <desc>Test case (will crash)</desc>
            <filename>hang and crash.html</filename>
            <type>text/html</type>
            <size>83</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SEFJCjxzY3JpcHQ+CiAgICB2YXIgdCA9IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOwogICAgZG9j
dW1lbnQud3JpdGUodCk7Cjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79006</attachid>
            <date>2011-01-14 14:50:30 -0800</date>
            <delta_ts>2011-01-17 13:55:57 -0800</delta_ts>
            <desc>defense against infinite recursion in document.write( )</desc>
            <filename>here.patch</filename>
            <type>text/plain</type>
            <size>3725</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNzUyNDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgwLDYgKzEzODAsOCBAQAogCiAgICAgRG9jdW1lbnRUaW1pbmcg
bV9kb2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IG1fbWVkaWFR
dWVyeU1hdGNoZXI7CisgICAgYm9vbCBtX3Rvb0RlZXBXcml0ZVJlY3Vyc2lvbjsKKyAgICBpbnQg
IG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIH07CiAKIGlubGluZSBib29sIERvY3VtZW50OjpEb2N1
bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNzUyNDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCisjZGVmaW5lIE1BWF9XUklURV9SRUNVUlNJT05fREVQVEggMjAKKwogLy8gI2Rl
ZmluZSBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HIDEKIAogLy8gVGhpcyBhbW91bnQgb2Yg
dGltZSBtdXN0IGhhdmUgZWxhcHNlZCBiZWZvcmUgd2Ugd2lsbCBldmVuIGNvbnNpZGVyIHNjaGVk
dWxpbmcgYSBsYXlvdXQgd2l0aG91dCBhIGRlbGF5LgpAQCAtNDE5LDYgKzQyMSw4IEBACiAgICAg
LCBtX2xvYWRFdmVudERlbGF5VGltZXIodGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRp
bWVyRmlyZWQpCiAgICAgLCBtX2RpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KGZhbHNlKQog
ICAgICwgbV93cml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KGZhbHNlKQorICAgICwgbV90
b29EZWVwV3JpdGVSZWN1cnNpb24oZmFsc2UpCisgICAgLCBtX3dyaXRlUmVjdXJzaW9uRGVwdGgo
MCkKIHsKICAgICBtX2RvY3VtZW50ID0gdGhpczsKIApAQCAtMjIxNSwxNCArMjIxOSwzMCBAQAog
CiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3Vt
ZW50KiBvd25lckRvY3VtZW50KQogeworICAgIC8vIFByZXZlbnQgRE9TIGF0dGFjayBmcm9tIHNl
bGYtcmVwbGljYXRpbmcgamF2YXNjcmlwdCB3aGljaCBjYXVzZXMgaW5maW5pdGUgcmVjdXJzaW9u
IGhlcmUKKyAgICBtX3Rvb0RlZXBXcml0ZVJlY3Vyc2lvbiA9ICBtX3dyaXRlUmVjdXJzaW9uRGVw
dGggPiBNQVhfV1JJVEVfUkVDVVJTSU9OX0RFUFRIIHx8IG1fdG9vRGVlcFdyaXRlUmVjdXJzaW9u
OworICAgICAgIAorICAgIGlmIChtX3dyaXRlUmVjdXJzaW9uRGVwdGg9PTApCisgICAgICAgbV90
b29EZWVwV3JpdGVSZWN1cnNpb249ZmFsc2U7ICAgICAgIAorCisgICAgaWYgKG1fdG9vRGVlcFdy
aXRlUmVjdXJzaW9uKSB7CisgICAgICAgbV93cml0ZVJlY3Vyc2lvbkRlcHRoLS07CisgICAgICAg
cmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKys7Cisg
ICAgfQorCisgICAgICAgCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAg
IGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9jdW1l
bnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCiAKICAgICBib29sIGhh
c0luc2VydGlvblBvaW50ID0gbV9wYXJzZXIgJiYgbV9wYXJzZXItPmhhc0luc2VydGlvblBvaW50
KCk7Ci0gICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludCAmJiBtX2lnbm9yZURlc3RydWN0aXZlV3Jp
dGVDb3VudCkKKyAgICBpZiAoIWhhc0luc2VydGlvblBvaW50ICYmIG1faWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50KSB7CisgICAgICAgIG1fd3JpdGVSZWN1cnNpb25EZXB0aC0tOwogICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKCFoYXNJbnNlcnRpb25Qb2ludCkKICAgICAgICAg
b3Blbihvd25lckRvY3VtZW50KTsKQEAgLTIyMzMsNyArMjI1Myw4IEBACiAjaWZkZWYgSU5TVFJV
TUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAg
IHByaW50ZigiRW5kaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkp
OwotI2VuZGlmICAgIAorI2VuZGlmICAgCisgICAgbV93cml0ZVJlY3Vyc2lvbkRlcHRoLS07CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OndyaXRlKGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQpCkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxm
UmVwbGljYXRpbmdKUy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xl
dmVsMi9odG1sL3NlbGZSZXBsaWNhdGluZ0pTLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmUmVwbGljYXRpbmdKUy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFRE
IEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8TUVUQSBIVFRQ
LUVRVUlWPSJDb250ZW50LVR5cGUiIENPTlRFTlQ9InRleHQvaHRtbDsgQ0hBUlNFVD11dGYtOCI+
Cis8VElUTEU+TklTVCBET00gSFRNTCBUZXN0IC0gU2VsZiByZXBsaWNhdGluZyBqYXZhc2NyaXB0
PC9USVRMRT4KKzxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J3NlbGZodG1sLmpz
Jz48L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENv
bXBsZXRlKCkgeyBzdGFydFRlc3QoKTsgfTwvc2NyaXB0PjwvSEVBRD4KKzxCT0RZIG9ubG9hZD0i
bG9hZENvbXBsZXRlKCkiPgorPHNjcmlwdD4KKyAgICB2YXIgdCA9IGRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MOworICAgIGRvY3VtZW50LndyaXRlKHQpOworPC9zY3JpcHQ+Cis8UD4KKzwtLS0gaWYg
ZmFpbHVyZSwgdGhlIGJyb3dzZXIgaGFuZ3MgYW5kIGNyYXNoZXMgYmVmb3JlIGl0IGNhbiByZW5k
ZXIgYW55dGhpbmcuIC0tLT4KK1N0YXR1czogU3VjY2VzcworPC9QPgorPC9CT0RZPgorPC9IVE1M
PgpJbmRleDogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvc2VsZlJlcGxpY2F0aW5n
SlMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
Mi9odG1sL3NlbGZSZXBsaWNhdGluZ0pTLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL3NlbGZSZXBsaWNhdGluZ0pTLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorU3RhdHVzOiBTdWNjZXNzClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="70388"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79213</attachid>
            <date>2011-01-17 13:55:57 -0800</date>
            <delta_ts>2011-01-17 14:01:14 -0800</delta_ts>
            <desc>updated fix to infinite recursion in document.write( )</desc>
            <filename>here3.patch</filename>
            <type>text/plain</type>
            <size>4043</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNzUyNDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKgogICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLGtpbGxlZCBteXNwYWNlIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCiAgKi8KQEAgLTEzODAsNiAr
MTM4MCw4IEBACiAKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50VGltaW5nOwogICAgIFJl
ZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tZWRpYVF1ZXJ5TWF0Y2hlcjsKKyAgICBib29sIG1f
dG9vRGVlcFdyaXRlUmVjdXJzaW9uOworICAgIHVuc2lnbmVkIGludCBtX3dyaXRlUmVjdXJzaW9u
RGVwdGg7CiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpj
b250YWlucyhBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDc1MjQ4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw2ICs5Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKQEAgLTIxMSw2ICsyMTIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitz
dGF0aWMgY29uc3QgIGludCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aD0gMjA7CisKIC8vICNkZWZp
bmUgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORyAxCiAKIC8vIFRoaXMgYW1vdW50IG9mIHRp
bWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVs
aW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KQEAgLTQxOSw2ICs0MjIsOCBAQAogICAgICwg
bV9sb2FkRXZlbnREZWxheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1l
ckZpcmVkKQogICAgICwgbV9kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudChmYWxzZSkKICAg
ICAsIG1fd3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudChmYWxzZSkKKyAgICAsIG1fdG9v
RGVlcFdyaXRlUmVjdXJzaW9uKGZhbHNlKQorICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDAp
CiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTIyMTUsNiArMjIyMCwxNCBAQAogCiB2
b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KQogeworICAgIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdM
ZXZlbEluY3JlbWVudGVyKG1fd3JpdGVSZWN1cnNpb25EZXB0aCk7CQorCisgICAgbV90b29EZWVw
V3JpdGVSZWN1cnNpb24gPSAobV93cml0ZVJlY3Vyc2lvbkRlcHRoPjEpICYmIG1fdG9vRGVlcFdy
aXRlUmVjdXJzaW9uOwkKKyAgICBtX3Rvb0RlZXBXcml0ZVJlY3Vyc2lvbiA9IChtX3dyaXRlUmVj
dXJzaW9uRGVwdGg+Y01heFdyaXRlUmVjdXJzaW9uRGVwdGgpIHx8IG1fdG9vRGVlcFdyaXRlUmVj
dXJzaW9uOworCisgICAgaWYgKG1fdG9vRGVlcFdyaXRlUmVjdXJzaW9uKQorICAgICAgICByZXR1
cm47CisgICAgCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICgh
b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3Jp
dGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwpAQCAtMjIyNCw2ICsyMjM3LDcgQEAKICAgICBp
ZiAoIWhhc0luc2VydGlvblBvaW50ICYmIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50KQog
ICAgICAgICByZXR1cm47CiAKKwogICAgIGlmICghaGFzSW5zZXJ0aW9uUG9pbnQpCiAgICAgICAg
IG9wZW4ob3duZXJEb2N1bWVudCk7CiAKQEAgLTIyMzMsNyArMjI0Nyw4IEBACiAjaWZkZWYgSU5T
VFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAg
ICAgIHByaW50ZigiRW5kaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1l
KCkpOwotI2VuZGlmICAgIAorI2VuZGlmICAgCisgCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndyaXRl
KGNvbnN0IFN0cmluZyYgdGV4dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCkluZGV4OiBMYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmUmVwbGljYXRpbmdKUy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL3NlbGZSZXBsaWNhdGlu
Z0pTLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRt
bC9zZWxmUmVwbGljYXRpbmdKUy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwv
L0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8TUVUQSBIVFRQLUVRVUlWPSJDb250ZW50LVR5cGUiIENP
TlRFTlQ9InRleHQvaHRtbDsgQ0hBUlNFVD11dGYtOCI+Cis8VElUTEU+TklTVCBET00gSFRNTCBU
ZXN0IC0gU2VsZiByZXBsaWNhdGluZyBqYXZhc2NyaXB0PC9USVRMRT4KKzxzY3JpcHQgdHlwZT0n
dGV4dC9qYXZhc2NyaXB0JyBzcmM9J3NlbGZodG1sLmpzJz48L3NjcmlwdD48c2NyaXB0IHR5cGU9
J3RleHQvamF2YXNjcmlwdCc+ZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkgeyBzdGFydFRlc3QoKTsg
fTwvc2NyaXB0PjwvSEVBRD4KKzxCT0RZIG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgorPHNjcmlw
dD4KKyAgICB2YXIgdCA9IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOworICAgIGRvY3VtZW50Lndy
aXRlKHQpOworPC9zY3JpcHQ+Cis8UD4KKzwtLS0gaWYgZmFpbHVyZSwgdGhlIGJyb3dzZXIgaGFu
Z3MgYW5kIGNyYXNoZXMgYmVmb3JlIGl0IGNhbiByZW5kZXIgYW55dGhpbmcuIC0tLT4KK1N0YXR1
czogU3VjY2VzcworPC9QPgorPC9CT0RZPgorPC9IVE1MPgpJbmRleDogTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwyL2h0bWwvc2VsZlJlcGxpY2F0aW5nSlMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL3NlbGZSZXBsaWNhdGluZ0pT
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
Mi9odG1sL3NlbGZSZXBsaWNhdGluZ0pTLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSBAQAorU3RhdHVzOiBTdWNjZXNzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79215</attachid>
            <date>2011-01-17 14:07:44 -0800</date>
            <delta_ts>2011-01-31 09:27:22 -0800</delta_ts>
            <desc>updated fix w/ tabs(!) removed</desc>
            <filename>here4.patch</filename>
            <type>text/plain</type>
            <size>4041</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNzUyNDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAgKgogICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLGtpbGxlZCBteXNwYWNlIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqCiAgKi8KQEAgLTEzODAsNiAr
MTM4MCw4IEBACiAKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50VGltaW5nOwogICAgIFJl
ZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tZWRpYVF1ZXJ5TWF0Y2hlcjsKKyAgICBib29sIG1f
dG9vRGVlcFdyaXRlUmVjdXJzaW9uOworICAgIHVuc2lnbmVkIGludCBtX3dyaXRlUmVjdXJzaW9u
RGVwdGg7CiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpj
b250YWlucyhBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDc1MjQ4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Niw2ICs5Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlMaXN0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeU1hdGNoZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKQEAgLTIxMSw2ICsyMTIsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitz
dGF0aWMgY29uc3QgIGludCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aD0gMjA7CisKIC8vICNkZWZp
bmUgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORyAxCiAKIC8vIFRoaXMgYW1vdW50IG9mIHRp
bWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVs
aW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KQEAgLTQxOSw2ICs0MjIsOCBAQAogICAgICwg
bV9sb2FkRXZlbnREZWxheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1l
ckZpcmVkKQogICAgICwgbV9kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudChmYWxzZSkKICAg
ICAsIG1fd3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudChmYWxzZSkKKyAgICAsIG1fdG9v
RGVlcFdyaXRlUmVjdXJzaW9uKGZhbHNlKQorICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDAp
CiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTIyMTUsNiArMjIyMCwxNCBAQAogCiB2
b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KQogeworICAgIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdM
ZXZlbEluY3JlbWVudGVyKG1fd3JpdGVSZWN1cnNpb25EZXB0aCk7CisKKyAgICBtX3Rvb0RlZXBX
cml0ZVJlY3Vyc2lvbiA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGg+MSkgJiYgbV90b29EZWVwV3Jp
dGVSZWN1cnNpb247CisgICAgbV90b29EZWVwV3JpdGVSZWN1cnNpb24gPSAobV93cml0ZVJlY3Vy
c2lvbkRlcHRoPmNNYXhXcml0ZVJlY3Vyc2lvbkRlcHRoKSB8fCBtX3Rvb0RlZXBXcml0ZVJlY3Vy
c2lvbjsKKworICAgIGlmIChtX3Rvb0RlZXBXcml0ZVJlY3Vyc2lvbikKKyAgICAgICAgcmV0dXJu
OworICAgIAogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW93
bmVyRWxlbWVudCgpKQogICAgICAgICBwcmludGYoIkJlZ2lubmluZyBhIGRvY3VtZW50LndyaXRl
IGF0ICVkXG4iLCBlbGFwc2VkVGltZSgpKTsKQEAgLTIyMjQsNiArMjIzNyw3IEBACiAgICAgaWYg
KCFoYXNJbnNlcnRpb25Qb2ludCAmJiBtX2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudCkKICAg
ICAgICAgcmV0dXJuOwogCisKICAgICBpZiAoIWhhc0luc2VydGlvblBvaW50KQogICAgICAgICBv
cGVuKG93bmVyRG9jdW1lbnQpOwogCkBAIC0yMjMzLDcgKzIyNDcsOCBAQAogI2lmZGVmIElOU1RS
VU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW93bmVyRWxlbWVudCgpKQogICAgICAg
ICBwcmludGYoIkVuZGluZyBhIGRvY3VtZW50LndyaXRlIGF0ICVkXG4iLCBlbGFwc2VkVGltZSgp
KTsKLSNlbmRpZiAgICAKKyNlbmRpZiAgIAorIAogfQogCiB2b2lkIERvY3VtZW50Ojp3cml0ZShj
b25zdCBTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQpJbmRleDogTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvc2VsZlJlcGxpY2F0aW5nSlMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmUmVwbGljYXRpbmdK
Uy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwv
c2VsZlJlcGxpY2F0aW5nSlMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9F
TiI+Cis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1UeXBlIiBDT05U
RU5UPSJ0ZXh0L2h0bWw7IENIQVJTRVQ9dXRmLTgiPgorPFRJVExFPk5JU1QgRE9NIEhUTUwgVGVz
dCAtIFNlbGYgcmVwbGljYXRpbmcgamF2YXNjcmlwdDwvVElUTEU+Cis8c2NyaXB0IHR5cGU9J3Rl
eHQvamF2YXNjcmlwdCcgc3JjPSdzZWxmaHRtbC5qcyc+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIGxvYWRDb21wbGV0ZSgpIHsgc3RhcnRUZXN0KCk7IH08
L3NjcmlwdD48L0hFQUQ+Cis8Qk9EWSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KKzxzY3JpcHQ+
CisgICAgdmFyIHQgPSBkb2N1bWVudC5ib2R5LmlubmVySFRNTDsKKyAgICBkb2N1bWVudC53cml0
ZSh0KTsKKzwvc2NyaXB0PgorPFA+Cis8LS0tIGlmIGZhaWx1cmUsIHRoZSBicm93c2VyIGhhbmdz
IGFuZCBjcmFzaGVzIGJlZm9yZSBpdCBjYW4gcmVuZGVyIGFueXRoaW5nLiAtLS0+CitTdGF0dXM6
IFN1Y2Nlc3MKKzwvUD4KKzwvQk9EWT4KKzwvSFRNTD4KSW5kZXg6IExheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMi9odG1sL3NlbGZSZXBsaWNhdGluZ0pTLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmUmVwbGljYXRpbmdKUy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIv
aHRtbC9zZWxmUmVwbGljYXRpbmdKUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK1N0YXR1czogU3VjY2VzcwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="70604"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79455</attachid>
            <date>2011-01-19 11:24:10 -0800</date>
            <delta_ts>2011-01-24 14:25:04 -0800</delta_ts>
            <desc>multiple style fixes, layout tests removed, changelogs updated</desc>
            <filename>ok.patch</filename>
            <type>text/plain</type>
            <size>4619</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3NjEyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkxLDYgKzEzOTEsOCBAQAog
CiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFR
dWVyeU1hdGNoZXI+IG1fbWVkaWFRdWVyeU1hdGNoZXI7CisgICAgYm9vbCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwOworICAgIHVuc2lnbmVkIG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIH07CiAK
IGlubGluZSBib29sIERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKEF0b21p
Y1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA3NjEyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5v
ZGVMaXN0LmgiCisjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRl
ICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9k
ZVdpdGhJbmRleC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aCA9
IDIwOworCiAvLyAjZGVmaW5lIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcgMQogCiAvLyBU
aGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3aWxsIGV2ZW4g
Y29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCkBAIC00MjQsNiAr
NDI3LDggQEAKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6Omxv
YWRFdmVudERlbGF5VGltZXJGaXJlZCkKICAgICAsIG1fZGlyZWN0aW9uU2V0T25Eb2N1bWVudEVs
ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFs
c2UpCisgICAgLCBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwKGZhbHNlKQorICAgICwgbV93cml0
ZVJlY3Vyc2lvbkRlcHRoKDApCiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTIyNDAs
NiArMjI0NSwxNCBAQAogCiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogeworICAgIE5lc3RpbmdMZXZlbElu
Y3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fd3JpdGVSZWN1cnNpb25EZXB0aCk7
CisKKyAgICBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwID0gKG1fd3JpdGVSZWN1cnNpb25EZXB0
aCA+IDEpICYmIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisgICAgbV93cml0ZVJlY3Vyc2lv
bklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiBjTWF4V3JpdGVSZWN1cnNpb25E
ZXB0aCkgfHwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKKworICAgIGlmIChtX3dyaXRlUmVj
dXJzaW9uSXNUb29EZWVwKQorICAgICAgICByZXR1cm47CisgICAgCiAjaWZkZWYgSU5TVFJVTUVO
VF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAgIHBy
aW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzYxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMS0xOSAgY2hyaXN0
b3BoZXIgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZi1yZXBsaWNhdGluZyBjb2Rl
IG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNyYXNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMworCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3cml0ZSk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisKIDIwMTEtMDEtMTggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVj
dXJzaW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp
dGlvbmFsLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1U
eXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IENIQVJTRVQ9dXRmLTgiPgorPFRJVExFPkRPTSBIVE1M
IFRlc3QgLSBTZWxmIHJlcGxpY2F0aW5nIGphdmFzY3JpcHQ8L1RJVExFPgorPEJPRFkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Cis8c2NyaXB0PgorICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keS5p
bm5lckhUTUw7CisgICAgZG9jdW1lbnQud3JpdGUodCk7Cis8L3NjcmlwdD4KKzxQPgorU3VjY2Vz
cy4KKzwvUD4KKzwvQk9EWT4KKzwvSFRNTD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0Rv
Y3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGUgcmVjdXJzaW9uIG9uIGRvY3VtZW50LndyaXRl
KCApLgorCitPbiBzdWNjZXNzLCB0aGUgd2ViIHBhZ2Ugd2lsbCByZW5kZXIgdGhlIHdvcmQgIlN1
Y2Nlc3MuIgorCitPbiBmYWlsdXJlLCB0aGUgYnJvd3NlciB3aWxsIGhhbmcgYW5kIHRoZW4gY3Jh
c2guCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjE0MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTE5ICBjaHJpc3RvcGhlciBy
ZWlzcyAgPGNocmlzdG9waGVyLnJlaXNzQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWxmLXJlcGxpY2F0aW5nIGNvZGUgbWFrZXMg
U2FmYXJpIGhhbmcgYW5kIGV2ZW50dWFsbHkgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIzCisKKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1
bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTEtMDEtMTkgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSBXaW5kb3dzIGV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIgcjc2MTE1
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79975</attachid>
            <date>2011-01-24 14:11:15 -0800</date>
            <delta_ts>2011-01-24 14:41:54 -0800</delta_ts>
            <desc>fix for document write recursion</desc>
            <filename>write_recursion.patch</filename>
            <type>text/plain</type>
            <size>4619</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3NjEyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkxLDYgKzEzOTEsOCBAQAog
CiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFR
dWVyeU1hdGNoZXI+IG1fbWVkaWFRdWVyeU1hdGNoZXI7CisgICAgYm9vbCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwOworICAgIHVuc2lnbmVkIG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIH07CiAK
IGlubGluZSBib29sIERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmNvbnRhaW5zKEF0b21p
Y1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA3NjEyNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5v
ZGVMaXN0LmgiCisjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRl
ICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9k
ZVdpdGhJbmRleC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aCA9
IDIxOworCiAvLyAjZGVmaW5lIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcgMQogCiAvLyBU
aGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3aWxsIGV2ZW4g
Y29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCkBAIC00MjQsNiAr
NDI3LDggQEAKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6Omxv
YWRFdmVudERlbGF5VGltZXJGaXJlZCkKICAgICAsIG1fZGlyZWN0aW9uU2V0T25Eb2N1bWVudEVs
ZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFs
c2UpCisgICAgLCBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwKGZhbHNlKQorICAgICwgbV93cml0
ZVJlY3Vyc2lvbkRlcHRoKDApCiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTIyNDAs
NiArMjI0NSwxNCBAQAogCiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogeworICAgIE5lc3RpbmdMZXZlbElu
Y3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fd3JpdGVSZWN1cnNpb25EZXB0aCk7
CisKKyAgICBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwID0gKG1fd3JpdGVSZWN1cnNpb25EZXB0
aCA+IDEpICYmIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisgICAgbV93cml0ZVJlY3Vyc2lv
bklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiBjTWF4V3JpdGVSZWN1cnNpb25E
ZXB0aCkgfHwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKKworICAgIGlmIChtX3dyaXRlUmVj
dXJzaW9uSXNUb29EZWVwKQorICAgICAgICByZXR1cm47CisgICAgCiAjaWZkZWYgSU5TVFJVTUVO
VF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAgIHBy
aW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzYxNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMS0xOSAgY2hyaXN0
b3BoZXIgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZi1yZXBsaWNhdGluZyBjb2Rl
IG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNyYXNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMworCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3cml0ZSk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisKIDIwMTEtMDEtMTggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVj
dXJzaW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp
dGlvbmFsLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorPE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1U
eXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IENIQVJTRVQ9dXRmLTgiPgorPFRJVExFPkRPTSBIVE1M
IFRlc3QgLSBTZWxmIHJlcGxpY2F0aW5nIGphdmFzY3JpcHQ8L1RJVExFPgorPEJPRFkgb25sb2Fk
PSJsb2FkQ29tcGxldGUoKSI+Cis8c2NyaXB0PgorICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keS5p
bm5lckhUTUw7CisgICAgZG9jdW1lbnQud3JpdGUodCk7Cis8L3NjcmlwdD4KKzxQPgorU3VjY2Vz
cy4KKzwvUD4KKzwvQk9EWT4KKzwvSFRNTD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0Rv
Y3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGUgcmVjdXJzaW9uIG9uIGRvY3VtZW50LndyaXRl
KCApLgorCitPbiBzdWNjZXNzLCB0aGUgd2ViIHBhZ2Ugd2lsbCByZW5kZXIgdGhlIHdvcmQgIlN1
Y2Nlc3MuIgorCitPbiBmYWlsdXJlLCB0aGUgYnJvd3NlciB3aWxsIGhhbmcgYW5kIHRoZW4gY3Jh
c2guCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjE0MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTE5ICBjaHJpc3RvcGhlciBy
ZWlzcyAgPGNocmlzdG9waGVyLnJlaXNzQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWxmLXJlcGxpY2F0aW5nIGNvZGUgbWFrZXMg
U2FmYXJpIGhhbmcgYW5kIGV2ZW50dWFsbHkgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIzCisKKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1
bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbDogQWRk
ZWQuCisKIDIwMTEtMDEtMTkgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSBXaW5kb3dzIGV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIgcjc2MTE1
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80078</attachid>
            <date>2011-01-25 10:23:24 -0800</date>
            <delta_ts>2011-01-28 13:08:00 -0800</delta_ts>
            <desc>same as above, updated to merge cleanly</desc>
            <filename>write_recursion3.patch</filename>
            <type>text/plain</type>
            <size>4782</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3NjU0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAzLDYgKzE0MDMsOCBAQAog
CiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFR
dWVyeU1hdGNoZXI+IG1fbWVkaWFRdWVyeU1hdGNoZXI7CisgICAgYm9vbCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwOworICAgIHVuc2lnbmVkIG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIAogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+ID4gUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3NjU0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw2ICsxMDIsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMu
aCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0Lmgi
CisjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOb2RlRmls
dGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVdpdGhJbmRl
eC5oIgpAQCAtMjIxLDYgKzIyMiw4IEBACiAKIC8vICNkZWZpbmUgSU5TVFJVTUVOVF9MQVlPVVRf
U0NIRURVTElORyAxCiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25E
ZXB0aCA9IDIxOworCiAvLyBUaGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJl
Zm9yZSB3ZSB3aWxsIGV2ZW4gY29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEg
ZGVsYXkuCiAvLyBGSVhNRTogRm9yIGZhc3RlciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFs
bHkgYmUgbG93ZXJlZCB0byAyMDAuICAyNTAgaXMgYWRlcXVhdGUsIGJ1dCBhIGxpdHRsZSBoaWdo
CiAvLyBmb3IgZHVhbCBHNXMuIDopCkBAIC00MjksNiArNDMyLDggQEAKICAgICAsIG1fbG9hZEV2
ZW50RGVsYXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkK
ICAgICAsIG1fZGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dy
aXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpCisgICAgLCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwKGZhbHNlKQorICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDApCiAjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgICwgbV9uZXh0UmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2tJZCgwKQogI2VuZGlmCkBAIC0yMjQ4LDYgKzIyNTMsMTQgQEAKIAog
dm9pZCBEb2N1bWVudDo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVu
dCogb3duZXJEb2N1bWVudCkKIHsKKyAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5n
TGV2ZWxJbmNyZW1lbnRlcihtX3dyaXRlUmVjdXJzaW9uRGVwdGgpOworCisgICAgbV93cml0ZVJl
Y3Vyc2lvbklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiAxKSAmJiBtX3dyaXRl
UmVjdXJzaW9uSXNUb29EZWVwOworICAgIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgPSAobV93
cml0ZVJlY3Vyc2lvbkRlcHRoID4gY01heFdyaXRlUmVjdXJzaW9uRGVwdGgpIHx8IG1fd3JpdGVS
ZWN1cnNpb25Jc1Rvb0RlZXA7CisKKyAgICBpZiAobV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcCkK
KyAgICAgICAgcmV0dXJuOworCiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwog
ICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9j
dW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRUaW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gNzY2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMS0yNSAgY2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5y
ZWlzc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2VsZi1yZXBsaWNhdGluZyBjb2RlIG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVu
dHVhbGx5IGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTEyMworCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdy
aXRlLXJlY3Vyc2lvbi5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3cml0ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIwMTEtMDEtMjQgIFpo
ZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJ1c3NlbGwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13
cml0ZS1yZWN1cnNpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9E
b2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxIVE1MPgorPEhFQUQ+Cis8
TUVUQSBIVFRQLUVRVUlWPSJDb250ZW50LVR5cGUiIENPTlRFTlQ9InRleHQvaHRtbDsgQ0hBUlNF
VD11dGYtOCI+Cis8VElUTEU+RE9NIEhUTUwgVGVzdCAtIFNlbGYgcmVwbGljYXRpbmcgamF2YXNj
cmlwdDwvVElUTEU+Cis8Qk9EWSBvbmxvYWQ9ImxvYWRDb21wbGV0ZSgpIj4KKzxzY3JpcHQ+Cisg
ICAgdmFyIHQgPSBkb2N1bWVudC5ib2R5LmlubmVySFRNTDsKKyAgICBkb2N1bWVudC53cml0ZSh0
KTsKKzwvc2NyaXB0PgorPFA+CitTdWNjZXNzLgorPC9QPgorPC9CT0RZPgorPC9IVE1MPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9u
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoZSBy
ZWN1cnNpb24gb24gZG9jdW1lbnQud3JpdGUoICkuCisKK09uIHN1Y2Nlc3MsIHRoZSB3ZWIgcGFn
ZSB3aWxsIHJlbmRlciB0aGUgd29yZCAiU3VjY2Vzcy4iCisKK09uIGZhaWx1cmUsIHRoZSBicm93
c2VyIHdpbGwgaGFuZyBhbmQgdGhlbiBjcmFzaC4KKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzY2MDQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wMS0yNSAgY2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tpYS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZi1y
ZXBsaWNhdGluZyBjb2RlIG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNyYXNoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMworCisg
ICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3Jp
dGUtcmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorCiAyMDExLTAxLTI1ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80488</attachid>
            <date>2011-01-28 13:09:22 -0800</date>
            <delta_ts>2011-01-31 16:05:52 -0800</delta_ts>
            <desc>write recursion fix</desc>
            <filename>write_recursion4.patch</filename>
            <type>text/plain</type>
            <size>8238</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vy
c2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2Rv
Y3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxNRVRBIEhUVFAt
RVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09OVEVOVD0idGV4dC9odG1sOyBDSEFSU0VUPXV0Zi04Ij4K
KzxUSVRMRT5ET00gSFRNTCBUZXN0IC0gU2VsZiByZXBsaWNhdGluZyBqYXZhc2NyaXB0PC9USVRM
RT4KKzxCT0RZIG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgorPHNjcmlwdD4KKyAgICB2YXIgdCA9
IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOworICAgIGRvY3VtZW50LndyaXRlKHQpOworPC9zY3Jp
cHQ+Cis8UD4KK1N1Y2Nlc3MuCis8L1A+Cis8L0JPRFk+Cis8L0hUTUw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKzwvc2NyaXB0PgorRkFJTAorPGlmcmFtZSBvbmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTsgZG9j
dW1lbnQuY2xvc2UoKTsgZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgb25sb2FkPWRvY3VtZW50Lm9w
ZW4oKTtkb2N1bWVudC5jbG9zZSgpO2RvY3VtZW50LndyaXRlKC9QQVNTLyk7ID4nKSI+PC9pZnJh
bWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1p
ZnJhbWUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
Kzwvc2NyaXB0PgorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2Vzbid0IGNyYXNoLgorPCEtLWlm
cmFtZSBvbmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTtkb2N1bWVudC5jbG9zZSgpOyIgLS0+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50
L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK1RoaXMgdGVzdHMgdGhlIHJl
Y3Vyc2lvbiBvbiBkb2N1bWVudC53cml0ZSggKS4KKworT24gc3VjY2VzcywgdGhlIHdlYiBwYWdl
IHdpbGwgcmVuZGVyIHRoZSB3b3JkICJTdWNjZXNzLiIKKworT24gZmFpbHVyZSwgdGhlIGJyb3dz
ZXIgd2lsbCBoYW5nIGFuZCB0aGVuIGNyYXNoLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNs
b3NlLW5lc3RlZC1pZnJhbWUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxv
YWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisvUEFTUy8KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2Fk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVu
dC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorQUxFUlQ6IFBBU1Mg
KGp1c3QgdG8gbWFrZSBleHBlY3RlZC50eHQgbm9uLWVtcHR5KQorCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA3Njk3NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTAxLTI4ICBjaHJpcyByZWlzcyAgPGNocmlzdG9waGVyLnJlaXNzQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTZWxmLXJlcGxpY2F0aW5nIGNvZGUgbWFrZXMgU2FmYXJpIGhhbmcgYW5kIGV2ZW50dWFsbHkg
Y3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTIzCisKKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUt
bG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2Rv
Y3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3Rl
ZC1pZnJhbWUtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9k
b2N1bWVudC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbDogQWRkZWQuCisK
IDIwMTEtMDEtMjggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBDaHJvbWl1bSByZWJhc2VsaW5lcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CShyZXZpc2lvbiA3Njk1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDA0LDYgKzE0MDQsOCBAQAogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9k
b2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFRdWVyeU1hdGNoZXI+IG1fbWVkaWFRdWVy
eU1hdGNoZXI7CisgICAgYm9vbCBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwOworICAgIHVuc2ln
bmVkIG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8UmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2s+ID4gUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tMaXN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQAogI2luY2x1
ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2
ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTmVzdGluZ0xldmVs
SW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVdpdGhJbmRleC5oIgpAQCAtMjIxLDYgKzIyMiw4IEBA
CiAKIC8vICNkZWZpbmUgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORyAxCiAKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aCA9IDIxOworCiAvLyBUaGlzIGFt
b3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3aWxsIGV2ZW4gY29uc2lk
ZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCiAvLyBGSVhNRTogRm9yIGZh
c3RlciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFsbHkgYmUgbG93ZXJlZCB0byAyMDAuICAy
NTAgaXMgYWRlcXVhdGUsIGJ1dCBhIGxpdHRsZSBoaWdoCiAvLyBmb3IgZHVhbCBHNXMuIDopCkBA
IC00MjksNiArNDMyLDggQEAKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcih0aGlzLCAmRG9j
dW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICAgICAsIG1fZGlyZWN0aW9uU2V0T25E
b2N1bWVudEVsZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVs
ZW1lbnQoZmFsc2UpCisgICAgLCBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwKGZhbHNlKQorICAg
ICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDApCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9O
X0ZSQU1FKQogICAgICwgbV9uZXh0UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tJZCgwKQog
I2VuZGlmCkBAIC0yMjUzLDYgKzIyNTgsMTQgQEAKIAogdm9pZCBEb2N1bWVudDo6d3JpdGUoY29u
c3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCkKIHsKKyAg
ICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3dyaXRl
UmVjdXJzaW9uRGVwdGgpOworCisgICAgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcCA9IChtX3dy
aXRlUmVjdXJzaW9uRGVwdGggPiAxKSAmJiBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwOworICAg
IG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgPSAobV93cml0ZVJlY3Vyc2lvbkRlcHRoID4gY01h
eFdyaXRlUmVjdXJzaW9uRGVwdGgpIHx8IG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisKKyAg
ICBpZiAobV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcCkKKyAgICAgICAgcmV0dXJuOworCiAjaWZk
ZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkp
CiAgICAgICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVs
YXBzZWRUaW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzY5NzQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0w
MS0yOCAgY2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZi1yZXBsaWNhdGlu
ZyBjb2RlIG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNyYXNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMworCisgICAgICAgIEhl
cmUgd2UgYXJlIHJlcGxpY2F0aW5nIHRoZSBGaXJlZm94IHNhZmVndWFyZCBhZ2FpbnN0CisgICAg
ICAgIHJlY3Vyc2l2ZSBkb2N1bWVudC53cml0ZSggKSAncy4KKworICAgICAgICBTZWUgIGh0dHBz
Oi8vYnVnMTk3MDUyLmJ1Z3ppbGxhLm1vemlsbGEub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTI5Mzkw
NyBpbiBidWcgCisgICAgICAgIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzA1MiAuICAgRmlyZWZveCBkb2VzIHR3byB0aGluZ3MgLSAKKyAgICAgICAgICAg
IGEpIGltcG9zZXMgYSByZWN1cnNpb24gbGltaXQgb2YgMjAgb24gZG9jdW1lbnQud3JpdGUoICkg
YW5kCisgICAgICAgICAgICBiKSBvbmNlIHRoYXQgbGltaXQgaXMgcGFzc2VkLCBwYW5pY3MgYWxs
IHRoZSB3YXkgdGhlIGNhbGwgc3RhY2sgKHJhdGhlciB0aGFuIGp1c3QgcmV0dXJuaW5nIG9uZSBs
ZXZlbC4pCisgICAgICAgIFRvIHNlZSB3aHkgdGhpcyBpcyBuZWNlc3NhcnksIGNvbnNpZGVyIHRo
ZSBzY3JpcHQgOiAKKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICB2YXIgdCA9IGRvY3Vt
ZW50LmJvZHkuaW5uZXJIVE1MOworICAgICAgICAgICBkb2N1bWVudC53cml0ZSh0KTsKKyAgICAg
ICAgPC9zY3JpcHQ+IAorCisgICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEgdHJlZSBib3RoIGJy
b2FkIGFuZCBkZWVwIGFzIHRoZSBzY3JpcHQga2VlcHMgYXBwZW5kaW5nIGl0c2VsZiB0byB0aGUg
dGV4dC4gICBJZgorICAgICAgICAgd2UganVzdCByZXR1cm4gb25lIGxldmVsIGFmdGVyIHRoZSBy
ZWN1cnNpb24gbGltaXQgaXMgcmVhY2hlZCwgd2Ugc3RpbGwgYWxsb3cgbWlsbGlvbnMgb2YgY29w
aWVzIHRvIAorICAgICAgICAgZHVwbGljYXRlIChhbmQgZXhlY3V0ZSkuICAgCisKKyAgICAgICAg
IFRoZSByZWN1cnNpb24gaXMgZm9ydHVuYXRlbHkgZGVwdGgtZmlyc3QsIHNvIGFzIHNvb24gYXMg
d2UgY3Jvc3MgdGhpcyBsaW1pdCwgd2UgcGFuaWMgdXAgdGhlIGNhbGxzdGFjaworICAgICAgICAg
dG8gcHJldmVudCB0aGlzIHNpdHVhdGlvbi4gICAgKElFIGFwcGFyZW50bHkgZG9lcyB0aGUgc2Ft
ZSB0aGluZywgd2l0aCBhIGxvd2VyIHJlY3Vyc2lvbiBsaW1pdC4pIAorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sICAgICAgICAK
KyAgICAgICAgVGVzdDogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxv
YWQuaHRtbAorICAgICAgICBUZXN0OiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1u
ZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAorICAgICAgICAKKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndyaXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKwog
MjAxMS0wMS0yOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>80647</attachid>
            <date>2011-01-31 09:27:22 -0800</date>
            <delta_ts>2011-01-31 09:28:35 -0800</delta_ts>
            <desc>write recursion fix</desc>
            <filename>write_recursion7.patch</filename>
            <type>text/plain</type>
            <size>8279</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vy
c2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2Rv
Y3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxNRVRBIEhUVFAt
RVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09OVEVOVD0idGV4dC9odG1sOyBDSEFSU0VUPXV0Zi04Ij4K
KzxUSVRMRT5ET00gSFRNTCBUZXN0IC0gU2VsZiByZXBsaWNhdGluZyBqYXZhc2NyaXB0PC9USVRM
RT4KKzxCT0RZIG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgorPHNjcmlwdD4KKyAgICB2YXIgdCA9
IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOworICAgIGRvY3VtZW50LndyaXRlKHQpOworPC9zY3Jp
cHQ+Cis8UD4KK1N1Y2Nlc3MuCis8L1A+Cis8L0JPRFk+Cis8L0hUTUw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKzwvc2NyaXB0PgorRkFJTAorPGlmcmFtZSBvbmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTsgZG9j
dW1lbnQuY2xvc2UoKTsgZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgb25sb2FkPWRvY3VtZW50Lm9w
ZW4oKTtkb2N1bWVudC5jbG9zZSgpO2RvY3VtZW50LndyaXRlKC9QQVNTLyk7ID4nKSI+PC9pZnJh
bWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1p
ZnJhbWUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2FsZXJ0KCdQQVNTIChqdXN0IHRvIG1ha2UgZXhwZWN0ZWQudHh0IG5vbi1lbXB0eSknKTsKKzwv
c2NyaXB0PgorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2Vzbid0IGNyYXNoLgorPGlmcmFtZSBv
bmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTtkb2N1bWVudC5jbG9zZSgpOyIgPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoZSByZWN1cnNpb24g
bGltaXQgb24gZG9jdW1lbnQud3JpdGUoICkuCisKK09uIHN1Y2Nlc3MsIHRoZSB3ZWIgcGFnZSB3
aWxsIHJlbmRlciB0aGUgd29yZCAiU3VjY2Vzcy4iCisKK09uIGZhaWx1cmUsIHRoZSBicm93c2Vy
IHdpbGwgaGFuZyBhbmQgdGhlbiBjcmFzaC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2FkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9z
ZS1uZXN0ZWQtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorL1BBU1MvCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
ZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0FMRVJUOiBQQVNTIChq
dXN0IHRvIG1ha2UgZXhwZWN0ZWQudHh0IG5vbi1lbXB0eSkKKwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzcxMzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0wMS0zMSAgY2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2VsZi1yZXBsaWNhdGluZyBjb2RlIG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNy
YXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEy
MworCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxv
YWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1
bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9E
b2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQt
aWZyYW1lLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9j
dW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorCiAy
MDExLTAxLTMxICBNYWRzIEFnZXIgIDxhZ2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDc2OTU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MDQsNiArMTQwNCw4IEBACiAKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50VGlt
aW5nOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tZWRpYVF1ZXJ5TWF0Y2hlcjsK
KyAgICBib29sIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisgICAgdW5zaWduZWQgbV93cml0
ZVJlY3Vyc2lvbkRlcHRoOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4g
PiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDc2OTU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSAiTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNp
bmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRl
ci5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCkBAIC0yMjEsNiArMjIyLDggQEAKIAogLy8gI2Rl
ZmluZSBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HIDEKIAorc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNNYXhXcml0ZVJlY3Vyc2lvbkRlcHRoID0gMjE7CisKIC8vIFRoaXMgYW1vdW50IG9mIHRp
bWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVs
aW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KIC8vIEZJWE1FOiBGb3IgZmFzdGVyIG1hY2hp
bmVzIHRoaXMgdmFsdWUgY2FuIHJlYWxseSBiZSBsb3dlcmVkIHRvIDIwMC4gIDI1MCBpcyBhZGVx
dWF0ZSwgYnV0IGEgbGl0dGxlIGhpZ2gKIC8vIGZvciBkdWFsIEc1cy4gOikKQEAgLTQyOSw2ICs0
MzIsOCBAQAogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6bG9h
ZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogICAgICwgbV9kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxl
bWVudChmYWxzZSkKICAgICAsIG1fd3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudChmYWxz
ZSkKKyAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCisgICAgLCBtX3dyaXRl
UmVjdXJzaW9uRGVwdGgoMCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAg
ICAgLCBtX25leHRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0lkKDApCiAjZW5kaWYKQEAg
LTIyNTMsNiArMjI1OCwxNCBAQAogCiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50
ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogeworICAgICBOZXN0aW5n
TGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3dyaXRlUmVjdXJzaW9u
RGVwdGgpOworCisgICAgIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgPSAobV93cml0ZVJlY3Vy
c2lvbkRlcHRoID4gMSkgJiYgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKKyAgICAgbV93cml0
ZVJlY3Vyc2lvbklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiBjTWF4V3JpdGVS
ZWN1cnNpb25EZXB0aCkgfHwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKKworICAgICBpZiAo
bV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcCkKKyAgICAgICAgcmV0dXJuOworCiAjaWZkZWYgSU5T
VFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwogICAgIGlmICghb3duZXJFbGVtZW50KCkpCiAgICAg
ICAgIHByaW50ZigiQmVnaW5uaW5nIGEgZG9jdW1lbnQud3JpdGUgYXQgJWRcbiIsIGVsYXBzZWRU
aW1lKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzcxMzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAxMS0wMS0zMSAg
Y2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZi1yZXBsaWNhdGluZyBjb2Rl
IG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNyYXNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMworCisgICAgICAgIEhlcmUgd2Ug
YXJlIHJlcGxpY2F0aW5nIHRoZSBGaXJlZm94IHNhZmVndWFyZCBhZ2FpbnN0CisgICAgICAgIHJl
Y3Vyc2l2ZSBkb2N1bWVudC53cml0ZSggKSAncy4KKworICAgICAgICBTZWUgIGh0dHBzOi8vYnVn
MTk3MDUyLmJ1Z3ppbGxhLm1vemlsbGEub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTI5MzkwNyBpbiBi
dWcgCisgICAgICAgIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NzA1MiAuICAgRmlyZWZveCBkb2VzIHR3byB0aGluZ3MgLSAKKyAgICAgICAgICAgIGEpIGlt
cG9zZXMgYSByZWN1cnNpb24gbGltaXQgb2YgMjAgb24gZG9jdW1lbnQud3JpdGUoICkgYW5kCisg
ICAgICAgICAgICBiKSBvbmNlIHRoYXQgbGltaXQgaXMgcGFzc2VkLCBwYW5pY3MgYWxsIHRoZSB3
YXkgdGhlIGNhbGwgc3RhY2sgKHJhdGhlciB0aGFuIGp1c3QgcmV0dXJuaW5nIG9uZSBsZXZlbC4p
CisgICAgICAgIFRvIHNlZSB3aHkgdGhpcyBpcyBuZWNlc3NhcnksIGNvbnNpZGVyIHRoZSBzY3Jp
cHQgOiAKKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICB2YXIgdCA9IGRvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MOworICAgICAgICAgICBkb2N1bWVudC53cml0ZSh0KTsKKyAgICAgICAgPC9z
Y3JpcHQ+IAorCisgICAgICAgIFRoaXMgd2lsbCBjcmVhdGUgYSB0cmVlIGJvdGggYnJvYWQgYW5k
IGRlZXAgYXMgdGhlIHNjcmlwdCBrZWVwcyBhcHBlbmRpbmcgaXRzZWxmIHRvIHRoZSB0ZXh0LiAg
IElmCisgICAgICAgIHdlIGp1c3QgcmV0dXJuIG9uZSBsZXZlbCBhZnRlciB0aGUgcmVjdXJzaW9u
IGxpbWl0IGlzIHJlYWNoZWQsIHdlIHN0aWxsIGFsbG93IG1pbGxpb25zIG9mIGNvcGllcyB0byAK
KyAgICAgICAgZHVwbGljYXRlIChhbmQgZXhlY3V0ZSkuICAgCisKKyAgICAgICAgVGhlIHJlY3Vy
c2lvbiBpcyBmb3J0dW5hdGVseSBkZXB0aC1maXJzdCwgc28gYXMgc29vbiBhcyB3ZSBjcm9zcyB0
aGlzIGxpbWl0LCB3ZSBwYW5pYyB1cCB0aGUgY2FsbHN0YWNrCisgICAgICAgIHRvIHByZXZlbnQg
dGhpcyBzaXR1YXRpb24uICAgIChJRSBhcHBhcmVudGx5IGRvZXMgdGhlIHNhbWUgdGhpbmcsIHdp
dGggYSBsb3dlciByZWN1cnNpb24gbGltaXQuKSAKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9E
b2N1bWVudC9kb2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbCAgICAgICAgCisgICAgICAgIFRl
c3Q6IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwKKyAg
ICAgICAgVGVzdDogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFt
ZS1sb2FkLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondy
aXRlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKwogMjAxMS0wMS0yOCAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5
IFNlbWlraGF0c2t5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80648</attachid>
            <date>2011-01-31 09:32:42 -0800</date>
            <delta_ts>2011-02-01 14:22:47 -0800</delta_ts>
            <desc>write recursion fix</desc>
            <filename>write_recursion7.patch</filename>
            <type>text/plain</type>
            <size>8274</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vy
c2lvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2Rv
Y3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPEhUTUw+Cis8SEVBRD4KKzxNRVRBIEhUVFAt
RVFVSVY9IkNvbnRlbnQtVHlwZSIgQ09OVEVOVD0idGV4dC9odG1sOyBDSEFSU0VUPXV0Zi04Ij4K
KzxUSVRMRT5ET00gSFRNTCBUZXN0IC0gU2VsZiByZXBsaWNhdGluZyBqYXZhc2NyaXB0PC9USVRM
RT4KKzxCT0RZIG9ubG9hZD0ibG9hZENvbXBsZXRlKCkiPgorPHNjcmlwdD4KKyAgICB2YXIgdCA9
IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOworICAgIGRvY3VtZW50LndyaXRlKHQpOworPC9zY3Jp
cHQ+Cis8UD4KK1N1Y2Nlc3MuCis8L1A+Cis8L0JPRFk+Cis8L0hUTUw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKzwvc2NyaXB0PgorRkFJTAorPGlmcmFtZSBvbmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTsgZG9j
dW1lbnQuY2xvc2UoKTsgZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgb25sb2FkPWRvY3VtZW50Lm9w
ZW4oKTtkb2N1bWVudC5jbG9zZSgpO2RvY3VtZW50LndyaXRlKC9QQVNTLyk7ID4nKSI+PC9pZnJh
bWU+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1p
ZnJhbWUtbG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K2FsZXJ0KCdQQVNTIChqdXN0IHRvIG1ha2UgZXhwZWN0ZWQudHh0IG5vbi1lbXB0eSknKTsKKzwv
c2NyaXB0PgorVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBkb2Vzbid0IGNyYXNoLgorPGlmcmFtZSBv
bmxvYWQ9ImRvY3VtZW50Lm9wZW4oKTtkb2N1bWVudC5jbG9zZSgpOyIgPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC13cml0ZS1yZWN1cnNpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3RzIHRoZSByZWN1cnNpb24g
bGltaXQgb24gZG9jdW1lbnQud3JpdGUoICkuCisKK09uIHN1Y2Nlc3MsIHRoZSB3ZWIgcGFnZSB3
aWxsIHJlbmRlciB0aGUgd29yZCAiU3VjY2Vzcy4iCisKK09uIGZhaWx1cmUsIHRoZSBicm93c2Vy
IHdpbGwgaGFuZyBhbmQgdGhlbiBjcmFzaC4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2FkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9z
ZS1uZXN0ZWQtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2Fk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorL1BBU1MvCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQv
ZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK0FMRVJUOiBQQVNTIChq
dXN0IHRvIG1ha2UgZXhwZWN0ZWQudHh0IG5vbi1lbXB0eSkKKwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzcxMzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMS0wMS0zMSAgY2hyaXMgcmVpc3MgIDxjaHJpc3RvcGhlci5yZWlzc0Bub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2VsZi1yZXBsaWNhdGluZyBjb2RlIG1ha2VzIFNhZmFyaSBoYW5nIGFuZCBldmVudHVhbGx5IGNy
YXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEy
MworCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxv
YWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1
bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9E
b2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQt
aWZyYW1lLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9j
dW1lbnQtd3JpdGUtcmVjdXJzaW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWw6IEFkZGVkLgorCiAy
MDExLTAxLTMxICBNYWRzIEFnZXIgIDxhZ2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDc2OTU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MDQsNiArMTQwNCw4IEBACiAKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50VGlt
aW5nOwogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TWF0Y2hlcj4gbV9tZWRpYVF1ZXJ5TWF0Y2hlcjsK
KyAgICBib29sIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisgICAgdW5zaWduZWQgbV93cml0
ZVJlY3Vyc2lvbkRlcHRoOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjaz4g
PiBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDc2OTU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSAiTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNp
bmNsdWRlICJOYW1lTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRl
ci5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCkBAIC0yMjEsNiArMjIyLDggQEAKIAogLy8gI2Rl
ZmluZSBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HIDEKIAorc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNNYXhXcml0ZVJlY3Vyc2lvbkRlcHRoID0gMjE7CisKIC8vIFRoaXMgYW1vdW50IG9mIHRp
bWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVs
aW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KIC8vIEZJWE1FOiBGb3IgZmFzdGVyIG1hY2hp
bmVzIHRoaXMgdmFsdWUgY2FuIHJlYWxseSBiZSBsb3dlcmVkIHRvIDIwMC4gIDI1MCBpcyBhZGVx
dWF0ZSwgYnV0IGEgbGl0dGxlIGhpZ2gKIC8vIGZvciBkdWFsIEc1cy4gOikKQEAgLTQyOSw2ICs0
MzIsOCBAQAogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6bG9h
ZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogICAgICwgbV9kaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxl
bWVudChmYWxzZSkKICAgICAsIG1fd3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudChmYWxz
ZSkKKyAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCisgICAgLCBtX3dyaXRl
UmVjdXJzaW9uRGVwdGgoMCkKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAg
ICAgLCBtX25leHRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0lkKDApCiAjZW5kaWYKQEAg
LTIyNTMsNiArMjI1OCwxNCBAQAogCiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50
ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQogeworICAgIE5lc3RpbmdM
ZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZlbEluY3JlbWVudGVyKG1fd3JpdGVSZWN1cnNpb25E
ZXB0aCk7CisKKyAgICBtX3dyaXRlUmVjdXJzaW9uSXNUb29EZWVwID0gKG1fd3JpdGVSZWN1cnNp
b25EZXB0aCA+IDEpICYmIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXA7CisgICAgbV93cml0ZVJl
Y3Vyc2lvbklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiBjTWF4V3JpdGVSZWN1
cnNpb25EZXB0aCkgfHwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcDsKKworICAgIGlmIChtX3dy
aXRlUmVjdXJzaW9uSXNUb29EZWVwKQorICAgICAgIHJldHVybjsKKwogI2lmZGVmIElOU1RSVU1F
TlRfTEFZT1VUX1NDSEVEVUxJTkcKICAgICBpZiAoIW93bmVyRWxlbWVudCgpKQogICAgICAgICBw
cmludGYoIkJlZ2lubmluZyBhIGRvY3VtZW50LndyaXRlIGF0ICVkXG4iLCBlbGFwc2VkVGltZSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MTM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDEtMzEgIGNocmlz
IHJlaXNzICA8Y2hyaXN0b3BoZXIucmVpc3NAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlbGYtcmVwbGljYXRpbmcgY29kZSBtYWtl
cyBTYWZhcmkgaGFuZyBhbmQgZXZlbnR1YWxseSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMjMKKworICAgICAgICBIZXJlIHdlIGFyZSBy
ZXBsaWNhdGluZyB0aGUgRmlyZWZveCBzYWZlZ3VhcmQgYWdhaW5zdAorICAgICAgICByZWN1cnNp
dmUgZG9jdW1lbnQud3JpdGUoICkgJ3MuCisKKyAgICAgICAgU2VlICBodHRwczovL2J1ZzE5NzA1
Mi5idWd6aWxsYS5tb3ppbGxhLm9yZy9hdHRhY2htZW50LmNnaT9pZD0yOTM5MDcgaW4gYnVnIAor
ICAgICAgICBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcw
NTIgLiAgIEZpcmVmb3ggZG9lcyB0d28gdGhpbmdzIC0gCisgICAgICAgICAgICBhKSBpbXBvc2Vz
IGEgcmVjdXJzaW9uIGxpbWl0IG9mIDIwIG9uIGRvY3VtZW50LndyaXRlKCApIGFuZAorICAgICAg
ICAgICAgYikgb25jZSB0aGF0IGxpbWl0IGlzIHBhc3NlZCwgcGFuaWNzIGFsbCB0aGUgd2F5IHRo
ZSBjYWxsIHN0YWNrIChyYXRoZXIgdGhhbiBqdXN0IHJldHVybmluZyBvbmUgbGV2ZWwuKQorICAg
ICAgICBUbyBzZWUgd2h5IHRoaXMgaXMgbmVjZXNzYXJ5LCBjb25zaWRlciB0aGUgc2NyaXB0IDog
CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgdmFyIHQgPSBkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTDsKKyAgICAgICAgICAgZG9jdW1lbnQud3JpdGUodCk7CisgICAgICAgIDwvc2NyaXB0
PiAKKworICAgICAgICBUaGlzIHdpbGwgY3JlYXRlIGEgdHJlZSBib3RoIGJyb2FkIGFuZCBkZWVw
IGFzIHRoZSBzY3JpcHQga2VlcHMgYXBwZW5kaW5nIGl0c2VsZiB0byB0aGUgdGV4dC4gICBJZgor
ICAgICAgICB3ZSBqdXN0IHJldHVybiBvbmUgbGV2ZWwgYWZ0ZXIgdGhlIHJlY3Vyc2lvbiBsaW1p
dCBpcyByZWFjaGVkLCB3ZSBzdGlsbCBhbGxvdyBtaWxsaW9ucyBvZiBjb3BpZXMgdG8gCisgICAg
ICAgIGR1cGxpY2F0ZSAoYW5kIGV4ZWN1dGUpLiAgIAorCisgICAgICAgIFRoZSByZWN1cnNpb24g
aXMgZm9ydHVuYXRlbHkgZGVwdGgtZmlyc3QsIHNvIGFzIHNvb24gYXMgd2UgY3Jvc3MgdGhpcyBs
aW1pdCwgd2UgcGFuaWMgdXAgdGhlIGNhbGxzdGFjaworICAgICAgICB0byBwcmV2ZW50IHRoaXMg
c2l0dWF0aW9uLiAgICAoSUUgYXBwYXJlbnRseSBkb2VzIHRoZSBzYW1lIHRoaW5nLCB3aXRoIGEg
bG93ZXIgcmVjdXJzaW9uIGxpbWl0LikgCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRG9jdW1l
bnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwgICAgICAgIAorICAgICAgICBUZXN0OiBm
YXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1pZnJhbWUtbG9hZC5odG1sCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9h
ZC5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3cml0ZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKIDIwMTEtMDEtMjggIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1p
a2hhdHNreS4K
</data>
<flag name="review"
          id="72151"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="72152"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80827</attachid>
            <date>2011-02-01 14:22:22 -0800</date>
            <delta_ts>2011-02-01 16:23:04 -0800</delta_ts>
            <desc>write recursion fix</desc>
            <filename>write_recursion9.patch</filename>
            <type>text/plain</type>
            <size>7969</size>
            <attacher name="chris reiss">christopher.reiss</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3NzI0NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgyLDYgKzEzODIsOCBAQAog
CiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKICAgICBSZWZQdHI8TWVkaWFR
dWVyeU1hdGNoZXI+IG1fbWVkaWFRdWVyeU1hdGNoZXI7CisgICAgYm9vbCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwOworICAgIHVuc2lnbmVkIG1fd3JpdGVSZWN1cnNpb25EZXB0aDsKIAogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s+ID4gUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3NzI0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw2ICsxMDIsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMu
aCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0Lmgi
CisjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJOb2RlRmls
dGVyLmgiCiAjaW5jbHVkZSAiTm9kZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZVdpdGhJbmRl
eC5oIgpAQCAtMjIxLDYgKzIyMiw4IEBACiAKIC8vICNkZWZpbmUgSU5TVFJVTUVOVF9MQVlPVVRf
U0NIRURVTElORyAxCiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25E
ZXB0aCA9IDIxOworCiAvLyBUaGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJl
Zm9yZSB3ZSB3aWxsIGV2ZW4gY29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEg
ZGVsYXkuCiAvLyBGSVhNRTogRm9yIGZhc3RlciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFs
bHkgYmUgbG93ZXJlZCB0byAyMDAuICAyNTAgaXMgYWRlcXVhdGUsIGJ1dCBhIGxpdHRsZSBoaWdo
CiAvLyBmb3IgZHVhbCBHNXMuIDopCkBAIC00MjQsNiArNDI3LDggQEAKICAgICAsIG1fbG9hZEV2
ZW50RGVsYXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkK
ICAgICAsIG1fZGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dy
aXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpCisgICAgLCBtX3dyaXRlUmVjdXJz
aW9uSXNUb29EZWVwKGZhbHNlKQorICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDApCiAjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgICwgbV9uZXh0UmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2tJZCgwKQogI2VuZGlmCkBAIC0yMTY2LDYgKzIxNzEsMTQgQEAKIAog
dm9pZCBEb2N1bWVudDo6d3JpdGUoY29uc3QgU2VnbWVudGVkU3RyaW5nJiB0ZXh0LCBEb2N1bWVu
dCogb3duZXJEb2N1bWVudCkKIHsKKyAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlciBuZXN0aW5n
TGV2ZWxJbmNyZW1lbnRlcihtX3dyaXRlUmVjdXJzaW9uRGVwdGgpOworCisgICAgbV93cml0ZVJl
Y3Vyc2lvbklzVG9vRGVlcCA9IChtX3dyaXRlUmVjdXJzaW9uRGVwdGggPiAxKSAmJiBtX3dyaXRl
UmVjdXJzaW9uSXNUb29EZWVwOworICAgIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAgPSAobV93
cml0ZVJlY3Vyc2lvbkRlcHRoID4gY01heFdyaXRlUmVjdXJzaW9uRGVwdGgpIHx8IG1fd3JpdGVS
ZWN1cnNpb25Jc1Rvb0RlZXA7CisKKyAgICBpZiAobV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcCkK
KyAgICAgICByZXR1cm47CisKICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCiAg
ICAgaWYgKCFvd25lckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJCZWdpbm5pbmcgYSBkb2N1
bWVudC53cml0ZSBhdCAlZFxuIiwgZWxhcHNlZFRpbWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA3NzI5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQyIEBACisyMDExLTAyLTAxICBjaHJpcyByZWlzcyAgPGNocmlzdG9waGVyLnJl
aXNzQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTZWxmLXJlcGxpY2F0aW5nIGNvZGUgbWFrZXMgU2FmYXJpIGhhbmcgYW5kIGV2ZW50
dWFsbHkgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTIzCisKKyAgICAgICAKKyAgICAgICAgSGVyZSB3ZSBhcmUgcmVwbGljYXRpbmcgdGhl
IEZpcmVmb3ggc2FmZWd1YXJkIGFnYWluc3QKKyAgICAgICAgcmVjdXJzaXZlIGRvY3VtZW50Lndy
aXRlKCApICdzLgorCisgICAgICAgIFNlZSAgaHR0cHM6Ly9idWcxOTcwNTIuYnVnemlsbGEubW96
aWxsYS5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MjkzOTA3IGluIGJ1ZyAKKyAgICAgICAgaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDUyIC4gICBGaXJlZm94
IGRvZXMgdHdvIHRoaW5ncyAtIAorICAgICAgICAgICAgYSkgaW1wb3NlcyBhIHJlY3Vyc2lvbiBs
aW1pdCBvZiAyMCBvbiBkb2N1bWVudC53cml0ZSggKSBhbmQKKyAgICAgICAgICAgIGIpIG9uY2Ug
dGhhdCBsaW1pdCBpcyBwYXNzZWQsIHBhbmljcyBhbGwgdGhlIHdheSB0aGUgY2FsbCBzdGFjayAo
cmF0aGVyIHRoYW4ganVzdCByZXR1cm5pbmcgb25lIGxldmVsLikKKyAgICAgICAgVG8gc2VlIHdo
eSB0aGlzIGlzIG5lY2Vzc2FyeSwgY29uc2lkZXIgdGhlIHNjcmlwdCA6IAorCisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgICAgIHZhciB0ID0gZG9jdW1lbnQuYm9keS5pbm5lckhUTUw7CisgICAg
ICAgICAgIGRvY3VtZW50LndyaXRlKHQpOworICAgICAgICA8L3NjcmlwdD4gCisKKyAgICAgICAg
VGhpcyB3aWxsIGNyZWF0ZSBhIHRyZWUgYm90aCBicm9hZCBhbmQgZGVlcCBhcyB0aGUgc2NyaXB0
IGtlZXBzIGFwcGVuZGluZyBpdHNlbGYgdG8gdGhlIHRleHQuICAgSWYKKyAgICAgICAgd2UganVz
dCByZXR1cm4gb25lIGxldmVsIGFmdGVyIHRoZSByZWN1cnNpb24gbGltaXQgaXMgcmVhY2hlZCwg
d2Ugc3RpbGwgYWxsb3cgbWlsbGlvbnMgb2YgY29waWVzIHRvIAorICAgICAgICBkdXBsaWNhdGUg
KGFuZCBleGVjdXRlKS4gICAKKworICAgICAgICBUaGUgcmVjdXJzaW9uIGlzIGZvcnR1bmF0ZWx5
IGRlcHRoLWZpcnN0LCBzbyBhcyBzb29uIGFzIHdlIGNyb3NzIHRoaXMgbGltaXQsIHdlIHBhbmlj
IHVwIHRoZSBjYWxsc3RhY2sKKyAgICAgICAgdG8gcHJldmVudCB0aGlzIHNpdHVhdGlvbi4gICAg
KElFIGFwcGFyZW50bHkgZG9lcyB0aGUgc2FtZSB0aGluZywgd2l0aCBhIGxvd2VyIHJlY3Vyc2lv
biBsaW1pdC4pIAorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LXdy
aXRlLXJlY3Vyc2lvbi5odG1sICAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRG9jdW1l
bnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQuaHRtbAorICAgICAgICBUZXN0OiBmYXN0L2Rv
bS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAorCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3cml0ZSk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisKIDIwMTEtMDItMDEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJzaW9uLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVjdXJz
aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9k
b2N1bWVudC13cml0ZS1yZWN1cnNpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBA
QAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CisgICAgdmFyIHQgPSBkb2N1bWVudC5ib2R5LmlubmVySFRNTDsKKyAgICBkb2N1bWVudC53cml0
ZSh0KTsKKzwvc2NyaXB0PgorUEFTUworPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2FkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVz
dGVkLWlmcmFtZS1sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9Eb2N1bWVudC9kb2N1bWVudC1jbG9zZS1uZXN0ZWQtaWZyYW1lLWxvYWQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3Njcmlw
dD4KK0ZBSUwKKzxpZnJhbWUgb25sb2FkPSJkb2N1bWVudC5vcGVuKCk7IGRvY3VtZW50LmNsb3Nl
KCk7IGRvY3VtZW50LndyaXRlKCc8aWZyYW1lIG9ubG9hZD1kb2N1bWVudC5vcGVuKCk7ZG9jdW1l
bnQuY2xvc2UoKTtkb2N1bWVudC53cml0ZSgvUEFTUy8pOyA+JykiPjwvaWZyYW1lPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVu
dC1jbG9zZS1pZnJhbWUtbG9hZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CithbGVydCgnUEFT
UyAoanVzdCB0byBtYWtlIGV4cGVjdGVkLnR4dCBub24tZW1wdHkpJyk7Cis8L3NjcmlwdD4KK1Ro
aXMgdGVzdCBwYXNzZXMgaWYgaXQgZG9lc24ndCBjcmFzaC4KKzxpZnJhbWUgb25sb2FkPSJkb2N1
bWVudC5vcGVuKCk7ZG9jdW1lbnQuY2xvc2UoKTsiID4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtd3JpdGUtcmVj
dXJzaW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3Vt
ZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVz
dGVkLWlmcmFtZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLW5lc3RlZC1pZnJhbWUtbG9hZC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKy9QQVNTLwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtaWZyYW1lLWxvYWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3Vt
ZW50LWNsb3NlLWlmcmFtZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitBTEVSVDogUEFTUyAoanVzdCB0
byBtYWtlIGV4cGVjdGVkLnR4dCBub24tZW1wdHkpCisKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Mjkz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDItMDEgIGNocmlzIHJlaXNzICA8Y2hyaXN0b3BoZXIucmVpc3NAbm9raWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlbGYt
cmVwbGljYXRpbmcgY29kZSBtYWtlcyBTYWZhcmkgaGFuZyBhbmQgZXZlbnR1YWxseSBjcmFzaAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMjMKKwor
ICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNsb3NlLWlmcmFtZS1sb2FkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQt
Y2xvc2UtaWZyYW1lLWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRG9jdW1l
bnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFtZS1sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2xvc2UtbmVzdGVkLWlmcmFt
ZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50
LXdyaXRlLXJlY3Vyc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0RvY3VtZW50L2RvY3VtZW50LXdyaXRlLXJlY3Vyc2lvbi5odG1sOiBBZGRlZC4KKwogMjAxMS0w
Mi0wMSAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZGVkIHlldCBhbm90aGVyIGV4cGVjdGF0aW9ucyBvZiBmbGFraW5lc3MuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>