<?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>5776</bug_id>
          
          <creation_ts>2005-11-19 12:47:37 -0800</creation_ts>
          <short_desc>REGRESSION: YAHOO: Generated numbers of ordered lists (OL) are not calculated right</short_desc>
          <delta_ts>2006-02-04 16:47:42 -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>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://books.google.com/intl/en/googlebooks/help.html#whylogin</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Soryu Waldfee">soryu2</reporter>
          <assigned_to name="Andrew Wellington">andrew</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>maksim</cc>
    
    <cc>micah</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>24271</commentid>
    <comment_count>0</comment_count>
    <who name="Soryu Waldfee">soryu2</who>
    <bug_when>2005-11-19 12:47:37 -0800</bug_when>
    <thetext>Viewing the given URL you will see all generated numbers for li elements are 1.
reduced exaple:
&lt;ol&gt;
	&lt;font size=-1&gt; 
	&lt;li&gt;&lt;a name=1&gt;&lt;/a&gt;&lt;b&gt;How does Google Book Search work?&lt;/b&gt;&lt;br&gt;
	&lt;/li&gt;
	&lt;/font&gt; &lt;font size=-1&gt; 
	&lt;li&gt;&lt;a name=2&gt;&lt;/a&gt;&lt;b&gt;What types of books are available?&lt;/b&gt;&lt;br&gt;
	&lt;/font&gt;
	&lt;/li&gt;
&lt;/ol&gt;

Removing the font tags will make it work.
Also there seems to be a testsuite for this problem: http://websvn.kde.org/*checkout*/trunk/tests/
khtmltests/rendering/lists/olstart.html?rev=409208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24272</commentid>
    <comment_count>1</comment_count>
    <who name="Maks Orlovich">maksim</who>
    <bug_when>2005-11-19 12:53:53 -0800</bug_when>
    <thetext>Hi... That testfile linked to in the original report is mine (to reporter: I 
am SadEagle on IRC). This stuff mostly works in the KDE tree, because Allen 
implemented CSS counters (#8 fails, will have to bug him), but I actually had 
a patch beforehand which supposedly fixes everything. It&apos;s at  
http://www.cs.cornell.edu/~maksim/patches/calc_num_fancy.diff 
It has been quite a while since I wrote it, and it was before I seriously got 
involved in khtml, so it probably needs some serious review/testing, but I 
hope it&apos;ll save you some time.  
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24401</commentid>
    <comment_count>2</comment_count>
      <attachid>4773</attachid>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-11-22 14:10:11 -0800</bug_when>
    <thetext>Created attachment 4773
Testcase

Testcase further reduced from code in report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24402</commentid>
    <comment_count>3</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-11-22 14:10:39 -0800</bug_when>
    <thetext>Confirmed, works in moz.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26885</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-27 16:15:05 -0800</bug_when>
    <thetext>Nice test case.  Should be a simple fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28040</commentid>
    <comment_count>5</comment_count>
      <attachid>5566</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-01-09 03:52:57 -0800</bug_when>
    <thetext>Created attachment 5566
Incomplete patch

This is a patch that fixes the attached test case. This does not yet fix all
the cases from the KDE testcase
(http://websvn.kde.org/*checkout*/trunk/tests/khtmltests/rendering/lists/olstart.html?rev=409208)
or rendering of the Google Books URL as we still need to go up from the current
node to find the top of the list if the current node is nested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28974</commentid>
    <comment_count>6</comment_count>
      <attachid>5796</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-01-20 05:38:43 -0800</bug_when>
    <thetext>Created attachment 5796
Proposed patch

This patch fixes this issue as demonstrated by the Google Books URL and KDE
test file. The test case included in this patch is the KDE test file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29262</commentid>
    <comment_count>7</comment_count>
      <attachid>5796</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-21 10:48:42 -0800</bug_when>
    <thetext>Comment on attachment 5796
Proposed patch

This looks really good! A few comments:

To compare if two nodes are same, code should use &quot;==&quot;. The isSameNode function is for DOM bindings, not internal use. For most people working on the code, the isSameNode calls will be harder to read.

On this line:

+        } else if (n-&gt;firstChild() &amp;&amp; (!dontDescend || !n-&gt;isSameNode(dontDescend))) {

can just do n != dontDescend, since we&apos;re guaranteed n is not 0.

I think it would be best to change getPrevListNode so that it&apos;s iterative rather than recursive when following parentNode pointers -- should be a straightforward change.

Some minor style things:

    1) we don&apos;t usually put else after return
    2) the while loops in getPrevListNode and prevListNode look well suited to be for loops instead
    3) the &quot;found&quot; variable should be declared right where it&apos;s used; there&apos;s no need to declare it outside the loop

This:

-        if (listNode &amp;&amp; listNode-&gt;hasTagName(olTag) &amp;&amp; !m_render-&gt;previousSibling()) {
-            HTMLOListElementImpl *ol = static_cast&lt;HTMLOListElementImpl *&gt;(listNode);
-            render-&gt;setValue(ol-&gt;start());
+        if (listNode &amp;&amp; listNode-&gt;hasTagName(olTag)) {
+            NodeImpl *prevNode = prevListNode();

should just be:

+        if (listNode &amp;&amp; listNode-&gt;hasTagName(olTag) &amp;&amp; prevListNode()) {

No reason to break it into multiple lines and add a local variable.

Also, should that be prevListNode() or listNode-&gt;prevListNode()?

In render_list.cpp, these spaces in the parentheses don&apos;t match our coding style:

+    while ( o ) {
+        if ( o-&gt;isListItem() &amp;&amp; o-&gt;style()-&gt;listStyleType() != LNONE )

In this line of code:

+        NodeImpl *n = ((HTMLLIElementImpl *)node())-&gt;prevListNode();

what do we do to be sure that node is an HTMLLIElement? The reason I ask is that these assumptions about the DOM tree by the render tree have caused crashing bugs in the past. Often there are CSS ways to get a particular type of renderer with an unexpectedly different type of DOM node, which is one reason renderers can&apos;t alway assume the type of DOM element. But in this case there may be no issue -- it&apos;s hard to see locally in the calcListValue function.

We try to use static_cast syntax rather than C-style casts when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30300</commentid>
    <comment_count>8</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-27 04:10:59 -0800</bug_when>
    <thetext>*** Bug 6863 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30301</commentid>
    <comment_count>9</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-27 04:12:07 -0800</bug_when>
    <thetext>Amongst other sites, this is affecting Yahoo, needs fixing badly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30302</commentid>
    <comment_count>10</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-27 04:13:14 -0800</bug_when>
    <thetext>This is also a Regression. Adding keywords, changing subject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30306</commentid>
    <comment_count>11</comment_count>
      <attachid>6023</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-01-27 05:55:53 -0800</bug_when>
    <thetext>Created attachment 6023
Proposed patch 2

Updated patch to address comments from Darin:
- Remove use of isSameNode
- Clean up use of return to be more clear in if statements
- Use of for loops instead of while in appropriate locations
- Move declaration of found local variable in getPrevListNode
- Remove unneeded local variable in attach -- prevListNode() is correct, we want to know if the new node is the first node in the list here
- Remove extraneous function in render_list.cpp from earlier attempt at patch without use of DOM tree
- Use static_cast not a C-style case
- Check that DOM node is an HTML LI node in render_list.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30308</commentid>
    <comment_count>12</comment_count>
      <attachid>6023</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-27 08:38:45 -0800</bug_when>
    <thetext>Comment on attachment 6023
Proposed patch 2

Looking great. I love this patch!

There are still some slight improvements that could be made. In fact, I thought of one major one.

1) I believe that the entire prevListNode function can be simplified, all recursion removed, the two levels of loop removed, and all this folded back into prevListNode by using the traversePreviousNode() function. Something like this:

    static NodeImpl* parentList(NodeList* node)
    {
        for (NodeImpl* n = node; n; n = n-&gt;parentNode()) {
            if (n-&gt;hasTagName(ulTag) || n-&gt;hasTagName(olTag))
                return n;
        return 0;
    }

    HTMLLIElementImpl* HTMLLIElementImpl::previousListItem()
    {
        NodeImpl* list = parentList(this);
        if (!list)
            return 0;
        for (NodeImpl* n = this; n != list; n = n-&gt;traversePreviousNode())
            if (n-&gt;hasTagName(liTag)) {
                NodeImpl* otherList = parentList(n);
                if (list == otherList)
                    // This item is part of our current list, so it&apos;s what we&apos;re looking for.
                    return static_cast&lt;HTMLLIElementImpl *&gt;(n);
                // We found ourself inside another list; lets skip the rest of it.
                if (otherList)
                    n = otherList;
            }
        return 0;
    }

The parentList function could also be changed to be a member of HTMLLIElementImpl instead of a local helper -- should work either way -- and we might want to give it a different name since &quot;parent&quot; doesn&apos;t really express the relationship. It&apos;s &quot;the&quot; list for a list item.

The logic is a little less nice than I&apos;d like it, because it would be nicer to not descend into nested list subtrees at all. But to do that we&apos;d have to visit parents before children, and to do that we&apos;d use traversePreviousNodePostOrder. But if we did that traversePreviousNodePostOrder would return an outer &lt;li&gt; node *before* an &lt;li&gt; element inside it, which is out of document order. I think that&apos;s a real case we need to handle, so I recommend just using traversePreviousNode and using a different technique to avoid nodes in other lists; should still be efficient enough. If I&apos;m wrong about that &lt;li&gt; element nesting issue, we could improve this further. We should make sure the test cases include something like that (they probably do).

I have other comments about the existing patch&apos;s code&apos;s loop structure, but I&apos;ll omit them since if you take my suggestion those loops will be gone.

2) I suggest renaming prevListNode to either previousListItem, previousItemInList, previousLIElement, previousListItemElement, or something like that.

3) If you follow my suggestion (1) above, then HTMLLIElementImpl::attach can also use the parentList function. Then, since HTMLLIElementImpl::attach already has the list pointer, you could factor out the &quot;find previous &lt;li&gt; in a particular list&quot; part of the code I wrote above into a separate function and call that from HTMLLIElementImpl::attach to avoid finding the parentList twice.

4) We&apos;ve been putting the * next to the type, as in &quot;NodeImpl*&quot;, in code recently. Although I believe the coding style guide has not yet been updated, I&apos;d really like this patch to be that way, if it&apos;s not too much trouble.

5) Here, there&apos;s no need for isHTMLElement:

+        if (node()-&gt;isHTMLElement() &amp;&amp; node()-&gt;hasTagName(liTag))

That&apos;s because liTag includes both the tag name and the HTML namespace, so this includes the check that this is an HTML node. Some older code in our tree seems to not now this.

6) There&apos;s extra parentheses here:

+            n = (static_cast&lt;HTMLLIElementImpl *&gt;(node()))-&gt;prevListNode();

One nice thing about static_cast syntax is that it provides parentheses so you don&apos;t need that extra set.

7) We *might* need a null-check of node(). Not sure; there can sometimes be render objects without corresponding DOM nodes, but this probably can&apos;t happen for list items. We can probably land the patch without determining this.

8) Given my comments in item (3), we need some test cases where one &lt;li&gt; is nested inside another (both for the same list). If those cases really don&apos;t list, we can improve on (1) as described under (3).

9) We might want to consider changing responsibilities so the &quot;start value&quot; code is not shared between both the render and DOM tree code. For example, the DOM tree could always set the value, which could be named &quot;listStartValue&quot; and we could only look at the value in the case where there&apos;s no previous list item. Or we could explicitly fetch the value from the DOM tree inside RenderListItem::calcListValue, since we already have to locate the list element as a part of finding the previous list items. If you do the latter, then the previousListItem function can be entirely local to render_list.cpp and need not be added to the DOM tree code publicly at all.

10) This code seems to compute marker values even for the three list style types that are symbols and not integers: DISC, CIRCLE, and SQUARE, although it does have a special case for LNONE. That seems like unnecessary work. I think we need test cases that mix list style types. Is it really true that a list item with no marker resets the count to 0, but a list item with a disc gets an invisible number? That&apos;s what the current code seems to do.

Thanks for tackling this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30349</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-01-27 15:11:29 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; The parentList function could also be changed to be a member of
&gt; HTMLLIElementImpl instead of a local helper -- should work either way -- and we
&gt; might want to give it a different name since &quot;parent&quot; doesn&apos;t really express
&gt; the relationship. It&apos;s &quot;the&quot; list for a list item.

How about container or listContainer?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31076</commentid>
    <comment_count>14</comment_count>
      <attachid>6206</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-02-02 04:13:11 -0800</bug_when>
    <thetext>Created attachment 6206
Proposed patch 3

- Use traversePreviousNode to traverse tree in a nicer way
- Move DOM node looking code to the render tree
- Remove calculation of start nodes from html_listimpl.cpp. Only explicitly set values are set from here now.
- Rename functions: previousListItemElement and enclosingList
- Did not change attach() to use a function to find the enclosing list as that function was moved to render_list.cpp
- List items with styles that won&apos;t display a number still get assigned an invisible number (remove LNONE check that came from original code). This matches every other browser I tried including IE and Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31086</commentid>
    <comment_count>15</comment_count>
      <attachid>6206</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-02 09:01:20 -0800</bug_when>
    <thetext>Comment on attachment 6206
Proposed patch 3

This is looking really good. Almost ready to land.

I see one bug, so I&apos;ll have to mark this review-.

The bug is here:

+            NodeImpl* list = enclosingList(node());
+            if (list)
+                m_marker-&gt;m_value = static_cast&lt;HTMLOListElementImpl*&gt;(list)-&gt;start();

This casts the list to HTMLOListElementImpl* without checking if it&apos;s an &lt;ol&gt; element or a &lt;ul&gt; element. Need to add a hasTagName(olTag).

--------

I also think we need some more test cases.

    1) Test with list items that use list styles that don&apos;t display the number. You said, &quot;List items with styles that won&apos;t display a number still get assigned an invisible number.&quot; And you tested this in other browsers. Great! But we don&apos;t have a test that demonstrates this and regression-tests it.

    2) Test with list items that are in the list but not displayed (using style=&quot;display: none&quot;) to test whether they are skipped when assigning numbers, get assigned invisible numbers, or have some other behavior. Such items will not have renderers. I believe the proposed code will start over at 1 if there&apos;s a list item that is not displayed, which may not be right. And depending on the behavior we may have to find out some way to store values for list items without renderers.

    3) Test with list items that use other &quot;display&quot; modes. There is &quot;none&quot;, which is test (2) above, but there are also modes like &quot;display: block&quot; that make a list item no longer look like a list item. Specifically, &quot;display: list-item&quot; will make anything behave like a list item, even if it&apos;s not an &lt;li&gt; element and any display mode other than &quot;display: list-item&quot; can make an &lt;li&gt; element behave as if it&apos;s not a list item. Do the numbers on these types of items work properly?

Some of these test cases will probably uncover further problems that might be beyond the scope of this patch. For example the assumption that If so, we can land the test cases with the current results even if incorrect, and write further bug reports about the outstanding problems.

To fix problems uncovered by (3) we might have to change previousListItemElement to work based on the render tree instead of the DOM tree. If so, then we might have to write the RenderObject version of the NodeImpl::traversePreviousNode function, and use isListItem() rather than hasTagName(liTag) to identify list items.

But depending on the results of (2) we might have to go in a conflicting direction, because &quot;display: none&quot; elements don&apos;t get render objects. If they have to participate in the numbering then we&apos;ll have a conundrum on our hands. If we&apos;re lucky, the changing to use the render tree instead of the DOM tree will give us correct results for both (2) and (3)!

What&apos;s important to me is having the test cases -- eventually it would be nice to handle all the cases well too but that&apos;s less urgent.

--------

Here are five much-less-important optional improvements. Let me reiterate, these are all optional:

A)

+    NodeImpl* n;
+    for (n = node; n; n = n-&gt;parentNode()) {

Declare NodeImpl* inside the for loop here.

B)

+            // We found ourself inside another list; lets skip the rest of  it.

Remove one of the two spaces between &quot;of&quot; and &quot;it&quot;.

C)

+        NodeImpl *n = 0;

Put the * next to the NodeImpl intead of next to the n.

D)

+        RenderObject *o = 0;

...

+        if (n) {
+            o = n-&gt;renderer();

Declare o only inside the if statement right where it&apos;s initialized rather than declaring it earlier and initializing it to 0.

E)

Since we need to know the list in the case where previousListItemElement return 0, perhaps we could change that function so that it takes the list as a parameter. Then we could restructure the calling code to get the list and pass it in, saving us from finding the list twice in the case where there&apos;s no previous list item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31140</commentid>
    <comment_count>16</comment_count>
      <attachid>6214</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-02-03 02:41:26 -0800</bug_when>
    <thetext>Created attachment 6214
Proposed patch 4

