<?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>31680</bug_id>
          
          <creation_ts>2009-11-19 13:07:03 -0800</creation_ts>
          <short_desc>WebCore::Document::updateLayoutIgnorePendingStylesheets NULL pointer</short_desc>
          <delta_ts>2010-04-02 01:35:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Vista</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://skypher.com/SkyLined/Repro/WebKit/Bug%2031680%20-%20chrome!WebCore..Document..updateLayoutIgnorePendingStylesheets%20NULL%20pointer/repro.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>37005</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Berend-Jan Wever">skylined</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>morrita</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165070</commentid>
    <comment_count>0</comment_count>
      <attachid>43518</attachid>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-11-19 13:07:03 -0800</bug_when>
    <thetext>Created attachment 43518
Repro

The following HTML triggers a NULL pointer in chrome!WebCore::Document::updateLayoutIgnorePendingStylesheets:

&lt;SCRIPT&gt;
  sel = window.getSelection();
  doc = document.implementation.createDocumentType(&apos;c&apos;);
  sel.setBaseAndExtent(doc);
&lt;/SCRIPT&gt;

Relevant call stack:
WebCore::Document::updateLayoutIgnorePendingStylesheets(void)+0x4
WebCore::VisiblePosition::canonicalPosition(class WebCore::Position * position = 0x0012f184)+0x3a
WebCore::VisiblePosition::init(class WebCore::Position * position = 0x0012f184, WebCore::EAffinity affinity = DOWNSTREAM (1))+0x25
WebCore::VisiblePosition::VisiblePosition(class WebCore::Node * node = 0x05639fc0, int offset = 715827888, WebCore::EAffinity affinity = DOWNSTREAM (1))+0x46
WebCore::DOMSelection::setBaseAndExtent(class WebCore::Node * baseNode = 0x05639fc0, int baseOffset = 715827888, class WebCore::Node * extentNode = 0x00000000, int extentOffset = 429496759, int * ec = 0x0012f204)+0x39
WebCore::DOMSelectionInternal::setBaseAndExtentCallback(class v8::Arguments * args = 0x0112f254)+0x180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165071</commentid>
    <comment_count>1</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-11-19 13:10:28 -0800</bug_when>
    <thetext>Added repro URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165089</commentid>
    <comment_count>2</comment_count>
    <who name="Berend-Jan Wever">skylined</who>
    <bug_when>2009-11-19 14:15:43 -0800</bug_when>
    <thetext>Fix title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205295</commentid>
    <comment_count>3</comment_count>
      <attachid>51877</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-28 22:53:00 -0700</bug_when>
    <thetext>Created attachment 51877
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205296</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-28 22:57:37 -0700</bug_when>
    <thetext>Instead of just guarding null access, this change make DocumentType to 
have non-null m_document.  
This should be more safe to guarantee non-null m_document than just gurding null access to it.
This is because DocumenType is a subclass of Node and certain part of codebase assumes
Node::m_document non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205299</commentid>
    <comment_count>5</comment_count>
      <attachid>51877</attachid>
    <who name="">mitz</who>
    <bug_when>2010-03-28 23:09:53 -0700</bug_when>
    <thetext>Comment on attachment 51877
patch v0

&lt;http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Level-2-Core-DOM-createDocType&gt; specifies that createDocumentType() should return a node with a null ownerDocument. Unless I’m missing something, this change contradicts the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205302</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-28 23:24:57 -0700</bug_when>
    <thetext>Don&apos;t we have a regression test verifying that a newly created DocumentType node has no document? If we don&apos;t, please add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205317</commentid>
    <comment_count>7</comment_count>
      <attachid>51880</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-29 00:46:20 -0700</bug_when>
    <thetext>Created attachment 51880
v1; guarded null document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205318</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-29 00:50:58 -0700</bug_when>
    <thetext>Mitz, thank you for reviewing really quickly!

&gt; specifies that createDocumentType() should return a node with a null
&gt; ownerDocument. Unless I’m missing something, this change contradicts the
&gt; specification.
You are right.
I updated the patch that just guards null document.

@ap
&gt;Don&apos;t we have a regression test verifying that a newly created DocumentType
&gt;node has no document? If we don&apos;t, please add one.
The last patch even broke the regression on fast/. I tested only editing/.
I&apos;m so sorry about that... 
Updated patch certainly passes all test, as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205457</commentid>
    <comment_count>9</comment_count>
      <attachid>51880</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-29 08:40:11 -0700</bug_when>
    <thetext>Comment on attachment 51880
v1; guarded null document

This patch looks correct to me.

But it seems wrong that such a node even ends up in Position. Perhaps it would be a better fix to ensure that this doesn&apos;t happen, I&apos;m not sure. The place to make the check would be setBaseAndExtent(), and other functions in DOMSelection may need checks (and regression tests), too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205476</commentid>
    <comment_count>10</comment_count>
      <attachid>51880</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-29 09:16:27 -0700</bug_when>
    <thetext>Comment on attachment 51880
v1; guarded null document

The fact that DocumentType nodes have no document stinks. The question is where to guard against these types of nodes. To me, canonicalPosition seems a bit low-level a place to be doing the check. I worry there are other leaf functions that lack this. It might be better to guard this incoming at places where nodes are passed in.

r=me, though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205798</commentid>
    <comment_count>11</comment_count>
      <attachid>51994</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-29 19:06:08 -0700</bug_when>
    <thetext>Created attachment 51994
v2; add a guard on setBaseAndExtent()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205800</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-29 19:09:53 -0700</bug_when>
    <thetext>darin, ap, thank you for reviewing!

&gt;But it seems wrong that such a node even ends up in Position. Perhaps it would
&gt;be a better fix to ensure that this doesn&apos;t happen, I&apos;m not sure. The place to
&gt;make the check would be setBaseAndExtent(), and other functions in DOMSelection
&gt;may need checks (and regression tests), too.

&gt;The fact that DocumentType nodes have no document stinks. The question is where
&gt;to guard against these types of nodes. To me, canonicalPosition seems a bit
&gt;low-level a place to be doing the check. I worry there are other leaf functions
&gt;that lack this. It might be better to guard this incoming at places where nodes
are passed in.

I agreed these concern and added a guard on setBaseAndExtent().
A guard on canonicalPosition() has kept as is because 
VibiblePosition is used many places on editing area and 
It looks safe to guard it anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205805</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-29 19:26:54 -0700</bug_when>
    <thetext>As ap mentioned before, ownerless node lead crashes on other DOMSelection APIs.
I filed the bug on https://bugs.webkit.org/show_bug.cgi?id=36800 and 
I&apos;ll submit regressions for that after this patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205879</commentid>
    <comment_count>14</comment_count>
      <attachid>51994</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-29 23:59:22 -0700</bug_when>
    <thetext>Comment on attachment 51994
v2; add a guard on setBaseAndExtent()

+        The fix also adds a null guard for canonicalPosition() just in case.

We don&apos;t usually add null checks just in case, especially in performance sensitive code. These can confuse people looking at the code to think that this can legitimately happen.

You could add an ASSERT - it would be useless for catching errors, because we crash soon enough anyway, but it would serve as documentation that nodes are supposed to have a non-null document here.

+    // Because we don&apos;t know how to &quot;select&quot; ownerless nodes, we take them as null.

I was going to suggest raising an exception instead (probably INVALID_ACCESS_ERR). I&apos;m not sure if that&apos;s a good idea. But it made me think about nodes from different documents. Is there a check somewhere that we don&apos;t set the selection base and extent to nodes from another document?

+It is OK not to crash.

A better way to say this would be &quot;PASSED if didn&apos;t crash&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205932</commentid>
    <comment_count>15</comment_count>
      <attachid>52021</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-30 04:12:36 -0700</bug_when>
    <thetext>Created attachment 52021
v3; used asssertion, added null checks more; enhanced test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205936</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-30 04:20:26 -0700</bug_when>
    <thetext>ap, thank you for reviewing again! I updated the patch.

&gt; We don&apos;t usually add null checks just in case, especially in performance
&gt; sensitive code. These can confuse people looking at the code to think that this
&gt; can legitimately happen.
&gt; 
&gt; You could add an ASSERT - it would be useless for catching errors, because we
&gt; crash soon enough anyway, but it would serve as documentation that nodes are
&gt; supposed to have a non-null document here.
Agreed. I replaced null check with ASSERT()

&gt; 
&gt; I was going to suggest raising an exception instead (probably
&gt; INVALID_ACCESS_ERR). I&apos;m not sure if that&apos;s a good idea.
Fixed.

&gt; But it made me think
&gt; about nodes from different documents. Is there a check somewhere that we don&apos;t
&gt; set the selection base and extent to nodes from another document?
For setBaseAndExtent(), there are 2 patterns of foreign document.
And both somewhat work.

Pattern 1: owner document of selection and of argument node differ
document of argument node is used. so selection of argument node&apos;s document change.

Pattern 2: owner document of baseNode  and of extentNode differ:
extentNode is replaced by baseNode.

&gt; +It is OK not to crash.
&gt; 
&gt; A better way to say this would be &quot;PASSED if didn&apos;t crash&quot;.
Fixed.

This fix also cares Bug 36800 because both has same root cause and 
I think it is better to fix them at single commit. for change cleanness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206096</commentid>
    <comment_count>17</comment_count>
      <attachid>52021</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-30 12:04:44 -0700</bug_when>
    <thetext>Comment on attachment 52021
v3; used asssertion, added null checks more; enhanced test

Alexey pointed out what we should really be doing. This should not just be about null checking.

&gt; +    if (node &amp;&amp; !node-&gt;document()) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

Instead of checking for null we should check that the node is in the document of m_frame. It&apos;s not OK to set this to a node in another document.

&gt; +    if ((baseNode &amp;&amp; !baseNode-&gt;document()) 
&gt; +        || (extentNode &amp;&amp; !extentNode-&gt;document())) {
&gt; +        // We don&apos;t know how to &quot;select&quot; ownerless nodes.
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

Same comment.

&gt; +    if (node &amp;&amp; !node-&gt;document()) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

Same comment.

&gt; +    if (!node-&gt;document()) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

Ditto.

&gt; -    if (!n || selection-&gt;isNone())
&gt; +    if (!n || !n-&gt;document() || selection-&gt;isNone())
&gt;          return false;

Again.

&gt; +    if (!n-&gt;document()) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }

Again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206117</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-30 12:32:06 -0700</bug_when>
    <thetext>A style nit: there is no need to split short conditions like this into two lines.

&gt; +    if ((baseNode &amp;&amp; !baseNode-&gt;document()) 
&gt; +        || (extentNode &amp;&amp; !extentNode-&gt;document())) {

I&apos;m very glad that you found and fixed many more problematic cases, besides the one originally reported here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206359</commentid>
    <comment_count>19</comment_count>
      <attachid>52127</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-30 22:15:31 -0700</bug_when>
    <thetext>Created attachment 52127
v4; Added redirects for some methods, added tests for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206363</commentid>
    <comment_count>20</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-30 22:29:02 -0700</bug_when>
    <thetext>Darin, ap, thank you for reviewing and for your suggestion!
I updated the patch.

&gt; (From update of attachment 52021 [details])
&gt; Alexey pointed out what we should really be doing. This should not just be
&gt; about null checking.
&gt; (snip)
&gt; Instead of checking for null we should check that the node is in the document
&gt; of m_frame. It&apos;s not OK to set this to a node in another document.
Requiring m_frame-&gt;document() == node-&gt;document()  is too strict and
Doing so will break following tests: 

- editing/selection/4960137.html
- editing/selection/drag-in-iframe.html

These tests expect DOMSelection::setBaseAndExtent() to redirect operations to owner 
document of the argument node, instead of the document of the DOMSelection. 
Although these redirection was done inside SelectionController::setSelection(), 
This change do it inside DOMSelection to clarify intension.
This change also redirect other DOMSelection API with Node as an argument for consistency.
(And added DOMSelection::findControllerFor() to choose the destination of  the redirection.)

I hope I would remove code for implicit redirection from SelectionController and 
allow SelectionController to assume its operation closed inside the single document.
But SelectionController is called from many place (especially editing) and 
such cleanup looks difficult at this time. So This change keeps it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206665</commentid>
    <comment_count>21</comment_count>
      <attachid>52127</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 12:51:45 -0700</bug_when>
    <thetext>Comment on attachment 52127
v4; Added redirects for some methods, added tests for that

&gt; +    SelectionController* controller = findControllerFor(node);
&gt; +    if (!controller) {
&gt; +        ec = INVALID_ACCESS_ERR;
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    controller-&gt;moveTo(VisiblePosition(node, offset, DOWNSTREAM));

Is this the behavior we want or not? You are making a call on a particular window&apos;s selection object. Should this affect the selection in another window? Does any other browser implement this? What does that browser do? Is there any documentation for this? What does the documentation say? Does the HTML5 specification or another W3C specification mention this? What does it say?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206666</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 12:52:42 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Is this the behavior we want or not? You are making a call on a particular
&gt; window&apos;s selection object. Should this affect the selection in another window?
&gt; Does any other browser implement this? What does that browser do? Is there any
&gt; documentation for this? What does the documentation say? Does the HTML5
&gt; specification or another W3C specification mention this? What does it say?

You mentioned two specific regression tests, but I think we need a little more research than that.

And where I said &quot;You&quot; I meant the JavaScript code, not you specifically ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207074</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-04-01 03:12:30 -0700</bug_when>
    <thetext>Darin, thank you for reviewing.
And I&apos;m sorry for my short of attention to the standard compatibility.
I updated the patch.

&gt; Does the HTML5
&gt; specification or another W3C specification mention this? What does it say?
HTML5 says that we should throw exceptions for nodes from foreign documents, as you mentioned.
http://www.whatwg.org/specs/web-apps/current-work/#selection

&gt; Does any other browser implement this? What does that browser do? Is there any
&gt; documentation for this? What does the documentation say? 
Firefox accepts foreign nodes. But its behavior is different from us.
In Firefox, selection of certain window (or document) can hold nodes from another document.
But rendering doesn&apos;t reflect it.
For example, when selection.collapse(foreignNode, 0), selection.anchorNode is set to foreignNode.
with nothing selected(highlighted) on the foreign document (nor the document of the selection).
This behavior is incompatible to HTML5 standard,
It is also hard to follow for WebKit due to our VisiblePosition design
that requires the valid nodes of selection&apos;s own document.

IE doesn&apos;t support selection API.

Updated patch goes between Firefox and HTML5 spec.
The patch just ignores foreign node, without throwing an exception.
Doing so, applications will keep running somehow even if they assume Firefox model, 
in contrast to throwing exception that will stop the program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207075</commentid>
    <comment_count>24</comment_count>
      <attachid>52279</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-04-01 03:13:52 -0700</bug_when>
    <thetext>Created attachment 52279
v5; took the feedback to respect compatibiity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207479</commentid>
    <comment_count>25</comment_count>
      <attachid>52279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 16:36:31 -0700</bug_when>
    <thetext>Comment on attachment 52279
v5; took the feedback to respect compatibiity

&gt; -    if (!n || selection-&gt;isNone())
&gt; +    if (!n || m_frame-&gt;document() != n-&gt;document() || selection-&gt;isNone())
&gt;          return false;

Why did you choose not to use your isValidForPosition helper function here?

&gt; +bool DOMSelection::isValidForPosition(Node* node) const
&gt; +{
&gt; +    ASSERT(m_frame);
&gt; +    if (!node)
&gt; +        return true;
&gt; +    return (node-&gt;document() == m_frame-&gt;document());
&gt; +}

Extra parentheses here.

r=me

Lets send the feedback to the HTML5 folks about not the need to not raise exceptions in these cases for compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207600</commentid>
    <comment_count>26</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-04-01 19:30:21 -0700</bug_when>
    <thetext>Darin, thank you for reviewing!

(In reply to comment #25)
&gt; (From update of attachment 52279 [details])
&gt; &gt; -    if (!n || selection-&gt;isNone())
&gt; &gt; +    if (!n || m_frame-&gt;document() != n-&gt;document() || selection-&gt;isNone())
&gt; &gt;          return false;
&gt; 
&gt; Why did you choose not to use your isValidForPosition helper function here?
This is because isValidForPosition() returns true even if node is null.

&gt; Lets send the feedback to the HTML5 folks about not the need to not raise
&gt; exceptions in these cases for compatibility.
OK, I&apos;ll post the issue to whatwg@whatwg.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207604</commentid>
    <comment_count>27</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 19:58:49 -0700</bug_when>
    <thetext>&gt; &gt; +    return (node-&gt;document() == m_frame-&gt;document());
&gt; &gt; +}
&gt; 
&gt; Extra parentheses here.

I&apos;ll land this patch with the above change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207608</commentid>
    <comment_count>28</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-01 20:14:29 -0700</bug_when>
    <thetext>Committed r56962: &lt;http://trac.webkit.org/changeset/56962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207628</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-01 21:01:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/56962 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207811</commentid>
    <comment_count>30</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-04-02 01:35:18 -0700</bug_when>
    <thetext>Committed another test change for this.
http://trac.webkit.org/changeset/56990</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43518</attachid>
            <date>2009-11-19 13:07:03 -0800</date>
            <delta_ts>2009-11-19 13:07:03 -0800</delta_ts>
            <desc>Repro</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>139</size>
            <attacher name="Berend-Jan Wever">skylined</attacher>
            
              <data encoding="base64">PFNDUklQVD4NCiAgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOw0KICBkb2MgPSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ2MnKTsNCiAgc2VsLnNldEJhc2VB
bmRFeHRlbnQoZG9jKTsNCjwvU0NSSVBUPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51877</attachid>
            <date>2010-03-28 22:53:00 -0700</date>
            <delta_ts>2010-03-29 00:46:14 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-31680-20100329145258.patch</filename>
            <type>text/plain</type>
            <size>6643</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li4zYzU4YmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MjggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisKKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQt
RG9jdW1lbnRUeXBlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVy
aWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3Rh
dGljVGFibGVzIG1vZGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyYmQ4OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRF
eHRlbnQtRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9y
IGJ1ZyAzMTY4MDogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1lbnRUeXBlIHRvIHNldEJhc2VBbmRF
eHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRvY3VtZW50LgorCitJdCBpcyBPSyBu
b3QgdG8gY3Jhc2guCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQtRG9jdW1lbnRUeXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZjQwOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50
VHlwZS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlvbiBkb0l0KCkgewor
ICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgdmFy
IGRvY1R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ2Mn
KTsKKyAgICAgICAgICBzZWwuc2V0QmFzZUFuZEV4dGVudChkb2NUeXBlKTsKKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiUEFTUyI7Cisg
ICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJkb0l0KCki
PgorICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTY4MCI+YnVnIDMxNjgwPC9hPjogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1l
bnRUeXBlIHRvIHNldEJhc2VBbmRFeHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRv
Y3VtZW50LjwvcD4KKyAgICA8cD5JdCBpcyBPSyBub3QgdG8gY3Jhc2guPC9wPgorICAgIDxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4NzJiZjQuLjE3ODYwYzMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDMtMjggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzIE5VTEwgcG9pbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE2ODAKKworICAgICAgICBBZGRlZCBET01JbXBsZW1lbnRhdGlvbjo6bV9k
b2N1bWVudCB0byBnaXZlIGl0IHRvIG5ld2x5IGNyZWF0ZWQKKyAgICAgICAgRG9jdW1lbnRUeXBl
LiAgVmlzaWJsZVNlbGVjdGlvbjo6dmFsaWRhdGUoKSwgd2hpY2ggaXMgY2FsbGVkIGZyb20KKyAg
ICAgICAgRE9NU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50KCksIGFzc3VtZXMgRG9jdW1lbnRU
eXBlOjptX2RvY3VtZW50CisgICAgICAgIG5vdCBudWxsLiBTbyBhbiBhY2Nlc3MgdmlvbGF0aW9u
IHdvdWxkIGhhcHBlbiBpZgorICAgICAgICBEb2N1bWVudFR5cGU6Om1fZG9jdW1lbnQgaXMgbnVs
bC4gTm93IERvY3VtZW50VHlwZTo6bV9kb2N1bWVudAorICAgICAgICBuZXZlciBnZXQgbnVsbC4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRFeHRl
bnQtRG9jdW1lbnRUeXBlLmh0bWwKKworICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpET01JbXBsZW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6fkRPTUltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24pOgorCiAy
MDEwLTAzLTI0ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IE5vIHJldmlldywgcm9sbGluZyBvdXQgcjU2NDUzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
CmluZGV4IGVjODlhMWIuLmJkOWRjODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAg
LTIwNywxMyArMjA3LDEzIEBAIGJvb2wgRE9NSW1wbGVtZW50YXRpb246Omhhc0ZlYXR1cmUoY29u
c3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiB9CiAKIFBhc3NSZWZQ
dHI8RG9jdW1lbnRUeXBlPiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnRUeXBlKGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwKLSAgICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBjb25zdCBTdHJp
bmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKIHsKICAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFEb2N1bWVu
dDo6cGFyc2VRdWFsaWZpZWROYW1lKHF1YWxpZmllZE5hbWUsIHByZWZpeCwgbG9jYWxOYW1lLCBl
YykpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIERvY3VtZW50VHlwZTo6Y3JlYXRl
KDAsIHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7CisgICAgcmV0dXJuIERvY3Vt
ZW50VHlwZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHF1YWxpZmllZE5hbWUsIHB1YmxpY0lkLCBzeXN0
ZW1JZCk7CiB9CiAKIERPTUltcGxlbWVudGF0aW9uKiBET01JbXBsZW1lbnRhdGlvbjo6Z2V0SW50
ZXJmYWNlKGNvbnN0IFN0cmluZyYgLypmZWF0dXJlKi8pCkBAIC0zNjcsNCArMzY3LDE1IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIHR5cGUsIEZyYW1lCiAgICAgcmV0dXJuIEhUTUxEb2N1bWVudDo6Y3JlYXRlKGZy
YW1lKTsKIH0KIAorRE9NSW1wbGVtZW50YXRpb246OkRPTUltcGxlbWVudGF0aW9uKERvY3VtZW50
KiBkb2N1bWVudCkKKyAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCit7CisgICAgbV9kb2N1bWVu
dC0+c2VsZk9ubHlSZWYoKTsKK30KKworRE9NSW1wbGVtZW50YXRpb246On5ET01JbXBsZW1lbnRh
dGlvbigpCit7CisgICAgbV9kb2N1bWVudC0+c2VsZk9ubHlEZXJlZigpOworfQorCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaAppbmRleCBiNzc2ZDIyLi5hYzMyMmM5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmgKQEAgLTQwLDExICs0MCwxMyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwog
CiBjbGFzcyBET01JbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUltcGxlbWVu
dGF0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NSW1wbGVtZW50YXRp
b24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01JbXBsZW1lbnRhdGlvbik7IH0K
KyAgICB2aXJ0dWFsIH5ET01JbXBsZW1lbnRhdGlvbigpOworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RE9NSW1wbGVtZW50YXRpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBET01JbXBsZW1lbnRhdGlvbihkb2N1bWVudCkpOyB9CiAKICAgICAvLyBE
T00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIERPTUltcGxlbWVudGF0aW9uCiAgICAgc3RhdGlj
IGJvb2wgaGFzRmVhdHVyZShjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBjcmVhdGVEb2N1bWVu
dFR5cGUoY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lk
LCBjb25zdCBTdHJpbmcgJnN5c3RlbUlkLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxEb2N1bWVudFR5cGU+IGNyZWF0ZURvY3VtZW50VHlwZShjb25zdCBTdHJpbmcmIHF1YWxpZmll
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyAmc3lzdGVtSWQsIEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3Jl
YXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgRG9jdW1lbnRUeXBlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgRE9NSW1w
bGVtZW50YXRpb24qIGdldEludGVyZmFjZShjb25zdCBTdHJpbmcmIGZlYXR1cmUpOwpAQCAtNjIs
NyArNjQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSk7CiAKIHByaXZhdGU6Ci0gICAgRE9NSW1wbGVtZW50YXRpb24oKSB7
IH0KKyAgICBET01JbXBsZW1lbnRhdGlvbihEb2N1bWVudCopOworCisgICAgRG9jdW1lbnQqIG1f
ZG9jdW1lbnQ7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYWVkYmEwZC4uZjk0
NDcxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldERv
Y1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiBET01JbXBsZW1lbnRhdGlv
biogRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbGVt
ZW50YXRpb24pCi0gICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlKCk7CisgICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8RG9jdW1lbnQqPih0aGlzKSk7IC8vIHdlIG5lZWQgY29uc3RfY2Fz
dCBoZXJlIHRvIGluaXRpYWxpemUgbXV0YWJsZSBtX2ltcGxlbWVudGF0aW9uLgogICAgIHJldHVy
biBtX2ltcGxlbWVudGF0aW9uLmdldCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51880</attachid>
            <date>2010-03-29 00:46:20 -0700</date>
            <delta_ts>2010-03-29 19:06:02 -0700</delta_ts>
            <desc>v1; guarded null document</desc>
            <filename>bug-31680-20100329164618.patch</filename>
            <type>text/plain</type>
            <size>3483</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li4zYzU4YmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MjggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisKKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQt
RG9jdW1lbnRUeXBlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVy
aWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3Rh
dGljVGFibGVzIG1vZGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyYmQ4OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRF
eHRlbnQtRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9y
IGJ1ZyAzMTY4MDogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1lbnRUeXBlIHRvIHNldEJhc2VBbmRF
eHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRvY3VtZW50LgorCitJdCBpcyBPSyBu
b3QgdG8gY3Jhc2guCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQtRG9jdW1lbnRUeXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ZjQwOTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50
VHlwZS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlvbiBkb0l0KCkgewor
ICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgdmFy
IGRvY1R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ2Mn
KTsKKyAgICAgICAgICBzZWwuc2V0QmFzZUFuZEV4dGVudChkb2NUeXBlKTsKKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiUEFTUyI7Cisg
ICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJkb0l0KCki
PgorICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMTY4MCI+YnVnIDMxNjgwPC9hPjogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1l
bnRUeXBlIHRvIHNldEJhc2VBbmRFeHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRv
Y3VtZW50LjwvcD4KKyAgICA8cD5JdCBpcyBPSyBub3QgdG8gY3Jhc2guPC9wPgorICAgIDxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4NzJiZjQuLjZjMzY3YTMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDMtMjkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBO
VUxMIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxNjgwCisKKyAgICAgICAgRG9jdW1lbnRUeXBlOjpkb2N1bWVudCgpIGlzIG51bGwgZm9y
IG5ld2x5IGNyZWF0ZWQgRG9jdW1lbnRUeXBlLAorICAgICAgICBidXQgRE9NU2VsZWN0aW9uOjpz
ZXRCYXNlQW5kRXh0ZW50KCkgdHJ5IHRvIGFjY2VzcyBpdCB3aXRoaW4KKyAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbigpLiAKKyAgICAgICAgU28gZml4IHRvIGFkZCBh
IG51bGwgZ3VhcmQgaW4gY2Fub25pY2FsUG9zaXRpb24oKS4KKworICAgICAgICBUZXN0OiBlZGl0
aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS5odG1sCisKKyAgICAg
ICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9uKToKKwogMjAxMC0wMy0yNCAgRG1pdHJ5IFRp
dG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBObyByZXZpZXcsIHJvbGxpbmcg
b3V0IHI1NjQ1My4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMmRiNmQzMS4u
YzFmZDNiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKQEAgLTQ2Miw2ICs0NjIs
OSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9uaWNhbFBvc2l0aW9uKGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbikKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBQb3NpdGlv
bigpOwogCisgICAgaWYgKCFub2RlLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gUG9zaXRp
b24oKTsKKwogICAgIG5vZGUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwogCiAgICAgUG9zaXRpb24gY2FuZGlkYXRlID0gcG9zaXRpb24udXBzdHJl
YW0oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51994</attachid>
            <date>2010-03-29 19:06:08 -0700</date>
            <delta_ts>2010-03-30 04:12:31 -0700</delta_ts>
            <desc>v2; add a guard on setBaseAndExtent()</desc>
            <filename>bug-31680-20100330110606.patch</filename>
            <type>text/plain</type>
            <size>4360</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li4zYzU4YmE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDMt
MjggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisKKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQt
RG9jdW1lbnRUeXBlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTI0ICBFcmljIFVocmhhbmUgPGVy
aWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5lZWRzIE5vU3Rh
dGljVGFibGVzIG1vZGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyYmQ4OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NldEJhc2VBbmRF
eHRlbnQtRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgZm9y
IGJ1ZyAzMTY4MDogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1lbnRUeXBlIHRvIHNldEJhc2VBbmRF
eHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRvY3VtZW50LgorCitJdCBpcyBPSyBu
b3QgdG8gY3Jhc2guCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL3NldEJhc2VBbmRFeHRlbnQtRG9jdW1lbnRUeXBlLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50VHlwZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTQzNjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zZXRCYXNlQW5kRXh0ZW50LURvY3VtZW50
VHlwZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICBmdW5jdGlvbiBkb0l0KCkgewor
ICAgICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgdmFy
IGRvY1R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudFR5cGUoJ2Mn
KTsKKyAgICAgICAgICBzZWwuc2V0QmFzZUFuZEV4dGVudChkb2NUeXBlKTsKKyAgICAgICAgICBz
ZWwuc2V0QmFzZUFuZEV4dGVudChudWxsLCAwLCBkb2NUeXBlLCAwKTsKKyAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSAiUEFTUyI7CisgICAg
ICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJkb0l0KCkiPgor
ICAgIDxwPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTY4MCI+YnVnIDMxNjgwPC9hPjogcGFzc2luZyBhbiBvcnBoYW4gRG9jdW1lbnRU
eXBlIHRvIHNldEJhc2VBbmRFeHRlbnQoKSwgd2hpY2ggcmVmZXJlcyB0aGUgcGFyZW50IGRvY3Vt
ZW50LjwvcD4KKyAgICA8cD5JdCBpcyBPSyBub3QgdG8gY3Jhc2guPC9wPgorICAgIDxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4NzJiZjQuLjdhNjMzYTIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTAtMDMtMjkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxM
IHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNjgwCisKKyAgICAgICAgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvICJzZWxlY3QiIG93bmVy
LWxlc3Mgbm9kZXMgbGlrZSBuZXdseS1jcmVhdGVkIERvY3VtZW50VHlwZSwKKyAgICAgICAgRml4
IHNldEJhc2VBbmRFeHRlbnQoKSB0byB0YWtlIHN1Y2ggbm9kZXMgYXMgbnVsbC4KKyAgICAgICAg
VGhlIGZpeCBhbHNvIGFkZHMgYSBudWxsIGd1YXJkIGZvciBjYW5vbmljYWxQb3NpdGlvbigpIGp1
c3QgaW4gY2FzZS4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL3Nl
dEJhc2VBbmRFeHRlbnQtRG9jdW1lbnRUeXBlLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fu
b25pY2FsUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudCk6CisKIDIwMTAtMDMt
MjQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2
aWV3LCByb2xsaW5nIG91dCByNTY0NTMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlz
aWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmlu
ZGV4IDJkYjZkMzEuLmMxZmQzYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBA
IC00NjIsNiArNDYyLDkgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3Np
dGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gUG9zaXRpb24oKTsKIAorICAgIGlmICghbm9kZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKCk7CisKICAgICBub2RlLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJ
Z25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHBv
c2l0aW9uLnVwc3RyZWFtKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDEyYWU1OWQuLmZkZjM3
MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0yNDQsNiArMjQ0LDEzIEBAIHZvaWQgRE9NU2Vs
ZWN0aW9uOjpzZXRCYXNlQW5kRXh0ZW50KE5vZGUqIGJhc2VOb2RlLCBpbnQgYmFzZU9mZnNldCwg
Tm9kZSogZXh0ZW50CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICAvLyBCZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IHRvICJzZWxlY3Qi
IG93bmVybGVzcyBub2Rlcywgd2UgdGFrZSB0aGVtIGFzIG51bGwuCisgICAgaWYgKGJhc2VOb2Rl
ICYmICFiYXNlTm9kZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgYmFzZU5vZGUgPSAwOworICAgIGlm
IChleHRlbnROb2RlICYmICFleHRlbnROb2RlLT5kb2N1bWVudCgpKQorICAgICAgICBleHRlbnRO
b2RlID0gMDsKKyAgICAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVCYXNlID0gVmlz
aWJsZVBvc2l0aW9uKGJhc2VOb2RlLCBiYXNlT2Zmc2V0LCBET1dOU1RSRUFNKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZUV4dGVudCA9IFZpc2libGVQb3NpdGlvbihleHRlbnROb2RlLCBl
eHRlbnRPZmZzZXQsIERPV05TVFJFQU0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52021</attachid>
            <date>2010-03-30 04:12:36 -0700</date>
            <delta_ts>2010-03-30 22:15:25 -0700</delta_ts>
            <desc>v3; used asssertion, added null checks more; enhanced test</desc>
            <filename>bug-31680-20100330201234.patch</filename>
            <type>text/plain</type>
            <size>8062</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li4xMzYwYmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMt
MzAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisgICAgICAgIE93bmVy
bGVzcyBub2RlcyBsZWFkcyBhIGNyYXNoIG9uIERPTVNlbGVjdGlvbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgwMAorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVu
dFR5cGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRl
c3RzL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUuanM6IEFkZGVkLgorCiAyMDEwLTAzLTI0ICBF
cmljIFVocmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBET01Db3JlRXhjZXB0
aW9uIG5lZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5
cGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ODU3
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01T
ZWxlY3Rpb24tRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0
IHRvIGNoZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3VhcmQgbm9kZSB3aXRoIG51bGwgb3duZXIg
ZG9jdW1lbnQgKEJ1ZyAzMTY4MCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgc2VsLnNldEJhc2VBbmRFeHRlbnQoZG9jVHlwZSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1LgorUEFTUyBzZWwuc2V0QmFzZUFu
ZEV4dGVudChudWxsLCAwLCBkb2NUeXBlLCAwKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZB
TElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUuCitQQVNTIHNlbC5jb2xsYXBzZShkb2NU
eXBlKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNl
cHRpb24gMTUuCitQQVNTIHNlbC5zZWxlY3RBbGxDaGlsZHJlbihkb2NUeXBlKTsgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUuCitQQVNT
IHNlbC5leHRlbmQoZG9jVHlwZSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9B
Q0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1LgorUEFTUyBzZWwuc2V0UG9zaXRpb24oZG9jVHlw
ZSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhj
ZXB0aW9uIDE1LgorUEFTUyBzZWwuY29udGFpbnNOb2RlKGRvY1R5cGUpIGlzIGZhbHNlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlw
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3Vt
ZW50VHlwZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NGRmMTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxl
Y3Rpb24tRG9jdW1lbnRUeXBlLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24t
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvRE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Nj
cmlwdC10ZXN0cy9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLmpzIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0MDRiMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxl
Y3Rpb24tRG9jdW1lbnRUeXBlLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRvIGNoZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3VhcmQgbm9kZSB3aXRoIG51bGwgb3duZXIg
ZG9jdW1lbnQgKEJ1ZyAzMTY4MCkiKTsKKworCit2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOwordmFyIGRvY1R5cGUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVu
dFR5cGUoJ2MnKTsKKworc2hvdWxkVGhyb3coInNlbC5zZXRCYXNlQW5kRXh0ZW50KGRvY1R5cGUp
OyIsICInRXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKK3No
b3VsZFRocm93KCJzZWwuc2V0QmFzZUFuZEV4dGVudChudWxsLCAwLCBkb2NUeXBlLCAwKTsiLCAi
J0Vycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUnIik7CitzaG91bGRU
aHJvdygic2VsLmNvbGxhcHNlKGRvY1R5cGUpOyIsICInRXJyb3I6IElOVkFMSURfQUNDRVNTX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKK3Nob3VsZFRocm93KCJzZWwuc2VsZWN0QWxsQ2hpbGRy
ZW4oZG9jVHlwZSk7IiwgIidFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9u
IDE1JyIpOworc2hvdWxkVGhyb3coInNlbC5leHRlbmQoZG9jVHlwZSwgMCk7IiwgIidFcnJvcjog
SU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1JyIpOworc2hvdWxkVGhyb3coInNl
bC5zZXRQb3NpdGlvbihkb2NUeXBlLCAwKTsiLCAiJ0Vycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6
IERPTSBFeGNlcHRpb24gMTUnIik7CitzaG91bGRCZUZhbHNlKCJzZWwuY29udGFpbnNOb2RlKGRv
Y1R5cGUpIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjODcyYmY0Li41MGQ3
OWYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTAzLTMwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMgTlVMTCBwb2ludGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTY4MAorICAgICAgICBPd25lcmxlc3Mgbm9kZXMgbGVhZHMgYSBjcmFzaCBvbiBE
T01TZWxlY3Rpb24gQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzY4MDAKKyAgICAgICAgCisgICAgICAgIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0
byBzZWxlY3Qgb3duZXItbGVzcyBub2RlcyBsaWtlIG5ld2x5LWNyZWF0ZWQgRG9jdW1lbnRUeXBl
LAorICAgICAgICBGaXggZ3VyYWQgdGhlc2Ugbm9kZXMgb24gRE9NU2VsZWN0aW9uIEFQSXMKKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBl
Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
Y29sbGFwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzZXRCYXNlQW5kRXh0
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NU2VsZWN0aW9uOjpjb250YWluc05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjpzZWxlY3RBbGxDaGlsZHJlbik6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRp
bWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0
NTMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDJkYjZkMzEuLjlkODBlMDQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC00NjIsNiArNDYyLDcgQEAgUG9z
aXRpb24gVmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYg
cG9zaXRpb24pCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAor
ICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpKTsKICAgICBub2RlLT5kb2N1bWVudCgpLT51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIFBvc2l0aW9uIGNhbmRp
ZGF0ZSA9IHBvc2l0aW9uLnVwc3RyZWFtKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDEyYWU1
OWQuLjczMDZiOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0yMDcsNiArMjA3LDEyIEBAIHZv
aWQgRE9NU2VsZWN0aW9uOjpjb2xsYXBzZShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGlmIChub2RlICYmICFub2RlLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
bV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vdmVUbyhWaXNpYmxlUG9zaXRpb24obm9kZSwgb2Zmc2V0
LCBET1dOU1RSRUFNKSk7CiB9CiAKQEAgLTI0NCw2ICsyNTAsMTQgQEAgdm9pZCBET01TZWxlY3Rp
b246OnNldEJhc2VBbmRFeHRlbnQoTm9kZSogYmFzZU5vZGUsIGludCBiYXNlT2Zmc2V0LCBOb2Rl
KiBleHRlbnQKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIGlmICgoYmFzZU5vZGUgJiYgIWJhc2VOb2RlLT5kb2N1bWVudCgpKSAKKyAg
ICAgICAgfHwgKGV4dGVudE5vZGUgJiYgIWV4dGVudE5vZGUtPmRvY3VtZW50KCkpKSB7CisgICAg
ICAgIC8vIFdlIGRvbid0IGtub3cgaG93IHRvICJzZWxlY3QiIG93bmVybGVzcyBub2Rlcy4KKyAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgICAgIAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSA9IFZpc2libGVQb3NpdGlv
bihiYXNlTm9kZSwgYmFzZU9mZnNldCwgRE9XTlNUUkVBTSk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVFeHRlbnQgPSBWaXNpYmxlUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0
LCBET1dOU1RSRUFNKTsKIApAQCAtMjU4LDYgKzI3MiwxMSBAQCB2b2lkIERPTVNlbGVjdGlvbjo6
c2V0UG9zaXRpb24oTm9kZSogbm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
aWYgKG5vZGUgJiYgIW5vZGUtPmRvY3VtZW50KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+bW92ZVRvKFZpc2libGVQb3NpdGlvbihub2RlLCBvZmZzZXQsIERPV05TVFJFQU0pKTsK
IH0KIApAQCAtMzIwLDYgKzMzOSwxMiBAQCB2b2lkIERPTVNlbGVjdGlvbjo6ZXh0ZW5kKE5vZGUq
IG5vZGUsIGludCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKCFub2RlLT5k
b2N1bWVudCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gKG5vZGUtPm9m
ZnNldEluQ2hhcmFjdGVycygpID8gY2FyZXRNYXhPZmZzZXQobm9kZSkgOiAoaW50KW5vZGUtPmNo
aWxkTm9kZUNvdW50KCkpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAg
IHJldHVybjsKQEAgLTQyOCw3ICs0NTMsNyBAQCBib29sIERPTVNlbGVjdGlvbjo6Y29udGFpbnNO
b2RlKGNvbnN0IE5vZGUqIG4sIGJvb2wgYWxsb3dQYXJ0aWFsKSBjb25zdAogCiAgICAgU2VsZWN0
aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCk7CiAKLSAgICBp
ZiAoIW4gfHwgc2VsZWN0aW9uLT5pc05vbmUoKSkKKyAgICBpZiAoIW4gfHwgIW4tPmRvY3VtZW50
KCkgfHwgc2VsZWN0aW9uLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Tm9kZSogcGFyZW50Tm9kZSA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTQ1OSw2ICs0ODQsMTEgQEAg
dm9pZCBET01TZWxlY3Rpb246OnNlbGVjdEFsbENoaWxkcmVuKE5vZGUqIG4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIGlmICghbikKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFuLT5kb2N1
bWVudCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgLy8gVGhpcyBkb2Vzbid0IChhbmQgc2hvdWxkbid0KSBzZWxlY3Qg
dGV4dCBub2RlIGNoYXJhY3RlcnMuCiAgICAgc2V0QmFzZUFuZEV4dGVudChuLCAwLCBuLCBuLT5j
aGlsZE5vZGVDb3VudCgpLCBlYyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52127</attachid>
            <date>2010-03-30 22:15:31 -0700</date>
            <delta_ts>2010-04-01 03:13:44 -0700</delta_ts>
            <desc>v4; Added redirects for some methods, added tests for that</desc>
            <filename>bug-31680-20100331141529.patch</filename>
            <type>text/plain</type>
            <size>14395</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li5mMjVhNzdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMt
MzAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisgICAgICAgIE93bmVy
bGVzcyBub2RlcyBsZWFkcyBhIGNyYXNoIG9uIERPTVNlbGVjdGlvbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgwMAorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVu
dFR5cGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0
aW9uLWNyb3NzaW5nLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxlY3Rpb24t
RG9jdW1lbnRUeXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9zY3Jp
cHQtdGVzdHMvRE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50LmpzOiBBZGRlZC4KKyAgICAg
ICAgKG1ha2VFZGl0YWJsZURvY3VtZW50KToKKyAgICAgICAgKGNsZWFyKToKKwogMjAxMC0wMy0y
NCAgRXJpYyBVaHJoYW5lIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRE9NQ29yZUV4
Y2VwdGlvbiBuZWVkcyBOb1N0YXRpY1RhYmxlcyBtb2RpZmllcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rpb24tRG9jdW1l
bnRUeXBlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x
NDg1N2NmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
RE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAor
VGVzdCB0byBjaGVjayBpZiBzZXRCYXNlQW5kRXh0ZW50IGd1YXJkIG5vZGUgd2l0aCBudWxsIG93
bmVyIGRvY3VtZW50IChCdWcgMzE2ODApCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIHNlbC5zZXRCYXNlQW5kRXh0ZW50KGRvY1R5cGUpOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNS4KK1BBU1Mgc2VsLnNldEJh
c2VBbmRFeHRlbnQobnVsbCwgMCwgZG9jVHlwZSwgMCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1LgorUEFTUyBzZWwuY29sbGFwc2Uo
ZG9jVHlwZSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00g
RXhjZXB0aW9uIDE1LgorUEFTUyBzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oZG9jVHlwZSk7IHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1Lgor
UEFTUyBzZWwuZXh0ZW5kKGRvY1R5cGUsIDApOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFM
SURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNS4KK1BBU1Mgc2VsLnNldFBvc2l0aW9uKGRv
Y1R5cGUsIDApOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNS4KK1BBU1Mgc2VsLmNvbnRhaW5zTm9kZShkb2NUeXBlKSBpcyBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVu
dFR5cGUuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1E
b2N1bWVudFR5cGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTRk
ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9N
U2VsZWN0aW9uLURvY3VtZW50VHlwZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0
aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9ET01TZWxlY3Rpb24tY3Jvc3NpbmctZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTJjZmVjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9u
LWNyb3NzaW5nLWRvY3VtZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitUZXN0IHRv
IGNoZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3VhcmQgbm9kZSB3aXRoIG51bGwgb3duZXIgZG9j
dW1lbnQgKEJ1ZyAzMTY4MCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
Zm9yZWlnblNlbC5hbmNob3JOb2RlIGlzIGZvcmVpZ25UZXh0CitQQVNTIG1haW5TZWwuYW5jaG9y
Tm9kZSBpcyBudWxsCitQQVNTIGZvcmVpZ25TZWwuYW5jaG9yTm9kZSBpcyBmb3JlaWduVGV4dAor
UEFTUyBtYWluU2VsLmFuY2hvck5vZGUgaXMgbnVsbAorUEFTUyBmb3JlaWduU2VsLmFuY2hvck5v
ZGUgaXMgZm9yZWlnblRleHQKK1BBU1MgbWFpblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1Mg
Zm9yZWlnblNlbC5hbmNob3JOb2RlIGlzIGZvcmVpZ25UZXh0CitQQVNTIG1haW5TZWwuYW5jaG9y
Tm9kZSBpcyBudWxsCitQQVNTIGZvcmVpZ25TZWwuYW5jaG9yTm9kZSBpcyBmb3JlaWduVGV4dAor
UEFTUyBtYWluU2VsLmFuY2hvck5vZGUgaXMgbnVsbAorUEFTUyBtYWluU2VsLnNldEJhc2VBbmRF
eHRlbnQobWFpbkVsZW1lbnQsIDAsIGZvcmVpZ25FbGVtZW50LCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNS4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCitNYWluIFRleHQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1jcm9zc2lu
Zy1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0
aW9uLWNyb3NzaW5nLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDUxZjI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxlY3Rpb24tRG9jdW1lbnRU
eXBlLmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL0RPTVNl
bGVjdGlvbi1Eb2N1bWVudFR5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjU4NjQ5OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLmpzCkBAIC0wLDAgKzEs
MTIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRvIGNoZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3Vh
cmQgbm9kZSB3aXRoIG51bGwgb3duZXIgZG9jdW1lbnQgKEJ1ZyAzMTY4MCkiKTsKKwordmFyIHNl
bCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKK3ZhciBkb2NUeXBlID0gZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnRUeXBlKCdjJyk7CitzaG91bGRUaHJvdygic2VsLnNldEJh
c2VBbmRFeHRlbnQoZG9jVHlwZSk7IiwgIidFcnJvcjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00g
RXhjZXB0aW9uIDE1JyIpOworc2hvdWxkVGhyb3coInNlbC5zZXRCYXNlQW5kRXh0ZW50KG51bGws
IDAsIGRvY1R5cGUsIDApOyIsICInRXJyb3I6IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNSciKTsKK3Nob3VsZFRocm93KCJzZWwuY29sbGFwc2UoZG9jVHlwZSk7IiwgIidFcnJv
cjogSU5WQUxJRF9BQ0NFU1NfRVJSOiBET00gRXhjZXB0aW9uIDE1JyIpOworc2hvdWxkVGhyb3co
InNlbC5zZWxlY3RBbGxDaGlsZHJlbihkb2NUeXBlKTsiLCAiJ0Vycm9yOiBJTlZBTElEX0FDQ0VT
U19FUlI6IERPTSBFeGNlcHRpb24gMTUnIik7CitzaG91bGRUaHJvdygic2VsLmV4dGVuZChkb2NU
eXBlLCAwKTsiLCAiJ0Vycm9yOiBJTlZBTElEX0FDQ0VTU19FUlI6IERPTSBFeGNlcHRpb24gMTUn
Iik7CitzaG91bGRUaHJvdygic2VsLnNldFBvc2l0aW9uKGRvY1R5cGUsIDApOyIsICInRXJyb3I6
IElOVkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKK3Nob3VsZEJlRmFsc2Uo
InNlbC5jb250YWluc05vZGUoZG9jVHlwZSkiKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRl
c3RzL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5qcyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxlY3Rpb24tY3Jvc3NpbmctZG9jdW1lbnQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U1ZWE2OAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01T
ZWxlY3Rpb24tY3Jvc3NpbmctZG9jdW1lbnQuanMKQEAgLTAsMCArMSw1NyBAQAorZGVzY3JpcHRp
b24oIlRlc3QgdG8gY2hlY2sgaWYgc2V0QmFzZUFuZEV4dGVudCBndWFyZCBub2RlIHdpdGggbnVs
bCBvd25lciBkb2N1bWVudCAoQnVnIDMxNjgwKSIpOworCitmdW5jdGlvbiBtYWtlRWRpdGFibGVE
b2N1bWVudChpZCkKK3sKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIHZh
ciBkb2MgPSBpZnJhbWUuY29udGVudERvY3VtZW50OworICAgIGRvYy5ib2R5LmlubmVySFRNTCA9
ICI8aHRtbD48Ym9keT48ZGl2IGlkPSciICsgaWQgKyAiJyBjb250ZW50RWRpdGFibGU+RWRpdGFi
bGUgQmxvY2sgZm9yICIgKyBpZCArICIuPC9kaXY+PC9ib2R5PjwvaHRtbD4iOworICAgIHJldHVy
biBkb2M7Cit9CisKK3ZhciBmb3JlaWduRG9jID0gbWFrZUVkaXRhYmxlRG9jdW1lbnQoInRhcmdl
dCIpOwordmFyIGZvcmVpZ25FbGVtZW50ID0gZm9yZWlnbkRvYy5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0Iik7Cit2YXIgZm9yZWlnblRleHQgPSBmb3JlaWduRWxlbWVudC5maXJzdENoaWxkOwordmFy
IGZvcmVpZ25TZWwgPSBmb3JlaWduRG9jLmdldFNlbGVjdGlvbigpOworCit2YXIgbWFpbkVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK21haW5FbGVtZW50LmNvbnRlbnRF
ZGl0YWJsZSA9IHRydWU7CittYWluRWxlbWVudC5pbm5lckhUTUwgPSAiTWFpbiBUZXh0IjsKK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobWFpbkVsZW1lbnQpOwordmFyIG1haW5TZWwgPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisKK2Z1bmN0aW9uIGNsZWFyKCkKK3sKKyAgICBmb3JlaWduU2Vs
LnNldEJhc2VBbmRFeHRlbnQobnVsbCwgMCwgbnVsbCwgMCk7CisgICAgbWFpblNlbC5zZXRCYXNl
QW5kRXh0ZW50KG51bGwsIDAsIG51bGwsIDApOworfQorCittYWluU2VsLnNldEJhc2VBbmRFeHRl
bnQoZm9yZWlnbkVsZW1lbnQsIDAsIGZvcmVpZ25FbGVtZW50LCAwKTsKK3Nob3VsZEJlKCJmb3Jl
aWduU2VsLmFuY2hvck5vZGUiLCAiZm9yZWlnblRleHQiKTsKK3Nob3VsZEJlTnVsbCgibWFpblNl
bC5hbmNob3JOb2RlIik7CisKK2NsZWFyKCk7CittYWluU2VsLnNldFBvc2l0aW9uKGZvcmVpZ25F
bGVtZW50LCAwKTsKK3Nob3VsZEJlKCJmb3JlaWduU2VsLmFuY2hvck5vZGUiLCAiZm9yZWlnblRl
eHQiKTsKK3Nob3VsZEJlTnVsbCgibWFpblNlbC5hbmNob3JOb2RlIik7CisKK2NsZWFyKCk7Citt
YWluU2VsLmV4dGVuZChmb3JlaWduRWxlbWVudCwgMSk7CitzaG91bGRCZSgiZm9yZWlnblNlbC5h
bmNob3JOb2RlIiwgImZvcmVpZ25UZXh0Iik7CitzaG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9y
Tm9kZSIpOworCitjbGVhcigpOworbWFpblNlbC5zZWxlY3RBbGxDaGlsZHJlbihmb3JlaWduRWxl
bWVudCwgMSk7CitzaG91bGRCZSgiZm9yZWlnblNlbC5hbmNob3JOb2RlIiwgImZvcmVpZ25UZXh0
Iik7CitzaG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9yTm9kZSIpOworCitjbGVhcigpOworbWFp
blNlbC5jb2xsYXBzZShmb3JlaWduRWxlbWVudCwgMCk7CitzaG91bGRCZSgiZm9yZWlnblNlbC5h
bmNob3JOb2RlIiwgImZvcmVpZ25UZXh0Iik7CitzaG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9y
Tm9kZSIpOworCisvLyBTaG91bGQgbm90IGFsbG93IGVsZW1lbnRzIHdoaWNoIGNvbWUgZnJvbSBh
bm90aGVyIGRvY3VtZW50LgorY2xlYXIoKTsKK3Nob3VsZFRocm93KCJtYWluU2VsLnNldEJhc2VB
bmRFeHRlbnQobWFpbkVsZW1lbnQsIDAsIGZvcmVpZ25FbGVtZW50LCAwKSIsICInRXJyb3I6IElO
VkFMSURfQUNDRVNTX0VSUjogRE9NIEV4Y2VwdGlvbiAxNSciKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGM4NzJiZjQuLmY2MjZjOGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMt
MzAgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisgICAgICAgIE93bmVy
bGVzcyBub2RlcyBsZWFkcyBhIGNyYXNoIG9uIERPTVNlbGVjdGlvbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgwMAorCisgICAgICAgIFJl
ZGlyZWN0ZWQgRE9NU2VsZWN0aW9uIEFQSXMsIHdoaWNoIGhhcyBOb2RlIGFzIGFuIGFyZ3VtZW50
LCB0byBTZWxlY3Rpb25Db250cm9sbGVyIG9mIHRoZSAKKyAgICAgICAgb3duZXIgZG9jdW1lbnQg
b2YgdGhlIG5vZGUsIGluc3RlYWQgb2Ygb3duZXIgZG9jdW1lbnQgb2YgcmVjZWl2ZXIgRE9NU2Vs
ZWN0aW9uLgorICAgICAgICBBbmQgYWRkZWQgZ3VhcmRzIGZyb20gb3duZXItbGVzcyBub2RlIGZv
ciB0aGVzZSBBUElzLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxl
Y3Rpb24tRG9jdW1lbnRUeXBlLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9u
L0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246
OmNhbm9uaWNhbFBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246OmNvbGxhcHNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01TZWxlY3Rpb246OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlv
bjo6ZXh0ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29udGFpbnNOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZmluZENvbnRyb2xsZXJGb3IpOiBB
ZGRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVNlbGVjdGlvbi5oOgorCiAyMDEwLTAzLTI0ICBEbWl0
cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vIHJldmlldywgcm9s
bGluZyBvdXQgcjU2NDUzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAyZGI2
ZDMxLi45ZDgwZTA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDYyLDYg
KzQ2Miw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9zaXRpb24oY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFBv
c2l0aW9uKCk7CiAKKyAgICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQoKSk7CiAgICAgbm9kZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBQ
b3NpdGlvbiBjYW5kaWRhdGUgPSBwb3NpdGlvbi51cHN0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNw
cAppbmRleCAxMmFlNTlkLi5mNTE0N2I1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMjA3LDcg
KzIwNywxNCBAQCB2b2lkIERPTVNlbGVjdGlvbjo6Y29sbGFwc2UoTm9kZSogbm9kZSwgaW50IG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vdmVUbyhW
aXNpYmxlUG9zaXRpb24obm9kZSwgb2Zmc2V0LCBET1dOU1RSRUFNKSk7CisKKyAgICBTZWxlY3Rp
b25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZmluZENvbnRyb2xsZXJGb3Iobm9kZSk7CisgICAg
aWYgKCFjb250cm9sbGVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udHJvbGxlci0+bW92ZVRvKFZpc2libGVQb3Np
dGlvbihub2RlLCBvZmZzZXQsIERPV05TVFJFQU0pKTsKIH0KIAogdm9pZCBET01TZWxlY3Rpb246
OmNvbGxhcHNlVG9FbmQoKQpAQCAtMjQ0LDEwICsyNTEsMTkgQEAgdm9pZCBET01TZWxlY3Rpb246
OnNldEJhc2VBbmRFeHRlbnQoTm9kZSogYmFzZU5vZGUsIGludCBiYXNlT2Zmc2V0LCBOb2RlKiBl
eHRlbnQKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JCYXNlID0gZmluZENv
bnRyb2xsZXJGb3IoYmFzZU5vZGUpOworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXJGb3JFeHRlbnQgPSBmaW5kQ29udHJvbGxlckZvcihleHRlbnROb2RlKTsKKworICAgIGlmICgh
Y29udHJvbGxlckZvckJhc2UgfHwgIWNvbnRyb2xsZXJGb3JFeHRlbnQgfHwgY29udHJvbGxlckZv
ckJhc2UgIT0gY29udHJvbGxlckZvckV4dGVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlQmFzZSA9IFZpc2libGVQb3NpdGlvbihiYXNlTm9kZSwgYmFzZU9mZnNldCwgRE9XTlNU
UkVBTSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFeHRlbnQgPSBWaXNpYmxlUG9zaXRp
b24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0LCBET1dOU1RSRUFNKTsKIAotICAgIG1fZnJhbWUt
PnNlbGVjdGlvbigpLT5tb3ZlVG8odmlzaWJsZUJhc2UsIHZpc2libGVFeHRlbnQpOworICAgIGNv
bnRyb2xsZXJGb3JCYXNlLT5tb3ZlVG8odmlzaWJsZUJhc2UsIHZpc2libGVFeHRlbnQpOwogfQog
CiB2b2lkIERPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24oTm9kZSogbm9kZSwgaW50IG9mZnNldCwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yNTgsNyArMjc0LDE0IEBAIHZvaWQgRE9NU2VsZWN0aW9u
OjpzZXRQb3NpdGlvbihOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKFZpc2libGVQb3NpdGlvbihub2RlLCBvZmZz
ZXQsIERPV05TVFJFQU0pKTsKKworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBmaW5kQ29udHJvbGxlckZvcihub2RlKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjb250cm9sbGVyLT5tb3ZlVG8oVmlzaWJsZVBvc2l0aW9uKG5vZGUsIG9mZnNldCwgRE9XTlNU
UkVBTSkpOwogfQogCiB2b2lkIERPTVNlbGVjdGlvbjo6bW9kaWZ5KGNvbnN0IFN0cmluZyYgYWx0
ZXJTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBjb25zdCBTdHJpbmcmIGdy
YW51bGFyaXR5U3RyaW5nKQpAQCAtMzIwLDEzICszNDMsMTkgQEAgdm9pZCBET01TZWxlY3Rpb246
OmV4dGVuZChOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAg
IGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IChub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSA/
IGNhcmV0TWF4T2Zmc2V0KG5vZGUpIDogKGludClub2RlLT5jaGlsZE5vZGVDb3VudCgpKSkgewog
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCk7
Ci0gICAgc2VsZWN0aW9uLT5zZXRFeHRlbnQoVmlzaWJsZVBvc2l0aW9uKG5vZGUsIG9mZnNldCwg
RE9XTlNUUkVBTSkpOworICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmaW5k
Q29udHJvbGxlckZvcihub2RlKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250
cm9sbGVyLT5zZXRFeHRlbnQoVmlzaWJsZVBvc2l0aW9uKG5vZGUsIG9mZnNldCwgRE9XTlNUUkVB
TSkpOwogfQogCiBQYXNzUmVmUHRyPFJhbmdlPiBET01TZWxlY3Rpb246OmdldFJhbmdlQXQoaW50
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQyOCw3ICs0NTcsNyBAQCBib29sIERPTVNl
bGVjdGlvbjo6Y29udGFpbnNOb2RlKGNvbnN0IE5vZGUqIG4sIGJvb2wgYWxsb3dQYXJ0aWFsKSBj
b25zdAogCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uID0gbV9mcmFtZS0+c2Vs
ZWN0aW9uKCk7CiAKLSAgICBpZiAoIW4gfHwgc2VsZWN0aW9uLT5pc05vbmUoKSkKKyAgICBpZiAo
IW4gfHwgbV9mcmFtZS0+ZG9jdW1lbnQoKSAhPSBuLT5kb2N1bWVudCgpIHx8IHNlbGVjdGlvbi0+
aXNOb25lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5vZGUqIHBhcmVudE5vZGUg
PSBuLT5wYXJlbnROb2RlKCk7CkBAIC00NzEsNCArNTAwLDEyIEBAIFN0cmluZyBET01TZWxlY3Rp
b246OnRvU3RyaW5nKCkKICAgICByZXR1cm4gcGxhaW5UZXh0KG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIH0KIAorU2VsZWN0aW9u
Q29udHJvbGxlciogRE9NU2VsZWN0aW9uOjpmaW5kQ29udHJvbGxlckZvcihOb2RlKiBub2RlKSBj
b25zdAoreworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAgcmV0
dXJuIChub2RlLT5kb2N1bWVudCgpICYmIG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpID8gbm9k
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkgOiAwOworICAgIHJldHVybiBtX2Zy
YW1lLT5zZWxlY3Rpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5oIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlv
bi5oCmluZGV4IGUwZmUxZTMuLmI2ZmFiOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmgKQEAgLTQxLDYgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU3Ry
aW5nOwogICAgIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CisgICAgY2xhc3MgU2VsZWN0aW9uQ29u
dHJvbGxlcjsKIAogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTk2LDYgKzk3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBDb252ZW5pZW5jZSBtZXRob2Qg
Zm9yIGFjY2Vzc29ycywgZG9lcyBub3QgTlVMTCBjaGVjayBtX2ZyYW1lLgogICAgICAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiB2aXNpYmxlU2VsZWN0aW9uKCkgY29uc3Q7CiAKKyAgICAgICAg
U2VsZWN0aW9uQ29udHJvbGxlciogZmluZENvbnRyb2xsZXJGb3IoTm9kZSopIGNvbnN0OwogICAg
ICAgICBGcmFtZSogbV9mcmFtZTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52279</attachid>
            <date>2010-04-01 03:13:52 -0700</date>
            <delta_ts>2010-04-01 19:59:05 -0700</delta_ts>
            <desc>v5; took the feedback to respect compatibiity</desc>
            <filename>bug-31680-20100401191350.patch</filename>
            <type>text/plain</type>
            <size>13125</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiYmI5N2U1Li4xMGFiMWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQt
MDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cyBOVUxMIHBvaW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjgwCisgICAgICAgIE93bmVy
bGVzcyBub2RlcyBsZWFkcyBhIGNyYXNoIG9uIERPTVNlbGVjdGlvbiBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjgwMAorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlwZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVu
dFR5cGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0
aW9uLWNyb3NzaW5nLWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2RyYWctaW4taWZyYW1lLmh0bWw6CisgICAg
ICAgICAgVXBkYXRlZCB0byBmb2xsb3cgZm9sbG93IGJlaGF2aW91ciBjaGFuZ2UuCisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5
cGUuanM6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9E
T01TZWxlY3Rpb24tY3Jvc3NpbmctZG9jdW1lbnQuanM6IEFkZGVkLgorICAgICAgICAobWFrZUVk
aXRhYmxlRG9jdW1lbnQpOgorICAgICAgICAoY2xlYXIpOgorCiAyMDEwLTAzLTI0ICBFcmljIFVo
cmhhbmUgPGVyaWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBET01Db3JlRXhjZXB0aW9uIG5l
ZWRzIE5vU3RhdGljVGFibGVzIG1vZGlmaWVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlOTg2MjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rp
b24tRG9jdW1lbnRUeXBlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0IHRvIGNo
ZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3VhcmQgbm9kZSB3aXRoIG51bGwgb3duZXIgZG9jdW1l
bnQgKEJ1ZyAzMTY4MCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc2Vs
LmFuY2hvck5vZGUgaXMgbnVsbAorUEFTUyBzZWwuYW5jaG9yTm9kZSBpcyBudWxsCitQQVNTIHNl
bC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1Mgc2VsLmFuY2hvck5vZGUgaXMgbnVsbAorUEFTUyBz
ZWwuYW5jaG9yTm9kZSBpcyBudWxsCitQQVNTIHNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1Mg
c2VsLmNvbnRhaW5zTm9kZShkb2NUeXBlKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVudFR5cGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTRkZjE4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLURvY3VtZW50VHlw
ZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1E
b2N1bWVudFR5cGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9ET01TZWxlY3Rpb24tY3Jvc3Np
bmctZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
RE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTk0NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9uLWNyb3NzaW5nLWRvY3VtZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRvIGNoZWNrIGlmIHNldEJhc2VBbmRF
eHRlbnQgZ3VhcmQgbm9kZSB3aXRoIG51bGwgb3duZXIgZG9jdW1lbnQgKEJ1ZyAzMTY4MCkKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9yZWlnblNlbC5hbmNob3JOb2Rl
IGlzIG51bGwKK1BBU1MgbWFpblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgZm9yZWlnblNl
bC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgbWFpblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BB
U1MgZm9yZWlnblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgbWFpblNlbC5hbmNob3JOb2Rl
IGlzIG51bGwKK1BBU1MgZm9yZWlnblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgbWFpblNl
bC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgZm9yZWlnblNlbC5hbmNob3JOb2RlIGlzIG51bGwK
K1BBU1MgbWFpblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1MgZm9yZWlnblNlbC5hbmNob3JO
b2RlIGlzIG51bGwKK1BBU1MgbWFpblNlbC5hbmNob3JOb2RlIGlzIG51bGwKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCitNYWluIFRleHQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1jcm9zc2lu
Zy1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0
aW9uLWNyb3NzaW5nLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDUxZjI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3Qtc2VsZWN0aW9uLXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RyYWctaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9kcmFnLWluLWlmcmFtZS5odG1sCmluZGV4IDA1OTQwYzAuLmUxMmQ0
YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2RyYWctaW4taWZy
YW1lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZHJhZy1pbi1pZnJh
bWUuaHRtbApAQCAtMTUsOCArMTUsOCBAQAogICAgICAgICAgICAgdmFyIHgxID0gaWZyYW1lLm9m
ZnNldExlZnQgKyB0YXJnZXQub2Zmc2V0TGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCAvIDI7CiAg
ICAgICAgICAgICB2YXIgeDIgPSBpZnJhbWUub2Zmc2V0TGVmdCArIGlmcmFtZS5vZmZzZXRXaWR0
aCAtIDIwOwogICAgICAgICAgICAgdmFyIHkgPSBpZnJhbWUub2Zmc2V0VG9wICsgdGFyZ2V0Lm9m
ZnNldFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgLyAyOwotICAgICAgICAKLSAgICAgICAgICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRhcmdldCwgMCwgdGFyZ2V0
LCAxKTsKKworICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cuZ2V0U2VsZWN0aW9uKCku
c2V0QmFzZUFuZEV4dGVudCh0YXJnZXQsIDAsIHRhcmdldCwgMSk7CiAgICAgICAgIAogICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeDEsIHkpOwogICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuZHJhZ01vZGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL3NjcmlwdC10ZXN0cy9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLmpzIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1Eb2N1
bWVudFR5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1NDVkZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NjcmlwdC10
ZXN0cy9ET01TZWxlY3Rpb24tRG9jdW1lbnRUeXBlLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0IHRvIGNoZWNrIGlmIHNldEJhc2VBbmRFeHRlbnQgZ3VhcmQgbm9kZSB3aXRo
IG51bGwgb3duZXIgZG9jdW1lbnQgKEJ1ZyAzMTY4MCkiKTsKKwordmFyIHNlbCA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKK3ZhciBkb2NUeXBlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3Jl
YXRlRG9jdW1lbnRUeXBlKCdjJyk7CisKK3NlbC5zZXRCYXNlQW5kRXh0ZW50KGRvY1R5cGUpOwor
c2hvdWxkQmVOdWxsKCJzZWwuYW5jaG9yTm9kZSIpOworCitzZWwuc2V0QmFzZUFuZEV4dGVudChu
dWxsLCAwLCBkb2NUeXBlLCAwKTsKK3Nob3VsZEJlTnVsbCgic2VsLmFuY2hvck5vZGUiKTsKKwor
c2VsLmNvbGxhcHNlKGRvY1R5cGUpOworc2hvdWxkQmVOdWxsKCJzZWwuYW5jaG9yTm9kZSIpOwor
CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oZG9jVHlwZSk7CitzaG91bGRCZU51bGwoInNlbC5hbmNo
b3JOb2RlIik7CisKK3NlbC5leHRlbmQoZG9jVHlwZSwgMCk7CitzaG91bGRCZU51bGwoInNlbC5h
bmNob3JOb2RlIik7CisKK3NlbC5jb250YWluc05vZGUoZG9jVHlwZSk7CitzaG91bGRCZU51bGwo
InNlbC5hbmNob3JOb2RlIik7CisKK3Nob3VsZEJlRmFsc2UoInNlbC5jb250YWluc05vZGUoZG9j
VHlwZSkiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9zY3JpcHQtdGVzdHMvRE9NU2VsZWN0aW9uLWNy
b3NzaW5nLWRvY3VtZW50LmpzIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0
LXRlc3RzL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1kb2N1bWVudC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40OGVlYTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vc2NyaXB0LXRlc3RzL0RPTVNlbGVjdGlvbi1jcm9zc2luZy1k
b2N1bWVudC5qcwpAQCAtMCwwICsxLDU5IEBACitkZXNjcmlwdGlvbigiVGVzdCB0byBjaGVjayBp
ZiBzZXRCYXNlQW5kRXh0ZW50IGd1YXJkIG5vZGUgd2l0aCBudWxsIG93bmVyIGRvY3VtZW50IChC
dWcgMzE2ODApIik7CisKK2Z1bmN0aW9uIG1ha2VFZGl0YWJsZURvY3VtZW50KGlkKQoreworICAg
IHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgdmFyIGRvYyA9IGlmcmFtZS5jb250
ZW50RG9jdW1lbnQ7CisgICAgZG9jLmJvZHkuaW5uZXJIVE1MID0gIjxodG1sPjxib2R5PjxkaXYg
aWQ9JyIgKyBpZCArICInIGNvbnRlbnRFZGl0YWJsZT5FZGl0YWJsZSBCbG9jayBmb3IgIiArIGlk
ICsgIi48L2Rpdj48L2JvZHk+PC9odG1sPiI7CisgICAgcmV0dXJuIGRvYzsKK30KKwordmFyIGZv
cmVpZ25Eb2MgPSBtYWtlRWRpdGFibGVEb2N1bWVudCgidGFyZ2V0Iik7Cit2YXIgZm9yZWlnbkVs
ZW1lbnQgPSBmb3JlaWduRG9jLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKK3ZhciBmb3JlaWdu
VGV4dCA9IGZvcmVpZ25FbGVtZW50LmZpcnN0Q2hpbGQ7Cit2YXIgZm9yZWlnblNlbCA9IGZvcmVp
Z25Eb2MuZ2V0U2VsZWN0aW9uKCk7CisKK3ZhciBtYWluRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworbWFpbkVsZW1lbnQuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKK21h
aW5FbGVtZW50LmlubmVySFRNTCA9ICJNYWluIFRleHQiOworZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChtYWluRWxlbWVudCk7Cit2YXIgbWFpblNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KworZnVuY3Rpb24gY2xlYXIoKQoreworICAgIGZvcmVpZ25TZWwuc2V0QmFzZUFuZEV4dGVudChu
dWxsLCAwLCBudWxsLCAwKTsKKyAgICBtYWluU2VsLnNldEJhc2VBbmRFeHRlbnQobnVsbCwgMCwg
bnVsbCwgMCk7Cit9CisKK21haW5TZWwuc2V0QmFzZUFuZEV4dGVudChmb3JlaWduRWxlbWVudCwg
MCwgZm9yZWlnbkVsZW1lbnQsIDApOworc2hvdWxkQmVOdWxsKCJmb3JlaWduU2VsLmFuY2hvck5v
ZGUiKTsKK3Nob3VsZEJlTnVsbCgibWFpblNlbC5hbmNob3JOb2RlIik7CisKK2NsZWFyKCk7Citt
YWluU2VsLnNldFBvc2l0aW9uKGZvcmVpZ25FbGVtZW50LCAwKTsKK3Nob3VsZEJlTnVsbCgiZm9y
ZWlnblNlbC5hbmNob3JOb2RlIik7CitzaG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9yTm9kZSIp
OworCitjbGVhcigpOworbWFpblNlbC5leHRlbmQoZm9yZWlnbkVsZW1lbnQsIDEpOworc2hvdWxk
QmVOdWxsKCJmb3JlaWduU2VsLmFuY2hvck5vZGUiKTsKK3Nob3VsZEJlTnVsbCgibWFpblNlbC5h
bmNob3JOb2RlIik7CisKK2NsZWFyKCk7CittYWluU2VsLnNlbGVjdEFsbENoaWxkcmVuKGZvcmVp
Z25FbGVtZW50LCAxKTsKK3Nob3VsZEJlTnVsbCgiZm9yZWlnblNlbC5hbmNob3JOb2RlIik7Citz
aG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9yTm9kZSIpOworCitjbGVhcigpOworbWFpblNlbC5j
b2xsYXBzZShmb3JlaWduRWxlbWVudCwgMCk7CitzaG91bGRCZU51bGwoImZvcmVpZ25TZWwuYW5j
aG9yTm9kZSIpOworc2hvdWxkQmVOdWxsKCJtYWluU2VsLmFuY2hvck5vZGUiKTsKKworLy8gU2hv
dWxkIG5vdCBhbGxvdyBlbGVtZW50cyB3aGljaCBjb21lIGZyb20gYW5vdGhlciBkb2N1bWVudC4K
K2NsZWFyKCk7CittYWluU2VsLnNldEJhc2VBbmRFeHRlbnQobWFpbkVsZW1lbnQsIDAsIGZvcmVp
Z25FbGVtZW50LCAwKTsKK3Nob3VsZEJlTnVsbCgiZm9yZWlnblNlbC5hbmNob3JOb2RlIik7Citz
aG91bGRCZU51bGwoIm1haW5TZWwuYW5jaG9yTm9kZSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYzg3MmJmNC4uZjQ0ZGZiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNC0wMSAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzIE5VTEwgcG9pbnRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2ODAKKyAgICAgICAgT3duZXJsZXNz
IG5vZGVzIGxlYWRzIGEgY3Jhc2ggb24gRE9NU2VsZWN0aW9uIEFQSXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2ODAwCisKKyAgICAgICAgQWRkZWQg
Z3VhcmRzIG5vZGVzIGZyb20gZm9yZWlnbiBkb2N1bWVudHMgdG8gRE9NU2VsZWN0aW9uIEFQSXMu
CisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL0RPTVNlbGVjdGlvbi1Eb2N1bWVu
dFR5cGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9zZWxlY3Rpb24vRE9NU2VsZWN0aW9u
LWNyb3NzaW5nLWRvY3VtZW50Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6Y2Fub25pY2FsUG9z
aXRpb24pOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNlbGVjdGlvbjo6Y29sbGFwc2UpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0
aW9uOjpzZXRCYXNlQW5kRXh0ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6
c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpleHRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjb250YWluc05vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NU2VsZWN0aW9uOjppc1ZhbGlkRm9yUG9zaXRpb24pOgorICAgICAgICAqIHBh
Z2UvRE9NU2VsZWN0aW9uLmg6CisKIDIwMTAtMDMtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTY0NTMuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDJkYjZkMzEuLjlkODBlMDQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC00NjIsNiArNDYyLDcgQEAgUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpjYW5vbmljYWxQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRp
b24pCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gUG9zaXRpb24oKTsKIAorICAgIEFT
U0VSVChub2RlLT5kb2N1bWVudCgpKTsKICAgICBub2RlLT5kb2N1bWVudCgpLT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9
IHBvc2l0aW9uLnVwc3RyZWFtKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDEyYWU1OWQuLjU5
YzliMGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC0yMDcsNiArMjA3LDEwIEBAIHZvaWQgRE9N
U2VsZWN0aW9uOjpjb2xsYXBzZShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIGlmICghaXNWYWxpZEZvclBvc2l0aW9uKG5vZGUpKQorICAgICAgICByZXR1cm47
CisKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW92ZVRvKFZpc2libGVQb3NpdGlvbihub2Rl
LCBvZmZzZXQsIERPV05TVFJFQU0pKTsKIH0KIApAQCAtMjQ0LDYgKzI0OCwxMCBAQCB2b2lkIERP
TVNlbGVjdGlvbjo6c2V0QmFzZUFuZEV4dGVudChOb2RlKiBiYXNlTm9kZSwgaW50IGJhc2VPZmZz
ZXQsIE5vZGUqIGV4dGVudAogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgaWYgKCFpc1ZhbGlkRm9yUG9zaXRpb24oYmFzZU5vZGUpIHx8
ICFpc1ZhbGlkRm9yUG9zaXRpb24oZXh0ZW50Tm9kZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlQmFzZSA9IFZpc2libGVQb3NpdGlvbihiYXNlTm9kZSwg
YmFzZU9mZnNldCwgRE9XTlNUUkVBTSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFeHRl
bnQgPSBWaXNpYmxlUG9zaXRpb24oZXh0ZW50Tm9kZSwgZXh0ZW50T2Zmc2V0LCBET1dOU1RSRUFN
KTsKIApAQCAtMjU4LDYgKzI2NiwxMCBAQCB2b2lkIERPTVNlbGVjdGlvbjo6c2V0UG9zaXRpb24o
Tm9kZSogbm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0g
SU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoIWlzVmFs
aWRGb3JQb3NpdGlvbihub2RlKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vdmVUbyhWaXNpYmxlUG9zaXRpb24obm9kZSwgb2Zmc2V0LCBET1dOU1RSRUFN
KSk7CiB9CiAKQEAgLTMyMCwxMyArMzMyLDE2IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpleHRlbmQo
Tm9kZSogbm9kZSwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBpZiAob2Zm
c2V0IDwgMCB8fCBvZmZzZXQgPiAobm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkgPyBjYXJldE1h
eE9mZnNldChub2RlKSA6IChpbnQpbm9kZS0+Y2hpbGROb2RlQ291bnQoKSkpIHsKICAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNlbGVj
dGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOwotICAgIHNl
bGVjdGlvbi0+c2V0RXh0ZW50KFZpc2libGVQb3NpdGlvbihub2RlLCBvZmZzZXQsIERPV05TVFJF
QU0pKTsKKyAgICBpZiAoIWlzVmFsaWRGb3JQb3NpdGlvbihub2RlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNldEV4dGVudChWaXNpYmxlUG9zaXRpb24o
bm9kZSwgb2Zmc2V0LCBET1dOU1RSRUFNKSk7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IERPTVNl
bGVjdGlvbjo6Z2V0UmFuZ2VBdChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDI4
LDcgKzQ0Myw3IEBAIGJvb2wgRE9NU2VsZWN0aW9uOjpjb250YWluc05vZGUoY29uc3QgTm9kZSog
biwgYm9vbCBhbGxvd1BhcnRpYWwpIGNvbnN0CiAKICAgICBTZWxlY3Rpb25Db250cm9sbGVyKiBz
ZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKIAotICAgIGlmICghbiB8fCBzZWxlY3Rp
b24tPmlzTm9uZSgpKQorICAgIGlmICghbiB8fCBtX2ZyYW1lLT5kb2N1bWVudCgpICE9IG4tPmRv
Y3VtZW50KCkgfHwgc2VsZWN0aW9uLT5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTm9kZSogcGFyZW50Tm9kZSA9IG4tPnBhcmVudE5vZGUoKTsKQEAgLTQ3MSw0ICs0ODYs
MTIgQEAgU3RyaW5nIERPTVNlbGVjdGlvbjo6dG9TdHJpbmcoKQogICAgIHJldHVybiBwbGFpblRl
eHQobV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCkpOwogfQogCitib29sIERPTVNlbGVjdGlvbjo6aXNWYWxpZEZvclBvc2l0aW9uKE5vZGUq
IG5vZGUpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIChub2RlLT5kb2N1bWVudCgpID09IG1fZnJh
bWUtPmRvY3VtZW50KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmggYi9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmgKaW5kZXggZTBmZTFlMy4uMDI4N2U0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNl
bGVjdGlvbi5oCisrKyBiL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uaApAQCAtOTYsNiArOTYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIENvbnZlbmllbmNlIG1ldGhvZCBm
b3IgYWNjZXNzb3JzLCBkb2VzIG5vdCBOVUxMIGNoZWNrIG1fZnJhbWUuCiAgICAgICAgIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHZpc2libGVTZWxlY3Rpb24oKSBjb25zdDsKIAorICAgICAgICBi
b29sIGlzVmFsaWRGb3JQb3NpdGlvbihOb2RlKikgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBtX2Zy
YW1lOwogICAgIH07CiAK
</data>
<flag name="review"
          id="35713"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="35830"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>