- Check that list that start value is fetched from is an &lt;ol&gt; list
- New test case ol-display-types.html that covers messing with the list using CSS
- Modified behaviours to check against isListElement() instead of tag names. This is workable now that this code is in the render tree.
- Now match Firefox&apos;s display (seems to match common sense) for items with display: list-item or &lt;li&gt; tags with a different display type. IE&apos;s behaviour doesn&apos;t seem to make any sense, and it&apos;s unlikely that there&apos;s significant reliance on IE&apos;s seemingly broken method of numbering when messing with display types in CSS.
- previousListItemElement() now takes an optional parent list if the calling function knows it. calcListValue() uses this.
- change logic in setStyle() to have a marker in all cases except error images. Previous code didn&apos;t have one when display: none, this could potentially cause crashes.
- did all of the cleanups because they&apos;re a good idea :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31169</commentid>
    <comment_count>17</comment_count>
      <attachid>6214</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-03 09:30:06 -0800</bug_when>
    <thetext>Comment on attachment 6214
Proposed patch 4

Great! r=me

I noticed a RenderObject * that should be RenderObject*, and I don&apos;t think making the list parameter to previousListItemElement is good, since it means you search for the list twice if there is none. But both of those are so minor they are no obstacle to landing this.

Very nice tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31275</commentid>
    <comment_count>18</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-02-04 05:04:02 -0800</bug_when>
    <thetext>The fix as landed seems to have broken several layout tests:

css2.1/t0505-c16-descendant-00-e
css2.1/t0803-c5501-mrgn-t-00-b-a
css2.1/t0803-c5502-mrgn-r-01-c-a
... several others in css2.1 and
fast/css/007
fast/css/acid2-pixel
fast/css/acid2

I also noticed that the ChangeLog entry mentions a change to html_listimpl.cpp that wasn&apos;t committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31277</commentid>
    <comment_count>19</comment_count>
      <attachid>6244</attachid>
    <who name="Andrew Wellington">andrew</who>
    <bug_when>2006-02-04 05:41:48 -0800</bug_when>
    <thetext>Created attachment 6244
Followup patch

This patch when applied to what&apos;s currently in SVN + the missing html_listimpl.cpp fixes the problem mitzpettel mentioned. Moved the value storage to the RenderListItem, some Items shouldn&apos;t have markers, but should still have values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31341</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-02-04 11:06:17 -0800</bug_when>
    <thetext>Reopening because of comment 18 (html_listimpl.cpp is now committed, but the followup patch is not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31370</commentid>
    <comment_count>21</comment_count>
      <attachid>6244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-04 16:07:08 -0800</bug_when>
    <thetext>Comment on attachment 6244
Followup patch

This followup patch needs review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31371</commentid>
    <comment_count>22</comment_count>
      <attachid>6214</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-04 16:07:31 -0800</bug_when>
    <thetext>Comment on attachment 6214
Proposed patch 4

Cleared review flag from this since it&apos;s landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31372</commentid>
    <comment_count>23</comment_count>
      <attachid>6244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-04 16:11:34 -0800</bug_when>
    <thetext>Comment on attachment 6244
Followup patch

r=me

I&apos;ll test and land this one as &quot;penance&quot; for not testing the last one enough.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4773</attachid>
            <date>2005-11-22 14:10:11 -0800</date>
            <delta_ts>2005-11-22 14:10:11 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>testcase.html</filename>
            <type>text/html</type>
            <size>63</size>
            <attacher name="Joost de Valk (AlthA)">joost</attacher>
            
              <data encoding="base64">PG9sPgoJPGZvbnQ+IAoJPGxpPlRleHQgMTwvbGk+Cgk8L2ZvbnQ+IAoJPGxpPlRleHQgMjwvbGk+
Cjwvb2w+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5566</attachid>
            <date>2006-01-09 03:52:57 -0800</date>
            <delta_ts>2006-01-20 05:38:43 -0800</delta_ts>
            <desc>Incomplete patch</desc>
            <filename>incomplete-patch-bug5766.txt</filename>
            <type>text/plain</type>
            <size>1780</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlbmRlcl9saXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjc1CmRpZmYgLXUgLXIxLjc1IHJlbmRlcl9saXN0LmNwcAotLS0gcmVuZGVyX2xpc3QuY3Bw
CTIzIERlYyAyMDA1IDE4OjQ0OjI0IC0wMDAwCTEuNzUKKysrIHJlbmRlcl9saXN0LmNwcAk5IEph
biAyMDA2IDExOjU4OjQyIC0wMDAwCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbmRyZXcgV2VsbGluZ3Rv
biAocHJvdG9uQHdpcmV0YXBwZWQubmV0KS4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTc1LDYg
KzE3NiwyMyBAQAogICAgIFJlbmRlckJsb2NrOjpkZXN0cm95KCk7CiB9CiAKK3N0YXRpYyBSZW5k
ZXJPYmplY3QgKmdldExhc3RMaXN0SXRlbShSZW5kZXJPYmplY3QqIGl0ZW0pCit7CisgICAgUmVu
ZGVyT2JqZWN0ICpmb3VuZCA9IDA7CisgICAgUmVuZGVyT2JqZWN0ICpvID0gaXRlbTsKKyAgICB3
aGlsZSAoIG8gKSB7CisgICAgICAgIGlmICggby0+aXNMaXN0SXRlbSgpICYmIG8tPnN0eWxlKCkt
Pmxpc3RTdHlsZVR5cGUoKSAhPSBMTk9ORSApCisgICAgICAgICAgICAgICAgcmV0dXJuIG87ICAg
ICAgICAgICAKKyAgICAgICAgZWxzZSBpZiAoIG8tPmxhc3RDaGlsZCgpICkgeworICAgICAgICAg
ICAgZm91bmQgPSBnZXRMYXN0TGlzdEl0ZW0oby0+bGFzdENoaWxkKCkpOworICAgICAgICAgICAg
aWYgKGZvdW5kKQorICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICAgICAgfQorICAg
ICAgICBvID0gby0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQor
CiB2b2lkIFJlbmRlckxpc3RJdGVtOjpjYWxjTGlzdFZhbHVlKCkKIHsKICAgICAvLyBvbmx5IGNh
bGxlZCBmcm9tIHRoZSBtYXJrZXIgc28uLgpAQCAtMTg1LDkgKzIwMyw3IEBACiAgICAgZWxzZSBp
ZighcHJldmlvdXNTaWJsaW5nKCkpCiAgICAgICAgIG1fbWFya2VyLT5tX3ZhbHVlID0gMTsKICAg
ICBlbHNlIHsKLQlSZW5kZXJPYmplY3QgKm8gPSBwcmV2aW91c1NpYmxpbmcoKTsKLQl3aGlsZSAo
IG8gJiYgKCFvLT5pc0xpc3RJdGVtKCkgfHwgby0+c3R5bGUoKS0+bGlzdFN0eWxlVHlwZSgpID09
IExOT05FKSApCi0JICAgIG8gPSBvLT5wcmV2aW91c1NpYmxpbmcoKTsKKwlSZW5kZXJPYmplY3Qg
Km8gPSBnZXRMYXN0TGlzdEl0ZW0ocHJldmlvdXNTaWJsaW5nKCkpOwogICAgICAgICBpZiggbyAm
JiBvLT5pc0xpc3RJdGVtKCkgJiYgby0+c3R5bGUoKS0+bGlzdFN0eWxlVHlwZSgpICE9IExOT05F
ICkgewogICAgICAgICAgICAgUmVuZGVyTGlzdEl0ZW0gKml0ZW0gPSBzdGF0aWNfY2FzdDxSZW5k
ZXJMaXN0SXRlbSAqPihvKTsKICAgICAgICAgICAgIG1fbWFya2VyLT5tX3ZhbHVlID0gaXRlbS0+
dmFsdWUoKSArIDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5796</attachid>
            <date>2006-01-20 05:38:43 -0800</date>
            <delta_ts>2006-01-27 05:55:53 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-5776-patch.txt</filename>
            <type>text/plain</type>
            <size>17251</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMjU2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDEtMjEgIEFuZHJldyBXZWxsaW5ndG9u
ICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gdGVzdCBmb3IgYnVnIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NgorICAgICAgICBHZW5lcmF0ZWQgbnVtYmVycyBv
ZiBvcmRlcmVkIGxpc3RzIChPTCkgYXJlIG5vdCBjYWxjdWxhdGVkIHJpZ2h0CisKKyAgICAgICAg
KiBmYXN0L2xpc3RzL29sc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9saXN0cy9v
bHN0YXJ0LWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29s
c3RhcnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sc3RhcnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwNi0wMS0xOSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAbWFjLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tz
dW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzg2YzgyZGQ3YjI3ZjUzYWI3ODMzZDcxZGVi
NmU0N2YyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMzggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDc4MgorICBSZW5kZXJDYW52YXMgYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDc4MgorICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzY5eDc1OAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDAsMCkgc2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAxMjh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjg6ICIxLiBCYXNp
YyBpbmhlcml0YW5jZToiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDM0KSBzaXplIDc2
OXgzNgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDcyOXgxOAor
ICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgMyIKKyAgICAgICAgUmVuZGVyTGlzdEl0
ZW0ge0xJfSBhdCAoNDAsMTgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtl
ciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNo
b3VsZCBiZSA0IgorICAgICAgUmVuZGVyQmxvY2sge0hSfSBhdCAoMCw4Nikgc2l6ZSA3Njl4MiBb
Ym9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsOTYpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMjg5eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjg5OiAi
Mi4gVGVzdCB0aGF0IHRoZSBpbm5lciBzdGFydCB2YWx1ZSBnZXRzIGluaGVyaXRlZDoiCisgICAg
ICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDEzMCkgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVy
TGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0
TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2
OiAiU2hvdWxkIGJlIDUiCisgICAgICAgIFJlbmRlckJsb2NrIHtPTH0gYXQgKDQwLDE4KSBzaXpl
IDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUgNjg5
eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSAzIgorICAgICAgUmVu
ZGVyQmxvY2sge0hSfSBhdCAoMCwxODIpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNldCAj
MDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE5Mikgc2l6ZSA3
Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzODN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODM6ICIzLiBUZXN0IHRoYXQgZXh0cmEg
dGFncyBiZWZvcmUgdGhlIGxpIGRvbid0IGJsb2NrIHRoZSBpbmhlcml0YW5jZSIKKyAgICAgIFJl
bmRlckJsb2NrIHtPTH0gYXQgKDAsMjI2KSBzaXplIDc2OXg1MgorICAgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDQwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAyOXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
Mjk6ICJUZXh0IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNCkgc2l6ZSA3
Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDMiCisgICAgICBSZW5kZXJC
bG9jayB7SFJ9IGF0ICgwLDI5NCkgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAw
MDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzA0KSBzaXplIDc2OXgx
OAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDI3MHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI3MDogIjQuIFRlc3QgZm9yIGluaGVyaXRhbmNl
IHRocm91Z2ggbWFueSBsZXZlbHMiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDMzOCkg
c2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDApIHNp
emUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgxOAorICAg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMyAoYW5kIGJvbGQpIgorICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMzcy
KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwzODIpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgNDE2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNDE2OiAiNS4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJl
dmlvdXMgbGkgd2hlbiBpdCBpcyBuZXN0ZWQiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgw
LDQxNikgc2l6ZSA3Njl4NTQKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQw
LDApIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgx
OAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAg
ICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMyAoYW5kIGJvbGQpIgorICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAg
ICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJ
fSBhdCAoNDAsMTgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
MCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBi
ZSA0IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNikgc2l6ZSA3Mjl4MTgK
KyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDUiCisgICAgICBSZW5kZXJCbG9jayB7
SFJ9IGF0ICgwLDQ4Nikgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNDk2KSBzaXplIDc2OXgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDQ1MngxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1MjogIjYuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5n
IGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4gY3VycmVudCBpcyBuZXN0ZWQiCisgICAgICBSZW5k
ZXJCbG9jayB7T0x9IGF0ICgwLDUzMCkgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyTGlzdEl0
ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2Vy
IGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hv
dWxkIGJlIDEiCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6
ZSA3Mjl4MAorICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMiAoYW5kIGJvbGQpIgorICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMzYpIHNpemUgNzI5eDAKKyAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsNTgy
KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw1OTIpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgNDQ1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNDQ1OiAiNy4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJl
dmlvdXMgbGkgd2hlbiBib3RoIGFyZSBuZXN0ZWQiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0
ICgwLDYyNikgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDQwLDApIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcy
OXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgK
KyAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE0OHgxOAorICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNDg6ICJTaG91bGQgYmUgMiAoYW5kIGl0YWxpYyki
CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6ZSA3Mjl4MAor
ICAgICAgICAgIFJlbmRlcklubGluZSB7SX0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlcklubGlu
ZSB7Qn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQg
KDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkg
c2l6ZSAweDE0CisgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1
NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQg
YmUgMyAoYW5kIGJvbGQpIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAs
MzYpIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
IFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsNjc4KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5z
ZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw2ODgpIHNp
emUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMzUyeDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzUyOiAiOC4gVGVzdCBmb3Igbm90
IGluaGVyaXRpbmcgaW1wcm9wZXJseSBmcm9tIGFuIGFub3RoZXIgbGlzdCIKKyAgICAgIFJlbmRl
ckJsb2NrIHtPTH0gYXQgKDAsNzIyKSBzaXplIDc2OXgzNgorICAgICAgICBSZW5kZXJCbG9jayB7
T0x9IGF0ICg0MCwwKSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0g
YXQgKDQwLDApIHNpemUgNjg5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgw
LDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSA3NngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3Vs
ZCBiZSAyIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwxOCkgc2l6ZSA3Mjl4
MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDUiCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xpc3RzL29sc3RhcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xpc3RzL29sc3RhcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlz
dHMvb2xzdGFydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisxLiBCYXNpYyBp
bmhlcml0YW5jZToKKzxvbCBzdGFydD0iMyI+CisJPGxpPlNob3VsZCBiZSAzPC9saT4KKwk8bGk+
U2hvdWxkIGJlIDQ8L2xpPgorPC9vbD4KKzxocj4KKworMi4gVGVzdCB0aGF0IHRoZSBpbm5lciBz
dGFydCB2YWx1ZSBnZXRzIGluaGVyaXRlZDoKKzxvbCBzdGFydD0iNSI+CisJPGxpPlNob3VsZCBi
ZSA1PC9saT4KKwk8b2wgc3RhcnQ9IjMiPgorCQk8bGk+U2hvdWxkIGJlIDM8L2xpPgorCTwvb2w+
Cis8L29sPgorPGhyPgorCiszLiBUZXN0IHRoYXQgZXh0cmEgdGFncyBiZWZvcmUgdGhlIGxpIGRv
bid0IGJsb2NrIHRoZSBpbmhlcml0YW5jZQorPG9sIHN0YXJ0PSIzIj4KKwk8cD5UZXh0PC9wPgor
CTxsaT5TaG91bGQgYmUgMzwvbGk+Cis8L29sPgorPGhyPgorCis0LiBUZXN0IGZvciBpbmhlcml0
YW5jZSB0aHJvdWdoIG1hbnkgbGV2ZWxzCis8b2wgc3RhcnQ9IjMiPgorCTxiPjxsaT5TaG91bGQg
YmUgMyAoYW5kIGJvbGQpPC9saT48L2I+Cis8L29sPgorPGhyPgorCis1LiBUZXN0IGZvciBwcm9w
ZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGl0IGlzIG5lc3RlZAorPG9s
IHN0YXJ0PSIzIj4KKwk8Yj48bGk+U2hvdWxkIGJlIDMgKGFuZCBib2xkKTwvbGk+PC9iPgorCTxs
aT5TaG91bGQgYmUgNDwvbGk+CisJPGxpPlNob3VsZCBiZSA1PC9saT4KKzwvb2w+Cis8aHI+CisK
KzYuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5nIGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4g
Y3VycmVudCBpcyBuZXN0ZWQKKzxvbD4KKwk8bGk+U2hvdWxkIGJlIDE8L2xpPgorCTxiPjxsaT5T
aG91bGQgYmUgMiAoYW5kIGJvbGQpPC9saT48L2I+Cis8L29sPgorPGhyPgorCis3LiBUZXN0IGZv
ciBwcm9wZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGJvdGggYXJlIG5l
c3RlZAorPG9sIHN0YXJ0PSIyIj4KKwk8aT48bGk+U2hvdWxkIGJlIDIgKGFuZCBpdGFsaWMpPC9s
aT48L2k+CisJPGI+PGxpPlNob3VsZCBiZSAzIChhbmQgYm9sZCk8L2xpPjwvYj4KKzwvb2w+Cis8
aHI+CisKKzguIFRlc3QgZm9yIG5vdCBpbmhlcml0aW5nIGltcHJvcGVybHkgZnJvbSBhbiBhbm90
aGVyIGxpc3QKKzxvbCBzdGFydD0iNSI+CisJPG9sIHN0YXJ0PSIyIj4KKwkJPGxpPlNob3VsZCBi
ZSAyPC9saT4KKwk8L29sPgorCTxsaT5TaG91bGQgYmUgNTwvbGk+Cis8L29sPgorCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBXZWJDb3Jl
L2todG1sL2h0bWwvaHRtbF9saXN0aW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0bWwv
aHRtbC9odG1sX2xpc3RpbXBsLmgJKHJldmlzaW9uIDEyMjU2KQorKysgV2ViQ29yZS9raHRtbC9o
dG1sL2h0bWxfbGlzdGltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAwNiBBbmRyZXcgV2VsbGluZ3RvbiAocHJvdG9uQHdpcmV0YXBwZWQubmV0KQog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzIsNiArMTMzLDggQEAKIAogICAgIGludCB2YWx1ZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoaW50KTsKKyAgICAKKyAgICBIVE1MTElFbGVtZW50
SW1wbCAqcHJldkxpc3ROb2RlKCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZhbHVlZDsKSW5k
ZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2xpc3RpbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2todG1sL2h0bWwvaHRtbF9saXN0aW1wbC5jcHAJKHJldmlzaW9uIDEyMjU2KQorKysg
V2ViQ29yZS9raHRtbC9odG1sL2h0bWxfbGlzdGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
LDYgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25A
d2lyZXRhcHBlZC5uZXQpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5Myw2ICsxOTQsNTEgQEAK
ICAgICAgICAgSFRNTEVsZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
IAorCisKK3N0YXRpYyBIVE1MTElFbGVtZW50SW1wbCAqZ2V0UHJldkxpc3ROb2RlKE5vZGVJbXBs
ICpub2RlLCBOb2RlSW1wbCAqbGlzdE5vZGUsIE5vZGVJbXBsICpkb250RGVzY2VuZCwgYm9vbCBh
c2NlbmQpCit7CisgICAgTm9kZUltcGwgKmZvdW5kID0gMDsKKyAgICBOb2RlSW1wbCAqbiA9IG5v
ZGU7CisKKyAgICB3aGlsZSAobikgeworICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShsaVRhZykp
IHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTElFbGVtZW50SW1wbCAqPihu
KTsKKyAgICAgICAgfSBlbHNlIGlmIChuLT5pc1NhbWVOb2RlKGxpc3ROb2RlKSkgeworICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0gZWxzZSBpZiAobi0+aGFzVGFnTmFtZSh1bFRhZykg
fHwgbi0+aGFzVGFnTmFtZShvbFRhZykpIHsKKyAgICAgICAgICAgIC8vIGRvIG5vdGhpbmcKKyAg
ICAgICAgfSBlbHNlIGlmIChuLT5maXJzdENoaWxkKCkgJiYgKCFkb250RGVzY2VuZCB8fCAhbi0+
aXNTYW1lTm9kZShkb250RGVzY2VuZCkpKSB7CisgICAgICAgICAgICBmb3VuZCA9IGdldFByZXZM
aXN0Tm9kZShuLT5sYXN0Q2hpbGQoKSwgbGlzdE5vZGUsIDAsIGZhbHNlKTsKKyAgICAgICAgICAg
IGlmIChmb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTExJRWxl
bWVudEltcGwgKj4oZm91bmQpOworICAgICAgICB9CisgICAgICAgIG4gPSBuLT5wcmV2aW91c1Np
YmxpbmcoKTsKKyAgICB9CisgICAgaWYgKGFzY2VuZCAmJiAhbm9kZS0+cGFyZW50Tm9kZSgpLT5p
c1NhbWVOb2RlKGxpc3ROb2RlKSkKKyAgICAgICAgcmV0dXJuIGdldFByZXZMaXN0Tm9kZShub2Rl
LT5wYXJlbnROb2RlKCksIGxpc3ROb2RlLCBub2RlLT5wYXJlbnROb2RlKCksIHRydWUpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK0hUTUxMSUVsZW1lbnRJbXBsICpIVE1MTElF
bGVtZW50SW1wbDo6cHJldkxpc3ROb2RlKCkKK3sKKyAgICBOb2RlSW1wbCAqbGlzdE5vZGUgPSAw
OworICAgIE5vZGVJbXBsICpuID0gdGhpczsKKyAgICAKKyAgICAvLyBsb2NhdGUgcGFyZW50IGxp
c3QKKyAgICB3aGlsZSAoIWxpc3ROb2RlICYmIChuID0gbi0+cGFyZW50Tm9kZSgpKSkgeworICAg
ICAgICBpZiAobi0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbi0+aGFzVGFnTmFtZShvbFRhZykpCisg
ICAgICAgICAgICBsaXN0Tm9kZSA9IG47CisgICAgfQorICAgIAorICAgIGlmIChwcmV2aW91c1Np
YmxpbmcoKSkKKyAgICAgICAgcmV0dXJuIGdldFByZXZMaXN0Tm9kZShwcmV2aW91c1NpYmxpbmco
KSwgbGlzdE5vZGUsIDAsIHRydWUpOworICAgIGVsc2UgaWYgKCFwYXJlbnROb2RlKCktPmlzU2Ft
ZU5vZGUobGlzdE5vZGUpKQorICAgICAgICByZXR1cm4gZ2V0UHJldkxpc3ROb2RlKHBhcmVudE5v
ZGUoKSwgbGlzdE5vZGUsIHBhcmVudE5vZGUoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisK
IHZvaWQgSFRNTExJRWxlbWVudEltcGw6OmF0dGFjaCgpCiB7CiAgICAgYXNzZXJ0KCFhdHRhY2hl
ZCgpKTsKQEAgLTIxNiw5ICsyNjIsMTMgQEAKICAgICAgICAgICAgIHJlbmRlci0+c2V0Tm90SW5M
aXN0KHRydWUpOwogCiAgICAgICAgIC8vIElmIHdlIGFyZSBmaXJzdCwgYW5kIHRoZSBPTCBoYXMg
YSBzdGFydCBhdHRyLCBzZXQgdGhlIHZhbHVlLgotICAgICAgICBpZiAobGlzdE5vZGUgJiYgbGlz
dE5vZGUtPmhhc1RhZ05hbWUob2xUYWcpICYmICFtX3JlbmRlci0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIEhUTUxPTGlzdEVsZW1lbnRJbXBsICpvbCA9IHN0YXRpY19jYXN0PEhU
TUxPTGlzdEVsZW1lbnRJbXBsICo+KGxpc3ROb2RlKTsKLSAgICAgICAgICAgIHJlbmRlci0+c2V0
VmFsdWUob2wtPnN0YXJ0KCkpOworICAgICAgICBpZiAobGlzdE5vZGUgJiYgbGlzdE5vZGUtPmhh
c1RhZ05hbWUob2xUYWcpKSB7CisgICAgICAgICAgICBOb2RlSW1wbCAqcHJldk5vZGUgPSBwcmV2
TGlzdE5vZGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFwcmV2Tm9kZSkgewor
ICAgICAgICAgICAgICAgIEhUTUxPTGlzdEVsZW1lbnRJbXBsICpvbCA9IHN0YXRpY19jYXN0PEhU
TUxPTGlzdEVsZW1lbnRJbXBsICo+KGxpc3ROb2RlKTsKKyAgICAgICAgICAgICAgICByZW5kZXIt
PnNldFZhbHVlKG9sLT5zdGFydCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIC8vIElmIHdlIGhhZCBhIHZhbHVlIGF0dHIuCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9y
ZW5kZXJfbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xp
c3QuY3BwCShyZXZpc2lvbiAxMjI1NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxl
IENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxpbmd0b24g
KHByb3RvbkB3aXJldGFwcGVkLm5ldCkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAKICNpbmNsdWRlICJodG1sbmFtZXMuaCIK
KyNpbmNsdWRlICJodG1sX2xpc3RpbXBsLmgiCiAKICNpbmNsdWRlIDxxcGFpbnRlci5oPgogI2lu
Y2x1ZGUgPHFwZW4uaD4KQEAgLTE3Niw2ICsxNzgsMjMgQEAKICAgICBSZW5kZXJCbG9jazo6ZGVz
dHJveSgpOwogfQogCitzdGF0aWMgUmVuZGVyT2JqZWN0ICpnZXRMYXN0TGlzdEl0ZW0oUmVuZGVy
T2JqZWN0KiBpdGVtKQoreworICAgIFJlbmRlck9iamVjdCAqZm91bmQgPSAwOworICAgIFJlbmRl
ck9iamVjdCAqbyA9IGl0ZW07CisgICAgd2hpbGUgKCBvICkgeworICAgICAgICBpZiAoIG8tPmlz
TGlzdEl0ZW0oKSAmJiBvLT5zdHlsZSgpLT5saXN0U3R5bGVUeXBlKCkgIT0gTE5PTkUgKQorICAg
ICAgICAgICAgICAgIHJldHVybiBvOyAgICAgICAgICAgCisgICAgICAgIGVsc2UgaWYgKCBvLT5s
YXN0Q2hpbGQoKSApIHsKKyAgICAgICAgICAgIGZvdW5kID0gZ2V0TGFzdExpc3RJdGVtKG8tPmxh
c3RDaGlsZCgpKTsKKyAgICAgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZm91bmQ7CisgICAgICAgIH0KKyAgICAgICAgbyA9IG8tPnByZXZpb3VzU2libGluZygpOwor
ICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBSZW5kZXJMaXN0SXRlbTo6Y2FsY0xpc3RW
YWx1ZSgpCiB7CiAgICAgLy8gb25seSBjYWxsZWQgZnJvbSB0aGUgbWFya2VyIHNvLi4KQEAgLTE4
MywxMiArMjAyLDExIEBACiAKICAgICBpZihwcmVkZWZWYWwgIT0gLTEpCiAgICAgICAgIG1fbWFy
a2VyLT5tX3ZhbHVlID0gcHJlZGVmVmFsOwotICAgIGVsc2UgaWYoIXByZXZpb3VzU2libGluZygp
KQotICAgICAgICBtX21hcmtlci0+bV92YWx1ZSA9IDE7CiAgICAgZWxzZSB7Ci0JUmVuZGVyT2Jq
ZWN0ICpvID0gcHJldmlvdXNTaWJsaW5nKCk7Ci0Jd2hpbGUgKCBvICYmICghby0+aXNMaXN0SXRl
bSgpIHx8IG8tPnN0eWxlKCktPmxpc3RTdHlsZVR5cGUoKSA9PSBMTk9ORSkgKQotCSAgICBvID0g
by0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIE5vZGVJbXBsICpuID0gKChIVE1MTElFbGVt
ZW50SW1wbCAqKW5vZGUoKSktPnByZXZMaXN0Tm9kZSgpOworICAgICAgICBSZW5kZXJPYmplY3Qg
Km8gPSAwOworICAgICAgICBpZiAobikKKyAgICAgICAgICAgIG8gPSBuLT5yZW5kZXJlcigpOwog
ICAgICAgICBpZiggbyAmJiBvLT5pc0xpc3RJdGVtKCkgJiYgby0+c3R5bGUoKS0+bGlzdFN0eWxl
VHlwZSgpICE9IExOT05FICkgewogICAgICAgICAgICAgUmVuZGVyTGlzdEl0ZW0gKml0ZW0gPSBz
dGF0aWNfY2FzdDxSZW5kZXJMaXN0SXRlbSAqPihvKTsKICAgICAgICAgICAgIG1fbWFya2VyLT5t
X3ZhbHVlID0gaXRlbS0+dmFsdWUoKSArIDE7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNTYpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDA2LTAxLTIxICBB
bmRyZXcgV2VsbGluZ3RvbiAgPHByb3RvbkB3aXJldGFwcGVkLm5ldD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIC0gZml4IGJ1ZyBodHRw
Oi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTU3NzYKKyAgICAgICAg
R2VuZXJhdGVkIG51bWJlcnMgb2Ygb3JkZXJlZCBsaXN0cyAoT0wpIGFyZSBub3QgY2FsY3VsYXRl
ZCByaWdodAorCisgICAgICAgIFRoaXMgZml4ZXMgb3JkZXJlZCBsaXN0IG51bWJlcmluZyBpbiBh
IG51bWJlciBvZiBlZGdlIGNhc2VzLCBlc3BlY2lhbGx5CisgICAgICAgIHRob3NlIGludm9sdmlu
ZyBlbWJlZGRpbmcgTEkgZWxlbWVudHMgaW4gb3RoZXIgZWxlbWVudHMuCisKKyAgICAgICAgKiBr
aHRtbC9odG1sL2h0bWxfbGlzdGltcGwuY3BwOgorICAgICAgICAoRE9NOjpnZXRQcmV2TGlzdE5v
ZGUpOgorICAgICAgICAoRE9NOjpIVE1MTElFbGVtZW50SW1wbDo6cHJldkxpc3ROb2RlKToKKyAg
ICAgICAgKERPTTo6SFRNTExJRWxlbWVudEltcGw6OmF0dGFjaCk6CisgICAgICAgICoga2h0bWwv
aHRtbC9odG1sX2xpc3RpbXBsLmg6CisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9saXN0LmNw
cDoKKyAgICAgICAgKGdldExhc3RMaXN0SXRlbSk6CisgICAgICAgIChSZW5kZXJMaXN0SXRlbTo6
Y2FsY0xpc3RWYWx1ZSk6CisKIDIwMDYtMDEtMTkgIEVyaWMgU2VpZGVsICA8ZXNlaWRlbEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgZGFyaW4uCg==
</data>
<flag name="review"
          id="1333"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6023</attachid>
            <date>2006-01-27 05:55:53 -0800</date>
            <delta_ts>2006-02-02 04:13:11 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>bug-5776-patch-2.txt</filename>
            <type>text/plain</type>
            <size>16559</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNDE1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDEtMjggIEFuZHJldyBXZWxsaW5ndG9u
ICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIC0gdGVzdCBmb3IgYnVnIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NgorICAgICAgICBHZW5lcmF0ZWQgbnVtYmVycyBv
ZiBvcmRlcmVkIGxpc3RzIChPTCkgYXJlIG5vdCBjYWxjdWxhdGVkIHJpZ2h0CisKKyAgICAgICAg
KiBmYXN0L2xpc3RzL29sc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9saXN0cy9v
bHN0YXJ0LWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29s
c3RhcnQtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sc3RhcnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwNi0wMS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAtIHJldmlzZWQgdGVzdCBmb3IgaHR0cDovL2J1Z3ppbGxhLm9w
ZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02NzMxCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACis4NmM4MmRkN2IyN2Y1M2FiNzgzM2Q3MWRlYjZlNDdmMgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xz
dGFydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9v
bHN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlz
dHMvb2xzdGFydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM4IEBACits
YXllciBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
Nzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NzgyCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc2OXg3NTgKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUg
NzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTI4eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI4OiAiMS4gQmFzaWMgaW5oZXJpdGFu
Y2U6IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCwzNCkgc2l6ZSA3Njl4MzYKKyAgICAg
ICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDc2OiAiU2hvdWxkIGJlIDMiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQg
KDQwLDE4KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkg
c2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3Nngx
OAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgNCIK
KyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsODYpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFw
eCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDk2
KSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDI4
OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI4OTogIjIuIFRlc3QgdGhh
dCB0aGUgaW5uZXIgc3RhcnQgdmFsdWUgZ2V0cyBpbmhlcml0ZWQ6IgorICAgICAgUmVuZGVyQmxv
Y2sge09MfSBhdCAoMCwxMzApIHNpemUgNzY5eDM2CisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtM
SX0gYXQgKDQwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
MCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBi
ZSA1IgorICAgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICg0MCwxOCkgc2l6ZSA3Mjl4MTgKKyAg
ICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDY4OXgxOAorICAgICAg
ICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgMyIKKyAgICAgIFJlbmRlckJsb2NrIHtI
Un0gYXQgKDAsMTgyKSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOTIpIHNpemUgNzY5eDE4CisgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMzgzeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMzgzOiAiMy4gVGVzdCB0aGF0IGV4dHJhIHRhZ3MgYmVmb3Jl
IHRoZSBsaSBkb24ndCBibG9jayB0aGUgaW5oZXJpdGFuY2UiCisgICAgICBSZW5kZXJCbG9jayB7
T0x9IGF0ICgwLDIyNikgc2l6ZSA3Njl4NTIKKyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICg0
MCwwKSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMjl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI5OiAiVGV4dCIK
KyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzQpIHNpemUgNzI5eDE4CisgICAg
ICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSAzIgorICAgICAgUmVuZGVyQmxvY2sge0hSfSBh
dCAoMCwyOTQpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KKyAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDMwNCkgc2l6ZSA3Njl4MTgKKyAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAyNzB4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAyNzA6ICI0LiBUZXN0IGZvciBpbmhlcml0YW5jZSB0aHJvdWdoIG1h
bnkgbGV2ZWxzIgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCwzMzgpIHNpemUgNzY5eDE4
CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgwCisg
ICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5k
ZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgICBSZW5kZXJM
aXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTU0OiAiU2hvdWxkIGJlIDMgKGFuZCBib2xkKSIKKyAgICAgICAgUmVuZGVyQmxvY2sg
KGFub255bW91cykgYXQgKDQwLDE4KSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5l
IHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDM3Mikgc2l6ZSA3Njl4
MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMzgyKSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDQxNngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQx
NjogIjUuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5nIGZyb20gdGhlIHByZXZpb3VzIGxpIHdo
ZW4gaXQgaXMgbmVzdGVkIgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw0MTYpIHNpemUg
NzY5eDU0CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcy
OXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAg
ICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgICBS
ZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTU0OiAiU2hvdWxkIGJlIDMgKGFuZCBib2xkKSIKKyAgICAgICAgUmVuZGVy
QmxvY2sgKGFub255bW91cykgYXQgKDQwLDE4KSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVy
SW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDE4
KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAw
eDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgNCIKKyAgICAg
ICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzYpIHNpemUgNzI5eDE4CisgICAgICAgICAg
UmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3NjogIlNob3VsZCBiZSA1IgorICAgICAgUmVuZGVyQmxvY2sge0hSfSBhdCAoMCw0
ODYpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDQ5Nikgc2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA0NTJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA0NTI6ICI2LiBUZXN0IGZvciBwcm9wZXJseSBjaGFpbmluZyBmcm9tIHRoZSBw
cmV2aW91cyBsaSB3aGVuIGN1cnJlbnQgaXMgbmVzdGVkIgorICAgICAgUmVuZGVyQmxvY2sge09M
fSBhdCAoMCw1MzApIHNpemUgNzY5eDM2CisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQg
KDQwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBz
aXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSAxIgor
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAg
ICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5k
ZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgICBSZW5kZXJM
aXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTU0OiAiU2hvdWxkIGJlIDIgKGFuZCBib2xkKSIKKyAgICAgICAgUmVuZGVyQmxvY2sg
KGFub255bW91cykgYXQgKDQwLDM2KSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5l
IHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDU4Mikgc2l6ZSA3Njl4
MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsNTkyKSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDQ0NXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0
NTogIjcuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5nIGZyb20gdGhlIHByZXZpb3VzIGxpIHdo
ZW4gYm90aCBhcmUgbmVzdGVkIgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw2MjYpIHNp
emUgNzY5eDM2CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXpl
IDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtJfSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAg
ICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAg
ICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNDh4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTQ4OiAiU2hvdWxkIGJlIDIgKGFuZCBpdGFsaWMpIgorICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgw
LDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkg
c2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUg
NzI5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAor
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU0OiAiU2hvdWxkIGJlIDMgKGFuZCBi
b2xkKSIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDM2KSBzaXplIDcy
OXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9j
ayB7SFJ9IGF0ICgwLDY3OCkgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDAp
XQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNjg4KSBzaXplIDc2OXgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDM1MngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM1MjogIjguIFRlc3QgZm9yIG5vdCBpbmhlcml0aW5n
IGltcHJvcGVybHkgZnJvbSBhbiBhbm90aGVyIGxpc3QiCisgICAgICBSZW5kZXJCbG9jayB7T0x9
IGF0ICgwLDcyMikgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoNDAs
MCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBz
aXplIDY4OXgxOAorICAgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4
MTQKKyAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgMiIKKyAg
ICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMTgpIHNpemUgNzI5eDE4CisgICAgICAg
ICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSA1IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0
cy9vbHN0YXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0
YXJ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorMS4gQmFzaWMgaW5oZXJpdGFuY2U6
Cis8b2wgc3RhcnQ9IjMiPgorCTxsaT5TaG91bGQgYmUgMzwvbGk+CisJPGxpPlNob3VsZCBiZSA0
PC9saT4KKzwvb2w+Cis8aHI+CisKKzIuIFRlc3QgdGhhdCB0aGUgaW5uZXIgc3RhcnQgdmFsdWUg
Z2V0cyBpbmhlcml0ZWQ6Cis8b2wgc3RhcnQ9IjUiPgorCTxsaT5TaG91bGQgYmUgNTwvbGk+CisJ
PG9sIHN0YXJ0PSIzIj4KKwkJPGxpPlNob3VsZCBiZSAzPC9saT4KKwk8L29sPgorPC9vbD4KKzxo
cj4KKworMy4gVGVzdCB0aGF0IGV4dHJhIHRhZ3MgYmVmb3JlIHRoZSBsaSBkb24ndCBibG9jayB0
aGUgaW5oZXJpdGFuY2UKKzxvbCBzdGFydD0iMyI+CisJPHA+VGV4dDwvcD4KKwk8bGk+U2hvdWxk
IGJlIDM8L2xpPgorPC9vbD4KKzxocj4KKworNC4gVGVzdCBmb3IgaW5oZXJpdGFuY2UgdGhyb3Vn
aCBtYW55IGxldmVscworPG9sIHN0YXJ0PSIzIj4KKwk8Yj48bGk+U2hvdWxkIGJlIDMgKGFuZCBi
b2xkKTwvbGk+PC9iPgorPC9vbD4KKzxocj4KKworNS4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5p
bmcgZnJvbSB0aGUgcHJldmlvdXMgbGkgd2hlbiBpdCBpcyBuZXN0ZWQKKzxvbCBzdGFydD0iMyI+
CisJPGI+PGxpPlNob3VsZCBiZSAzIChhbmQgYm9sZCk8L2xpPjwvYj4KKwk8bGk+U2hvdWxkIGJl
IDQ8L2xpPgorCTxsaT5TaG91bGQgYmUgNTwvbGk+Cis8L29sPgorPGhyPgorCis2LiBUZXN0IGZv
ciBwcm9wZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGN1cnJlbnQgaXMg
bmVzdGVkCis8b2w+CisJPGxpPlNob3VsZCBiZSAxPC9saT4KKwk8Yj48bGk+U2hvdWxkIGJlIDIg
KGFuZCBib2xkKTwvbGk+PC9iPgorPC9vbD4KKzxocj4KKworNy4gVGVzdCBmb3IgcHJvcGVybHkg
Y2hhaW5pbmcgZnJvbSB0aGUgcHJldmlvdXMgbGkgd2hlbiBib3RoIGFyZSBuZXN0ZWQKKzxvbCBz
dGFydD0iMiI+CisJPGk+PGxpPlNob3VsZCBiZSAyIChhbmQgaXRhbGljKTwvbGk+PC9pPgorCTxi
PjxsaT5TaG91bGQgYmUgMyAoYW5kIGJvbGQpPC9saT48L2I+Cis8L29sPgorPGhyPgorCis4LiBU
ZXN0IGZvciBub3QgaW5oZXJpdGluZyBpbXByb3Blcmx5IGZyb20gYW4gYW5vdGhlciBsaXN0Cis8
b2wgc3RhcnQ9IjUiPgorCTxvbCBzdGFydD0iMiI+CisJCTxsaT5TaG91bGQgYmUgMjwvbGk+CisJ
PC9vbD4KKwk8bGk+U2hvdWxkIGJlIDU8L2xpPgorPC9vbD4KKworCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3Qv
bGlzdHMvb2xzdGFydC1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBl
CiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDE1KQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwNi0wMS0y
OCAgQW5kcmV3IFdlbGxpbmd0b24gIDxwcm90b25Ad2lyZXRhcHBlZC5uZXQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIGZpeCBidWcg
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2CisgICAg
ICAgIEdlbmVyYXRlZCBudW1iZXJzIG9mIG9yZGVyZWQgbGlzdHMgKE9MKSBhcmUgbm90IGNhbGN1
bGF0ZWQgcmlnaHQKKworICAgICAgICBUaGlzIGZpeGVzIG9yZGVyZWQgbGlzdCBudW1iZXJpbmcg
aW4gYSBudW1iZXIgb2YgZWRnZSBjYXNlcywgZXNwZWNpYWxseQorICAgICAgICB0aG9zZSBpbnZv
bHZpbmcgZW1iZWRkaW5nIExJIGVsZW1lbnRzIGluIG90aGVyIGVsZW1lbnRzLgorCisgICAgICAg
ICoga2h0bWwvaHRtbC9odG1sX2xpc3RpbXBsLmNwcDoKKyAgICAgICAgKERPTTo6Z2V0UHJldkxp
c3ROb2RlKToKKyAgICAgICAgKERPTTo6SFRNTExJRWxlbWVudEltcGw6OnByZXZMaXN0Tm9kZSk6
CisgICAgICAgIChET006OkhUTUxMSUVsZW1lbnRJbXBsOjphdHRhY2gpOgorICAgICAgICAqIGto
dG1sL2h0bWwvaHRtbF9saXN0aW1wbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfbGlz
dC5jcHA6CisgICAgICAgIChSZW5kZXJMaXN0SXRlbTo6Y2FsY0xpc3RWYWx1ZSk6CisKIDIwMDYt
MDEtMjcgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3Ig
Njg2Ny4gIFJlbmFtZSBRUGl4bWFwIHRvIEltYWdlIGFuZCBtb3ZlIGl0IHRvIHBsYXRmb3JtLy4K
SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2xpc3RpbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9raHRtbC9odG1sL2h0bWxfbGlzdGltcGwuaAkocmV2aXNpb24gMTI0MTUpCisrKyBX
ZWJDb3JlL2todG1sL2h0bWwvaHRtbF9saXN0aW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYg
KzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUu
b3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUu
b3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA2IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25Ad2ly
ZXRhcHBlZC5uZXQpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMiw2ICsxMzMsOCBAQAogCiAg
ICAgaW50IHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShpbnQpOworICAgIAorICAg
IEhUTUxMSUVsZW1lbnRJbXBsICpwcmV2TGlzdE5vZGUoKTsKIAogcHJpdmF0ZToKICAgICBib29s
IGlzVmFsdWVkOwpJbmRleDogV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfbGlzdGltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2xpc3RpbXBsLmNwcAkocmV2aXNp
b24gMTI0MTUpCisrKyBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9saXN0aW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlz
dG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxp
bmd0b24gKHByb3RvbkB3aXJldGFwcGVkLm5ldCkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTkx
LDYgKzE5Miw1MSBAQAogICAgICAgICBIVE1MRWxlbWVudEltcGw6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpOwogfQogCitzdGF0aWMgSFRNTExJRWxlbWVudEltcGwgKmdldFByZXZMaXN0Tm9k
ZShOb2RlSW1wbCAqbm9kZSwgTm9kZUltcGwgKmxpc3ROb2RlLCBOb2RlSW1wbCAqZG9udERlc2Nl
bmQsIGJvb2wgYXNjZW5kKQoreworICAgIE5vZGVJbXBsICpuOworICAgIE5vZGVJbXBsICpjdXJO
b2RlID0gbm9kZTsKKworICAgIGRvIHsKKyAgICAgICAgZm9yIChuID0gY3VyTm9kZTsgbiAhPSAw
OyBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChuLT5oYXNUYWdO
YW1lKGxpVGFnKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTElF
bGVtZW50SW1wbCAqPihuKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobiA9PSBsaXN0Tm9kZSkg
eworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfSBlbHNlIGlmIChuLT5o
YXNUYWdOYW1lKHVsVGFnKSB8fCBuLT5oYXNUYWdOYW1lKG9sVGFnKSkgeworICAgICAgICAgICAg
ICAgIC8vIGRvIG5vdGhpbmcKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobi0+Zmlyc3RDaGlsZCgp
ICYmICghZG9udERlc2NlbmQgfHwgbiAhPSBkb250RGVzY2VuZCkpIHsKKyAgICAgICAgICAgICAg
ICBOb2RlSW1wbCAqZm91bmQgPSBnZXRQcmV2TGlzdE5vZGUobi0+bGFzdENoaWxkKCksIGxpc3RO
b2RlLCAwLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTExJRWxlbWVudEltcGwgKj4oZm91bmQpOwor
ICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBjdXJOb2RlID0gY3Vy
Tm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICBkb250RGVzY2VuZCA9IGN1ck5vZGU7CisgICAg
fQorICAgIHdoaWxlIChhc2NlbmQgJiYgY3VyTm9kZSAhPSBsaXN0Tm9kZSk7CisgICAgcmV0dXJu
IDA7Cit9CisKK0hUTUxMSUVsZW1lbnRJbXBsICpIVE1MTElFbGVtZW50SW1wbDo6cHJldkxpc3RO
b2RlKCkKK3sKKyAgICBOb2RlSW1wbCAqbGlzdE5vZGUgPSAwOworICAgIE5vZGVJbXBsICpuID0g
dGhpczsKKyAgICAKKyAgICAvLyBsb2NhdGUgcGFyZW50IGxpc3QKKyAgICBmb3IgKG4gPSB0aGlz
OyAhbGlzdE5vZGUgJiYgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAobi0+
aGFzVGFnTmFtZSh1bFRhZykgfHwgbi0+aGFzVGFnTmFtZShvbFRhZykpCisgICAgICAgICAgICBs
aXN0Tm9kZSA9IG47CisgICAgfQorICAgIAorICAgIGlmIChwcmV2aW91c1NpYmxpbmcoKSkKKyAg
ICAgICAgcmV0dXJuIGdldFByZXZMaXN0Tm9kZShwcmV2aW91c1NpYmxpbmcoKSwgbGlzdE5vZGUs
IDAsIHRydWUpOworICAgIGVsc2UgaWYgKHBhcmVudE5vZGUoKSAhPSBsaXN0Tm9kZSkKKyAgICAg
ICAgcmV0dXJuIGdldFByZXZMaXN0Tm9kZShwYXJlbnROb2RlKCksIGxpc3ROb2RlLCBwYXJlbnRO
b2RlKCksIHRydWUpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIEhUTUxMSUVsZW1lbnRJbXBs
OjphdHRhY2goKQogewogICAgIGFzc2VydCghYXR0YWNoZWQoKSk7CkBAIC0yMTQsNyArMjYwLDcg
QEAKICAgICAgICAgICAgIHJlbmRlci0+c2V0Tm90SW5MaXN0KHRydWUpOwogCiAgICAgICAgIC8v
IElmIHdlIGFyZSBmaXJzdCwgYW5kIHRoZSBPTCBoYXMgYSBzdGFydCBhdHRyLCBzZXQgdGhlIHZh
bHVlLgotICAgICAgICBpZiAobGlzdE5vZGUgJiYgbGlzdE5vZGUtPmhhc1RhZ05hbWUob2xUYWcp
ICYmICFyZW5kZXJlcigpLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAobGlzdE5v
ZGUgJiYgbGlzdE5vZGUtPmhhc1RhZ05hbWUob2xUYWcpICYmICFwcmV2TGlzdE5vZGUoKSkgewog
ICAgICAgICAgICAgSFRNTE9MaXN0RWxlbWVudEltcGwgKm9sID0gc3RhdGljX2Nhc3Q8SFRNTE9M
aXN0RWxlbWVudEltcGwgKj4obGlzdE5vZGUpOwogICAgICAgICAgICAgcmVuZGVyLT5zZXRWYWx1
ZShvbC0+c3RhcnQoKSk7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRl
cl9saXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGlzdC5j
cHAJKHJldmlzaW9uIDEyNDE1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgQXBwbGUgQ29t
cHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbmRyZXcgV2VsbGluZ3RvbiAocHJv
dG9uQHdpcmV0YXBwZWQubmV0KQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKIAogI2luY2x1ZGUgImh0bWxuYW1lcy5oIgorI2lu
Y2x1ZGUgImh0bWxfbGlzdGltcGwuaCIKIAogI2luY2x1ZGUgPHFwYWludGVyLmg+CiAjaW5jbHVk
ZSAiUGVuLmgiCkBAIC0xODIsMTIgKzE4NCwxMyBAQAogCiAgICAgaWYgKHByZWRlZlZhbCAhPSAt
MSkKICAgICAgICAgbV9tYXJrZXItPm1fdmFsdWUgPSBwcmVkZWZWYWw7Ci0gICAgZWxzZSBpZiAo
IXByZXZpb3VzU2libGluZygpKQotICAgICAgICBtX21hcmtlci0+bV92YWx1ZSA9IDE7CiAgICAg
ZWxzZSB7Ci0JUmVuZGVyT2JqZWN0ICpvID0gcHJldmlvdXNTaWJsaW5nKCk7Ci0Jd2hpbGUgKG8g
JiYgKCFvLT5pc0xpc3RJdGVtKCkgfHwgby0+c3R5bGUoKS0+bGlzdFN0eWxlVHlwZSgpID09IExO
T05FKSkKLQkgICAgbyA9IG8tPnByZXZpb3VzU2libGluZygpOworICAgICAgICBOb2RlSW1wbCAq
biA9IDA7CisgICAgICAgIGlmIChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUobGlUYWcpKQorICAgICAgICAgICAgbiA9IChzdGF0aWNfY2FzdDxIVE1MTElFbGVt
ZW50SW1wbCAqPihub2RlKCkpKS0+cHJldkxpc3ROb2RlKCk7CisgICAgICAgIFJlbmRlck9iamVj
dCAqbyA9IDA7CisgICAgICAgIGlmIChuKQorICAgICAgICAgICAgbyA9IG4tPnJlbmRlcmVyKCk7
CiAgICAgICAgIGlmIChvICYmIG8tPmlzTGlzdEl0ZW0oKSAmJiBvLT5zdHlsZSgpLT5saXN0U3R5
bGVUeXBlKCkgIT0gTE5PTkUpIHsKICAgICAgICAgICAgIFJlbmRlckxpc3RJdGVtICppdGVtID0g
c3RhdGljX2Nhc3Q8UmVuZGVyTGlzdEl0ZW0gKj4obyk7CiAgICAgICAgICAgICBtX21hcmtlci0+
bV92YWx1ZSA9IGl0ZW0tPnZhbHVlKCkgKyAxOwo=
</data>
<flag name="review"
          id="1431"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6206</attachid>
            <date>2006-02-02 04:13:11 -0800</date>
            <delta_ts>2006-02-03 02:41:26 -0800</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>bug-5776-patch-3.txt</filename>
            <type>text/plain</type>
            <size>15433</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjUzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDYtMDItMDIgIEFuZHJldyBXZWxsaW5ndG9uICA8cHJvdG9uQHdp
cmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgRml4IGZvciBidWcgNTc3NjogR2VuZXJhdGVkIG51bWJlcnMgb2Ygb3Jk
ZXJlZCBsaXN0cyAoT0wpIGFyZSBub3QKKyAgICAgICAgY2FsY3VsYXRlZCByaWdodAorICAgICAg
ICAKKyAgICAgICAgVXNlcyB0aGUgRE9NIHRyZWUgdG8gY2FsY3VsYXRlIHByZXZpb3VzIG5vZGVz
IGFuZCBuZXN0IGNvcnJlY3RseQorCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2xpc3RpbXBs
LmNwcDoKKyAgICAgICAgKERPTTo6SFRNTExJRWxlbWVudEltcGw6OmF0dGFjaCk6IHJlbW92ZSBj
YWxjdWxhdGlvbiBvZiBzdGFydCBub2RlIHZhbHVlCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRl
cl9saXN0LmNwcDoKKyAgICAgICAgKGVuY2xvc2luZ0xpc3QpOiBnZXRzIHRoZSBsaXN0IGVuY2xv
c2luZyB0aGUgZ2l2ZW4gbm9kZQorICAgICAgICAocHJldmlvdXNMaXN0SXRlbUVsZW1lbnQpOiBn
ZXRzIHRoZSBwcmV2aW9zIGVsZW1lbnQgaW4gdGhlIGxpc3QKKyAgICAgICAgKFJlbmRlckxpc3RJ
dGVtOjpjYWxjTGlzdFZhbHVlKTogY2FsY3VsYXRlIHRoZSBsaXN0IGNvcnJlY3RseQorCiAyMDA2
LTAyLTAyICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgIEZpeCBmb3Ig
YnVnIDY5NTcsIHJld3JpdGUgaW1hZ2UgcmVuZGVyaW5nIGluIEMrKyBhbmQgbW92ZSBpdCB0bwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saXN0LmNwcAkocmV2aXNpb24gMTI1MzApCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
IENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFuZHJldyBXZWxsaW5ndG9uIChwcm90b25Ad2lyZXRhcHBlZC5uZXQpCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMwLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgog
CiAjaW5jbHVkZSAiaHRtbG5hbWVzLmgiCisjaW5jbHVkZSAiaHRtbF9saXN0aW1wbC5oIgogCiAj
aW5jbHVkZSA8cXBhaW50ZXIuaD4KICNpbmNsdWRlICJQZW4uaCIKQEAgLTE3NSw2ICsxNzcsMzUg
QEAKICAgICBSZW5kZXJCbG9jazo6ZGVzdHJveSgpOwogfQogCitzdGF0aWMgTm9kZUltcGwqIGVu
Y2xvc2luZ0xpc3QoTm9kZUltcGwqIG5vZGUpCit7CisgICAgTm9kZUltcGwqIG47CisgICAgZm9y
IChuID0gbm9kZTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAgICAgICBpZiAobi0+aGFz
VGFnTmFtZSh1bFRhZykgfHwgbi0+aGFzVGFnTmFtZShvbFRhZykpCisgICAgICAgICAgICByZXR1
cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBIVE1MTElFbGVtZW50SW1w
bCogcHJldmlvdXNMaXN0SXRlbUVsZW1lbnQoTm9kZUltcGwqIG5vZGUpCit7CisgICAgTm9kZUlt
cGwqIGxpc3QgPSBlbmNsb3NpbmdMaXN0KG5vZGUpOworICAgIGlmICghbGlzdCkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgZm9yIChOb2RlSW1wbCogbiA9IG5vZGUtPnRyYXZlcnNlUHJldmlvdXNO
b2RlKCk7IG4gIT0gbGlzdDsgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpIHsKKyAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUobGlUYWcpKSB7CisgICAgICAgICAgICBOb2RlSW1wbCogb3Ro
ZXJMaXN0ID0gc3RhdGljX2Nhc3Q8SFRNTExJRWxlbWVudEltcGwqPihlbmNsb3NpbmdMaXN0KG4p
KTsKKyAgICAgICAgICAgIC8vIFRoaXMgaXRlbSBpcyBwYXJ0IG9mIG91ciBjdXJyZW50IGxpc3Qs
IHNvIGl0J3Mgd2hhdCB3ZSdyZSBsb29raW5nIGZvci4KKyAgICAgICAgICAgIGlmIChsaXN0ID09
IG90aGVyTGlzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTExJRWxl
bWVudEltcGwqPihuKTsKKyAgICAgICAgICAgIC8vIFdlIGZvdW5kIG91cnNlbGYgaW5zaWRlIGFu
b3RoZXIgbGlzdDsgbGV0cyBza2lwIHRoZSByZXN0IG9mICBpdC4KKyAgICAgICAgICAgIGlmIChv
dGhlckxpc3QpCisgICAgICAgICAgICAgICAgbiA9IG90aGVyTGlzdDsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBSZW5kZXJMaXN0SXRlbTo6Y2FsY0xpc3RWYWx1
ZSgpCiB7CiAgICAgLy8gb25seSBjYWxsZWQgZnJvbSB0aGUgbWFya2VyIHNvLi4KQEAgLTE4Miwx
NyArMjEzLDI2IEBACiAKICAgICBpZiAocHJlZGVmVmFsICE9IC0xKQogICAgICAgICBtX21hcmtl
ci0+bV92YWx1ZSA9IHByZWRlZlZhbDsKLSAgICBlbHNlIGlmICghcHJldmlvdXNTaWJsaW5nKCkp
CisgICAgZWxzZSB7CisgICAgICAgIE5vZGVJbXBsICpuID0gMDsKKyAgICAgICAgUmVuZGVyT2Jq
ZWN0ICpvID0gMDsKKworICAgICAgICAvLyBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgMQogICAgICAg
ICBtX21hcmtlci0+bV92YWx1ZSA9IDE7Ci0gICAgZWxzZSB7Ci0JUmVuZGVyT2JqZWN0ICpvID0g
cHJldmlvdXNTaWJsaW5nKCk7Ci0Jd2hpbGUgKG8gJiYgKCFvLT5pc0xpc3RJdGVtKCkgfHwgby0+
c3R5bGUoKS0+bGlzdFN0eWxlVHlwZSgpID09IExOT05FKSkKLQkgICAgbyA9IG8tPnByZXZpb3Vz
U2libGluZygpOwotICAgICAgICBpZiAobyAmJiBvLT5pc0xpc3RJdGVtKCkgJiYgby0+c3R5bGUo
KS0+bGlzdFN0eWxlVHlwZSgpICE9IExOT05FKSB7Ci0gICAgICAgICAgICBSZW5kZXJMaXN0SXRl
bSAqaXRlbSA9IHN0YXRpY19jYXN0PFJlbmRlckxpc3RJdGVtICo+KG8pOwotICAgICAgICAgICAg
bV9tYXJrZXItPm1fdmFsdWUgPSBpdGVtLT52YWx1ZSgpICsgMTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX21hcmtlci0+bV92YWx1ZSA9IDE7CisgICAgICAgIAorICAgICAgICBpZiAo
bm9kZSgpLT5oYXNUYWdOYW1lKGxpVGFnKSkKKyAgICAgICAgICAgIG4gPSBzdGF0aWNfY2FzdDxI
VE1MTElFbGVtZW50SW1wbCo+KHByZXZpb3VzTGlzdEl0ZW1FbGVtZW50KG5vZGUoKSkpOworICAg
ICAgICBpZiAobikgeworICAgICAgICAgICAgbyA9IG4tPnJlbmRlcmVyKCk7CisgICAgICAgICAg
ICBpZiAobyAmJiBvLT5pc0xpc3RJdGVtKCkpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMaXN0
SXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PFJlbmRlckxpc3RJdGVtKj4obyk7CisgICAgICAgICAg
ICAgICAgbV9tYXJrZXItPm1fdmFsdWUgPSBpdGVtLT52YWx1ZSgpICsgMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE5vZGVJbXBsKiBsaXN0ID0gZW5jbG9z
aW5nTGlzdChub2RlKCkpOworICAgICAgICAgICAgaWYgKGxpc3QpCisgICAgICAgICAgICAgICAg
bV9tYXJrZXItPm1fdmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MT0xpc3RFbGVtZW50SW1wbCo+KGxp
c3QpLT5zdGFydCgpOworICAgICAgICB9CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2todG1s
L2h0bWwvaHRtbF9saXN0aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9odG1s
L2h0bWxfbGlzdGltcGwuY3BwCShyZXZpc2lvbiAxMjUzMCkKKysrIFdlYkNvcmUva2h0bWwvaHRt
bC9odG1sX2xpc3RpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDEyICsyMTMsNiBAQAog
ICAgICAgICBpZiAoIWxpc3ROb2RlKQogICAgICAgICAgICAgcmVuZGVyLT5zZXROb3RJbkxpc3Qo
dHJ1ZSk7CiAKLSAgICAgICAgLy8gSWYgd2UgYXJlIGZpcnN0LCBhbmQgdGhlIE9MIGhhcyBhIHN0
YXJ0IGF0dHIsIHNldCB0aGUgdmFsdWUuCi0gICAgICAgIGlmIChsaXN0Tm9kZSAmJiBsaXN0Tm9k
ZS0+aGFzVGFnTmFtZShvbFRhZykgJiYgIXJlbmRlcmVyKCktPnByZXZpb3VzU2libGluZygpKSB7
Ci0gICAgICAgICAgICBIVE1MT0xpc3RFbGVtZW50SW1wbCAqb2wgPSBzdGF0aWNfY2FzdDxIVE1M
T0xpc3RFbGVtZW50SW1wbCAqPihsaXN0Tm9kZSk7Ci0gICAgICAgICAgICByZW5kZXItPnNldFZh
bHVlKG9sLT5zdGFydCgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIElmIHdlIGhhZCBhIHZh
bHVlIGF0dHIuCiAgICAgICAgIGlmIChpc1ZhbHVlZCkKICAgICAgICAgICAgIHJlbmRlci0+c2V0
VmFsdWUocmVxdWVzdGVkVmFsdWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1MzApCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAwNi0w
Mi0wMiAgQW5kcmV3IFdlbGxpbmd0b24gIDxwcm90b25Ad2lyZXRhcHBlZC5uZXQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBMYXlvdXQg
dGVzdHMgZm9yIGJ1ZyA1Nzc2OiBHZW5lcmF0ZWQgbnVtYmVycyBvZiBvcmRlcmVkIGxpc3RzIChP
TCkgYXJlCisgICAgICAgIG5vdCBjYWxjdWxhdGVkIHJpZ2h0CisKKyAgICAgICAgKiBmYXN0L2xp
c3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGZhc3QvbGlz
dHMvb2xzdGFydC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbGlzdHMvb2xz
dGFydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbGlzdHMvb2xzdGFydC5o
dG1sOiBBZGRlZC4KKwogMjAwNi0wMi0wMiAgTWl0eiBQZXR0ZWwgIDxvcGVuZGFyd2luLm9yZ0Bt
aXR6cGV0dGVsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQuY2hlY2tz
dW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKzg2YzgyZGQ3YjI3ZjUzYWI3ODMzZDcxZGVi
NmU0N2YyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMzggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDc4MgorICBSZW5kZXJDYW52YXMgYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDc4MgorICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzY5eDc1OAorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDAsMCkgc2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAxMjh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjg6ICIxLiBCYXNp
YyBpbmhlcml0YW5jZToiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDM0KSBzaXplIDc2
OXgzNgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDcyOXgxOAor
ICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgMyIKKyAgICAgICAgUmVuZGVyTGlzdEl0
ZW0ge0xJfSBhdCAoNDAsMTgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtl
ciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNo
b3VsZCBiZSA0IgorICAgICAgUmVuZGVyQmxvY2sge0hSfSBhdCAoMCw4Nikgc2l6ZSA3Njl4MiBb
Ym9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsOTYpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMjg5eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjg5OiAi
Mi4gVGVzdCB0aGF0IHRoZSBpbm5lciBzdGFydCB2YWx1ZSBnZXRzIGluaGVyaXRlZDoiCisgICAg
ICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDEzMCkgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVy
TGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0
TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2
OiAiU2hvdWxkIGJlIDUiCisgICAgICAgIFJlbmRlckJsb2NrIHtPTH0gYXQgKDQwLDE4KSBzaXpl
IDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUgNjg5
eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSAzIgorICAgICAgUmVu
ZGVyQmxvY2sge0hSfSBhdCAoMCwxODIpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNldCAj
MDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDE5Mikgc2l6ZSA3
Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzODN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODM6ICIzLiBUZXN0IHRoYXQgZXh0cmEg
dGFncyBiZWZvcmUgdGhlIGxpIGRvbid0IGJsb2NrIHRoZSBpbmhlcml0YW5jZSIKKyAgICAgIFJl
bmRlckJsb2NrIHtPTH0gYXQgKDAsMjI2KSBzaXplIDc2OXg1MgorICAgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDQwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAyOXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
Mjk6ICJUZXh0IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNCkgc2l6ZSA3
Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDMiCisgICAgICBSZW5kZXJC
bG9jayB7SFJ9IGF0ICgwLDI5NCkgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAw
MDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzA0KSBzaXplIDc2OXgx
OAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDI3MHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI3MDogIjQuIFRlc3QgZm9yIGluaGVyaXRhbmNl
IHRocm91Z2ggbWFueSBsZXZlbHMiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDMzOCkg
c2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDApIHNp
emUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgxOAorICAg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMyAoYW5kIGJvbGQpIgorICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMzcy
KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwzODIpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgNDE2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNDE2OiAiNS4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJl
dmlvdXMgbGkgd2hlbiBpdCBpcyBuZXN0ZWQiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgw
LDQxNikgc2l6ZSA3Njl4NTQKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQw
LDApIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgx
OAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAg
ICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMyAoYW5kIGJvbGQpIgorICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAg
ICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJ
fSBhdCAoNDAsMTgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAo
MCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBi
ZSA0IgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwzNikgc2l6ZSA3Mjl4MTgK
KyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDUiCisgICAgICBSZW5kZXJCbG9jayB7
SFJ9IGF0ICgwLDQ4Nikgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNDk2KSBzaXplIDc2OXgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDQ1MngxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1MjogIjYuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5n
IGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4gY3VycmVudCBpcyBuZXN0ZWQiCisgICAgICBSZW5k
ZXJCbG9jayB7T0x9IGF0ICgwLDUzMCkgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyTGlzdEl0
ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2Vy
IGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hv
dWxkIGJlIDEiCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6
ZSA3Mjl4MAorICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQgYmUgMiAoYW5kIGJvbGQpIgorICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMzYpIHNpemUgNzI5eDAKKyAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsNTgy
KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw1OTIpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgNDQ1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNDQ1OiAiNy4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJl
dmlvdXMgbGkgd2hlbiBib3RoIGFyZSBuZXN0ZWQiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0
ICgwLDYyNikgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQg
KDQwLDApIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcy
OXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDAsMCkgc2l6ZSA3Mjl4MTgK
KyAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE0OHgxOAorICAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNDg6ICJTaG91bGQgYmUgMiAoYW5kIGl0YWxpYyki
CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6ZSA3Mjl4MAor
ICAgICAgICAgIFJlbmRlcklubGluZSB7SX0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlcklubGlu
ZSB7Qn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQg
KDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkg
c2l6ZSAweDE0CisgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE1
NHgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNTQ6ICJTaG91bGQg
YmUgMyAoYW5kIGJvbGQpIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAs
MzYpIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAg
IFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsNjc4KSBzaXplIDc2OXgyIFtib3JkZXI6ICgxcHggaW5z
ZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw2ODgpIHNp
emUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMzUyeDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzUyOiAiOC4gVGVzdCBmb3Igbm90
IGluaGVyaXRpbmcgaW1wcm9wZXJseSBmcm9tIGFuIGFub3RoZXIgbGlzdCIKKyAgICAgIFJlbmRl
ckJsb2NrIHtPTH0gYXQgKDAsNzIyKSBzaXplIDc2OXgzNgorICAgICAgICBSZW5kZXJCbG9jayB7
T0x9IGF0ICg0MCwwKSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0g
YXQgKDQwLDApIHNpemUgNjg5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgw
LDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSA3NngxOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3Vs
ZCBiZSAyIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwxOCkgc2l6ZSA3Mjl4
MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDUiCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2xpc3RzL29sc3RhcnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xpc3RzL29sc3RhcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlz
dHMvb2xzdGFydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisxLiBCYXNpYyBp
bmhlcml0YW5jZToKKzxvbCBzdGFydD0iMyI+CisJPGxpPlNob3VsZCBiZSAzPC9saT4KKwk8bGk+
U2hvdWxkIGJlIDQ8L2xpPgorPC9vbD4KKzxocj4KKworMi4gVGVzdCB0aGF0IHRoZSBpbm5lciBz
dGFydCB2YWx1ZSBnZXRzIGluaGVyaXRlZDoKKzxvbCBzdGFydD0iNSI+CisJPGxpPlNob3VsZCBi
ZSA1PC9saT4KKwk8b2wgc3RhcnQ9IjMiPgorCQk8bGk+U2hvdWxkIGJlIDM8L2xpPgorCTwvb2w+
Cis8L29sPgorPGhyPgorCiszLiBUZXN0IHRoYXQgZXh0cmEgdGFncyBiZWZvcmUgdGhlIGxpIGRv
bid0IGJsb2NrIHRoZSBpbmhlcml0YW5jZQorPG9sIHN0YXJ0PSIzIj4KKwk8cD5UZXh0PC9wPgor
CTxsaT5TaG91bGQgYmUgMzwvbGk+Cis8L29sPgorPGhyPgorCis0LiBUZXN0IGZvciBpbmhlcml0
YW5jZSB0aHJvdWdoIG1hbnkgbGV2ZWxzCis8b2wgc3RhcnQ9IjMiPgorCTxiPjxsaT5TaG91bGQg
YmUgMyAoYW5kIGJvbGQpPC9saT48L2I+Cis8L29sPgorPGhyPgorCis1LiBUZXN0IGZvciBwcm9w
ZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGl0IGlzIG5lc3RlZAorPG9s
IHN0YXJ0PSIzIj4KKwk8Yj48bGk+U2hvdWxkIGJlIDMgKGFuZCBib2xkKTwvbGk+PC9iPgorCTxs
aT5TaG91bGQgYmUgNDwvbGk+CisJPGxpPlNob3VsZCBiZSA1PC9saT4KKzwvb2w+Cis8aHI+CisK
KzYuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5nIGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4g
Y3VycmVudCBpcyBuZXN0ZWQKKzxvbD4KKwk8bGk+U2hvdWxkIGJlIDE8L2xpPgorCTxiPjxsaT5T
aG91bGQgYmUgMiAoYW5kIGJvbGQpPC9saT48L2I+Cis8L29sPgorPGhyPgorCis3LiBUZXN0IGZv
ciBwcm9wZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGJvdGggYXJlIG5l
c3RlZAorPG9sIHN0YXJ0PSIyIj4KKwk8aT48bGk+U2hvdWxkIGJlIDIgKGFuZCBpdGFsaWMpPC9s
aT48L2k+CisJPGI+PGxpPlNob3VsZCBiZSAzIChhbmQgYm9sZCk8L2xpPjwvYj4KKzwvb2w+Cis8
aHI+CisKKzguIFRlc3QgZm9yIG5vdCBpbmhlcml0aW5nIGltcHJvcGVybHkgZnJvbSBhbiBhbm90
aGVyIGxpc3QKKzxvbCBzdGFydD0iNSI+CisJPG9sIHN0YXJ0PSIyIj4KKwkJPGxpPlNob3VsZCBi
ZSAyPC9saT4KKwk8L29sPgorCTxsaT5TaG91bGQgYmUgNTwvbGk+Cis8L29sPgorCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCg==
</data>
<flag name="review"
          id="1494"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6214</attachid>
            <date>2006-02-03 02:41:26 -0800</date>
            <delta_ts>2006-02-04 16:07:31 -0800</delta_ts>
            <desc>Proposed patch 4</desc>
            <filename>bug-5776-patch-4.txt</filename>
            <type>text/plain</type>
            <size>22889</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNTQ0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDYtMDItMDMgIEFuZHJldyBXZWxsaW5ndG9u
ICA8cHJvdG9uQHdpcmV0YXBwZWQubmV0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgTGF5b3V0IHRlc3RzIGZvciBidWcgNTc3NjogR2Vu
ZXJhdGVkIG51bWJlcnMgb2Ygb3JkZXJlZCBsaXN0cyAoT0wpIGFyZQorICAgICAgICBub3QgY2Fs
Y3VsYXRlZCByaWdodAorCisgICAgICAgICogZmFzdC9saXN0cy9vbC1kaXNwbGF5LXR5cGVzLWV4
cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLWRpc3BsYXkt
dHlwZXMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLWRpc3Bs
YXktdHlwZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sLWRp
c3BsYXktdHlwZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9saXN0cy9vbHN0YXJ0LWV4
cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sc3RhcnQtZXhw
ZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sc3RhcnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xpc3RzL29sc3RhcnQuaHRtbDogQWRkZWQuCisK
IDIwMDYtMDItMDIgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBoYXJyaXNvbgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0
cy9vbC1kaXNwbGF5LXR5cGVzLWV4cGVjdGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbGlzdHMvb2wtZGlzcGxheS10eXBlcy1leHBlY3RlZC5jaGVja3N1bQkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtZGlzcGxheS10eXBlcy1leHBl
Y3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZGZjMjYwNTg0YzFjMDQ5
M2ZjNGVlN2Y0MzM0MDQzYWUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xpc3RzL29sLWRpc3BsYXktdHlwZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLWRpc3BsYXktdHlwZXMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtZGlzcGxheS10eXBlcy5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9MIERpc3BsYXkg
VHlwZXMgTGF5b3V0VGVzdDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3Qgb2YgdmFy
aW91cyBDU1MgZGlzcGxheSB0eXBlcyBmb3IgbGlzdCBlbGVtZW50cy4gQWxsIHZpc2libGUgZWxl
bWVudHMgdGhhdCBoYXZlIGEgZGlzcGxheS10eXBlIG9mIGxpc3QtaXRlbSBhcmUgZ2l2ZW4gYSBu
dW1iZXIuIFRoaXMgaXMgZ2VuZXJhbGx5IGdvaW5nIHRvIGJlIExJIGVsZW1lbnQuPC9wPgorPG9s
IHN0YXJ0PSIzIj4KKzxsaT5TaG91bGQgYmUgMzwvbGk+Cis8bGkgc3R5bGU9ImRpc3BsYXk6IG5v
bmU7Ij5JbnZpc2libGUgYW5kIGhhcyBubyBpdGVtPC9saT4KKzxsaT5TaG91bGQgYmUgNDwvbGk+
Cis8bGkgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+U2hvdWxkIG5vdCBoYXZlIGEgbnVtYmVyPC9s
aT4KKzxsaT5TaG91bGQgYmUgNTwvbGk+Cis8bGkgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPlNo
b3VsZCBub3QgaGF2ZSBhIG51bWJlcjwvbGk+Cis8bGk+U2hvdWxkIGJlIDY8L2xpPgorPGRpdiBz
dHlsZT0iZGlzcGxheTogYmxvY2s7Ij5TaG91bGQgbm90IGhhdmUgYSBudW1iZXI8L2Rpdj4KKzxk
aXYgc3R5bGU9ImRpc3BsYXk6IGxpc3QtaXRlbTsiPlNob3VsZCBiZSA3PC9kaXY+Cis8bGk+U2hv
dWxkIGJlIDg8L2xpPgorPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Ij5TaG91bGQg
bm90IGhhdmUgYSBudW1iZXI8L2xpPgorPGxpPlNob3VsZCBiZSAxMDwvbGk+Cis8bGkgc3R5bGU9
Imxpc3Qtc3R5bGUtdHlwZTogZGlzYzsiPlNob3VsZCBoYXZlIGEgZGlzYzwvbGk+Cis8bGk+U2hv
dWxkIGJlIDEyPC9saT4KKzxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij5TaG91
bGQgaGF2ZSBhIHNxdWFyZTwvbGk+Cis8bGk+U2hvdWxkIGJlIDE0PC9saT4KKzxsaSBzdHlsZT0i
bGlzdC1zdHlsZS10eXBlOiBjaXJjbGU7Ij5TaG91bGQgaGF2ZSBhIGNpcmNsZTwvbGk+Cis8bGk+
U2hvdWxkIGJlIDE2PC9saT4KKzwvb2w+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVj
dGVkLmNoZWNrc3VtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFy
dC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbGlz
dHMvb2xzdGFydC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
ODZjODJkZDdiMjdmNTNhYjc4MzNkNzFkZWI2ZTQ3ZjIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLWRpc3BsYXktdHlwZXMtZXhwZWN0
ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5
IGNoYW5nZXMgb246IG9sLWRpc3BsYXktdHlwZXMtZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2xzdGFydC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTM4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgUmVu
ZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4
NzgyCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg3ODIKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg3NTgKKyAgICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMTI4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTI4OiAiMS4gQmFzaWMgaW5oZXJpdGFuY2U6IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAo
MCwzNCkgc2l6ZSA3Njl4MzYKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkg
c2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgx
NAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDMiCisgICAgICAg
IFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJl
bmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNzY6ICJTaG91bGQgYmUgNCIKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsODYp
IHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJs
b2NrIChhbm9ueW1vdXMpIGF0ICgwLDk2KSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDI4OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDI4OTogIjIuIFRlc3QgdGhhdCB0aGUgaW5uZXIgc3RhcnQgdmFsdWUgZ2V0cyBpbmhl
cml0ZWQ6IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCwxMzApIHNpemUgNzY5eDM2Cisg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUgNzI5eDE4CisgICAgICAg
ICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSA1IgorICAgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0
ICg0MCwxOCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0
MCwwKSBzaXplIDY4OXgxOAorICAgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBz
aXplIDB4MTQKKyAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4
MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUg
MyIKKyAgICAgIFJlbmRlckJsb2NrIHtIUn0gYXQgKDAsMTgyKSBzaXplIDc2OXgyIFtib3JkZXI6
ICgxcHggaW5zZXQgIzAwMDAwMCldCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwxOTIpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMzgzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzgzOiAiMy4gVGVz
dCB0aGF0IGV4dHJhIHRhZ3MgYmVmb3JlIHRoZSBsaSBkb24ndCBibG9jayB0aGUgaW5oZXJpdGFu
Y2UiCisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDIyNikgc2l6ZSA3Njl4NTIKKyAgICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICg0MCwwKSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMjl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDI5OiAiVGV4dCIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAo
NDAsMzQpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBz
aXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSAzIgor
ICAgICAgUmVuZGVyQmxvY2sge0hSfSBhdCAoMCwyOTQpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFw
eCBpbnNldCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDMw
NCkgc2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAy
NzB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzA6ICI0LiBUZXN0IGZv
ciBpbmhlcml0YW5jZSB0aHJvdWdoIG1hbnkgbGV2ZWxzIgorICAgICAgUmVuZGVyQmxvY2sge09M
fSBhdCAoMCwzMzgpIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICg0MCwwKSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCww
KSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMCkgc2l6
ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5
eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU0OiAiU2hvdWxkIGJlIDMgKGFuZCBib2xk
KSIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDE4KSBzaXplIDcyOXgw
CisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7
SFJ9IGF0ICgwLDM3Mikgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzgyKSBzaXplIDc2OXgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDQxNngxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQxNjogIjUuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5n
IGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4gaXQgaXMgbmVzdGVkIgorICAgICAgUmVuZGVyQmxv
Y2sge09MfSBhdCAoMCw0MTYpIHNpemUgNzY5eDU0CisgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAs
MCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNp
emUgNzI5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgx
NAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU0OiAiU2hvdWxkIGJlIDMgKGFu
ZCBib2xkKSIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDE4KSBzaXpl
IDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRl
ckxpc3RJdGVtIHtMSX0gYXQgKDQwLDE4KSBzaXplIDcyOXgxOAorICAgICAgICAgIFJlbmRlckxp
c3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NzY6ICJTaG91bGQgYmUgNCIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMzYp
IHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4
MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSA1IgorICAgICAg
UmVuZGVyQmxvY2sge0hSfSBhdCAoMCw0ODYpIHNpemUgNzY5eDIgW2JvcmRlcjogKDFweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDQ5Nikgc2l6
ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA0NTJ4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTI6ICI2LiBUZXN0IGZvciBwcm9w
ZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2aW91cyBsaSB3aGVuIGN1cnJlbnQgaXMgbmVzdGVk
IgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw1MzApIHNpemUgNzY5eDM2CisgICAgICAg
IFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVu
ZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA3NjogIlNob3VsZCBiZSAxIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoNDAsMTgpIHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDAp
IHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6
ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5
eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTU0OiAiU2hvdWxkIGJlIDIgKGFuZCBib2xk
KSIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDQwLDM2KSBzaXplIDcyOXgw
CisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7
SFJ9IGF0ICgwLDU4Mikgc2l6ZSA3Njl4MiBbYm9yZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNTkyKSBzaXplIDc2OXgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDQ0NXgxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0NTogIjcuIFRlc3QgZm9yIHByb3Blcmx5IGNoYWluaW5n
IGZyb20gdGhlIHByZXZpb3VzIGxpIHdoZW4gYm90aCBhcmUgbmVzdGVkIgorICAgICAgUmVuZGVy
QmxvY2sge09MfSBhdCAoMCw2MjYpIHNpemUgNzY5eDM2CisgICAgICAgIFJlbmRlckJsb2NrIChh
bm9ueW1vdXMpIGF0ICg0MCwwKSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtJ
fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
NDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICgwLDAp
IHNpemUgNzI5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUg
MHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNDh4MTgK
KyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTQ4OiAiU2hvdWxkIGJlIDIg
KGFuZCBpdGFsaWMpIgorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoNDAsMTgp
IHNpemUgNzI5eDAKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge0l9IGF0ICgwLDApIHNpemUgMHgw
CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAg
ICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2Nr
IChhbm9ueW1vdXMpIGF0ICg0MCwxOCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0
SXRlbSB7TEl9IGF0ICgwLDApIHNpemUgNzI5eDE4CisgICAgICAgICAgICBSZW5kZXJMaXN0TWFy
a2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAxNTR4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTU0OiAiU2hvdWxkIGJlIDMgKGFuZCBib2xkKSIKKyAgICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDQwLDM2KSBzaXplIDcyOXgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBh
dCAoMCwwKSBzaXplIDB4MAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7SFJ9IGF0ICgwLDY3OCkgc2l6ZSA3Njl4MiBbYm9y
ZGVyOiAoMXB4IGluc2V0ICMwMDAwMDApXQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsNjg4KSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDM1MngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM1MjogIjgu
IFRlc3QgZm9yIG5vdCBpbmhlcml0aW5nIGltcHJvcGVybHkgZnJvbSBhbiBhbm90aGVyIGxpc3Qi
CisgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgwLDcyMikgc2l6ZSA3Njl4MzYKKyAgICAgICAg
UmVuZGVyQmxvY2sge09MfSBhdCAoNDAsMCkgc2l6ZSA3Mjl4MTgKKyAgICAgICAgICBSZW5kZXJM
aXN0SXRlbSB7TEl9IGF0ICg0MCwwKSBzaXplIDY4OXgxOAorICAgICAgICAgICAgUmVuZGVyTGlz
dE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNzY6ICJTaG91bGQgYmUgMiIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAs
MTgpIHNpemUgNzI5eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXpl
IDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogIlNob3VsZCBiZSA1IgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2xpc3RzL29sc3RhcnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBA
QAorMS4gQmFzaWMgaW5oZXJpdGFuY2U6Cis8b2wgc3RhcnQ9IjMiPgorCTxsaT5TaG91bGQgYmUg
MzwvbGk+CisJPGxpPlNob3VsZCBiZSA0PC9saT4KKzwvb2w+Cis8aHI+CisKKzIuIFRlc3QgdGhh
dCB0aGUgaW5uZXIgc3RhcnQgdmFsdWUgZ2V0cyBpbmhlcml0ZWQ6Cis8b2wgc3RhcnQ9IjUiPgor
CTxsaT5TaG91bGQgYmUgNTwvbGk+CisJPG9sIHN0YXJ0PSIzIj4KKwkJPGxpPlNob3VsZCBiZSAz
PC9saT4KKwk8L29sPgorPC9vbD4KKzxocj4KKworMy4gVGVzdCB0aGF0IGV4dHJhIHRhZ3MgYmVm
b3JlIHRoZSBsaSBkb24ndCBibG9jayB0aGUgaW5oZXJpdGFuY2UKKzxvbCBzdGFydD0iMyI+CisJ
PHA+VGV4dDwvcD4KKwk8bGk+U2hvdWxkIGJlIDM8L2xpPgorPC9vbD4KKzxocj4KKworNC4gVGVz
dCBmb3IgaW5oZXJpdGFuY2UgdGhyb3VnaCBtYW55IGxldmVscworPG9sIHN0YXJ0PSIzIj4KKwk8
Yj48bGk+U2hvdWxkIGJlIDMgKGFuZCBib2xkKTwvbGk+PC9iPgorPC9vbD4KKzxocj4KKworNS4g
VGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJldmlvdXMgbGkgd2hlbiBpdCBp
cyBuZXN0ZWQKKzxvbCBzdGFydD0iMyI+CisJPGI+PGxpPlNob3VsZCBiZSAzIChhbmQgYm9sZCk8
L2xpPjwvYj4KKwk8bGk+U2hvdWxkIGJlIDQ8L2xpPgorCTxsaT5TaG91bGQgYmUgNTwvbGk+Cis8
L29sPgorPGhyPgorCis2LiBUZXN0IGZvciBwcm9wZXJseSBjaGFpbmluZyBmcm9tIHRoZSBwcmV2
aW91cyBsaSB3aGVuIGN1cnJlbnQgaXMgbmVzdGVkCis8b2w+CisJPGxpPlNob3VsZCBiZSAxPC9s
aT4KKwk8Yj48bGk+U2hvdWxkIGJlIDIgKGFuZCBib2xkKTwvbGk+PC9iPgorPC9vbD4KKzxocj4K
KworNy4gVGVzdCBmb3IgcHJvcGVybHkgY2hhaW5pbmcgZnJvbSB0aGUgcHJldmlvdXMgbGkgd2hl
biBib3RoIGFyZSBuZXN0ZWQKKzxvbCBzdGFydD0iMiI+CisJPGk+PGxpPlNob3VsZCBiZSAyIChh
bmQgaXRhbGljKTwvbGk+PC9pPgorCTxiPjxsaT5TaG91bGQgYmUgMyAoYW5kIGJvbGQpPC9saT48
L2I+Cis8L29sPgorPGhyPgorCis4LiBUZXN0IGZvciBub3QgaW5oZXJpdGluZyBpbXByb3Blcmx5
IGZyb20gYW4gYW5vdGhlciBsaXN0Cis8b2wgc3RhcnQ9IjUiPgorCTxvbCBzdGFydD0iMiI+CisJ
CTxsaT5TaG91bGQgYmUgMjwvbGk+CisJPC9vbD4KKwk8bGk+U2hvdWxkIGJlIDU8L2xpPgorPC9v
bD4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xpc3RzL29sLWRpc3BsYXktdHlwZXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbGlzdHMvb2wtZGlzcGxh
eS10eXBlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xp
c3RzL29sLWRpc3BsYXktdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc0NXgzNgor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc0NTogIlRlc3Qgb2YgdmFyaW91cyBD
U1MgZGlzcGxheSB0eXBlcyBmb3IgbGlzdCBlbGVtZW50cy4gQWxsIHZpc2libGUgZWxlbWVudHMg
dGhhdCBoYXZlIGEgZGlzcGxheS10eXBlIG9mIGxpc3QtaXRlbSBhcmUgZ2l2ZW4gYSIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMzExOiAibnVtYmVyLiBUaGlzIGlzIGdlbmVy
YWxseSBnb2luZyB0byBiZSBMSSBlbGVtZW50LiIKKyAgICAgIFJlbmRlckJsb2NrIHtPTH0gYXQg
KDAsNTIpIHNpemUgNzg0eDMwNgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCww
KSBzaXplIDc0NHgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAw
eDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgMyIKKyAgICAg
ICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMTgpIHNpemUgNzQ0eDE4CisgICAgICAgICAg
UmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3NjogIlNob3VsZCBiZSA0IgorICAgICAgICBSZW5kZXJCbG9jayB7TEl9IGF0ICg0
MCwzNikgc2l6ZSA3NDR4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDE2NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY2OiAiU2hv
dWxkIG5vdCBoYXZlIGEgbnVtYmVyIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0
MCw1NCkgc2l6ZSA3NDR4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNp
emUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzZ4MTgK
KyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAiU2hvdWxkIGJlIDUiCisg
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICg0MCw3Mikgc2l6ZSA3NDR4MTgKKyAg
ICAgICAgICBSZW5kZXJJbmxpbmUge0xJfSBhdCAoMCwwKSBzaXplIDE2NngxOAorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNjZ4MTgKKyAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY2OiAiU2hvdWxkIG5vdCBoYXZlIGEgbnVtYmVyIgor
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJl
bmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDkwKSBzaXplIDc0NHgxOAorICAgICAgICAgIFJlbmRl
ckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNzY6ICJTaG91bGQgYmUgNiIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDQwLDEw
OCkgc2l6ZSA3NDR4MTgKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDE2NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY2OiAiU2hvdWxk
IG5vdCBoYXZlIGEgbnVtYmVyIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7RElWfSBhdCAoNDAs
MTI2KSBzaXplIDc0NHgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6
ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgNyIKKyAg
ICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMTQ0KSBzaXplIDc0NHgxOAorICAgICAg
ICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNzY6ICJTaG91bGQgYmUgOCIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJ
fSBhdCAoNDAsMTYyKSBzaXplIDc0NHgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQg
KDAsMCkgc2l6ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAxNjZ4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2NjogIlNob3Vs
ZCBub3QgaGF2ZSBhIG51bWJlciIKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAs
MTgwKSBzaXplIDc0NHgxOAorICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKDAsMCkgc2l6
ZSAweDE0CisgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAor
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggODQ6ICJTaG91bGQgYmUgMTAiCisg
ICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDE5OCkgc2l6ZSA3NDR4MTgKKyAgICAg
ICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTE5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMTk6ICJTaG91bGQgaGF2ZSBhIGRpc2MiCisgICAgICAgIFJlbmRlckxp
c3RJdGVtIHtMSX0gYXQgKDQwLDIxNikgc2l6ZSA3NDR4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0
TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDApIHNpemUgODR4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg0
OiAiU2hvdWxkIGJlIDEyIgorICAgICAgICBSZW5kZXJMaXN0SXRlbSB7TEl9IGF0ICg0MCwyMzQp
IHNpemUgNzQ0eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoMCwwKSBzaXplIDB4
MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEzNXgxOAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTM1OiAiU2hvdWxkIGhhdmUgYSBzcXVh
cmUiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQgKDQwLDI1Mikgc2l6ZSA3NDR4MTgK
KyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDApIHNpemUgMHgxNAorICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgODR4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDg0OiAiU2hvdWxkIGJlIDE0IgorICAgICAgICBSZW5kZXJMaXN0
SXRlbSB7TEl9IGF0ICg0MCwyNzApIHNpemUgNzQ0eDE4CisgICAgICAgICAgUmVuZGVyTGlzdE1h
cmtlciBhdCAoMCwwKSBzaXplIDB4MTQKKyAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDEyOHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI4
OiAiU2hvdWxkIGhhdmUgYSBjaXJjbGUiCisgICAgICAgIFJlbmRlckxpc3RJdGVtIHtMSX0gYXQg
KDQwLDI4OCkgc2l6ZSA3NDR4MTgKKyAgICAgICAgICBSZW5kZXJMaXN0TWFya2VyIGF0ICgwLDAp
IHNpemUgMHgxNAorICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgODR4
MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg0OiAiU2hvdWxkIGJlIDE2
IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9saXN0cy9vbHN0YXJ0LWV4cGVjdGVkLnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBvbHN0YXJ0LWV4cGVjdGVkLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAg
KyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NDQpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA2LTAyLTAzICBB
bmRyZXcgV2VsbGluZ3RvbiAgPHByb3RvbkB3aXJldGFwcGVkLm5ldD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZpeCBmb3IgYnVnIDU3
NzY6IEdlbmVyYXRlZCBudW1iZXJzIG9mIG9yZGVyZWQgbGlzdHMgKE9MKSBhcmUgbm90CisgICAg
ICAgIGNhbGN1bGF0ZWQgcmlnaHQKKyAgICAgICAgCisgICAgICAgIFVzZXMgdGhlIERPTSB0cmVl
IHRvIGNhbGN1bGF0ZSBwcmV2aW91cyBub2RlcyBhbmQgbmVzdCBjb3JyZWN0bHkKKworICAgICAg
ICAqIGtodG1sL2h0bWwvaHRtbF9saXN0aW1wbC5jcHA6CisgICAgICAgIChET006OkhUTUxMSUVs
ZW1lbnRJbXBsOjphdHRhY2gpOiByZW1vdmUgY2FsY3VsYXRpb24gb2Ygc3RhcnQgbm9kZSB2YWx1
ZQorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfbGlzdC5jcHA6CisgICAgICAgIChSZW5kZXJM
aXN0SXRlbTo6c2V0U3R5bGUpOiBzZXR1cCBhbiBtX21hcmtlciBpbiB0aGUgcmlnaHQgY2lyY3Vt
c3RhbmNlcworICAgICAgICAoZW5jbG9zaW5nTGlzdCk6IGdldHMgdGhlIGxpc3QgZW5jbG9zaW5n
IHRoZSBnaXZlbiBub2RlCisgICAgICAgIChwcmV2aW91c0xpc3RJdGVtRWxlbWVudCk6IGdldHMg
dGhlIHByZXZpb3MgZWxlbWVudCBpbiB0aGUgbGlzdAorICAgICAgICAoUmVuZGVyTGlzdEl0ZW06
OmNhbGNMaXN0VmFsdWUpOiBjYWxjdWxhdGUgdGhlIGxpc3QgY29ycmVjdGx5CisKIDIwMDYtMDIt
MDMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgYSBuZXcg
Y2xhc3MgY2FsbGVkIEltYWdlRGVjb2RlciB0aGF0IHdyYXBzIGEgQ0dJbWFnZVNvdXJjZS4KSW5k
ZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2xpc3RpbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2todG1sL2h0bWwvaHRtbF9saXN0aW1wbC5jcHAJKHJldmlzaW9uIDEyNTQ0KQorKysg
V2ViQ29yZS9raHRtbC9odG1sL2h0bWxfbGlzdGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTMsMTIgKzIxMyw2IEBAIHZvaWQgSFRNTExJRWxlbWVudEltcGw6OmF0dGFjaCgpCiAgICAgICAg
IGlmICghbGlzdE5vZGUpCiAgICAgICAgICAgICByZW5kZXItPnNldE5vdEluTGlzdCh0cnVlKTsK
IAotICAgICAgICAvLyBJZiB3ZSBhcmUgZmlyc3QsIGFuZCB0aGUgT0wgaGFzIGEgc3RhcnQgYXR0
ciwgc2V0IHRoZSB2YWx1ZS4KLSAgICAgICAgaWYgKGxpc3ROb2RlICYmIGxpc3ROb2RlLT5oYXNU
YWdOYW1lKG9sVGFnKSAmJiAhcmVuZGVyZXIoKS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAg
ICAgICAgIEhUTUxPTGlzdEVsZW1lbnRJbXBsICpvbCA9IHN0YXRpY19jYXN0PEhUTUxPTGlzdEVs
ZW1lbnRJbXBsICo+KGxpc3ROb2RlKTsKLSAgICAgICAgICAgIHJlbmRlci0+c2V0VmFsdWUob2wt
PnN0YXJ0KCkpOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gSWYgd2UgaGFkIGEgdmFsdWUgYXR0
ci4KICAgICAgICAgaWYgKGlzVmFsdWVkKQogICAgICAgICAgICAgcmVuZGVyLT5zZXRWYWx1ZShy
ZXF1ZXN0ZWRWYWx1ZSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGlzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwCShyZXZpc2lv
biAxMjU0NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kcmV3IFdlbGxpbmd0b24gKHByb3RvbkB3aXJldGFw
cGVkLm5ldCkKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAKICNpbmNsdWRlICJodG1sbmFtZXMuaCIKKyNpbmNsdWRlICJodG1s
X2xpc3RpbXBsLmgiCiAKICNpbmNsdWRlIDxxcGFpbnRlci5oPgogI2luY2x1ZGUgIlBlbi5oIgpA
QCAtMTQyLDggKzE0NCw3IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OnNldFN0eWxlKFJlbmRlclN0
eWwKIHsKICAgICBSZW5kZXJCbG9jazo6c2V0U3R5bGUoX3N0eWxlKTsKIAotICAgIGlmIChzdHls
ZSgpLT5saXN0U3R5bGVUeXBlKCkgIT0gTE5PTkUgfHwKLSAgICAgICAgKHN0eWxlKCktPmxpc3RT
dHlsZUltYWdlKCkgJiYgIXN0eWxlKCktPmxpc3RTdHlsZUltYWdlKCktPmlzRXJyb3JJbWFnZSgp
KSkgeworICAgIGlmICghKHN0eWxlKCktPmxpc3RTdHlsZUltYWdlKCkgJiYgc3R5bGUoKS0+bGlz
dFN0eWxlSW1hZ2UoKS0+aXNFcnJvckltYWdlKCkpKSB7CiAgICAgICAgIFJlbmRlclN0eWxlICpu
ZXdTdHlsZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyU3R5bGUoKTsKICAgICAgICAgbmV3
U3R5bGUtPnJlZigpOwogICAgICAgICAvLyBUaGUgbWFya2VyIGFsd2F5cyBpbmhlcml0cyBmcm9t
IHRoZSBsaXN0IGl0ZW0sIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaXQgbWlnaHQgZW5kCkBAIC0xNzUs
NiArMTc2LDM0IEBAIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmRlc3Ryb3koKQogICAgIFJlbmRlckJs
b2NrOjpkZXN0cm95KCk7CiB9CiAKK3N0YXRpYyBOb2RlSW1wbCogZW5jbG9zaW5nTGlzdChOb2Rl
SW1wbCogbm9kZSkKK3sKKyAgICBmb3IgKE5vZGVJbXBsKiBuID0gbm9kZTsgbjsgbiA9IG4tPnBh
cmVudE5vZGUoKSkgeworICAgICAgICBpZiAobi0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbi0+aGFz
VGFnTmFtZShvbFRhZykpCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBIVE1MTElFbGVtZW50SW1wbCogcHJldmlvdXNMaXN0SXRlbUVsZW1l
bnQoTm9kZUltcGwqIG5vZGUsIE5vZGVJbXBsKiB0aGVFbmNsb3NpbmdMaXN0KQoreworICAgIE5v
ZGVJbXBsKiBsaXN0ID0gdGhlRW5jbG9zaW5nTGlzdCA/IHRoZUVuY2xvc2luZ0xpc3QgOiBlbmNs
b3NpbmdMaXN0KG5vZGUpOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
Zm9yIChOb2RlSW1wbCogbiA9IG5vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7IG4gIT0gbGlz
dDsgbiA9IG4tPnRyYXZlcnNlUHJldmlvdXNOb2RlKCkpIHsKKyAgICAgICAgaWYgKG4tPnJlbmRl
cmVyKCkgJiYgbi0+cmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKSB7CisgICAgICAgICAgICBOb2Rl
SW1wbCogb3RoZXJMaXN0ID0gc3RhdGljX2Nhc3Q8SFRNTExJRWxlbWVudEltcGwqPihlbmNsb3Np
bmdMaXN0KG4pKTsKKyAgICAgICAgICAgIC8vIFRoaXMgaXRlbSBpcyBwYXJ0IG9mIG91ciBjdXJy
ZW50IGxpc3QsIHNvIGl0J3Mgd2hhdCB3ZSdyZSBsb29raW5nIGZvci4KKyAgICAgICAgICAgIGlm
IChsaXN0ID09IG90aGVyTGlzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTExJRWxlbWVudEltcGwqPihuKTsKKyAgICAgICAgICAgIC8vIFdlIGZvdW5kIG91cnNlbGYg
aW5zaWRlIGFub3RoZXIgbGlzdDsgbGV0cyBza2lwIHRoZSByZXN0IG9mIGl0LgorICAgICAgICAg
ICAgaWYgKG90aGVyTGlzdCkKKyAgICAgICAgICAgICAgICBuID0gb3RoZXJMaXN0OworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB2b2lkIFJlbmRlckxpc3RJdGVtOjpjYWxj
TGlzdFZhbHVlKCkKIHsKICAgICAvLyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBtYXJrZXIgc28uLgpA
QCAtMTgyLDE3ICsyMTEsMjQgQEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6Y2FsY0xpc3RWYWx1ZSgp
CiAKICAgICBpZiAocHJlZGVmVmFsICE9IC0xKQogICAgICAgICBtX21hcmtlci0+bV92YWx1ZSA9
IHByZWRlZlZhbDsKLSAgICBlbHNlIGlmICghcHJldmlvdXNTaWJsaW5nKCkpCi0gICAgICAgIG1f
bWFya2VyLT5tX3ZhbHVlID0gMTsKICAgICBlbHNlIHsKLQlSZW5kZXJPYmplY3QgKm8gPSBwcmV2
aW91c1NpYmxpbmcoKTsKLQl3aGlsZSAobyAmJiAoIW8tPmlzTGlzdEl0ZW0oKSB8fCBvLT5zdHls
ZSgpLT5saXN0U3R5bGVUeXBlKCkgPT0gTE5PTkUpKQotCSAgICBvID0gby0+cHJldmlvdXNTaWJs
aW5nKCk7Ci0gICAgICAgIGlmIChvICYmIG8tPmlzTGlzdEl0ZW0oKSAmJiBvLT5zdHlsZSgpLT5s
aXN0U3R5bGVUeXBlKCkgIT0gTE5PTkUpIHsKLSAgICAgICAgICAgIFJlbmRlckxpc3RJdGVtICpp
dGVtID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGlzdEl0ZW0gKj4obyk7Ci0gICAgICAgICAgICBtX21h
cmtlci0+bV92YWx1ZSA9IGl0ZW0tPnZhbHVlKCkgKyAxOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fbWFya2VyLT5tX3ZhbHVlID0gMTsKKyAgICAgICAgTm9kZUltcGwqIG4gPSAwOwor
ICAgICAgICBOb2RlSW1wbCogbGlzdCA9IGVuY2xvc2luZ0xpc3Qobm9kZSgpKTsKKworICAgICAg
ICAvLyBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgMQorICAgICAgICBtX21hcmtlci0+bV92YWx1ZSA9
IDE7CisgICAgICAgIAorICAgICAgICBpZiAoaXNMaXN0SXRlbSgpKQorICAgICAgICAgICAgbiA9
IHN0YXRpY19jYXN0PEhUTUxMSUVsZW1lbnRJbXBsKj4ocHJldmlvdXNMaXN0SXRlbUVsZW1lbnQo
bm9kZSgpLCBsaXN0KSk7CisgICAgICAgIGlmIChuKSB7CisgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QgKm8gPSBuLT5yZW5kZXJlcigpOworICAgICAgICAgICAgaWYgKG8gJiYgby0+aXNMaXN0SXRl
bSgpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGlzdEl0ZW0qIGl0ZW0gPSBzdGF0aWNfY2Fz
dDxSZW5kZXJMaXN0SXRlbSo+KG8pOworICAgICAgICAgICAgICAgIG1fbWFya2VyLT5tX3ZhbHVl
ID0gaXRlbS0+dmFsdWUoKSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
bGlzdCAmJiBsaXN0LT5oYXNUYWdOYW1lKG9sVGFnKSkgeworICAgICAgICAgICAgICAgIG1fbWFy
a2VyLT5tX3ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTE9MaXN0RWxlbWVudEltcGwqPihsaXN0KS0+
c3RhcnQoKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6244</attachid>
            <date>2006-02-04 05:41:48 -0800</date>
            <delta_ts>2006-02-04 16:11:34 -0800</delta_ts>
            <desc>Followup patch</desc>
            <filename>followup-patch.txt</filename>
            <type>text/plain</type>
            <size>5018</size>
            <attacher name="Andrew Wellington">andrew</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGlzdC5jcHAJKHJldmlzaW9uIDEyNTU0KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyAr
MTMxLDcgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVuZGVyTGlzdEl0ZW06OlJlbmRlckxp
c3RJdGVtKERPTTo6Tm9kZUltcGwqIG5vZGUpCi0gICAgOiBSZW5kZXJCbG9jayhub2RlKSwgX25v
dEluTGlzdChmYWxzZSkKKyAgICA6IFJlbmRlckJsb2NrKG5vZGUpLCBfbm90SW5MaXN0KGZhbHNl
KSwgbV92YWx1ZSgtMSkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCiAg
ICAgc2V0SW5saW5lKGZhbHNlKTsgICAvLyBvdXIgb2JqZWN0IGlzIG5vdCBJbmxpbmUKQEAgLTE0
NCw3ICsxNDQsOCBAQAogewogICAgIFJlbmRlckJsb2NrOjpzZXRTdHlsZShfc3R5bGUpOwogCi0g
ICAgaWYgKCEoc3R5bGUoKS0+bGlzdFN0eWxlSW1hZ2UoKSAmJiBzdHlsZSgpLT5saXN0U3R5bGVJ
bWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkpIHsKKyAgICBpZiAoc3R5bGUoKS0+bGlzdFN0eWxlVHlw
ZSgpICE9IExOT05FIHx8CisgICAgICAgIChzdHlsZSgpLT5saXN0U3R5bGVJbWFnZSgpICYmICFz
dHlsZSgpLT5saXN0U3R5bGVJbWFnZSgpLT5pc0Vycm9ySW1hZ2UoKSkpIHsKICAgICAgICAgUmVu
ZGVyU3R5bGUgKm5ld1N0eWxlID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJTdHlsZSgpOwog
ICAgICAgICBuZXdTdHlsZS0+cmVmKCk7CiAgICAgICAgIC8vIFRoZSBtYXJrZXIgYWx3YXlzIGlu
aGVyaXRzIGZyb20gdGhlIGxpc3QgaXRlbSwgcmVnYXJkbGVzcyBvZiB3aGVyZSBpdCBtaWdodCBl
bmQKQEAgLTIwNSwyNiArMjA2LDIzIEBACiAKIHZvaWQgUmVuZGVyTGlzdEl0ZW06OmNhbGNMaXN0
VmFsdWUoKQogewotICAgIC8vIENhbGxlZCBieSB0aGUgbWFya2VyLCBzbyB3ZSBrbm93IHRoZXJl
IGlzIGEgbWFya2VyLgotICAgIEFTU0VSVChtX21hcmtlcik7Ci0KICAgICAvLyBPbmx5IGNhbGxl
ZCB3aGVuIHRoZSB2YWx1ZSBpcyBrbm93bi4KLSAgICBBU1NFUlQobV9tYXJrZXItPm1fdmFsdWUg
PT0gLTEpOworICAgIEFTU0VSVChtX3ZhbHVlID09IC0xKTsKIAotICAgIGludCB2YWx1ZTsKICAg
ICBpZiAocHJlZGVmVmFsICE9IC0xKQotICAgICAgICB2YWx1ZSA9IHByZWRlZlZhbDsKKyAgICAg
ICAgbV92YWx1ZSA9IHByZWRlZlZhbDsKICAgICBlbHNlIHsKICAgICAgICAgTm9kZUltcGwqIGxp
c3QgPSBlbmNsb3NpbmdMaXN0KG5vZGUoKSk7CiAgICAgICAgIFJlbmRlckxpc3RJdGVtKiBpdGVt
ID0gcHJldmlvdXNMaXN0SXRlbShsaXN0LCB0aGlzKTsKLSAgICAgICAgaWYgKGl0ZW0pCi0gICAg
ICAgICAgICB2YWx1ZSA9IGl0ZW0tPnZhbHVlKCkgKyAxOwotICAgICAgICBlbHNlIGlmIChsaXN0
ICYmIGxpc3QtPmhhc1RhZ05hbWUob2xUYWcpKQotICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNf
Y2FzdDxIVE1MT0xpc3RFbGVtZW50SW1wbCo+KGxpc3QpLT5zdGFydCgpOworICAgICAgICBpZiAo
aXRlbSkgeworICAgICAgICAgICAgaWYgKGl0ZW0tPnZhbHVlKCkgPT0gLTEpCisgICAgICAgICAg
ICAgICAgaXRlbS0+Y2FsY0xpc3RWYWx1ZSgpOworICAgICAgICAgICAgbV92YWx1ZSA9IGl0ZW0t
PnZhbHVlKCkgKyAxOworICAgICAgICB9IGVsc2UgaWYgKGxpc3QgJiYgbGlzdC0+aGFzVGFnTmFt
ZShvbFRhZykpCisgICAgICAgICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTE9MaXN0RWxl
bWVudEltcGwqPihsaXN0KS0+c3RhcnQoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdmFs
dWUgPSAxOworICAgICAgICAgICAgbV92YWx1ZSA9IDE7CiAgICAgfQotICAgIG1fbWFya2VyLT5t
X3ZhbHVlID0gdmFsdWU7CiB9CiAKIGJvb2wgUmVuZGVyTGlzdEl0ZW06OmlzRW1wdHkoKSBjb25z
dApAQCAtMjY4LDcgKzI2Niw3IEBACiAgICAgaWYgKCFtX21hcmtlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9tYXJrZXItPm1fdmFsdWUgPSAtMTsKKyAgICBtX3ZhbHVlID0gLTE7CiAgICAg
bV9tYXJrZXItPnNldE5lZWRzTGF5b3V0QW5kTWluTWF4UmVjYWxjKCk7CiB9CiAKQEAgLTMxNCw3
ICszMTIsNyBAQAogewogICAgIEtIVE1MQXNzZXJ0KCBuZWVkc0xheW91dCgpICk7CiAgICAgS0hU
TUxBc3NlcnQoIG1pbk1heEtub3duKCkgKTsKLQorICAgIAogICAgIHVwZGF0ZU1hcmtlckxvY2F0
aW9uKCk7ICAgIAogICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKIH0KQEAgLTM1OCw3ICszNTYs
NyBAQAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogUmVuZGVyTGlzdE1hcmtlcjo6UmVuZGVyTGlzdE1hcmtlcihEb2N1bWVu
dEltcGwqIGRvY3VtZW50KQotICAgIDogUmVuZGVyQm94KGRvY3VtZW50KSwgbV9saXN0SW1hZ2Uo
MCksIG1fdmFsdWUoLTEpCisgICAgOiBSZW5kZXJCb3goZG9jdW1lbnQpLCBtX2xpc3RJbWFnZSgw
KQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKICAgICBzZXRJbmxpbmUo
dHJ1ZSk7ICAgLy8gb3VyIG9iamVjdCBpcyBJbmxpbmUKQEAgLTU3Myw3ICs1NzEsNyBAQAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fdmFsdWUgPCAwKSAvLyBub3QgeWV0IGNh
bGN1bGF0ZWQKKyAgICBpZiAobV9saXN0SXRlbS0+bV92YWx1ZSA8IDApIC8vIG5vdCB5ZXQgY2Fs
Y3VsYXRlZAogICAgICAgICBtX2xpc3RJdGVtLT5jYWxjTGlzdFZhbHVlKCk7CiAKICAgICBjb25z
dCBRRm9udE1ldHJpY3MgJmZtID0gc3R5bGUoKS0+Zm9udE1ldHJpY3MoKTsKQEAgLTU5NywxNyAr
NTk1LDE3IEBACiAgICAgY2FzZSBERUNJTUFMX0xFQURJTkdfWkVSTzoKICAgICAgICAgLy8gIyMj
IHVuc3VwcG9ydGVkLCB3ZSB1c2UgZGVjaW1hbCBpbnN0ZWFkCiAgICAgY2FzZSBMREVDSU1BTDoK
LSAgICAgICAgbV9pdGVtLnNwcmludGYoICIlZCIsIG1fdmFsdWUgKTsKKyAgICAgICAgbV9pdGVt
LnNwcmludGYoICIlZCIsIG1fbGlzdEl0ZW0tPm1fdmFsdWUgKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBMT1dFUl9ST01BTjoKLSAgICAgICAgbV9pdGVtID0gdG9Sb21hbiggbV92YWx1ZSwg
ZmFsc2UgKTsKKyAgICAgICAgbV9pdGVtID0gdG9Sb21hbiggbV9saXN0SXRlbS0+bV92YWx1ZSwg
ZmFsc2UgKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVUFBFUl9ST01BTjoKLSAgICAgICAg
bV9pdGVtID0gdG9Sb21hbiggbV92YWx1ZSwgdHJ1ZSApOworICAgICAgICBtX2l0ZW0gPSB0b1Jv
bWFuKCBtX2xpc3RJdGVtLT5tX3ZhbHVlLCB0cnVlICk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTE9XRVJfR1JFRUs6CiAgICAgIHsKLSAgICAJaW50IG51bWJlciA9IG1fdmFsdWUgLSAxOwor
ICAgIAlpbnQgbnVtYmVyID0gbV9saXN0SXRlbS0+bV92YWx1ZSAtIDE7CiAgICAgICAJaW50IGwg
PSAobnVtYmVyICUgMjQpOwogCiAJaWYgKGw+MTYpIHtsKys7fSAvLyBTa2lwIEdSRUVLIFNNQUxM
IExFVFRFUiBGSU5BTCBTSUdNQQpAQCAtNjE5LDE1ICs2MTcsMTUgQEAKIAlicmVhazsKICAgICAg
fQogICAgIGNhc2UgSEVCUkVXOgotICAgICAJbV9pdGVtID0gdG9IZWJyZXcoIG1fdmFsdWUgKTsK
KyAgICAgCW1faXRlbSA9IHRvSGVicmV3KCBtX2xpc3RJdGVtLT5tX3ZhbHVlICk7CiAJYnJlYWs7
CiAgICAgY2FzZSBMT1dFUl9BTFBIQToKICAgICBjYXNlIExPV0VSX0xBVElOOgotICAgICAgICBt
X2l0ZW0gPSB0b0xldHRlciggbV92YWx1ZSwgJ2EnICk7CisgICAgICAgIG1faXRlbSA9IHRvTGV0
dGVyKCBtX2xpc3RJdGVtLT5tX3ZhbHVlLCAnYScgKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBVUFBFUl9BTFBIQToKICAgICBjYXNlIFVQUEVSX0xBVElOOgotICAgICAgICBtX2l0ZW0gPSB0
b0xldHRlciggbV92YWx1ZSwgJ0EnICk7CisgICAgICAgIG1faXRlbSA9IHRvTGV0dGVyKCBtX2xp
c3RJdGVtLT5tX3ZhbHVlLCAnQScgKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMTk9ORToK
ICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfbGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9saXN0LmgJKHJldmlzaW9uIDEy
NTU0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2xpc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNyArNzcsNiBAQAogCiAgICAgUVN0cmluZyBtX2l0ZW07CiAgICAgQ2FjaGVkSW1hZ2Ug
Km1fbGlzdEltYWdlOwotICAgIGludCBtX3ZhbHVlOwogICAgIFJlbmRlckxpc3RJdGVtKiBtX2xp
c3RJdGVtOwogfTsKIApAQCAtMTAyLDcgKzEwMSw3IEBACiAKICAgICB2aXJ0dWFsIGJvb2wgaXNM
aXN0SXRlbSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAKLSAgICBpbnQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX21hcmtlci0+bV92YWx1ZTsgfQorICAgIGludCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2b2lkIHNldFZhbHVlKCBpbnQgdiApIHsgcHJlZGVm
VmFsID0gdjsgfQogICAgIHZvaWQgY2FsY0xpc3RWYWx1ZSgpOwogICAgIApAQCAtMTI2LDYgKzEy
NSwxMCBAQAogICAgIGludCBwcmVkZWZWYWw7CiAgICAgUmVuZGVyTGlzdE1hcmtlciAqbV9tYXJr
ZXI7CiAgICAgYm9vbCBfbm90SW5MaXN0OworCitwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNz
IFJlbmRlckxpc3RNYXJrZXI7CisgICAgaW50IG1fdmFsdWU7CiB9OwogCiB9OyAvL25hbWVzcGFj
ZQo=
</data>
<flag name="review"
          id="1508"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>