<?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>98725</bug_id>
          
          <creation_ts>2012-10-08 23:21:03 -0700</creation_ts>
          <short_desc>[V8] DOM wrapper objects should be collected in minor GC cycles</short_desc>
          <delta_ts>2012-11-14 00:55:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>mjs</cc>
    
    <cc>peter+ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737446</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-08 23:21:03 -0700</bug_when>
    <thetext>V8 implements a generational GC, but V8 cannot collect any (dependent) DOM wrapper objects in minor GC cycles. All (dependent) DOM wrapper objects have to survive two minor GC cycles, be promoted to the old space, and wait for a heavy major GC cycle. We should fix the poor behavior.

You can find more detailed discussion in bug 88834. In bug 88834, we had tried to fix the behavior by introducing a new DOM reference counting. However, we could not land the DOM reference counting because there was no definite benefit on other ports like JSC. So we started to seek for another algorithm that affects V8 and V8 binding only, with little change in WebCore/dom.

This work requires a WebKit side fix and a V8 side fix. The WebKit side fix is tracked in this bug. The V8 side fix is tracked here (https://chromiumcodereview.appspot.com/11085015/).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737452</commentid>
    <comment_count>1</comment_count>
      <attachid>167696</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-08 23:27:54 -0700</bug_when>
    <thetext>Created attachment 167696
WIP: not for review

A detailed explanation and perf &amp; memory evaluation results will be coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737479</commentid>
    <comment_count>2</comment_count>
      <attachid>167696</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-09 00:26:44 -0700</bug_when>
    <thetext>Comment on attachment 167696
WIP: not for review

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

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:388
&gt; +    root-&gt;ref();
&gt; +    root-&gt;deref();

Why ref() and then deref() the root?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737492</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-09 00:43:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 167696 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167696&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8GCController.cpp:388
&gt; &gt; +    root-&gt;ref();
&gt; &gt; +    root-&gt;deref();
&gt; 
&gt; Why ref() and then deref() the root?

That&apos;s the tricky part.

- Ideally, m_edenNodes should be Vector&lt;RefPtr&lt;Node&gt;&gt;.

- But we want to implement m_edenNodes as Vector&lt;Node*&gt;. This is because (1) we want to avoid the overhead of ref() and deref(), and because (2) we cannot ref() a Node at the point where we push the Node to m_edenNodes. The Node is pushed to m_edenNodes inside the Node constructor. We should not call ref() inside the Node constructor because the Node is not yet adoptRef()ed.

- In order to implement m_edenNodes as Vector&lt;Node*&gt;, we add the following trick:

--- If an eden bit is set on a Node, we consider that the Node is ref()ed regardless of its reference count. In other words, even if the reference count is decremented to 0, we don&apos;t call removedLastRef() as long as an eden bit is set.

--- That being said, with the trick, we might fail calling removedLastRef(). To avoid that, we need to explicitly call removedLastRef() for a root node of each DOM tree. root-&gt;ref() and root-&gt;deref() do that. In other words, if the reference count of root is 0, it will trigger removedLastRef().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739615</commentid>
    <comment_count>4</comment_count>
      <attachid>168144</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-10 22:16:38 -0700</bug_when>
    <thetext>Created attachment 168144
Fixed all crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739617</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-10 22:18:11 -0700</bug_when>
    <thetext>No perf regression for Dromaeo DOM tests. Rather, +5% for Dromaeo/dom-modify thanks to the minor GC efforts. More detailed perf &amp; memory results will be coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739619</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-10 22:22:52 -0700</bug_when>
    <thetext>The minor GC suggested by this change is sometimes more conservative and sometimes less conservative than the minor GC suggested in bug 88834. I&apos;ll investigate the statistics again for real world web sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739682</commentid>
    <comment_count>7</comment_count>
      <attachid>168157</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-11 01:04:23 -0700</bug_when>
    <thetext>Created attachment 168157
pathological test cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745957</commentid>
    <comment_count>8</comment_count>
      <attachid>169542</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-18 21:33:56 -0700</bug_when>
    <thetext>Created attachment 169542
Updated pathological test cases

I&apos;ll upload the perf results in hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746172</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-19 02:52:43 -0700</bug_when>
    <thetext>I wrote up a design document for the GC algorithm.

A design document:
https://docs.google.com/a/google.com/document/d/16DeHrzkm3cO9XCPT1aK3Y5qgUxXB3RFmueqQWYmN2rI/edit#

Summary: First, the algorithm is politically simple in that it affects V8 and V8 binding only. Second, the algorithm is technically simple. Third, performance &amp; memory experiments demonstrated promising results; for real world applications, minor GC cycles reclaimed a substantial amount of memory (24 MB for Facebook, 235 MB for Google Calendar) with acceptable overhead (~10 ms per minor GC cycle).

You can find more detailed results of performance &amp; memory investigations:
https://docs.google.com/a/google.com/document/d/1h0-EsHu7T0sSMuZm5eE0r1e8sCAzY3weLvsDUpOSngE/edit#


Once the V8 side patch (https://chromiumcodereview.appspot.com/11085015/) is landed, I&apos;d like to set r? on the WebKit patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746517</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-19 12:11:03 -0700</bug_when>
    <thetext>&gt; &quot;Three months ago, we invented an algorithm to solve the problem. However, the algorithm required to change a core logic of DOM lifetime management in WebKIt. Consequently, we could not convince reviewers of other ports like JSC and failed to land the patch.&quot;

&gt; &quot;First, the algorithm is politically simple in that it affects V8 and V8 binding only.&quot;

Kentaro, it&apos;s a shame that this was your take-away from our review process. The WebKit Open Source project uses peer review to maintain a standard of quality in engineering. Peer review of your previous algorithms uncovered serious correctness, security, and performance problems. I personally devoted a lot of time to that peer review; so did other JSC and non-JSC WebKit engineers. *That&apos;s* why the algorithm needed improvement -- not because of some vague notion of politics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746557</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-19 12:50:59 -0700</bug_when>
    <thetext>I think it&apos;s fair to say that the previous approach had the disadvantage that it imposed costs on users of WebKit that did not receive counterbalancing benefits.  This approach better aligns the costs and benefits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746868</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-19 20:25:06 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Kentaro, it&apos;s a shame that this was your take-away from our review process. The WebKit Open Source project uses peer review to maintain a standard of quality in engineering. Peer review of your previous algorithms uncovered serious correctness, security, and performance problems. I personally devoted a lot of time to that peer review; so did other JSC and non-JSC WebKit engineers. *That&apos;s* why the algorithm needed improvement -- not because of some vague notion of politics.

I didn&apos;t mean that we gave up the previous patch because you rejected the patch. I just wanted to mean that there were little benefit in other ports and thus we could not convince communities to make a change to the core logic of WebKit. I reworded the sentences in the document. I would appreciate your constructive feedbacks in bug 88834.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760525</commentid>
    <comment_count>13</comment_count>
      <attachid>172758</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 04:38:48 -0800</bug_when>
    <thetext>Created attachment 172758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760547</commentid>
    <comment_count>14</comment_count>
      <attachid>172758</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 05:10:47 -0800</bug_when>
    <thetext>Comment on attachment 172758
Patch

Attachment 172758 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14761288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760558</commentid>
    <comment_count>15</comment_count>
      <attachid>172758</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-07 05:19:53 -0800</bug_when>
    <thetext>Comment on attachment 172758
Patch

Attachment 172758 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14744724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760568</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 05:31:05 -0800</bug_when>
    <thetext>It looks like I need to update DEPs of bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760798</commentid>
    <comment_count>17</comment_count>
      <attachid>172758</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 09:52:49 -0800</bug_when>
    <thetext>Comment on attachment 172758
Patch

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

&gt; Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h:51
&gt; +        V8GCController::newWrapperBorn(key);

Oh noes!  I&apos;m about to delete this function in order to generalize IntrusiveDOMWrapperMap to all ScriptWrappable objects.  We&apos;ll figure something out.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:238
&gt; +Vector&lt;Node*&gt; V8GCController::m_edenNodes;

Does this create a static initializer?  Typically we put these sorts of things inside functions to initialize them lazily.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:242
&gt; +    Vector&lt;v8::Persistent&lt;v8::Value&gt;, 11&gt; newSpaceWrappers;

11 -&gt; ??

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:255
&gt; +    while (true) {
&gt; +        ASSERT(node);
&gt; +        if (traverseStarted &amp;&amp; node == startNode)
&gt; +            break;
&gt; +        traverseStarted = true;

Why not just use a do { ... } while loop?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:265
&gt; +            // A once traversed node is evacuated from the Eden space.

evacuated -&gt; removed

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:280
&gt; +        if (node-&gt;firstChild()) {
&gt; +            node = node-&gt;firstChild();
&gt; +            continue;
&gt; +        }
&gt; +        while (!node-&gt;nextSibling()) {
&gt; +            if (!node-&gt;parentNode())
&gt; +                break;
&gt; +            node = node-&gt;parentNode();
&gt; +        }
&gt; +        if (node-&gt;parentNode())
&gt; +            node = node-&gt;nextSibling();

Isn&apos;t there a node-&gt;traverseNext function that does this work for us?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:286
&gt; +    for (unsigned i = 0; i &lt; newSpaceWrappers.size(); i++)

unsigned -&gt; size_t

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:302
&gt; +    if (m_edenNodes.size() &lt;= 10000) {

10000 -&gt; can we name this constant?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:311
&gt; +    minorGCPrologue();

We do the minorGCPrologue even for major GCs?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:324
&gt; +    for (unsigned i = 0; i &lt; m_edenNodes.size(); i++) {

unsigned -&gt; size_t

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:325
&gt; +        ASSERT(m_edenNodes[i]-&gt;wrapper());

ASSERT(!m_edenNodes[i]-&gt;wrapper().IsEmpty())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760919</commentid>
    <comment_count>18</comment_count>
      <attachid>172847</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 11:28:42 -0800</bug_when>
    <thetext>Created attachment 172847
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760920</commentid>
    <comment_count>19</comment_count>
      <attachid>172758</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 11:30:01 -0800</bug_when>
    <thetext>Comment on attachment 172758
Patch

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

I will wait to land the patch until I can roll out chromium-deps of the bots.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:238
&gt;&gt; +Vector&lt;Node*&gt; V8GCController::m_edenNodes;
&gt; 
&gt; Does this create a static initializer?  Typically we put these sorts of things inside functions to initialize them lazily.

Fixed, but would you check if I&apos;m doing the right thing?

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:242
&gt;&gt; +    Vector&lt;v8::Persistent&lt;v8::Value&gt;, 11&gt; newSpaceWrappers;
&gt; 
&gt; 11 -&gt; ??

In a discussion somewhere, we concluded that the best number to collect nodes in a DOM tree would be 11. ContainerNode.h has &quot;typedef Vector&lt;RefPtr&lt;Node&gt;, 11&gt; NodeVector&quot;.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:255
&gt;&gt; +        traverseStarted = true;
&gt; 
&gt; Why not just use a do { ... } while loop?

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:265
&gt;&gt; +            // A once traversed node is evacuated from the Eden space.
&gt; 
&gt; evacuated -&gt; removed

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:280
&gt;&gt; +            node = node-&gt;nextSibling();
&gt; 
&gt; Isn&apos;t there a node-&gt;traverseNext function that does this work for us?

It&apos;s a bit different from node-&gt;traverseNextNode(). traverseNextNode() assumes that it starts traversing from the root node and ends at the root node. On the other hand, here we want to start traversing from any node until the DFS traversal comes back to the original node. Also, the above code is a bit faster than traverseNextNode().

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:286
&gt;&gt; +    for (unsigned i = 0; i &lt; newSpaceWrappers.size(); i++)
&gt; 
&gt; unsigned -&gt; size_t

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:302
&gt;&gt; +    if (m_edenNodes.size() &lt;= 10000) {
&gt; 
&gt; 10000 -&gt; can we name this constant?

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:311
&gt;&gt; +    minorGCPrologue();
&gt; 
&gt; We do the minorGCPrologue even for major GCs?

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:324
&gt;&gt; +    for (unsigned i = 0; i &lt; m_edenNodes.size(); i++) {
&gt; 
&gt; unsigned -&gt; size_t

Done.

&gt;&gt; Source/WebCore/bindings/v8/V8GCController.cpp:325
&gt;&gt; +        ASSERT(m_edenNodes[i]-&gt;wrapper());
&gt; 
&gt; ASSERT(!m_edenNodes[i]-&gt;wrapper().IsEmpty())

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760930</commentid>
    <comment_count>20</comment_count>
      <attachid>172847</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 11:38:14 -0800</bug_when>
    <thetext>Comment on attachment 172847
patch for landing

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

&gt; Source/WebCore/bindings/v8/IntrusiveDOMWrapperMap.h:51
&gt; +        V8GCController::newWrapperBorn(key);

newWrapperBorn sounds like it should return a new object.  Perhaps didCreateWrapperForNode ?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:243
&gt; +    Vector&lt;v8::Persistent&lt;v8::Value&gt;, 11&gt; newSpaceWrappers;

Can you add a comment referencing the connection between this constant and the one in ContainerNodeAlorithms?  It might be valuable to name the constant and share it that way.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:299
&gt; +        m_edenNodes = new Vector&lt;Node*&gt;();

Idiomatically we might want to write:

adoptPtr(new Vector&lt;Node*&gt;()).leakPtr()

That amounts to the same thing, but it makes it clear that we know that we&apos;re leaking this vector on purpose.

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:314
&gt; +    if (isMainThreadOrGCThread() &amp;&amp; m_edenNodes) {

Is it safe to touch m_edenNodes on the GC thread?

&gt; Source/WebCore/bindings/v8/V8GCController.cpp:324
&gt; +            ASSERT((*m_edenNodes)[i]-&gt;wrapper().IsEmpty());

(*m_edenNodes)[i] can bet written nicely as m_edenNodes-&gt;at(i)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761478</commentid>
    <comment_count>21</comment_count>
      <attachid>172962</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-08 01:43:03 -0800</bug_when>
    <thetext>Created attachment 172962
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761481</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-08 01:46:06 -0800</bug_when>
    <thetext>All comments addressed. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761498</commentid>
    <comment_count>23</comment_count>
      <attachid>172962</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 02:22:42 -0800</bug_when>
    <thetext>Comment on attachment 172962
patch for landing

Rejecting attachment 172962 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ntroller.o
Source/WebCore/bindings/v8/V8GCController.cpp: In function &apos;void WebCore::gcTree(WebCore::Node*)&apos;:
Source/WebCore/bindings/v8/V8GCController.cpp:281: error: &apos;struct v8::Persistent&lt;v8::Value&gt;&apos; has no member named &apos;MarkPartiallyDependent&apos;
  CXX(target) out/Release/obj.target/webcore_remaining/Source/WebCore/bindings/v8/V8HiddenPropertyName.o
make: *** [out/Release/obj.target/webcore_remaining/Source/WebCore/bindings/v8/V8GCController.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/14763483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761514</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-08 02:36:13 -0800</bug_when>
    <thetext>ah, the V8 roll was reverted. I need to wait for the next V8 roll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761632</commentid>
    <comment_count>25</comment_count>
      <attachid>172962</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-08 04:19:31 -0800</bug_when>
    <thetext>Comment on attachment 172962
patch for landing

Attachment 172962 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14763533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761903</commentid>
    <comment_count>26</comment_count>
      <attachid>172962</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 10:08:52 -0800</bug_when>
    <thetext>Comment on attachment 172962
patch for landing

Attachment 172962 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14762734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762084</commentid>
    <comment_count>27</comment_count>
      <attachid>172962</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-08 12:50:31 -0800</bug_when>
    <thetext>Comment on attachment 172962
patch for landing

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:114
&gt; +        wrapper.MakeWeak(object, weakCallbackForNode);

We don&apos;t need to introduce weakCallbackForNode.  Instead, we can just pass static_cast&lt;ScriptWrappable*&gt;(object) as the first argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763919</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-11 16:14:30 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; We don&apos;t need to introduce weakCallbackForNode.  Instead, we can just pass static_cast&lt;ScriptWrappable*&gt;(object) as the first argument.

Will fix. It looks like the V8 roll is not yet done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765377</commentid>
    <comment_count>29</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-13 01:10:30 -0800</bug_when>
    <thetext>The V8 roll including the V8 side patch was again reverted... Stay tuned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766556</commentid>
    <comment_count>30</comment_count>
      <attachid>174092</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-14 00:24:01 -0800</bug_when>
    <thetext>Created attachment 174092
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766580</commentid>
    <comment_count>31</comment_count>
      <attachid>174092</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 00:55:20 -0800</bug_when>
    <thetext>Comment on attachment 174092
patch for landing

Clearing flags on attachment: 174092

Committed r134569: &lt;http://trac.webkit.org/changeset/134569&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766581</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 00:55:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167696</attachid>
            <date>2012-10-08 23:27:54 -0700</date>
            <delta_ts>2012-10-10 22:16:34 -0700</delta_ts>
            <desc>WIP: not for review</desc>
            <filename>bug-98725-20121009152655.patch</filename>
            <type>text/plain</type>
            <size>11746</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY2OGJmYmE0ZTRlODU2
OGNhZTU5OWVlNTI5YWFlYjA1MjE3NjMwMi4uNjI5ODIyMWM4YWU3ZDI0ZTYwZDg0OTAyYjBkZWI5
ODE4YTA3OTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yay1pbi1wcm9ncmVz
cy4gTm90IHlldCBmb3IgcmV2aWV3LgorICAgICAgICBUaGlzIHBhdGNoIGRlcGVuZHMgb24gdGhl
IFY4IHBhdGNoIChodHRwczovL2Nocm9taXVtY29kZXJldmlldy5hcHBzcG90LmNvbS8xMTA4NTAx
NS8pLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVY4SWZOZWVk
ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4R0NDb250cm9sbGVyOjpuZXdOb2RlQm9ybik6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29u
dHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6
bWlub3JHQ1Byb2xvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptYWpv
ckdDUHJvbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9n
dWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NFcGlsb2d1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ0VwaWxvZ3VlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChWOEdDQ29udHJvbGxlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eTo6aW5pdElzb2xhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9jdXMpOgorICAgICAgICAqIHBsYXRm
b3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNo
YXJlZDo6aGFzT25lUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OmluRWRlbik6
CisgICAgICAgIChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OmNs
ZWFyRWRlbik6CisKIDIwMTItMTAtMDggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBpbWFnZSBub3QgZGlzcGxheWVkIGluIGZsZXhib3gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMTkzNmFlOGQwYTRi
ODNkYTEwNGJjZDFlNWM5NDUyY2EzYzczOTQ4OC4uNTAxZjM3MzBmYTMwMDFhODI1NTJhYzQzOWNl
ZTViMzYxNzJmNjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
aW5kb3dTaGVsbC5jcHAKQEAgLTE1MCw4ICsxNTAsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
VjhJZk5lZWRlZCgpCiAKICAgICB2ODo6Vjg6Oklnbm9yZU91dE9mTWVtb3J5RXhjZXB0aW9uKCk7
CiAgICAgdjg6OlY4OjpTZXRGYXRhbEVycm9ySGFuZGxlcihyZXBvcnRGYXRhbEVycm9yKTsKLSAg
ICB2ODo6Vjg6OlNldEdsb2JhbEdDUHJvbG9ndWVDYWxsYmFjaygmVjhHQ0NvbnRyb2xsZXI6Omdj
UHJvbG9ndWUpOwotICAgIHY4OjpWODo6U2V0R2xvYmFsR0NFcGlsb2d1ZUNhbGxiYWNrKCZWOEdD
Q29udHJvbGxlcjo6Z2NFcGlsb2d1ZSk7CisgICAgdjg6OlY4OjpBZGRHQ1Byb2xvZ3VlQ2FsbGJh
Y2soJlY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKTsKKyAgICB2ODo6Vjg6OkFkZEdDRXBpbG9n
dWVDYWxsYmFjaygmVjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUpOwogICAgIHY4OjpWODo6QWRk
TWVzc2FnZUxpc3RlbmVyKCZyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbik7CiAgICAgdjg6OlY4OjpT
ZXRGYWlsZWRBY2Nlc3NDaGVja0NhbGxiYWNrRnVuY3Rpb24ocmVwb3J0VW5zYWZlSmF2YVNjcmlw
dEFjY2Vzcyk7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggMGIzZGFkZThmZmY4Y2Q0
MTYxOTZmYmI5ZGY1NTRjMmQ5MmY4NzkyZS4uM2UxODdhYjc3ZTFiMjZhMmYwOGQ3MmM0MjRmNjE1
MjI3ZmU3YTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcApAQCAtMzMzLDkgKzMzMyw5MyBAQCBwcml2YXRlOgogICAgIEdyb3VwZXJMaXN0IG1f
Z3JvdXBlcjsKIH07CiAKK1ZlY3RvcjxOb2RlKj4gVjhHQ0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVz
OworCitzdGF0aWMgdm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ2NUcmVlKCkgYmVmb3JlOiAlcFxuIiwgc3RhcnROb2RlKTsKKyAgICBWZWN0
b3I8Tm9kZSosIDExPiB3cmFwcGVkTm9kZXM7CisKKyAgICBOb2RlKiBub2RlID0gc3RhcnROb2Rl
OworICAgIE5vZGUqIHJvb3QgPSAwOworICAgIGJvb2wgdHJhdmVyc2VTdGFydGVkID0gZmFsc2U7
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQVNTRVJUKG5vZGUpOworCisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAidHJhdmVyc2luZzogbm9kZT0lcFxuIiwgbm9kZSk7CisgICAgICAg
IGlmICh0cmF2ZXJzZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Tm9k
ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB0cmF2ZXJzZVN0
YXJ0ZWQgPSB0cnVlOworCisgICAgICAgIGlmICghbm9kZS0+aW5FZGVuKCkpIHsKKyAgICAgICAg
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+aW5FZGVuKCk6IG5vZGU9JXBcbiIsIG5vZGUp
OworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY1RyZWUoKSBhZnRlcjogJXAgZWFy
bHktcmV0dXJuXG4iLCBzdGFydE5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG5vZGUtPndyYXBwZXIoKSkgeworICAgICAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJub2RlLT53cmFwcGVyKCk6IG5vZGU9JXBcbiIsIG5vZGUpOworICAgICAgICAg
ICAgd3JhcHBlZE5vZGVzLmFwcGVuZChub2RlKTsKKyAgICAgICAgfQorICAgICAgICBub2RlLT5j
bGVhckVkZW4oKTsKKworICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAg
ICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICAgICAgICAgIHJvb3QgPSBu
b2RlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+
cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7Cisg
ICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZWROb2Rlcy5zaXplKCk7
IGkrKykKKyAgICAgICAgd3JhcHBlZE5vZGVzW2ldLT53cmFwcGVyKCktPk1hcmtFeHRlcm5hbGx5
VW5yZWFjaGFibGUoKTsKKworICAgIEFTU0VSVChyb290KTsKKyAgICByb290LT5yZWYoKTsKKyAg
ICByb290LT5kZXJlZigpOworCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY1RyZWUoKSBhZnRl
cjogJXBcbiIsIHN0YXJ0Tm9kZSk7Cit9CisKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6Om5ld05vZGVC
b3JuKE5vZGUqIG5vZGUpCit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJWOEdDQ29udHJvbGxl
cjo6bmV3Tm9kZUJvcm4oKTogJXBcbiIsIG5vZGUpOworICAgIG1fZWRlbk5vZGVzLmFwcGVuZChu
b2RlKTsKK30KKwordm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSh2ODo6R0NUeXBlIHR5
cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MgZmxhZ3MpCit7CisgICAgbWlub3JHQ1Byb2xvZ3VlKCk7
CisgICAgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0KQorICAgICAgICBt
YWpvckdDUHJvbG9ndWUoKTsKK30KKwordm9pZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xv
Z3VlKCkKK3sKKyAgICBpZiAoIWlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1By
b2xvZ3VlKClcbiIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZW5Ob2Rlcy5z
aXplKCk7IGkrKykgeworICAgICAgICBpZiAobV9lZGVuTm9kZXNbaV0tPmluRWRlbigpKQorICAg
ICAgICAgICAgZ2NUcmVlKG1fZWRlbk5vZGVzW2ldKTsKKyAgICB9CisgICAgbV9lZGVuTm9kZXMu
Y2xlYXIoKTsKK30KKwogLy8gQ3JlYXRlIG9iamVjdCBncm91cHMgZm9yIERPTSB0cmVlIG5vZGVz
Lgotdm9pZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSgpCit2b2lkIFY4R0NDb250cm9sbGVy
OjptYWpvckdDUHJvbG9ndWUoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiVjhHQ0NvbnRy
b2xsZXI6Om1ham9yR0NQcm9sb2d1ZSgpXG4iKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7
CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKQEAgLTQyNSw3ICs1MDksMjAgQEAgc3RhdGljIE11
dGV4JiB3b3JraW5nU2V0RXN0aW1hdGVNQk11dGV4KCkKIH0KICNlbmRpZgogCi12b2lkIFY4R0ND
b250cm9sbGVyOjpnY0VwaWxvZ3VlKCkKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUo
djg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQoreworICAgIGlmICh0
eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCisgICAgICAgIG1pbm9yR0NFcGlsb2d1ZSgpOwor
ICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0KQorICAgICAg
ICBtYWpvckdDRXBpbG9ndWUoKTsKK30KKwordm9pZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ0Vw
aWxvZ3VlKCkKK3sKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlY4R0NDb250cm9sbGVyOjptaW5v
ckdDRXBpbG9ndWUoKVxuIik7Cit9CisKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1ham9yR0NFcGls
b2d1ZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAppbmRleCBlMmQ0ZDc0NWY2MWI4NjEyNTdjMDI1
Mjk5OWVkMzViMmIwNzljZTVlLi44MGQ3NjM2NmVkZWQzZDFlNDY2ZjcxMTRkODlhY2Y4OWZjNzBl
YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKQEAg
LTMyLDE3ICszMiwyOCBAQAogI2RlZmluZSBWOEdDQ29udHJvbGxlcl9oCiAKICNpbmNsdWRlIDx2
OC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBOb2RlOworCiBjbGFzcyBWOEdDQ29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHZvaWQgZ2NQcm9sb2d1ZSgpOwotICAgIHN0YXRpYyB2b2lkIGdjRXBpbG9ndWUoKTsKKyAgICBz
dGF0aWMgdm9pZCBnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUsIHY4OjpHQ0NhbGxiYWNrRmxhZ3MpOwor
ICAgIHN0YXRpYyB2b2lkIGdjRXBpbG9ndWUodjg6OkdDVHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFn
cyk7CisgICAgc3RhdGljIHZvaWQgbWlub3JHQ1Byb2xvZ3VlKCk7CisgICAgc3RhdGljIHZvaWQg
bWlub3JHQ0VwaWxvZ3VlKCk7CisgICAgc3RhdGljIHZvaWQgbWFqb3JHQ1Byb2xvZ3VlKCk7Cisg
ICAgc3RhdGljIHZvaWQgbWFqb3JHQ0VwaWxvZ3VlKCk7CiAKICAgICBzdGF0aWMgdm9pZCBjaGVj
a01lbW9yeVVzYWdlKCk7CiAgICAgc3RhdGljIHZvaWQgaGludEZvckNvbGxlY3RHYXJiYWdlKCk7
CiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2UoKTsKKyAgICBzdGF0aWMgdm9pZCBuZXdO
b2RlQm9ybihOb2RlKik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4gbV9l
ZGVuTm9kZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCA5NjExZDQ3ZjM3YTM5
NDNkN2YwY2NjMjkwNzMyZGI5MDRjY2E1NjZjLi5lNTIyMDYxZjc0NzY1YzRjZTY5MTNlNmQ1NDVj
ZWFjNDcxMzc1NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTEyMiw4ICsxMjIsOCBAQCB2
b2lkIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdElzb2xhdGUoKQogICAgIHY4OjpW
ODo6SWdub3JlT3V0T2ZNZW1vcnlFeGNlcHRpb24oKTsKICAgICB2ODo6Vjg6OlNldEZhdGFsRXJy
b3JIYW5kbGVyKHJlcG9ydEZhdGFsRXJyb3JJblY4KTsKIAotICAgIHY4OjpWODo6U2V0R2xvYmFs
R0NQcm9sb2d1ZUNhbGxiYWNrKCZWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk7Ci0gICAgdjg6
OlY4OjpTZXRHbG9iYWxHQ0VwaWxvZ3VlQ2FsbGJhY2soJlY4R0NDb250cm9sbGVyOjpnY0VwaWxv
Z3VlKTsKKyAgICB2ODo6Vjg6OkFkZEdDUHJvbG9ndWVDYWxsYmFjaygmVjhHQ0NvbnRyb2xsZXI6
OmdjUHJvbG9ndWUpOworICAgIHY4OjpWODo6QWRkR0NFcGlsb2d1ZUNhbGxiYWNrKCZWOEdDQ29u
dHJvbGxlcjo6Z2NFcGlsb2d1ZSk7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBmb2xsb3dp
bmcgMiBsaW5lcyB3aGVuIFY4IGRlZmF1bHQgaGFzIGNoYW5nZWQuCiAgICAgY29uc3QgY2hhciBl
czVSZWFkb25seUZsYWdbXSA9ICItLWVzNV9yZWFkb25seSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDIxZjIwNGNkOTBmNzQyMmEwZDk2M2JjZTFjZDBjMTY5Njg3ODZiODcuLjIyMmE2ZjIxYzY4
YjcwZDNiZDEwYmRmZjA4YmM2NmY4YThmYTM1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00
Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU3RyaW5nV2l0aERpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CkBAIC0xNTQxLDYgKzE1NDIsOSBAQCBp
bmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlw
ZSkKICAgICB0cmFja0ZvckRlYnVnZ2luZygpOwogI2VuZGlmCiAgICAgSW5zcGVjdG9yQ291bnRl
cnM6OmluY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKKyNp
ZiBVU0UoVjgpCisgICAgVjhHQ0NvbnRyb2xsZXI6Om5ld05vZGVCb3JuKHRoaXMpOworI2VuZGlm
CiB9CiAKIE5vZGUqIGV2ZW50VGFyZ2V0Tm9kZUZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggZGQxMzE2OGQ5YzZkMjU5NGVmNzg0ZWM3YzMyYmNmNGUzYTM4
ODdmYy4uYzU5YzQ3Y2JlNTRiNGQ2NTE2YjlhNjQ3N2IzNDdlNzMxOGE2NzljYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMTU5NCw2ICsxNTk0LDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
RWxlbWVudDo6c3R5bGUoKQogCiB2b2lkIEVsZW1lbnQ6OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZp
b3VzU2VsZWN0aW9uKQogeworICAgIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudDo6Zm9jdXMoKSAl
cFxuIiwgdGhpcyk7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDA5NzM3Zjg5NzA1N2RmZGRkZWE4
MWU3Y2U5ZWEzZWFhY2U5NWU0OWYuLmI1OGQ3NmFiOTYxNGQ1NDQxMGMxZDMyMTY2ODNhNmViMmQw
MTEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTI1LDYgKzI1LDgg
QEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCisjZGVmaW5lIEVkZW5Ob2RlQml0TWFzayAoMHg4MDAwMDAwMCkKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMzcsMTIgKzM5LDE0IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gY2xhc3MgVHJlZVNo
YXJlZCB7CiBwcm90ZWN0ZWQ6CiAgICAgVHJlZVNoYXJlZCgpCiAgICAgICAgIDogbV9wYXJlbnQo
MCkKLSAgICAgICAgLCBtX3JlZkNvdW50KDEpCisgICAgICAgICwgbV9yZWZDb3VudChFZGVuTm9k
ZUJpdE1hc2sgfCAxKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBtX2Fkb3B0aW9uSXNSZXF1
aXJlZCh0cnVlKQogI2VuZGlmCiAgICAgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlRy
ZWVTaGFyZWQoKSAlcFxuIiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICAgIEFTU0VSVChpbkVkZW4oKSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2Rl
bGV0aW9uSGFzQmVndW4gPSBmYWxzZTsKICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24gPSBmYWxzZTsKQEAgLTUxLDYgKzU1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgflRyZWVTaGFy
ZWQoKQogICAgIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVw
XG4iLCB0aGlzKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNT
RVJUKCFtX3JlZkNvdW50KTsKICAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CkBA
IC03NCw3ICs3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVn
dW4pOwogICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAg
ICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7Ci0gICAgICAgIGlmICgtLW1fcmVmQ291
bnQgPD0gMCAmJiAhbV9wYXJlbnQpIHsKKyAgICAgICAgLS1tX3JlZkNvdW50OworICAgICAgICBp
ZiAoIW1fcmVmQ291bnQgJiYgIW1fcGFyZW50KSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAg
ICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogI2VuZGlmCkBAIC04Niw3ICs5
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7Ci0gICAgICAg
IHJldHVybiBtX3JlZkNvdW50ID09IDE7CisgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7
CiAgICAgfQogCiAgICAgaW50IHJlZkNvdW50KCkgY29uc3QKQEAgLTEwNiw2ICsxMTIsMjEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9wYXJlbnQ7CiAgICAgfQogCisgICAgYm9vbCBpbkVk
ZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgJiBFZGVuTm9kZUJpdE1hc2s7
CisgICAgfQorCisgICAgdm9pZCBjbGVhckVkZW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZE9yR0NUaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpbkVkZW4oKSk7CisgICAg
ICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgQVNTRVJUKCFtX2luUmVt
b3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgICAgIG1fcmVmQ291bnQgJj0gfkVkZW5Ob2RlQml0
TWFzazsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJjbGVhckVkZW4oKTogJXAgcmVmQ291
bnQ9JWRcbiIsIHRoaXMsIG1fcmVmQ291bnQpOworICAgIH0KKwogI2lmbmRlZiBOREVCVUcKICAg
ICBib29sIG1fZGVsZXRpb25IYXNCZWd1bjsKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uOwpAQCAtMTIzLDcgKzE0NCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFBhcmVu
dE5vZGVUeXBlKiBtX3BhcmVudDsKLSAgICBpbnQgbV9yZWZDb3VudDsKKyAgICB1bnNpZ25lZCBt
X3JlZkNvdW50OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9hZG9wdGlvbklzUmVxdWly
ZWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168144</attachid>
            <date>2012-10-10 22:16:38 -0700</date>
            <delta_ts>2012-11-07 04:38:44 -0800</delta_ts>
            <desc>Fixed all crashes</desc>
            <filename>bug-98725-20121011141536.patch</filename>
            <type>text/plain</type>
            <size>11194</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY2OGJmYmE0ZTRlODU2
OGNhZTU5OWVlNTI5YWFlYjA1MjE3NjMwMi4uZDY5NDhiMjg1N2I4NjUyZTA5MTMxOTgwYmI3YjFm
ZGI4NDNmMDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBXb3JrLWluLXByb2dy
ZXNzLiBOb3QgeWV0IGZvciByZXZpZXcuCisKKyAgICAgICAgLSBBIGRlc2lnbiBkb2N1bWVudCB3
aWxsIGJlIGNvbWluZyBzb29uLgorCisgICAgICAgIC0gVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHRo
ZSBWOCBwYXRjaCAoaHR0cHM6Ly9jaHJvbWl1bWNvZGVyZXZpZXcuYXBwc3BvdC5jb20vMTEwODUw
MTUvKS4KKworICAgICAgICAtIE5vIHBlcmYgcmVncmVzc2lvbiBpbiBEcm9tYWVvIERPTSB0ZXN0
cy4gKzUlIGZvciBEcm9tYWVvL2RvbS1tb2RpZnkuCisKKyAgICAgICAgLSBNb3JlIGRldGFpbGVk
IHBlcmYgJiBtZW1vcnkgcmVzdWx0cyB3aWxsIGJlIGNvbWluZyBzb29uLgorCisgICAgICAgIC0g
V2UgbmVlZCBhIFY4IEFQSSB0aGF0IGV4cGxpY2l0bHkgdHJpZ2dlcnMgYSBtaW5vciBHQyBhbmQg
d3JpdGUgdGVzdHMgZm9yIHRoaXMgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvSW50
cnVzaXZlRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50cnVzaXZlRE9NV3Jh
cHBlck1hcDo6c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVWOElmTmVlZGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdjVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6
bmV3V3JhcHBlckJvcm4pOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjUHJv
bG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NQcm9sb2d1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ1Byb2xvZ3VlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptaW5vckdDRXBpbG9ndWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1ham9yR0NFcGlsb2d1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhH
Q0NvbnRyb2xsZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJv
eHk6OmluaXRJc29sYXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmluRWRlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRFZGVu
KToKKyAgICAgICAgKE5vZGUpOgorCiAyMDEyLTEwLTA4ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgaW1hZ2Ugbm90IGRpc3BsYXllZCBpbiBmbGV4Ym94CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgK
aW5kZXggYWUyMGQwMzY5YjM0MTAzYTI4MzQ1ODMwZGFiOWZiN2M4ZDRiYWZkMC4uN2MxOWMyN2Q5
NzFmOWZlYTc0NzJjNzM1ZmU1OTdlMWE0NTIyYTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaApAQCAtMzIsNiArMzIsNyBA
QAogI2RlZmluZSBJbnRydXNpdmVET01XcmFwcGVyTWFwX2gKIAogI2luY2x1ZGUgIkRPTURhdGFT
dG9yZS5oIgorI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCkBAIC0xNTEsNiAr
MTUyLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW9iai0+d3JhcHBlcigpKTsKICAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4qIGVudHJ5ID0gbV90YWJsZS5hZGQod3JhcHBl
cik7CiAgICAgICAgIG9iai0+c2V0V3JhcHBlcihlbnRyeSk7CisgICAgICAgIFY4R0NDb250cm9s
bGVyOjpuZXdXcmFwcGVyQm9ybihvYmopOwogICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKG9iaiwg
d2Vha1JlZmVyZW5jZUNhbGxiYWNrKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxOTM2YWU4ZDBhNGI4M2RhMTA0
YmNkMWU1Yzk0NTJjYTNjNzM5NDg4Li41MDFmMzczMGZhMzAwMWE4MjU1MmFjNDM5Y2VlNWIzNjE3
MmY2MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcApAQCAtMTUwLDggKzE1MCw4IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVWOElmTmVl
ZGVkKCkKIAogICAgIHY4OjpWODo6SWdub3JlT3V0T2ZNZW1vcnlFeGNlcHRpb24oKTsKICAgICB2
ODo6Vjg6OlNldEZhdGFsRXJyb3JIYW5kbGVyKHJlcG9ydEZhdGFsRXJyb3IpOwotICAgIHY4OjpW
ODo6U2V0R2xvYmFsR0NQcm9sb2d1ZUNhbGxiYWNrKCZWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1
ZSk7Ci0gICAgdjg6OlY4OjpTZXRHbG9iYWxHQ0VwaWxvZ3VlQ2FsbGJhY2soJlY4R0NDb250cm9s
bGVyOjpnY0VwaWxvZ3VlKTsKKyAgICB2ODo6Vjg6OkFkZEdDUHJvbG9ndWVDYWxsYmFjaygmVjhH
Q0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUpOworICAgIHY4OjpWODo6QWRkR0NFcGlsb2d1ZUNhbGxi
YWNrKCZWOEdDQ29udHJvbGxlcjo6Z2NFcGlsb2d1ZSk7CiAgICAgdjg6OlY4OjpBZGRNZXNzYWdl
TGlzdGVuZXIoJnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uKTsKICAgICB2ODo6Vjg6OlNldEZhaWxl
ZEFjY2Vzc0NoZWNrQ2FsbGJhY2tGdW5jdGlvbihyZXBvcnRVbnNhZmVKYXZhU2NyaXB0QWNjZXNz
KTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCAwYjNkYWRlOGZmZjhjZDQxNjE5NmZi
YjlkZjU1NGMyZDkyZjg3OTJlLi5mMTZhMDAzODRkM2VmMTVlZTZjM2YxMDZkMTRkZWU4ODZkZDM5
NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
CkBAIC0zMzMsOCArMzMzLDk4IEBAIHByaXZhdGU6CiAgICAgR3JvdXBlckxpc3QgbV9ncm91cGVy
OwogfTsKIAorLy8gRm9yIGEgbWlub3IgR0MgYWxnb3JpdGhtIGZvciBET00gbm9kZXMsIHNlZSB0
aGlzIGRlc2lnbiBkb2N1bWVudDogeHh4eAorLy8KKy8vIG1fZWRlbk5vZGVzIHJlcHJlc2VudHMg
dGhlIEVkZW4gc3BhY2Ugb2YgRE9NIG5vZGVzIHRoYXQgaGF2ZSB3cmFwcGVycy4KKy8vIG1fZWRl
bk5vZGVzIHN0b3JlcyBub2RlcyB0aGF0IGhhdmUgd3JhcHBlcnMgdGhhdCBoYXZlIGJlZW4gY3Jl
YXRlZCBzaW5jZSB0aGUgbGFzdCBtaW5vci9tYWpvciBHQy4KKy8vIEFsbCB3cmFwcGVycyBvZiBu
b2RlcyBpbiB0aGUgRWRlbiBzcGFjZSBhcmUgZ3VhcmFudGVlZCB0byBleGlzdCBpbiB0aGUgbmV3
IHNwYWNlIG9mIFY4LgorLy8gQ29udmVyc2VseSwgbm90IGFsbCBub2RlcyBvZiB3cmFwcGVycyBp
biB0aGUgbmV3IHNwYWNlIGFyZSBpbiB0aGUgRWRlbiBzcGFjZS4KK1ZlY3RvcjxOb2RlKj4gVjhH
Q0NvbnRyb2xsZXI6Om1fZWRlbk5vZGVzOworCitzdGF0aWMgdm9pZCBnY1RyZWUoTm9kZSogc3Rh
cnROb2RlKQoreworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCAxMT4gbmV3
U3BhY2VXcmFwcGVyczsKKworICAgIC8vIFdlIHRyYXZlcnNlIGEgRE9NIHRyZWUgaW4gdGhlIERG
UyBvcmRlciBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4KKyAgICAvLyBUaGUgdHJhdmVyc2FsIG9y
ZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGRvZXMgbWF0dGVyIGZvciBw
ZXJmb3JtYW5jZS4KKyAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlOworICAgIGJvb2wgdHJhdmVy
c2VTdGFydGVkID0gZmFsc2U7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUpOworICAgICAgICBpZiAodHJhdmVyc2VTdGFydGVkICYmIG5vZGUgPT0gc3RhcnROb2RlKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHRyYXZlcnNlU3RhcnRlZCA9IHRydWU7CisKKyAg
ICAgICAgaWYgKG5vZGUtPndyYXBwZXIoKSkgeworICAgICAgICAgICAgaWYgKCFub2RlLT5pbkVk
ZW4oKSkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgd2UgZW5jb3VudGVyIGEg
bm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQorICAgICAgICAgICAgICAgIC8vIGlt
cGxpZXMgdGhhdCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0aGUgb2xkIHNwYWNlIG9mIFY4Lgor
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIG1pbm9yIEdDIGNhbm5v
dCBhbnl3YXkganVkZ2UgcmVhY2hhYmlsaXR5CisgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBE
T00gdHJlZS4gVGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcgdGhlIERPTSB0cmVlLgorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEEgb25jZSB0
cmF2ZXJzZWQgbm9kZSBpcyBldmFjdWF0ZWQgZnJvbSB0aGUgRWRlbiBzcGFjZS4KKyAgICAgICAg
ICAgIG5vZGUtPnNldEVkZW4oZmFsc2UpOworICAgICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5h
cHBlbmQoKm5vZGUtPndyYXBwZXIoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+
Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2Rl
KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAg
ICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKworICAgIC8vIEF0IHRoaXMg
cG9pbnQsIHdlIGNvbXBsZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgbm9kZXMgaW4g
dGhlIERPTSB0cmVlCisgICAgLy8gdGhhdCBoYXZlIHdyYXBwZXJzIGFyZSBpbiB0aGUgRWRlbiBz
cGFjZS4gVGhpcyBpbXBsaWVzIHRoYXQgYWxsIHdyYXBwZXJzIG9mIG5vZGVzCisgICAgLy8gaW4g
dGhlIERPTSB0cmVlIGV4aXN0IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguIFdlIHJlcG9ydCB0aG9z
ZSB3cmFwcGVycyB0byBWOAorICAgIC8vIGluIG9yZGVyIHRvIHRlbGwgVjggdGhhdCB0aG9zZSB3
cmFwcGVycyBhcmUgdW5yZWFjaGFibGUgaW4gdGhlIERPTSBzaWRlLgorICAgIC8vIFRoZW4gVjgn
cyBtaW5vciBHQyBqdWRnZXMgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aG9zZSB3cmFwcGVycyBhbmQg
cmVjbGFpbXMgd3JhcHBlcnMKKyAgICAvLyB0aGF0IGFyZSB1bnJlYWNoYWJsZSBib3RoIGluIHRo
ZSBET00gc2lkZSBhbmQgaW4gdGhlIFY4IHNpZGUuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpOyBpKyspCisgICAgICAgIG5ld1NwYWNlV3JhcHBl
cnNbaV0uTWFya0V4dGVybmFsbHlVbnJlYWNoYWJsZSgpOworICAgIGlmIChuZXdTcGFjZVdyYXBw
ZXJzLnNpemUoKSA+IDApCisgICAgICAgIHY4OjpWODo6QWRkT2JqZWN0R3JvdXAoJm5ld1NwYWNl
V3JhcHBlcnNbMF0sIG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpKTsKK30KKwordm9pZCBWOEdDQ29u
dHJvbGxlcjo6bmV3V3JhcHBlckJvcm4oTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+
d3JhcHBlcigpKTsKKyAgICAvLyBBIG5vZGUgb2YgYSBuZXdseSBjcmVhdGVkIHdyYXBwZXIgaXMg
cHV0IGludG8gdGhlIEVkZW4gc3BhY2UuCisgICAgbV9lZGVuTm9kZXMuYXBwZW5kKG5vZGUpOwor
ICAgIG5vZGUtPnNldEVkZW4odHJ1ZSk7Cit9CisKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjUHJv
bG9ndWUodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQoreworICAg
IG1pbm9yR0NQcm9sb2d1ZSgpOworICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVw
Q29tcGFjdCkKKyAgICAgICAgbWFqb3JHQ1Byb2xvZ3VlKCk7CisKKyAgICAvLyBUaGUgRWRlbiBz
cGFjZSBpcyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgorICAgIG1fZWRlbk5vZGVz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NQcm9sb2d1ZSgpCit7
CisgICAgaWYgKCFpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZW5Ob2Rlcy5zaXplKCk7IGkrKykgewor
ICAgICAgICBBU1NFUlQobV9lZGVuTm9kZXNbaV0tPndyYXBwZXIoKSk7CisgICAgICAgIGlmICht
X2VkZW5Ob2Rlc1tpXS0+aW5FZGVuKCkpIC8vIFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZv
cm1hbmNlLgorICAgICAgICAgICAgZ2NUcmVlKG1fZWRlbk5vZGVzW2ldKTsKKyAgICB9Cit9CisK
IC8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzIGZvciBET00gdHJlZSBub2Rlcy4KLXZvaWQgVjhHQ0Nv
bnRyb2xsZXI6OmdjUHJvbG9ndWUoKQordm9pZCBWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ1Byb2xv
Z3VlKCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKQEAgLTQyNSw3ICs1MTUsMTkg
QEAgc3RhdGljIE11dGV4JiB3b3JraW5nU2V0RXN0aW1hdGVNQk11dGV4KCkKIH0KICNlbmRpZgog
Ci12b2lkIFY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKCkKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6
OmdjRXBpbG9ndWUodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQor
eworICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCisgICAgICAgIG1pbm9yR0NF
cGlsb2d1ZSgpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21w
YWN0KQorICAgICAgICBtYWpvckdDRXBpbG9ndWUoKTsKK30KKwordm9pZCBWOEdDQ29udHJvbGxl
cjo6bWlub3JHQ0VwaWxvZ3VlKCkKK3sKK30KKwordm9pZCBWOEdDQ29udHJvbGxlcjo6bWFqb3JH
Q0VwaWxvZ3VlKCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IGUyZDRkNzQ1ZjYxYjg2MTI1
N2MwMjUyOTk5ZWQzNWIyYjA3OWNlNWUuLmZlNDBjODJhYjU0ZTkyMjlmNjU3YmJlYjQ0MTM3NjRk
ZTMyYWY5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIu
aApAQCAtMzIsMTcgKzMyLDI4IEBACiAjZGVmaW5lIFY4R0NDb250cm9sbGVyX2gKIAogI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIE5vZGU7CisKIGNsYXNzIFY4R0NDb250cm9sbGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgdm9pZCBnY1Byb2xvZ3VlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2NFcGlsb2d1ZSgpOwor
ICAgIHN0YXRpYyB2b2lkIGdjUHJvbG9ndWUodjg6OkdDVHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFn
cyk7CisgICAgc3RhdGljIHZvaWQgZ2NFcGlsb2d1ZSh2ODo6R0NUeXBlLCB2ODo6R0NDYWxsYmFj
a0ZsYWdzKTsKKyAgICBzdGF0aWMgdm9pZCBtaW5vckdDUHJvbG9ndWUoKTsKKyAgICBzdGF0aWMg
dm9pZCBtaW5vckdDRXBpbG9ndWUoKTsKKyAgICBzdGF0aWMgdm9pZCBtYWpvckdDUHJvbG9ndWUo
KTsKKyAgICBzdGF0aWMgdm9pZCBtYWpvckdDRXBpbG9ndWUoKTsKIAogICAgIHN0YXRpYyB2b2lk
IGNoZWNrTWVtb3J5VXNhZ2UoKTsKICAgICBzdGF0aWMgdm9pZCBoaW50Rm9yQ29sbGVjdEdhcmJh
Z2UoKTsKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOworICAgIHN0YXRpYyB2b2lk
IG5ld1dyYXBwZXJCb3JuKE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgVmVjdG9yPE5v
ZGUqPiBtX2VkZW5Ob2RlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDk2MTFk
NDdmMzdhMzk0M2Q3ZjBjY2MyOTA3MzJkYjkwNGNjYTU2NmMuLmU1MjIwNjFmNzQ3NjVjNGNlNjkx
M2U2ZDU0NWNlYWM0NzEzNzU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTIyLDggKzEy
Miw4IEBAIHZvaWQgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0SXNvbGF0ZSgpCiAg
ICAgdjg6OlY4OjpJZ25vcmVPdXRPZk1lbW9yeUV4Y2VwdGlvbigpOwogICAgIHY4OjpWODo6U2V0
RmF0YWxFcnJvckhhbmRsZXIocmVwb3J0RmF0YWxFcnJvckluVjgpOwogCi0gICAgdjg6OlY4OjpT
ZXRHbG9iYWxHQ1Byb2xvZ3VlQ2FsbGJhY2soJlY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKTsK
LSAgICB2ODo6Vjg6OlNldEdsb2JhbEdDRXBpbG9ndWVDYWxsYmFjaygmVjhHQ0NvbnRyb2xsZXI6
OmdjRXBpbG9ndWUpOworICAgIHY4OjpWODo6QWRkR0NQcm9sb2d1ZUNhbGxiYWNrKCZWOEdDQ29u
dHJvbGxlcjo6Z2NQcm9sb2d1ZSk7CisgICAgdjg6OlY4OjpBZGRHQ0VwaWxvZ3VlQ2FsbGJhY2so
JlY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhl
IGZvbGxvd2luZyAyIGxpbmVzIHdoZW4gVjggZGVmYXVsdCBoYXMgY2hhbmdlZC4KICAgICBjb25z
dCBjaGFyIGVzNVJlYWRvbmx5RmxhZ1tdID0gIi0tZXM1X3JlYWRvbmx5IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDVkODY0MGNiZTU3NTY3YmNhYjY1MzA2OTZiMWU2ZWYzNGQwYWYyNDkuLjExYTE4YTI1MDZj
NWJkODVjODkwYjk5ZjdiZWExNWQyNDZlODBmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzU0LDYgKzM1
NCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0V2ZW50VGFyZ2V0RGF0YSgpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoSGFzRXZlbnRUYXJnZXREYXRhRmxhZyk7IH0KICAgICB2b2lkIHNldEhhc0V2
ZW50VGFyZ2V0RGF0YShib29sIGZsYWcpIHsgc2V0RmxhZyhmbGFnLCBIYXNFdmVudFRhcmdldERh
dGFGbGFnKTsgfQogCisgICAgYm9vbCBpbkVkZW4oKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElu
RWRlbkZsYWcpOyB9CisgICAgdm9pZCBzZXRFZGVuKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcs
IEluRWRlbkZsYWcpOyB9CisKICAgICBlbnVtIFNob3VsZFNldEF0dGFjaGVkIHsKICAgICAgICAg
U2V0QXR0YWNoZWQsCiAgICAgICAgIERvTm90U2V0QXR0YWNoZWQKQEAgLTcxNSw5ICs3MTgsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjgsCiAg
ICAgICAgIEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkRmxhZyA9IDEgPDwgMjksCiAgICAgICAgIEhh
c0V2ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDMwLAorICAgICAgICBJbkVkZW5GbGFnID0gMSA8
PCAzMQogICAgIH07CiAKLSAgICAvLyAyIGJpdHMgcmVtYWluaW5nCisgICAgLy8gMSBiaXQgcmVt
YWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFn
cyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0o
aW50MzJfdClmICYgbWFzayk7IH0gCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>168157</attachid>
            <date>2012-10-11 01:04:23 -0700</date>
            <delta_ts>2012-10-11 01:04:23 -0700</delta_ts>
            <desc>pathological test cases</desc>
            <filename>gc_pathological.html</filename>
            <type>text/html</type>
            <size>2390</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgpmdW5jdGlvbiBnYygpIHsKICBmb3IgKHZhciBpID0gMDsg
aSA8IDUwMDAwOyBpKyspIHsKICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIH0K
fQoKZnVuY3Rpb24gcnVuKHRpdGxlLCByZXBlYXROdW0sIGZ1bmMsIHJvdW5kcykgewogIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgaWYgKCFyZXN1bHQp
IHsKICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKICB9CgogIHZhciByb3VuZHMgPSByb3Vu
ZHMgfHwgNTsKICB2YXIgdGltZXMgPSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsg
cisrKSB7CiAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwog
ICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7CiAgICB0aW1lcy5wdXNoKHRpbWUgKiAx
ZTYgLyByZXBlYXROdW0pOwogIH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1
cm4gYSAtIGI7IH0pOwogIHZhciBtZWRpYW4gPSB0aW1lc1tNYXRoLmZsb29yKHRpbWVzLmxlbmd0
aCAvIDIpXTsKICB2YXIgbWluID0gdGltZXNbMF07CiAgdmFyIG1heCA9IHRpbWVzW3RpbWVzLmxl
bmd0aCAtIDFdOwogIHZhciBzdW0gPSAwOwogIHZhciBzdW0yID0gMDsKICBmb3IgKHZhciBpID0g
MDsgaSA8IHRpbWVzLmxlbmd0aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgICBzdW0y
ICs9IHRpbWVzW2ldICogdGltZXNbaV07CiAgfQogIHZhciBhdmcgPSBzdW0gLyByb3VuZHM7CiAg
dmFyIGF2Z1RvdGFsID0gYXZnICogcmVwZWF0TnVtIC8gMWU2OwogIHZhciBzdGRldiA9IE1hdGgu
c3FydChzdW0yIC8gcm91bmRzIC0gYXZnICogYXZnKTsKCiAgcmVzdWx0LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlICsgIiA6IG1lYW49IiArIGF2Zy50b0ZpeGVkKDIp
ICsgIm5zLCBtaW49IiArIG1pbiArICJucywgbWVkaWFuPSIgKyBtZWRpYW4gKyAibnMsIG1heD0i
ICsgbWF4ICsgIm5zLCBzdGRldj0iICsgc3RkZXYudG9GaXhlZCgyKSArICJucywgdG90YWw9IiAr
IGF2Z1RvdGFsLnRvRml4ZWQoMikgKyAibXMiKSk7CiAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwp9CgpydW4oIkEgbG90IG9mIGNyZWF0ZUVsZW1lbnQo
KSIsIDUwMDAwMDAsIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogIGZvciAodmFyIGogPSAwOyBqIDwg
cmVwZWF0TnVtOyBqKyspIHsKICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIH0K
fSwgNSk7CgpydW4oIkNvbnN0cnVjdCBhIHRyZWUgYnkgYXBwZW5kQ2hpbGQoKSA9PiBNYWtlIHRo
ZSB0cmVlIHVucmVhY2hhYmxlIiwgNTAwMDAsIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogIGZvciAo
dmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGZvciAodmFyIGsgPSAwOyBrIDwgMTAwOyBrKyspIHsK
ICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAg
IH0KICB9Cn0sIDUpOwoKcnVuKCJDb25zdHJ1Y3QgYSB0cmVlIGJ5IGFwcGVuZENoaWxkKCkgPT4g
S2VlcCB0aGUgdHJlZSByZWFjaGFibGUiLCA1MDAwMCwgZnVuY3Rpb24ocmVwZWF0TnVtKSB7CiAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIGZvciAodmFyIGogPSAw
OyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgIGZvciAodmFyIGsgPSAwOyBrIDwgMTAwOyBrKysp
IHsKICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
ICAgIH0KICB9Cn0sIDUpOwoKZnVuY3Rpb24gZ2VuZXJhdGVCaW5ET01UcmVlKGRlcHRoKSB7CiAg
cmV0dXJuIGRlcHRoID09IDAgPyAiIiA6ICgiPGRpdj4iICsgZ2VuZXJhdGVCaW5ET01UcmVlKGRl
cHRoIC0gMSkgKyBnZW5lcmF0ZUJpbkRPTVRyZWUoZGVwdGggLSAxKSArICI8L2Rpdj4iKTsKfQoK
dmFyIGh0bWwgPSBnZW5lcmF0ZUJpbkRPTVRyZWUoNCk7CgpydW4oIkNvbnN0cnVjdCBhIHRyZWUg
YnkgaW5uZXJIVE1MID0+IE1ha2UgdGhlIHRyZWUgdW5yZWFjaGFibGUiLCAxMDAwMDAsIGZ1bmN0
aW9uKHJlcGVhdE51bSkgewogIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsK
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGRpdi5pbm5l
ckhUTUwgPSBodG1sOwogIH0KfSwgNSk7CgoKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>169542</attachid>
            <date>2012-10-18 21:33:56 -0700</date>
            <delta_ts>2012-10-18 21:33:56 -0700</delta_ts>
            <desc>Updated pathological test cases</desc>
            <filename>gc_pathological.html</filename>
            <type>text/html</type>
            <size>2299</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgpmdW5jdGlvbiBnYygpIHsKICBmb3IgKHZhciBpID0gMDsg
aSA8IDUwMDAwOyBpKyspIHsKICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogIH0K
fQoKZnVuY3Rpb24gcnVuKHRpdGxlLCByZXBlYXROdW0sIGZ1bmMsIHJvdW5kcykgewogIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CiAgaWYgKCFyZXN1bHQp
IHsKICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVzdWx0KTsKICB9CgogIHZhciByb3VuZHMgPSByb3Vu
ZHMgfHwgNTsKICB2YXIgdGltZXMgPSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsg
cisrKSB7CiAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwog
ICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7CiAgICB0aW1lcy5wdXNoKHRpbWUpOwog
IH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSAtIGI7IH0pOwogIHZh
ciBtZWRpYW4gPSB0aW1lc1tNYXRoLmZsb29yKHRpbWVzLmxlbmd0aCAvIDIpXTsKICB2YXIgbWlu
ID0gdGltZXNbMF07CiAgdmFyIG1heCA9IHRpbWVzW3RpbWVzLmxlbmd0aCAtIDFdOwogIHZhciBz
dW0gPSAwOwogIHZhciBzdW0yID0gMDsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbWVzLmxlbmd0
aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgICBzdW0yICs9IHRpbWVzW2ldICogdGlt
ZXNbaV07CiAgfQogIHZhciBhdmcgPSBzdW0gLyByb3VuZHM7CiAgdmFyIHN0ZGV2ID0gTWF0aC5z
cXJ0KHN1bTIgLyByb3VuZHMgLSBhdmcgKiBhdmcpOwoKICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUgKyAiIDogbWVhbj0iICsgYXZnLnRvRml4ZWQoMikg
KyAibXMsIG1pbj0iICsgbWluICsgIm1zLCBtZWRpYW49IiArIG1lZGlhbiArICJtcywgbWF4PSIg
KyBtYXggKyAibXMsIHN0ZGV2PSIgKyBzdGRldi50b0ZpeGVkKDIpICsgIm1zIikpOwogIHJlc3Vs
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKfQoKcnVuKCJBIGxv
dCBvZiBjcmVhdGVFbGVtZW50KCkiLCAxMDAwMDAsIGZ1bmN0aW9uKHJlcGVhdE51bSkgewogIGZv
ciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogIH0KfSwgMzAwKTsKCnJ1bigiQ29uc3RydWN0IGEgdHJlZSBieSBhcHBl
bmRDaGlsZCgpID0+IE1ha2UgdGhlIHRyZWUgdW5yZWFjaGFibGUiLCA1MDAwMCwgZnVuY3Rpb24o
cmVwZWF0TnVtKSB7CiAgZm9yICh2YXIgaiA9IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAg
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgZm9yICh2YXIgayA9
IDA7IGsgPCAxMDA7IGsrKykgewogICAgICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IikpOwogICAgfQogIH0KfSwgMTApOwoKcnVuKCJDb25zdHJ1Y3QgYSB0cmVl
IGJ5IGFwcGVuZENoaWxkKCkgPT4gS2VlcCB0aGUgdHJlZSByZWFjaGFibGUiLCA1MDAwMCwgZnVu
Y3Rpb24ocmVwZWF0TnVtKSB7CiAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwogIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBqKyspIHsKICAgIGZvciAodmFy
IGsgPSAwOyBrIDwgMTAwOyBrKyspIHsKICAgICAgZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgIH0KICB9Cn0sIDEwKTsKCmZ1bmN0aW9uIGdlbmVyYXRl
QmluRE9NVHJlZShkZXB0aCkgewogIHJldHVybiBkZXB0aCA9PSAwID8gIiIgOiAoIjxkaXY+IiAr
IGdlbmVyYXRlQmluRE9NVHJlZShkZXB0aCAtIDEpICsgZ2VuZXJhdGVCaW5ET01UcmVlKGRlcHRo
IC0gMSkgKyAiPC9kaXY+Iik7Cn0KCnZhciBodG1sID0gZ2VuZXJhdGVCaW5ET01UcmVlKDQpOwoK
cnVuKCJDb25zdHJ1Y3QgYSB0cmVlIGJ5IGlubmVySFRNTCA9PiBNYWtlIHRoZSB0cmVlIHVucmVh
Y2hhYmxlIiwgMTAwMDAwLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICBmb3IgKHZhciBqID0gMDsg
aiA8IHJlcGVhdE51bTsgaisrKSB7CiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICB9Cn0sIDEwKTsKCgo8L3Njcmlw
dD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172758</attachid>
            <date>2012-11-07 04:38:48 -0800</date>
            <delta_ts>2012-11-08 01:42:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98725-20121107133659.patch</filename>
            <type>text/plain</type>
            <size>10136</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2MzdkZDI0ZjcxOWMz
MmFlYmQ0OWNjYjkyNmMzNmU4ZWY2ZWY4Ni4uZTliYjQwN2ZlNGRjMTVlMGI0ZTFkMmQ4MTUxN2Zk
NWJkMzIxMjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBtaW5v
ciBHQyBjeWNsZXMgY2Fubm90IGNvbGxlY3QgRE9NIE5vZGVzLiBBbGwgRE9NIE5vZGVzCisgICAg
ICAgIGhhdmUgdG8gc3Vydml2ZSB0d28gbWlub3IgR0MgY3ljbGVzLCBiZSBwcm9tb3RlZCB0byB0
aGUgb2xkIHNwYWNlCisgICAgICAgIGFuZCB3YWl0IGZvciBhIGhlYXZ5IG1ham9yIEdDIGN5Y2xl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBWOCB0byBjb2xsZWN0IERPTSBOb2RlcyBp
biBtaW5vciBHQyBjeWNsZXMuCisgICAgICAgIEZvciByZWFsIHdvcmxkIGFwcGxpY2F0aW9ucywg
SSBjb25maXJtZWQgdGhhdCBtaW5vciBHQyBjeWNsZXMKKyAgICAgICAgcmVjbGFpbXMgYSBzdWJz
dGFudGlhbCBhbW91bnQgb2YgbWVtb3J5ICgyNCBNQiBmb3IgRmFjZWJvb2ssCisgICAgICAgIDIz
NSBNQiBmb3IgR29vZ2xlIENhbGVuZGFyKSB3aXRoIGFjY2VwdGFibGUgb3ZlcmhlYWQgKH4xMCBt
cworICAgICAgICBwZXIgbWlub3IgR0MgY3ljbGUpLiBObyBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
IGluIERyb21hZW8KKyAgICAgICAgRE9NIHRlc3RzLgorCisgICAgICAgIEEgZGVzaWduIGRvY3Vt
ZW50OiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vZG9jdW1lbnQvZC8xNkRl
SHJ6a20zY085WENQVDFhSzNZNXFnVXhYQjNSRm11ZXFRV1ltTjJySS9lZGl0CisgICAgICAgIFBl
cmZvcm1hbmNlIHJlc3VsdHM6IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9k
b2N1bWVudC9kLzFoMC1Fc0h1N1Qwc1NNdVptNWVFMHIxZThzQ0F6WTN3ZUx2c0RVcE9TbmdFL2Vk
aXQKKyAgICAgICAgQSBzbGlkZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29t
L3ByZXNlbnRhdGlvbi9kLzF1aWZ3VllHTllUWkRvR0x5Q2I3c1hhN2c0OW1XTk1XMmdhV3ZNTjVO
TGs4L2VkaXQjc2xpZGU9aWQucAorCisgICAgICAgICogYmluZGluZ3MvdjgvSW50cnVzaXZlRE9N
V3JhcHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50cnVzaXZlRE9NV3JhcHBlck1hcDo6
c2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVWOElmTmVlZGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmdjVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bmV3V3JhcHBl
ckJvcm4pOgorICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjUHJvbG9ndWUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhHQ0NvbnRyb2xsZXI6Om1pbm9yR0NQcm9sb2d1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWFqb3JHQ1Byb2xvZ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4R0NDb250cm9sbGVyOjptaW5vckdDRXBpbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6Om1ham9yR0NFcGlsb2d1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhHQ0NvbnRyb2xs
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHk6OmluaXRJ
c29sYXRlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmluRWRlbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRFZGVuKToKKyAgICAg
ICAgKE5vZGUpOgorCiAyMDEyLTExLTA2ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEltcGxlbWVudCBtb250aCBwaWNraW5nIHRvIGNhbGVuZGFyIHBpY2tl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3Jh
cHBlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oCmluZGV4IDEyMjQ2YjY3NTE2OWIxYzNkMDNkNmM2NDMzZmRiZDA1N2M2YmEyYTkuLmVh
M2FjNWUwY2EzMzhiYTQyZTU4Y2NkMzI4ZGQ0NjM5NjU0ZWFhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNkZWZpbmUgSW50cnVzaXZlRE9NV3JhcHBlck1hcF9oCiAKICNpbmNsdWRlICJE
T01XcmFwcGVyTWFwLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFT
U0VSVChrZXkgJiYga2V5LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKICAgICAgICAga2V5LT5zZXRX
cmFwcGVyKHdyYXBwZXIpOworICAgICAgICBWOEdDQ29udHJvbGxlcjo6bmV3V3JhcHBlckJvcm4o
a2V5KTsKICAgICAgICAgd3JhcHBlci5NYWtlV2VhayhrZXksIHdlYWtDYWxsYmFjayk7CiAgICAg
fQogCkBAIC03MSw2ICs3Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIGtleS0+Y2xlYXJXcmFwcGVy
KCk7CiAgICAgICAgIHZhbHVlLkRpc3Bvc2UoKTsKICAgICAgICAgdmFsdWUuQ2xlYXIoKTsKKyAg
ICAgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0aGF0IDUwJX4gb2YgbWlub3IgR0MgY3ljbGUgdGlt
ZXMgY2FuIGJlIGNvbnN1bWVkCisgICAgICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNo
IGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCisgICAgICAgIC8vIG1ha2UgTm9k
ZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwuCiAgICAgICAgIGtleS0+ZGVyZWYoKTsKICAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDdhNjc5MzA1YWRkMmQxMDkxYmRlYWU1NTYwNzhiZmQ3ODFiYzM2NWMuLjJmZGEyMjI2ZjMy
ZTg0ODM3NTY4ZDRkYmEyMDlkNjEwMDRlMjk3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTIzMSwxOCArMjMxLDEwNCBAQCBwcml2YXRl
OgogICAgIFdyYXBwZXJHcm91cGVyIG1fZ3JvdXBlcjsKIH07CiAKKy8vIFJlZ2FyZGluZyBhIG1p
bm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1bWVudDoKKy8vIGh0
dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8xdWlmd1ZZ
R05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3NsaWRlPWlkLnAKKy8v
CisvLyBtX2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdyYXBwZXJzIHRoYXQgaGF2
ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3IgR0MuCitWZWN0b3I8Tm9k
ZSo+IFY4R0NDb250cm9sbGVyOjptX2VkZW5Ob2RlczsKKworc3RhdGljIHZvaWQgZ2NUcmVlKE5v
ZGUqIHN0YXJ0Tm9kZSkKK3sKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwg
MTE+IG5ld1NwYWNlV3JhcHBlcnM7CisKKyAgICAvLyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGlu
IHRoZSBERlMgb3JkZXIgc3RhcnRpbmcgZnJvbSBzdGFydE5vZGUuCisgICAgLy8gVGhlIHRyYXZl
cnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgZm9yIGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRl
ciBmb3IgcGVyZm9ybWFuY2UuCisgICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICBib29s
IHRyYXZlcnNlU3RhcnRlZCA9IGZhbHNlOworICAgIC8vIFRvIG1ha2UgZWFjaCBtaW5vciBHQyB0
aW1lIGJvdW5kZWQsIHdlIG1pZ2h0IG5lZWQgdG8gZ2l2ZSB1cAorICAgIC8vIHRyYXZlcnNpbmcg
YXQgc29tZSBwb2ludCBmb3IgYSBsYXJnZSBET00gdHJlZS4gVGhhdCBiZWluZyBzYWlkLAorICAg
IC8vIEkgY291bGQgbm90IG9ic2VydmUgdGhlIG5lZWQgZXZlbiBpbiBwYXRob2xvZ2ljYWwgdGVz
dCBjYXNlcy4KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBBU1NFUlQobm9kZSk7CisgICAg
ICAgIGlmICh0cmF2ZXJzZVN0YXJ0ZWQgJiYgbm9kZSA9PSBzdGFydE5vZGUpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgdHJhdmVyc2VTdGFydGVkID0gdHJ1ZTsKKworICAgICAgICBpZiAo
IW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+aW5F
ZGVuKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZmFjdCB0aGF0IHdlIGVuY291bnRlciBh
IG5vZGUgdGhhdCBpcyBub3QgaW4gdGhlIEVkZW4gc3BhY2UKKyAgICAgICAgICAgICAgICAvLyBp
bXBsaWVzIHRoYXQgaXRzIHdyYXBwZXIgbWlnaHQgYmUgaW4gdGhlIG9sZCBzcGFjZSBvZiBWOC4K
KyAgICAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBtaW5vciBHQyBjYW5u
b3QgYW55d2F5IGp1ZGdlIHJlYWNoYWJpbGl0eQorICAgICAgICAgICAgICAgIC8vIG9mIHRoaXMg
RE9NIHRyZWUuIFRodXMgd2UgZ2l2ZSB1cCB0cmF2ZXJzaW5nIHRoZSBET00gdHJlZS4KKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBBIG9uY2Ug
dHJhdmVyc2VkIG5vZGUgaXMgZXZhY3VhdGVkIGZyb20gdGhlIEVkZW4gc3BhY2UuCisgICAgICAg
ICAgICBub2RlLT5zZXRFZGVuKGZhbHNlKTsKKyAgICAgICAgICAgIG5ld1NwYWNlV3JhcHBlcnMu
YXBwZW5kKG5vZGUtPndyYXBwZXIoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+
Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2Rl
KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAg
ICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAgIH0KKworICAgIC8vIFdlIGNvbXBs
ZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4gdGhlIERPTSB0cmVl
IGFyZQorICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhwZWN0ZWQg
dG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KKyAgICAvLyBXZSByZXBvcnQgdGhvc2Ug
d3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBuZXdTcGFjZVdy
YXBwZXJzW2ldLk1hcmtQYXJ0aWFsbHlEZXBlbmRlbnQoKTsKKyAgICBpZiAobmV3U3BhY2VXcmFw
cGVycy5zaXplKCkgPiAwKQorICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZuZXdTcGFj
ZVdyYXBwZXJzWzBdLCBuZXdTcGFjZVdyYXBwZXJzLnNpemUoKSk7Cit9CisKK3ZvaWQgVjhHQ0Nv
bnRyb2xsZXI6Om5ld1dyYXBwZXJCb3JuKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2Rl
LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAvLyBUbyBtYWtlIG1pbm9yIEdDIGN5Y2xlIHRp
bWUgYm91bmRlZCwgd2UgbGltaXQgdGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkCisgICAg
Ly8gYnkgZWFjaCBtaW5vciBHQyBjeWNsZSB0byAxMDAwMC4gVGhpcyB2YWx1ZSB3YXMgc2VsZWN0
ZWQgc28gdGhhdCB0aGUgbWlub3IKKyAgICAvLyBHQyBjeWNsZSB0aW1lIGlzIGJvdW5kZWQgdG8g
MjAgbXMgaW4gYSBjYXNlIHdoZXJlIHRoZSBuZXcgc3BhY2Ugc2l6ZQorICAgIC8vIGlzIDE2IE1C
IGFuZCBpdCBpcyBmdWxsIG9mIHdyYXBwZXJzICh3aGljaCBpcyBhbG1vc3QgdGhlIHdvcnN0IGNh
c2UpLgorICAgIC8vIFByYWN0aWNhbGx5IHNwZWFraW5nLCBhcyBmYXIgYXMgSSBjcmF3bGVkIHJl
YWwgd2ViIGFwcGxpY2F0aW9ucywKKyAgICAvLyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIGhhbmRs
ZWQgYnkgZWFjaCBtaW5vciBHQyBjeWNsZSBpcyBhdCBtb3N0IDMwMDAuCisgICAgLy8gU28gdGhp
cyBsaW1pdCBpcyBtYWlubHkgZm9yIHBhdGhvbG9naWNhbCBtaWNybyBiZW5jaG1hcmtzLgorICAg
IGlmIChtX2VkZW5Ob2Rlcy5zaXplKCkgPD0gMTAwMDApIHsKKyAgICAgICAgLy8gQSBub2RlIG9m
IGEgbmV3bHkgY3JlYXRlZCB3cmFwcGVyIGlzIHB1dCBpbnRvIHRoZSBFZGVuIHNwYWNlLgorICAg
ICAgICBtX2VkZW5Ob2Rlcy5hcHBlbmQobm9kZSk7CisgICAgICAgIG5vZGUtPnNldEVkZW4odHJ1
ZSk7CisgICAgfQorfQorCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKHY4OjpHQ1R5
cGUgdHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKIHsKLSAgICBpZiAodHlwZSA9PSB2
ODo6a0dDVHlwZVNjYXZlbmdlKQotICAgICAgICBtaW5vckdDUHJvbG9ndWUoKTsKLSAgICBlbHNl
IGlmICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkKKyAgICBtaW5vckdDUHJv
bG9ndWUoKTsKKyAgICBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZU1hcmtTd2VlcENvbXBhY3QpCiAg
ICAgICAgIG1ham9yR0NQcm9sb2d1ZSgpOworCisgICAgLy8gVGhlIEVkZW4gc3BhY2UgaXMgY2xl
YXJlZCBhdCBldmVyeSBtaW5vci9tYWpvciBHQy4KKyAgICBtX2VkZW5Ob2Rlcy5jbGVhcigpOwog
fQogCiB2b2lkIFY4R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUoKQogeworICAgIGlmICgh
aXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9lZGVuTm9kZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgQVNT
RVJUKG1fZWRlbk5vZGVzW2ldLT53cmFwcGVyKCkpOworICAgICAgICBpZiAobV9lZGVuTm9kZXNb
aV0tPmluRWRlbigpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KKyAg
ICAgICAgICAgIGdjVHJlZShtX2VkZW5Ob2Rlc1tpXSk7CisgICAgfQogfQogCisvLyBDcmVhdGUg
b2JqZWN0IGdyb3VwcyBmb3IgRE9NIHRyZWUgbm9kZXMuCiB2b2lkIFY4R0NDb250cm9sbGVyOjpt
YWpvckdDUHJvbG9ndWUoKQogewogICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAiR0MiKTsK
QEAgLTI2OSw5ICszNTUsOCBAQCBzdGF0aWMgTXV0ZXgmIHdvcmtpbmdTZXRFc3RpbWF0ZU1CTXV0
ZXgoKQogCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY0VwaWxvZ3VlKHY4OjpHQ1R5cGUgdHlwZSwg
djg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKIHsKLSAgICBpZiAodHlwZSA9PSB2ODo6a0dDVHlw
ZVNjYXZlbmdlKQotICAgICAgICBtaW5vckdDRXBpbG9ndWUoKTsKLSAgICBlbHNlIGlmICh0eXBl
ID09IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkKKyAgICBtaW5vckdDRXBpbG9ndWUoKTsK
KyAgICBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZU1hcmtTd2VlcENvbXBhY3QpCiAgICAgICAgIG1h
am9yR0NFcGlsb2d1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEdDQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuaAppbmRleCAxNTUxNjgxMjViNGViYjRjMTk0MGNhYTMzZTBhNjc1ZTVkZDMzOTI5
Li5mOGFmNDcyMmJkMDQ1YzcxMTIyN2U1YzZjMjNkMmNlNTdjY2NjMzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNk
ZWZpbmUgVjhHQ0NvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsNiArNTIsMTAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CiAKICAgICBzdGF0aWMgdm9p
ZCogb3BhcXVlUm9vdEZvckdDKE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBuZXdXcmFwcGVyQm9y
bihOb2RlKik7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4gbV9lZGVuTm9k
ZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NmU2MjExZDY3OTIwZmFiMDVjNzkxNzViMjQx
ZjEzOTA4YmUwZjIxLi5lMGY2MzZmZTJhZjFmYTYyYTE1ZWEzY2M5ODRhYzM1OTlhMGYxNTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTM2Myw2ICszNjMsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFdmVu
dFRhcmdldERhdGEoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEhhc0V2ZW50VGFyZ2V0RGF0YUZs
YWcpOyB9CiAgICAgdm9pZCBzZXRIYXNFdmVudFRhcmdldERhdGEoYm9vbCBmbGFnKSB7IHNldEZs
YWcoZmxhZywgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyk7IH0KIAorICAgIGJvb2wgaW5FZGVuKCkg
Y29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbkVkZW5GbGFnKTsgfQorICAgIHZvaWQgc2V0RWRlbihi
b29sIGZsYWcpIHsgc2V0RmxhZyhmbGFnLCBJbkVkZW5GbGFnKTsgfQorCiAgICAgZW51bSBTaG91
bGRTZXRBdHRhY2hlZCB7CiAgICAgICAgIFNldEF0dGFjaGVkLAogICAgICAgICBEb05vdFNldEF0
dGFjaGVkCkBAIC03MzYsOSArNzM5LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIEhhc0N1c3RvbUNh
bGxiYWNrc0ZsYWcgPSAxIDw8IDI4LAogICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZs
YWcgPSAxIDw8IDI5LAogICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAzMCwK
KyAgICAgICAgSW5FZGVuRmxhZyA9IDEgPDwgMzEKICAgICB9OwogCi0gICAgLy8gMiBiaXRzIHJl
bWFpbmluZworICAgIC8vIDEgYml0IHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVG
bGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lk
IHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9ICht
X25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172847</attachid>
            <date>2012-11-07 11:28:42 -0800</date>
            <delta_ts>2012-11-08 01:42:58 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-98725-20121107202653.patch</filename>
            <type>text/plain</type>
            <size>10385</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2MzdkZDI0ZjcxOWMz
MmFlYmQ0OWNjYjkyNmMzNmU4ZWY2ZWY4Ni4uMzllZjAyMjM4MjRlMDA0NGU4NTU0Y2VhMWRmNDlh
YmE0Njc4MmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBQcmV2aW91c2x5IG1pbm9yIEdD
IGN5Y2xlcyBjYW5ub3QgY29sbGVjdCBET00gTm9kZXMuIEFsbCBET00gTm9kZXMKKyAgICAgICAg
aGF2ZSB0byBzdXJ2aXZlIHR3byBtaW5vciBHQyBjeWNsZXMsIGJlIHByb21vdGVkIHRvIHRoZSBv
bGQgc3BhY2UKKyAgICAgICAgYW5kIHdhaXQgZm9yIGEgaGVhdnkgbWFqb3IgR0MgY3ljbGUuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIFY4IHRvIGNvbGxlY3QgRE9NIE5vZGVzIGluIG1p
bm9yIEdDIGN5Y2xlcy4KKyAgICAgICAgRm9yIHJlYWwgd29ybGQgYXBwbGljYXRpb25zLCBJIGNv
bmZpcm1lZCB0aGF0IG1pbm9yIEdDIGN5Y2xlcworICAgICAgICByZWNsYWltcyBhIHN1YnN0YW50
aWFsIGFtb3VudCBvZiBtZW1vcnkgKDI0IE1CIGZvciBGYWNlYm9vaywKKyAgICAgICAgMjM1IE1C
IGZvciBHb29nbGUgQ2FsZW5kYXIpIHdpdGggYWNjZXB0YWJsZSBvdmVyaGVhZCAofjEwIG1zCisg
ICAgICAgIHBlciBtaW5vciBHQyBjeWNsZSkuIE5vIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
RHJvbWFlbworICAgICAgICBET00gdGVzdHMuCisKKyAgICAgICAgQSBkZXNpZ24gZG9jdW1lbnQ6
IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzE2RGVIcnpr
bTNjTzlYQ1BUMWFLM1k1cWdVeFhCM1JGbXVlcVFXWW1OMnJJL2VkaXQKKyAgICAgICAgUGVyZm9y
bWFuY2UgcmVzdWx0czogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3Vt
ZW50L2QvMWgwLUVzSHU3VDBzU011Wm01ZUUwcjFlOHNDQXpZM3dlTHZzRFVwT1NuZ0UvZWRpdAor
ICAgICAgICBBIHNsaWRlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJl
c2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5Mazgv
ZWRpdCNzbGlkZT1pZC5wCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFw
cGVyTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRydXNpdmVET01XcmFwcGVyTWFwOjpzZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVY4SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpuZXdXcmFwcGVyQm9y
bik6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptYWpvckdDUHJvbG9ndWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6Om1pbm9yR0NFcGlsb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29u
dHJvbGxlcjo6bWFqb3JHQ0VwaWxvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOEdDQ29udHJvbGxlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdElzb2xh
dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmZvY3VzKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aW5FZGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEVkZW4pOgorICAgICAgICAo
Tm9kZSk6CisKIDIwMTItMTEtMDYgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgSW1wbGVtZW50IG1vbnRoIHBpY2tpbmcgdG8gY2FsZW5kYXIgcGlja2VyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVy
TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFw
LmgKaW5kZXggMTIyNDZiNjc1MTY5YjFjM2QwM2Q2YzY0MzNmZGJkMDU3YzZiYTJhOS4uZWEzYWM1
ZTBjYTMzOGJhNDJlNThjY2QzMjhkZDQ2Mzk2NTRlYWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaApAQCAtMzIsNiArMzIs
NyBAQAogI2RlZmluZSBJbnRydXNpdmVET01XcmFwcGVyTWFwX2gKIAogI2luY2x1ZGUgIkRPTVdy
YXBwZXJNYXAuaCIKKyNpbmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJU
KGtleSAmJiBrZXktPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICBrZXktPnNldFdyYXBw
ZXIod3JhcHBlcik7CisgICAgICAgIFY4R0NDb250cm9sbGVyOjpuZXdXcmFwcGVyQm9ybihrZXkp
OwogICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGtleSwgd2Vha0NhbGxiYWNrKTsKICAgICB9CiAK
QEAgLTcxLDYgKzczLDkgQEAgcHJpdmF0ZToKICAgICAgICAga2V5LT5jbGVhcldyYXBwZXIoKTsK
ICAgICAgICAgdmFsdWUuRGlzcG9zZSgpOwogICAgICAgICB2YWx1ZS5DbGVhcigpOworICAgICAg
ICAvLyBGSVhNRTogSSBub3RpY2VkIHRoYXQgNTAlfiBvZiBtaW5vciBHQyBjeWNsZSB0aW1lcyBj
YW4gYmUgY29uc3VtZWQKKyAgICAgICAgLy8gaW5zaWRlIGtleS0+ZGVyZWYoKSwgd2hpY2ggY2F1
c2VzIE5vZGUgZGVzdHJ1Y3Rpb25zLiBXZSBzaG91bGQKKyAgICAgICAgLy8gbWFrZSBOb2RlIGRl
c3RydWN0aW9ucyBpbmNyZW1lbnRhbC4KICAgICAgICAga2V5LT5kZXJlZigpOwogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXgg
N2E2NzkzMDVhZGQyZDEwOTFiZGVhZTU1NjA3OGJmZDc4MWJjMzY1Yy4uMjZhNTZhYTFmNmIxNDRk
NGVjMTBlMDAyNjFiMzk3ZTQ1N2UwM2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5v
ZGUuaCIKICNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAgLTIzMSwxOCArMjMyLDEw
MyBAQCBwcml2YXRlOgogICAgIFdyYXBwZXJHcm91cGVyIG1fZ3JvdXBlcjsKIH07CiAKKy8vIFJl
Z2FyZGluZyBhIG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1
bWVudDoKKy8vIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRp
b24vZC8xdWlmd1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3Ns
aWRlPWlkLnAKKy8vCisvLyBtX2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdyYXBw
ZXJzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3IgR0Mu
CitWZWN0b3I8Tm9kZSo+KiBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgPSAwOworCitzdGF0
aWMgdm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIFZlY3Rvcjx2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+LCAxMT4gbmV3U3BhY2VXcmFwcGVyczsKKworICAgIC8vIFdlIHRyYXZl
cnNlIGEgRE9NIHRyZWUgaW4gdGhlIERGUyBvcmRlciBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4K
KyAgICAvLyBUaGUgdHJhdmVyc2FsIG9yZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5l
c3MgYnV0IGRvZXMgbWF0dGVyIGZvciBwZXJmb3JtYW5jZS4KKyAgICBOb2RlKiBub2RlID0gc3Rh
cnROb2RlOworICAgIC8vIFRvIG1ha2UgZWFjaCBtaW5vciBHQyB0aW1lIGJvdW5kZWQsIHdlIG1p
Z2h0IG5lZWQgdG8gZ2l2ZSB1cAorICAgIC8vIHRyYXZlcnNpbmcgYXQgc29tZSBwb2ludCBmb3Ig
YSBsYXJnZSBET00gdHJlZS4gVGhhdCBiZWluZyBzYWlkLAorICAgIC8vIEkgY291bGQgbm90IG9i
c2VydmUgdGhlIG5lZWQgZXZlbiBpbiBwYXRob2xvZ2ljYWwgdGVzdCBjYXNlcy4KKyAgICBkbyB7
CisgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgaWYgKCFub2RlLT53cmFwcGVyKCkuSXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPmluRWRlbigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhlIGZhY3QgdGhhdCB3ZSBlbmNvdW50ZXIgYSBub2RlIHRoYXQgaXMgbm90IGlu
IHRoZSBFZGVuIHNwYWNlCisgICAgICAgICAgICAgICAgLy8gaW1wbGllcyB0aGF0IGl0cyB3cmFw
cGVyIG1pZ2h0IGJlIGluIHRoZSBvbGQgc3BhY2Ugb2YgVjguCisgICAgICAgICAgICAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgbWlub3IgR0MgY2Fubm90IGFueXdheSBqdWRnZSByZWFj
aGFiaWxpdHkKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIERPTSB0cmVlLiBUaHVzIHdlIGdp
dmUgdXAgdHJhdmVyc2luZyB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQSBvbmNlIHRyYXZlcnNlZCBub2RlIGlzIHJl
bW92ZWQgZnJvbSB0aGUgRWRlbiBzcGFjZS4KKyAgICAgICAgICAgIG5vZGUtPnNldEVkZW4oZmFs
c2UpOworICAgICAgICAgICAgbmV3U3BhY2VXcmFwcGVycy5hcHBlbmQobm9kZS0+d3JhcHBlcigp
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAg
ICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
ICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpOworICAgIH0gd2hpbGUgKG5vZGUgIT0gc3RhcnROb2RlKTsKKworICAgIC8vIFdlIGNv
bXBsZXRlZCB0aGUgRE9NIHRyZWUgdHJhdmVyc2FsLiBBbGwgd3JhcHBlcnMgaW4gdGhlIERPTSB0
cmVlIGFyZQorICAgIC8vIHN0b3JlZCBpbiBuZXdTcGFjZVdyYXBwZXJzIGFuZCBhcmUgZXhwZWN0
ZWQgdG8gZXhpc3QgaW4gdGhlIG5ldyBzcGFjZSBvZiBWOC4KKyAgICAvLyBXZSByZXBvcnQgdGhv
c2Ugd3JhcHBlcnMgdG8gVjggYXMgYW4gb2JqZWN0IGdyb3VwLgorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCk7IGkrKykKKyAgICAgICAgbmV3U3BhY2VX
cmFwcGVyc1tpXS5NYXJrUGFydGlhbGx5RGVwZW5kZW50KCk7CisgICAgaWYgKG5ld1NwYWNlV3Jh
cHBlcnMuc2l6ZSgpID4gMCkKKyAgICAgICAgdjg6OlY4OjpBZGRPYmplY3RHcm91cCgmbmV3U3Bh
Y2VXcmFwcGVyc1swXSwgbmV3U3BhY2VXcmFwcGVycy5zaXplKCkpOworfQorCit2b2lkIFY4R0ND
b250cm9sbGVyOjpuZXdXcmFwcGVyQm9ybihOb2RlKiBub2RlKQoreworICAgIC8vIFRvIG1ha2Ug
bWlub3IgR0MgY3ljbGUgdGltZSBib3VuZGVkLCB3ZSBsaW1pdCB0aGUgbnVtYmVyIG9mIHdyYXBw
ZXJzIGhhbmRsZWQKKyAgICAvLyBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIHRvIDEwMDAwLiBUaGlz
IHZhbHVlIHdhcyBzZWxlY3RlZCBzbyB0aGF0IHRoZSBtaW5vcgorICAgIC8vIEdDIGN5Y2xlIHRp
bWUgaXMgYm91bmRlZCB0byAyMCBtcyBpbiBhIGNhc2Ugd2hlcmUgdGhlIG5ldyBzcGFjZSBzaXpl
CisgICAgLy8gaXMgMTYgTUIgYW5kIGl0IGlzIGZ1bGwgb2Ygd3JhcHBlcnMgKHdoaWNoIGlzIGFs
bW9zdCB0aGUgd29yc3QgY2FzZSkuCisgICAgLy8gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIGFzIGZh
ciBhcyBJIGNyYXdsZWQgcmVhbCB3ZWIgYXBwbGljYXRpb25zLAorICAgIC8vIHRoZSBudW1iZXIg
b2Ygd3JhcHBlcnMgaGFuZGxlZCBieSBlYWNoIG1pbm9yIEdDIGN5Y2xlIGlzIGF0IG1vc3QgMzAw
MC4KKyAgICAvLyBTbyB0aGlzIGxpbWl0IGlzIG1haW5seSBmb3IgcGF0aG9sb2dpY2FsIG1pY3Jv
IGJlbmNobWFya3MuCisgICAgY29uc3QgdW5zaWduZWQgd3JhcHBlcnNIYW5kbGVkQnlFYWNoTWlu
b3JHQyA9IDEwMDAwOworICAgIEFTU0VSVCghbm9kZS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Cisg
ICAgaWYgKCFtX2VkZW5Ob2RlcykKKyAgICAgICAgbV9lZGVuTm9kZXMgPSBuZXcgVmVjdG9yPE5v
ZGUqPigpOworICAgIGlmIChtX2VkZW5Ob2Rlcy0+c2l6ZSgpIDw9IHdyYXBwZXJzSGFuZGxlZEJ5
RWFjaE1pbm9yR0MpIHsKKyAgICAgICAgLy8gQSBub2RlIG9mIGEgbmV3bHkgY3JlYXRlZCB3cmFw
cGVyIGlzIHB1dCBpbnRvIHRoZSBFZGVuIHNwYWNlLgorICAgICAgICBtX2VkZW5Ob2Rlcy0+YXBw
ZW5kKG5vZGUpOworICAgICAgICBub2RlLT5zZXRFZGVuKHRydWUpOworICAgIH0KK30KKwogdm9p
ZCBWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSh2ODo6R0NUeXBlIHR5cGUsIHY4OjpHQ0NhbGxi
YWNrRmxhZ3MgZmxhZ3MpCiB7CiAgICAgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVTY2F2ZW5nZSkK
ICAgICAgICAgbWlub3JHQ1Byb2xvZ3VlKCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSB2ODo6a0dD
VHlwZU1hcmtTd2VlcENvbXBhY3QpCiAgICAgICAgIG1ham9yR0NQcm9sb2d1ZSgpOworCisgICAg
aWYgKGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgeworICAgICAgICAv
LyBUaGUgRWRlbiBzcGFjZSBpcyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgorICAg
ICAgICBtX2VkZW5Ob2Rlcy0+Y2xlYXIoKTsKKyAgICB9CiB9CiAKIHZvaWQgVjhHQ0NvbnRyb2xs
ZXI6Om1pbm9yR0NQcm9sb2d1ZSgpCiB7CisgICAgaWYgKGlzTWFpblRocmVhZE9yR0NUaHJlYWQo
KSAmJiBtX2VkZW5Ob2RlcykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZWRl
bk5vZGVzLT5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgQVNTRVJUKCgqbV9lZGVuTm9kZXMp
W2ldLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmICgoKm1fZWRlbk5vZGVz
KVtpXS0+aW5FZGVuKCkpIC8vIFRoaXMgYnJhbmNoIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLgor
ICAgICAgICAgICAgICAgIGdjVHJlZSgoKm1fZWRlbk5vZGVzKVtpXSk7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKKy8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzIGZvciBET00gdHJlZSBub2Rlcy4KIHZv
aWQgVjhHQ0NvbnRyb2xsZXI6Om1ham9yR0NQcm9sb2d1ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlRf
QkVHSU4wKCJ2OCIsICJHQyIpOwpAQCAtMjY5LDkgKzM1NSw4IEBAIHN0YXRpYyBNdXRleCYgd29y
a2luZ1NldEVzdGltYXRlTUJNdXRleCgpCiAKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9n
dWUodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogewotICAgIGlm
ICh0eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCi0gICAgICAgIG1pbm9yR0NFcGlsb2d1ZSgp
OwotICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0KQorICAg
IG1pbm9yR0NFcGlsb2d1ZSgpOworICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVw
Q29tcGFjdCkKICAgICAgICAgbWFqb3JHQ0VwaWxvZ3VlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCmluZGV4IDE1NTE2ODEyNWI0ZWJiNGMxOTQw
Y2FhMzNlMGE2NzVlNWRkMzM5MjkuLjhmZTdiZTM3ZjI3ZjE0MDFkNjRkMmNhODU3MDhlZjdkZmJj
ZTMwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaApA
QCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBWOEdDQ29udHJvbGxlcl9oCiAKICNpbmNsdWRlIDx2
OC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01MSw2ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEdhcmJhZ2Uo
KTsKIAogICAgIHN0YXRpYyB2b2lkKiBvcGFxdWVSb290Rm9yR0MoTm9kZSopOworICAgIHN0YXRp
YyB2b2lkIG5ld1dyYXBwZXJCb3JuKE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgVmVj
dG9yPE5vZGUqPiogbV9lZGVuTm9kZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5NmU2MjEx
ZDY3OTIwZmFiMDVjNzkxNzViMjQxZjEzOTA4YmUwZjIxLi5lMGY2MzZmZTJhZjFmYTYyYTE1ZWEz
Y2M5ODRhYzM1OTlhMGYxNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM2Myw2ICszNjMsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNFdmVudFRhcmdldERhdGEoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcpOyB9CiAgICAgdm9pZCBzZXRIYXNFdmVudFRhcmdldERh
dGEoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyk7IH0K
IAorICAgIGJvb2wgaW5FZGVuKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbkVkZW5GbGFnKTsg
fQorICAgIHZvaWQgc2V0RWRlbihib29sIGZsYWcpIHsgc2V0RmxhZyhmbGFnLCBJbkVkZW5GbGFn
KTsgfQorCiAgICAgZW51bSBTaG91bGRTZXRBdHRhY2hlZCB7CiAgICAgICAgIFNldEF0dGFjaGVk
LAogICAgICAgICBEb05vdFNldEF0dGFjaGVkCkBAIC03MzYsOSArNzM5LDEwIEBAIHByaXZhdGU6
CiAgICAgICAgIEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDI4LAogICAgICAgICBIYXNT
Y29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDI5LAogICAgICAgICBIYXNFdmVudFRhcmdl
dERhdGFGbGFnID0gMSA8PCAzMCwKKyAgICAgICAgSW5FZGVuRmxhZyA9IDEgPDwgMzEKICAgICB9
OwogCi0gICAgLy8gMiBiaXRzIHJlbWFpbmluZworICAgIC8vIDEgYml0IHJlbWFpbmluZwogCiAg
ICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFn
cyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAm
IG1hc2spOyB9IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172962</attachid>
            <date>2012-11-08 01:43:03 -0800</date>
            <delta_ts>2012-11-14 00:23:57 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-98725-20121108104113.patch</filename>
            <type>text/plain</type>
            <size>12316</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYxN2NmOWM5ZDdiMWUz
Y2EyNTNkZTExMGZlM2JjMjBjNGUwNjczZi4uMzAzZjZmNjYxN2Y0MDA5YmZmN2JjNjJhYjkyNzFh
NWJhZGU1NjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBQcmV2aW91c2x5IG1pbm9yIEdD
IGN5Y2xlcyBjYW5ub3QgY29sbGVjdCBET00gTm9kZXMuIEFsbCBET00gTm9kZXMKKyAgICAgICAg
aGF2ZSB0byBzdXJ2aXZlIHR3byBtaW5vciBHQyBjeWNsZXMsIGJlIHByb21vdGVkIHRvIHRoZSBv
bGQgc3BhY2UKKyAgICAgICAgYW5kIHdhaXQgZm9yIGEgaGVhdnkgbWFqb3IgR0MgY3ljbGUuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIFY4IHRvIGNvbGxlY3QgRE9NIE5vZGVzIGluIG1p
bm9yIEdDIGN5Y2xlcy4KKyAgICAgICAgRm9yIHJlYWwgd29ybGQgYXBwbGljYXRpb25zLCBJIGNv
bmZpcm1lZCB0aGF0IG1pbm9yIEdDIGN5Y2xlcworICAgICAgICByZWNsYWltcyBhIHN1YnN0YW50
aWFsIGFtb3VudCBvZiBtZW1vcnkgKDI0IE1CIGZvciBGYWNlYm9vaywKKyAgICAgICAgMjM1IE1C
IGZvciBHb29nbGUgQ2FsZW5kYXIpIHdpdGggYWNjZXB0YWJsZSBvdmVyaGVhZCAofjEwIG1zCisg
ICAgICAgIHBlciBtaW5vciBHQyBjeWNsZSkuIE5vIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
RHJvbWFlbworICAgICAgICBET00gdGVzdHMuCisKKyAgICAgICAgQSBkZXNpZ24gZG9jdW1lbnQ6
IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzE2RGVIcnpr
bTNjTzlYQ1BUMWFLM1k1cWdVeFhCM1JGbXVlcVFXWW1OMnJJL2VkaXQKKyAgICAgICAgUGVyZm9y
bWFuY2UgcmVzdWx0czogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3Vt
ZW50L2QvMWgwLUVzSHU3VDBzU011Wm01ZUUwcjFlOHNDQXpZM3dlTHZzRFVwT1NuZ0UvZWRpdAor
ICAgICAgICBBIHNsaWRlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJl
c2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5Mazgv
ZWRpdCNzbGlkZT1pZC5wCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFw
cGVyTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRydXNpdmVET01XcmFwcGVyTWFwOjpzZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVY4SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpuZXdXcmFwcGVyQm9y
bik6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptYWpvckdDUHJvbG9ndWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6Om1pbm9yR0NFcGlsb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29u
dHJvbGxlcjo6bWFqb3JHQ0VwaWxvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOEdDQ29udHJvbGxlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdElzb2xh
dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmZvY3VzKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aW5FZGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEVkZW4pOgorICAgICAgICAo
Tm9kZSk6CisKIDIwMTItMTEtMDcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29sZSBlcnJvciBhZnRlciBpbnNwZWN0
aW5nIEluZGV4ZWREQgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5j
cHAKaW5kZXggNTk3ZTMxNDM0M2ZjZDlmNmE4YzdlNDk0ZWI5ZmRkMmM0YTQzMDNiOC4uMjAyYTFm
ZTY1NzdjMDc5MmY0Zjk5OGM1YmI0MWZhYzdjNjlhMDVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC04Nyw0ICs4NywyNCBAQCB2b2lkIERPTURh
dGFTdG9yZTo6d2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZv
aWQqIGNvbnRleHQpCiAgICAgaW5mby0+ZGVyZWZPYmplY3Qob2JqZWN0KTsKIH0KIAordm9pZCBE
T01EYXRhU3RvcmU6OndlYWtDYWxsYmFja0Zvck5vZGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
PiB2YWx1ZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBOb2RlKiBrZXkgPSBzdGF0aWNfY2FzdDxO
b2RlKj4oY29udGV4dCk7CisgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKKyAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpOworICAgIEFTU0VSVChrZXktPndyYXBwZXIoKSA9PSB3cmFwcGVyKTsK
KyAgICAvLyBOb3RlOiB8b2JqZWN0fCBtaWdodCBub3QgYmUgZXF1YWwgdG8gfGtleXwsIGUuZy4s
IGlmIFNjcmlwdFdyYXBwYWJsZSBpc24ndCBhIGxlZnQtbW9zdCBiYXNlIGNsYXNzLgorICAgIHZv
aWQqIG9iamVjdCA9IHRvTmF0aXZlKHdyYXBwZXIpOworICAgIFdyYXBwZXJUeXBlSW5mbyogaW5m
byA9IHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOworICAgIEFTU0VSVChpbmZvLT5kZXJlZk9i
amVjdEZ1bmN0aW9uKTsKKworICAgIGtleS0+Y2xlYXJXcmFwcGVyKCk7CisgICAgdmFsdWUuRGlz
cG9zZSgpOworICAgIHZhbHVlLkNsZWFyKCk7CisgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0aGF0
IDUwJX4gb2YgbWlub3IgR0MgY3ljbGUgdGltZXMgY2FuIGJlIGNvbnN1bWVkCisgICAgLy8gaW5z
aWRlIGtleS0+ZGVyZWYoKSwgd2hpY2ggY2F1c2VzIE5vZGUgZGVzdHJ1Y3Rpb25zLiBXZSBzaG91
bGQKKyAgICAvLyBtYWtlIE5vZGUgZGVzdHJ1Y3Rpb25zIGluY3JlbWVudGFsLgorICAgIGluZm8t
PmRlcmVmT2JqZWN0KG9iamVjdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggODY0NmRiNDNjZDU0MDEy
Mzk0NDkzYzIyYmQ4NTkwZWU1MWI2YmY0Zi4uOGU0ZDAyNGU4ZDZkNTQ5NDA5YTE5MTNmM2IwNGE3
YzllMGE5NzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJNYXAuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx2OC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAg
LTEwMyw4ICsxMDQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgd3JhcHBlci5NYWtlV2VhayhvYmpl
Y3QsIHdlYWtDYWxsYmFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBib29s
IHNldFdyYXBwZXJJbk9iamVjdChOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIpCisgICAgeworICAgICAgICBpZiAobV90eXBlICE9IE1haW5Xb3JsZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigp
LklzRW1wdHkoKSk7CisgICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKKyAgICAg
ICAgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0ZVdyYXBwZXJGb3JOb2RlKG9iamVjdCk7CisgICAg
ICAgIHdyYXBwZXIuTWFrZVdlYWsob2JqZWN0LCB3ZWFrQ2FsbGJhY2tGb3JOb2RlKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIGNvbnRleHQpOworICAgIHN0YXRpYyB2b2lk
IHdlYWtDYWxsYmFja0Zvck5vZGUodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogY29u
dGV4dCk7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBPd25QdHI8RE9NV3JhcHBlck1hcDx2b2lk
PiA+IG1fZG9tT2JqZWN0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDNkNDQwZWVlNzYyZDViN2Y3ZWFiYzczM2E0ZWMxNWQyYTViNjYw
YTEuLmEwZWJmYzhmMTQ1NmM2ZjlhYjczYjg4OWQwOTE5NTkzOGI1NjJjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF0dHIuaCIKKyNp
bmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCiAjaW5j
bHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50Lmgi
CkBAIC0yMzAsMTggKzIzMSwxMDMgQEAgcHJpdmF0ZToKICAgICBXcmFwcGVyR3JvdXBlciBtX2dy
b3VwZXI7CiB9OwogCisvLyBSZWdhcmRpbmcgYSBtaW5vciBHQyBhbGdvcml0aG0gZm9yIERPTSBu
b2Rlcywgc2VlIHRoaXMgZG9jdW1lbnQ6CisvLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dv
b2dsZS5jb20vcHJlc2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcy
Z2FXdk1ONU5MazgvZWRpdCNzbGlkZT1pZC5wCisvLworLy8gbV9lZGVuTm9kZXMgc3RvcmVzIG5v
ZGVzIHRoYXQgaGF2ZSB3cmFwcGVycyB0aGF0IGhhdmUgYmVlbiBjcmVhdGVkIHNpbmNlIHRoZSBs
YXN0IG1pbm9yL21ham9yIEdDLgorVmVjdG9yPE5vZGUqPiogVjhHQ0NvbnRyb2xsZXI6Om1fZWRl
bk5vZGVzID0gMDsKKworc3RhdGljIHZvaWQgZ2NUcmVlKE5vZGUqIHN0YXJ0Tm9kZSkKK3sKKyAg
ICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXpl
PiBuZXdTcGFjZVdyYXBwZXJzOworCisgICAgLy8gV2UgdHJhdmVyc2UgYSBET00gdHJlZSBpbiB0
aGUgREZTIG9yZGVyIHN0YXJ0aW5nIGZyb20gc3RhcnROb2RlLgorICAgIC8vIFRoZSB0cmF2ZXJz
YWwgb3JkZXIgZG9lcyBub3QgbWF0dGVyIGZvciBjb3JyZWN0bmVzcyBidXQgZG9lcyBtYXR0ZXIg
Zm9yIHBlcmZvcm1hbmNlLgorICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7CisgICAgLy8gVG8g
bWFrZSBlYWNoIG1pbm9yIEdDIHRpbWUgYm91bmRlZCwgd2UgbWlnaHQgbmVlZCB0byBnaXZlIHVw
CisgICAgLy8gdHJhdmVyc2luZyBhdCBzb21lIHBvaW50IGZvciBhIGxhcmdlIERPTSB0cmVlLiBU
aGF0IGJlaW5nIHNhaWQsCisgICAgLy8gSSBjb3VsZCBub3Qgb2JzZXJ2ZSB0aGUgbmVlZCBldmVu
IGluIHBhdGhvbG9naWNhbCB0ZXN0IGNhc2VzLgorICAgIGRvIHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUpOworICAgICAgICBpZiAoIW5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIGlmICghbm9kZS0+aW5FZGVuKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZmFjdCB0
aGF0IHdlIGVuY291bnRlciBhIG5vZGUgdGhhdCBpcyBub3QgaW4gdGhlIEVkZW4gc3BhY2UKKyAg
ICAgICAgICAgICAgICAvLyBpbXBsaWVzIHRoYXQgaXRzIHdyYXBwZXIgbWlnaHQgYmUgaW4gdGhl
IG9sZCBzcGFjZSBvZiBWOC4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0
IHRoZSBtaW5vciBHQyBjYW5ub3QgYW55d2F5IGp1ZGdlIHJlYWNoYWJpbGl0eQorICAgICAgICAg
ICAgICAgIC8vIG9mIHRoaXMgRE9NIHRyZWUuIFRodXMgd2UgZ2l2ZSB1cCB0cmF2ZXJzaW5nIHRo
ZSBET00gdHJlZS4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvLyBBIG9uY2UgdHJhdmVyc2VkIG5vZGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBFZGVu
IHNwYWNlLgorICAgICAgICAgICAgbm9kZS0+c2V0RWRlbihmYWxzZSk7CisgICAgICAgICAgICBu
ZXdTcGFjZVdyYXBwZXJzLmFwcGVuZChub2RlLT53cmFwcGVyKCkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5m
aXJzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB3
aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+cGFy
ZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9k
ZSgpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfSB3aGls
ZSAobm9kZSAhPSBzdGFydE5vZGUpOworCisgICAgLy8gV2UgY29tcGxldGVkIHRoZSBET00gdHJl
ZSB0cmF2ZXJzYWwuIEFsbCB3cmFwcGVycyBpbiB0aGUgRE9NIHRyZWUgYXJlCisgICAgLy8gc3Rv
cmVkIGluIG5ld1NwYWNlV3JhcHBlcnMgYW5kIGFyZSBleHBlY3RlZCB0byBleGlzdCBpbiB0aGUg
bmV3IHNwYWNlIG9mIFY4LgorICAgIC8vIFdlIHJlcG9ydCB0aG9zZSB3cmFwcGVycyB0byBWOCBh
cyBhbiBvYmplY3QgZ3JvdXAuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdTcGFjZVdy
YXBwZXJzLnNpemUoKTsgaSsrKQorICAgICAgICBuZXdTcGFjZVdyYXBwZXJzW2ldLk1hcmtQYXJ0
aWFsbHlEZXBlbmRlbnQoKTsKKyAgICBpZiAobmV3U3BhY2VXcmFwcGVycy5zaXplKCkgPiAwKQor
ICAgICAgICB2ODo6Vjg6OkFkZE9iamVjdEdyb3VwKCZuZXdTcGFjZVdyYXBwZXJzWzBdLCBuZXdT
cGFjZVdyYXBwZXJzLnNpemUoKSk7Cit9CisKK3ZvaWQgVjhHQ0NvbnRyb2xsZXI6OmRpZENyZWF0
ZVdyYXBwZXJGb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgLy8gVG8gbWFrZSBtaW5vciBHQyBj
eWNsZSB0aW1lIGJvdW5kZWQsIHdlIGxpbWl0IHRoZSBudW1iZXIgb2Ygd3JhcHBlcnMgaGFuZGxl
ZAorICAgIC8vIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgdG8gMTAwMDAuIFRoaXMgdmFsdWUgd2Fz
IHNlbGVjdGVkIHNvIHRoYXQgdGhlIG1pbm9yCisgICAgLy8gR0MgY3ljbGUgdGltZSBpcyBib3Vu
ZGVkIHRvIDIwIG1zIGluIGEgY2FzZSB3aGVyZSB0aGUgbmV3IHNwYWNlIHNpemUKKyAgICAvLyBp
cyAxNiBNQiBhbmQgaXQgaXMgZnVsbCBvZiB3cmFwcGVycyAod2hpY2ggaXMgYWxtb3N0IHRoZSB3
b3JzdCBjYXNlKS4KKyAgICAvLyBQcmFjdGljYWxseSBzcGVha2luZywgYXMgZmFyIGFzIEkgY3Jh
d2xlZCByZWFsIHdlYiBhcHBsaWNhdGlvbnMsCisgICAgLy8gdGhlIG51bWJlciBvZiB3cmFwcGVy
cyBoYW5kbGVkIGJ5IGVhY2ggbWlub3IgR0MgY3ljbGUgaXMgYXQgbW9zdCAzMDAwLgorICAgIC8v
IFNvIHRoaXMgbGltaXQgaXMgbWFpbmx5IGZvciBwYXRob2xvZ2ljYWwgbWljcm8gYmVuY2htYXJr
cy4KKyAgICBjb25zdCB1bnNpZ25lZCB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDID0gMTAw
MDA7CisgICAgQVNTRVJUKCFub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICBpZiAoIW1f
ZWRlbk5vZGVzKQorICAgICAgICBtX2VkZW5Ob2RlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Tm9k
ZSo+KS5sZWFrUHRyKCk7CisgICAgaWYgKG1fZWRlbk5vZGVzLT5zaXplKCkgPD0gd3JhcHBlcnNI
YW5kbGVkQnlFYWNoTWlub3JHQykgeworICAgICAgICAvLyBBIG5vZGUgb2YgYSBuZXdseSBjcmVh
dGVkIHdyYXBwZXIgaXMgcHV0IGludG8gdGhlIEVkZW4gc3BhY2UuCisgICAgICAgIG1fZWRlbk5v
ZGVzLT5hcHBlbmQobm9kZSk7CisgICAgICAgIG5vZGUtPnNldEVkZW4odHJ1ZSk7CisgICAgfQor
fQorCiB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUgdHlwZSwgdjg6
OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKIHsKICAgICBpZiAodHlwZSA9PSB2ODo6a0dDVHlwZVNj
YXZlbmdlKQogICAgICAgICBtaW5vckdDUHJvbG9ndWUoKTsKICAgICBlbHNlIGlmICh0eXBlID09
IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkKICAgICAgICAgbWFqb3JHQ1Byb2xvZ3VlKCk7
CisKKyAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7Cisg
ICAgICAgIC8vIFRoZSBFZGVuIHNwYWNlIGlzIGNsZWFyZWQgYXQgZXZlcnkgbWlub3IvbWFqb3Ig
R0MuCisgICAgICAgIG1fZWRlbk5vZGVzLT5jbGVhcigpOworICAgIH0KIH0KIAogdm9pZCBWOEdD
Q29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKCkKIHsKKyAgICBpZiAoaXNNYWluVGhyZWFkT3JH
Q1RocmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9lZGVuTm9kZXMtPnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1fZWRl
bk5vZGVzLT5hdChpKS0+d3JhcHBlcigpLklzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAobV9l
ZGVuTm9kZXMtPmF0KGkpLT5pbkVkZW4oKSkgLy8gVGhpcyBicmFuY2ggaXMganVzdCBmb3IgcGVy
Zm9ybWFuY2UuCisgICAgICAgICAgICAgICAgZ2NUcmVlKG1fZWRlbk5vZGVzLT5hdChpKSk7Cisg
ICAgICAgIH0KKyAgICB9CiB9CiAKKy8vIENyZWF0ZSBvYmplY3QgZ3JvdXBzIGZvciBET00gdHJl
ZSBub2Rlcy4KIHZvaWQgVjhHQ0NvbnRyb2xsZXI6Om1ham9yR0NQcm9sb2d1ZSgpCiB7CiAgICAg
VFJBQ0VfRVZFTlRfQkVHSU4wKCJ2OCIsICJHQyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4R0NDb250cm9sbGVyLmgKaW5kZXggMTU1MTY4MTI1YjRlYmI0YzE5NDBjYWEzM2UwYTY3
NWU1ZGQzMzkyOS4uODMwOGVjNmZiZWI3YTliODgwOTgzMzVkODgwYmU0MWEwMzQ5ZGQyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjZGVmaW5lIFY4R0NDb250cm9sbGVyX2gKIAogI2luY2x1ZGUgPHY4Lmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDYgKzUy
LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOwogCiAgICAg
c3RhdGljIHZvaWQqIG9wYXF1ZVJvb3RGb3JHQyhOb2RlKik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlV3JhcHBlckZvck5vZGUoTm9kZSopOworCitwcml2YXRlOgorICAgIHN0YXRpYyBWZWN0
b3I8Tm9kZSo+KiBtX2VkZW5Ob2RlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5oCmluZGV4IDY5YjVmNDIxYWNlY2ZjMjYxZmI0ZWE0YzRlZDkxMTZjYmEzMWE5OTkuLjQ4NWVj
ZGIzYzRkZmJhNmM1M2FiYzhkYmI3NDQyN2VlOTZkNmRiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuaApAQCAtMzE0LDcgKzMxNCwxMSBAQCBpbmxpbmUgTm9kZSogQ29udGFpbmVyTm9k
ZTo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBzdGF5V2l0aGluKSBjb25zdAogICAgIHJl
dHVybiB0cmF2ZXJzZU5leHRTaWJsaW5nKHN0YXlXaXRoaW4pOwogfQogCi10eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4sIDExPiBOb2RlVmVjdG9yOworLy8gVGhpcyBjb25zdGFudCBjb250cm9s
cyBob3cgbXVjaCBidWZmZXIgaXMgaW5pdGlhbGx5IGFsbG9jYXRlZAorLy8gZm9yIGEgTm9kZSBW
ZWN0b3IgdGhhdCBpcyB1c2VkIHRvIHN0b3JlIGNoaWxkIE5vZGVzIG9mIGEgZ2l2ZW4gTm9kZS4K
Ky8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgdmFsdWUuCitjb25zdCBpbnQgaW5pdGlhbE5vZGVWZWN0
b3JTaXplID0gMTE7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Tm9kZT4sIGluaXRpYWxOb2RlVmVj
dG9yU2l6ZT4gTm9kZVZlY3RvcjsKIAogaW5saW5lIHZvaWQgZ2V0Q2hpbGROb2RlcyhOb2RlKiBu
b2RlLCBOb2RlVmVjdG9yJiBub2RlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDY2NjQ1ZjQ4ZjVlMmQ0
MzQ1YWUyNDJmNjdiZWFmOTY1NTJlMzEzZDYuLmE1ZjEzZmUzZTMyMWJlMWJmYzNiMmVjOGRkMGZj
MTRkMjhkZGNhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzYyLDYgKzM2Miw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0V2ZW50VGFyZ2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzRXZl
bnRUYXJnZXREYXRhRmxhZyk7IH0KICAgICB2b2lkIHNldEhhc0V2ZW50VGFyZ2V0RGF0YShib29s
IGZsYWcpIHsgc2V0RmxhZyhmbGFnLCBIYXNFdmVudFRhcmdldERhdGFGbGFnKTsgfQogCisgICAg
Ym9vbCBpbkVkZW4oKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEluRWRlbkZsYWcpOyB9CisgICAg
dm9pZCBzZXRFZGVuKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcsIEluRWRlbkZsYWcpOyB9CisK
ICAgICBlbnVtIFNob3VsZFNldEF0dGFjaGVkIHsKICAgICAgICAgU2V0QXR0YWNoZWQsCiAgICAg
ICAgIERvTm90U2V0QXR0YWNoZWQKQEAgLTczNSw5ICs3MzgsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjgsCiAgICAgICAgIEhhc1Njb3BlZEhU
TUxTdHlsZUNoaWxkRmxhZyA9IDEgPDwgMjksCiAgICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZs
YWcgPSAxIDw8IDMwLAorICAgICAgICBJbkVkZW5GbGFnID0gMSA8PCAzMQogICAgIH07CiAKLSAg
ICAvLyAyIGJpdHMgcmVtYWluaW5nCisgICAgLy8gMSBiaXQgcmVtYWluaW5nCiAKICAgICBib29s
IGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFz
azsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1f
bm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7
IH0gCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174092</attachid>
            <date>2012-11-14 00:24:01 -0800</date>
            <delta_ts>2012-11-14 00:55:20 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-98725-20121114172201.patch</filename>
            <type>text/plain</type>
            <size>11433</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdjODZhOTlhN2VmYzM1
NzRiZjY4N2VkYTY2YWQ2ZjgwYzAyYTY1MC4uMDRmYTJmNzU1ZWJlYzJlNmM2N2FlMmIxODQ5N2Rl
YTc1YzZjNjYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIERPTSB3cmFw
cGVyIG9iamVjdHMgc2hvdWxkIGJlIGNvbGxlY3RlZCBpbiBtaW5vciBHQyBjeWNsZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBQcmV2aW91c2x5IG1pbm9yIEdD
IGN5Y2xlcyBjYW5ub3QgY29sbGVjdCBET00gTm9kZXMuIEFsbCBET00gTm9kZXMKKyAgICAgICAg
aGF2ZSB0byBzdXJ2aXZlIHR3byBtaW5vciBHQyBjeWNsZXMsIGJlIHByb21vdGVkIHRvIHRoZSBv
bGQgc3BhY2UKKyAgICAgICAgYW5kIHdhaXQgZm9yIGEgaGVhdnkgbWFqb3IgR0MgY3ljbGUuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBlbmFibGVzIFY4IHRvIGNvbGxlY3QgRE9NIE5vZGVzIGluIG1p
bm9yIEdDIGN5Y2xlcy4KKyAgICAgICAgRm9yIHJlYWwgd29ybGQgYXBwbGljYXRpb25zLCBJIGNv
bmZpcm1lZCB0aGF0IG1pbm9yIEdDIGN5Y2xlcworICAgICAgICByZWNsYWltcyBhIHN1YnN0YW50
aWFsIGFtb3VudCBvZiBtZW1vcnkgKDI0IE1CIGZvciBGYWNlYm9vaywKKyAgICAgICAgMjM1IE1C
IGZvciBHb29nbGUgQ2FsZW5kYXIpIHdpdGggYWNjZXB0YWJsZSBvdmVyaGVhZCAofjEwIG1zCisg
ICAgICAgIHBlciBtaW5vciBHQyBjeWNsZSkuIE5vIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
RHJvbWFlbworICAgICAgICBET00gdGVzdHMuCisKKyAgICAgICAgQSBkZXNpZ24gZG9jdW1lbnQ6
IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzE2RGVIcnpr
bTNjTzlYQ1BUMWFLM1k1cWdVeFhCM1JGbXVlcVFXWW1OMnJJL2VkaXQKKyAgICAgICAgUGVyZm9y
bWFuY2UgcmVzdWx0czogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3Vt
ZW50L2QvMWgwLUVzSHU3VDBzU011Wm01ZUUwcjFlOHNDQXpZM3dlTHZzRFVwT1NuZ0UvZWRpdAor
ICAgICAgICBBIHNsaWRlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vcHJl
c2VudGF0aW9uL2QvMXVpZndWWUdOWVRaRG9HTHlDYjdzWGE3ZzQ5bVdOTVcyZ2FXdk1ONU5Mazgv
ZWRpdCNzbGlkZT1pZC5wCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFw
cGVyTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRydXNpdmVET01XcmFwcGVyTWFwOjpzZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aW5pdGlhbGl6ZVY4SWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjpuZXdXcmFwcGVyQm9y
bik6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6Z2NQcm9sb2d1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4R0NDb250cm9sbGVyOjptYWpvckdDUHJvbG9ndWUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhHQ0NvbnRyb2xsZXI6OmdjRXBpbG9ndWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhH
Q0NvbnRyb2xsZXI6Om1pbm9yR0NFcGlsb2d1ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdDQ29u
dHJvbGxlcjo6bWFqb3JHQ0VwaWxvZ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOEdDQ29udHJvbGxlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdElzb2xh
dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmZvY3VzKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aW5FZGVuKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEVkZW4pOgorICAgICAgICAo
Tm9kZSk6CisKIDIwMTItMTEtMTMgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21h
aWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgY29tbW9uIGludGVyZmFj
ZSBmb3IgU3RhdHVzQmFyQnV0dG9uIGFuZCBTdGF0dXNCYXJDb21ibwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggODM5YzQzOTc0Mzk1ZGNiZWM4NWVj
ZWYwMjgzMTM4ZWNlOWFkZGJmZC4uZTNiYTkxMmUzOWQxMTAyNDQ5NTU5Njk5ODQ5M2UzN2UwMzYw
ZjU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBA
IC04Myw2ICs4Myw5IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKICAgICBrZXktPmNsZWFyV3Jh
cHBlcigpOwogICAgIHZhbHVlLkRpc3Bvc2UoKTsKICAgICB2YWx1ZS5DbGVhcigpOworICAgIC8v
IEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBi
ZSBjb25zdW1lZAorICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2Rl
IGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCisgICAgLy8gbWFrZSBOb2RlIGRlc3RydWN0aW9ucyBp
bmNyZW1lbnRhbC4KICAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3QpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmluZGV4IDRhZjljZTAxY2ExOTRlOWQw
MGE0YTE1NmIyYzZiY2NjZGM2YjhhYTkuLjM5MjBjNzgzNGUxNTRiMjAzOGZkYmYxMTdmMGNlYjVl
NGI4ZWZhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJET01XcmFwcGVyTWFwLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgorI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8djguaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0x
MDMsNiArMTA0LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHdyYXBwZXIuTWFrZVdlYWsob2JqZWN0
LCB3ZWFrQ2FsbGJhY2spOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgYm9vbCBz
ZXRXcmFwcGVySW5PYmplY3QoTm9kZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1fdHlwZSAhPSBNYWluV29ybGQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChvYmplY3QtPndyYXBwZXIoKS5J
c0VtcHR5KCkpOworICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlcik7CisgICAgICAg
IFY4R0NDb250cm9sbGVyOjpkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShvYmplY3QpOworICAgICAg
ICB3cmFwcGVyLk1ha2VXZWFrKHN0YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KG9iamVjdCks
IHdlYWtDYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBjb250
ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGU1ODBkNmZjOGEwZGU5MWQ3YmQ3OTYwZmNjODQxMWE5MDQxMTFhYzAuLjk4NzM3YjNi
YjU3NjBlM2U4YjBjMzFkMWIzZGUyNTI5ZTMyYThjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTIwOCwxOCArMjA4LDEwMyBAQCBwcml2
YXRlOgogICAgIFdyYXBwZXJHcm91cGVyIG1fZ3JvdXBlcjsKIH07CiAKKy8vIFJlZ2FyZGluZyBh
IG1pbm9yIEdDIGFsZ29yaXRobSBmb3IgRE9NIG5vZGVzLCBzZWUgdGhpcyBkb2N1bWVudDoKKy8v
IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9wcmVzZW50YXRpb24vZC8xdWlm
d1ZZR05ZVFpEb0dMeUNiN3NYYTdnNDltV05NVzJnYVd2TU41TkxrOC9lZGl0I3NsaWRlPWlkLnAK
Ky8vCisvLyBtX2VkZW5Ob2RlcyBzdG9yZXMgbm9kZXMgdGhhdCBoYXZlIHdyYXBwZXJzIHRoYXQg
aGF2ZSBiZWVuIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbWlub3IvbWFqb3IgR0MuCitWZWN0b3I8
Tm9kZSo+KiBWOEdDQ29udHJvbGxlcjo6bV9lZGVuTm9kZXMgPSAwOworCitzdGF0aWMgdm9pZCBn
Y1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+LCBpbml0aWFsTm9kZVZlY3RvclNpemU+IG5ld1NwYWNlV3JhcHBlcnM7CisKKyAgICAv
LyBXZSB0cmF2ZXJzZSBhIERPTSB0cmVlIGluIHRoZSBERlMgb3JkZXIgc3RhcnRpbmcgZnJvbSBz
dGFydE5vZGUuCisgICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgZm9y
IGNvcnJlY3RuZXNzIGJ1dCBkb2VzIG1hdHRlciBmb3IgcGVyZm9ybWFuY2UuCisgICAgTm9kZSog
bm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICAvLyBUbyBtYWtlIGVhY2ggbWlub3IgR0MgdGltZSBib3Vu
ZGVkLCB3ZSBtaWdodCBuZWVkIHRvIGdpdmUgdXAKKyAgICAvLyB0cmF2ZXJzaW5nIGF0IHNvbWUg
cG9pbnQgZm9yIGEgbGFyZ2UgRE9NIHRyZWUuIFRoYXQgYmVpbmcgc2FpZCwKKyAgICAvLyBJIGNv
dWxkIG5vdCBvYnNlcnZlIHRoZSBuZWVkIGV2ZW4gaW4gcGF0aG9sb2dpY2FsIHRlc3QgY2FzZXMu
CisgICAgZG8geworICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAgIGlmICghbm9kZS0+d3Jh
cHBlcigpLklzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFub2RlLT5pbkVkZW4oKSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoZSBmYWN0IHRoYXQgd2UgZW5jb3VudGVyIGEgbm9kZSB0aGF0
IGlzIG5vdCBpbiB0aGUgRWRlbiBzcGFjZQorICAgICAgICAgICAgICAgIC8vIGltcGxpZXMgdGhh
dCBpdHMgd3JhcHBlciBtaWdodCBiZSBpbiB0aGUgb2xkIHNwYWNlIG9mIFY4LgorICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIG1pbm9yIEdDIGNhbm5vdCBhbnl3YXkg
anVkZ2UgcmVhY2hhYmlsaXR5CisgICAgICAgICAgICAgICAgLy8gb2YgdGhpcyBET00gdHJlZS4g
VGh1cyB3ZSBnaXZlIHVwIHRyYXZlcnNpbmcgdGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEEgb25jZSB0cmF2ZXJzZWQg
bm9kZSBpcyByZW1vdmVkIGZyb20gdGhlIEVkZW4gc3BhY2UuCisgICAgICAgICAgICBub2RlLT5z
ZXRFZGVuKGZhbHNlKTsKKyAgICAgICAgICAgIG5ld1NwYWNlV3JhcHBlcnMuYXBwZW5kKG5vZGUt
PndyYXBwZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkg
eworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICAgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICB9
CisgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICBub2RlID0gbm9k
ZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9IHdoaWxlIChub2RlICE9IHN0YXJ0Tm9kZSk7CisKKyAg
ICAvLyBXZSBjb21wbGV0ZWQgdGhlIERPTSB0cmVlIHRyYXZlcnNhbC4gQWxsIHdyYXBwZXJzIGlu
IHRoZSBET00gdHJlZSBhcmUKKyAgICAvLyBzdG9yZWQgaW4gbmV3U3BhY2VXcmFwcGVycyBhbmQg
YXJlIGV4cGVjdGVkIHRvIGV4aXN0IGluIHRoZSBuZXcgc3BhY2Ugb2YgVjguCisgICAgLy8gV2Ug
cmVwb3J0IHRob3NlIHdyYXBwZXJzIHRvIFY4IGFzIGFuIG9iamVjdCBncm91cC4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpOyBpKyspCisgICAgICAg
IG5ld1NwYWNlV3JhcHBlcnNbaV0uTWFya1BhcnRpYWxseURlcGVuZGVudCgpOworICAgIGlmIChu
ZXdTcGFjZVdyYXBwZXJzLnNpemUoKSA+IDApCisgICAgICAgIHY4OjpWODo6QWRkT2JqZWN0R3Jv
dXAoJm5ld1NwYWNlV3JhcHBlcnNbMF0sIG5ld1NwYWNlV3JhcHBlcnMuc2l6ZSgpKTsKK30KKwor
dm9pZCBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBlckZvck5vZGUoTm9kZSogbm9kZSkK
K3sKKyAgICAvLyBUbyBtYWtlIG1pbm9yIEdDIGN5Y2xlIHRpbWUgYm91bmRlZCwgd2UgbGltaXQg
dGhlIG51bWJlciBvZiB3cmFwcGVycyBoYW5kbGVkCisgICAgLy8gYnkgZWFjaCBtaW5vciBHQyBj
eWNsZSB0byAxMDAwMC4gVGhpcyB2YWx1ZSB3YXMgc2VsZWN0ZWQgc28gdGhhdCB0aGUgbWlub3IK
KyAgICAvLyBHQyBjeWNsZSB0aW1lIGlzIGJvdW5kZWQgdG8gMjAgbXMgaW4gYSBjYXNlIHdoZXJl
IHRoZSBuZXcgc3BhY2Ugc2l6ZQorICAgIC8vIGlzIDE2IE1CIGFuZCBpdCBpcyBmdWxsIG9mIHdy
YXBwZXJzICh3aGljaCBpcyBhbG1vc3QgdGhlIHdvcnN0IGNhc2UpLgorICAgIC8vIFByYWN0aWNh
bGx5IHNwZWFraW5nLCBhcyBmYXIgYXMgSSBjcmF3bGVkIHJlYWwgd2ViIGFwcGxpY2F0aW9ucywK
KyAgICAvLyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIGhhbmRsZWQgYnkgZWFjaCBtaW5vciBHQyBj
eWNsZSBpcyBhdCBtb3N0IDMwMDAuCisgICAgLy8gU28gdGhpcyBsaW1pdCBpcyBtYWlubHkgZm9y
IHBhdGhvbG9naWNhbCBtaWNybyBiZW5jaG1hcmtzLgorICAgIGNvbnN0IHVuc2lnbmVkIHdyYXBw
ZXJzSGFuZGxlZEJ5RWFjaE1pbm9yR0MgPSAxMDAwMDsKKyAgICBBU1NFUlQoIW5vZGUtPndyYXBw
ZXIoKS5Jc0VtcHR5KCkpOworICAgIGlmICghbV9lZGVuTm9kZXMpCisgICAgICAgIG1fZWRlbk5v
ZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxOb2RlKj4pLmxlYWtQdHIoKTsKKyAgICBpZiAobV9l
ZGVuTm9kZXMtPnNpemUoKSA8PSB3cmFwcGVyc0hhbmRsZWRCeUVhY2hNaW5vckdDKSB7CisgICAg
ICAgIC8vIEEgbm9kZSBvZiBhIG5ld2x5IGNyZWF0ZWQgd3JhcHBlciBpcyBwdXQgaW50byB0aGUg
RWRlbiBzcGFjZS4KKyAgICAgICAgbV9lZGVuTm9kZXMtPmFwcGVuZChub2RlKTsKKyAgICAgICAg
bm9kZS0+c2V0RWRlbih0cnVlKTsKKyAgICB9Cit9CisKIHZvaWQgVjhHQ0NvbnRyb2xsZXI6Omdj
UHJvbG9ndWUodjg6OkdDVHlwZSB0eXBlLCB2ODo6R0NDYWxsYmFja0ZsYWdzIGZsYWdzKQogewog
ICAgIGlmICh0eXBlID09IHY4OjprR0NUeXBlU2NhdmVuZ2UpCiAgICAgICAgIG1pbm9yR0NQcm9s
b2d1ZSgpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gdjg6OmtHQ1R5cGVNYXJrU3dlZXBDb21wYWN0
KQogICAgICAgICBtYWpvckdDUHJvbG9ndWUoKTsKKworICAgIGlmIChpc01haW5UaHJlYWRPckdD
VGhyZWFkKCkgJiYgbV9lZGVuTm9kZXMpIHsKKyAgICAgICAgLy8gVGhlIEVkZW4gc3BhY2UgaXMg
Y2xlYXJlZCBhdCBldmVyeSBtaW5vci9tYWpvciBHQy4KKyAgICAgICAgbV9lZGVuTm9kZXMtPmNs
ZWFyKCk7CisgICAgfQogfQogCiB2b2lkIFY4R0NDb250cm9sbGVyOjptaW5vckdDUHJvbG9ndWUo
KQogeworICAgIGlmIChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkgJiYgbV9lZGVuTm9kZXMpIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VkZW5Ob2Rlcy0+c2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9lZGVuTm9kZXMtPmF0KGkpLT53cmFwcGVyKCkuSXNF
bXB0eSgpKTsKKyAgICAgICAgICAgIGlmIChtX2VkZW5Ob2Rlcy0+YXQoaSktPmluRWRlbigpKSAv
LyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgICAgICBn
Y1RyZWUobV9lZGVuTm9kZXMtPmF0KGkpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAorLy8gQ3Jl
YXRlIG9iamVjdCBncm91cHMgZm9yIERPTSB0cmVlIG5vZGVzLgogdm9pZCBWOEdDQ29udHJvbGxl
cjo6bWFqb3JHQ1Byb2xvZ3VlKCkKIHsKICAgICBUUkFDRV9FVkVOVF9CRUdJTjAoInY4IiwgIkdD
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuaAppbmRleCAx
NTUxNjgxMjViNGViYjRjMTk0MGNhYTMzZTBhNjc1ZTVkZDMzOTI5Li44MzA4ZWM2ZmJlYjdhOWI4
ODA5ODMzNWQ4ODBiZTQxYTAzNDlkZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4R0NDb250cm9sbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgVjhHQ0NvbnRyb2xs
ZXJfaAogCiAjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTEsNiArNTIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGNvbGxlY3RHYXJiYWdlKCk7CiAKICAgICBzdGF0aWMgdm9pZCogb3BhcXVlUm9vdEZvckdD
KE5vZGUqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXcmFwcGVyRm9yTm9kZShOb2RlKik7
CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFZlY3RvcjxOb2RlKj4qIG1fZWRlbk5vZGVzOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNjliNWY0MjFhY2VjZmMyNjFm
YjRlYTRjNGVkOTExNmNiYTMxYTk5OS4uNDg1ZWNkYjNjNGRmYmE2YzUzYWJjOGRiYjc0NDI3ZWU5
NmQ2ZGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0zMTQsNyArMzE0LDEx
IEBAIGlubGluZSBOb2RlKiBDb250YWluZXJOb2RlOjp0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5v
ZGUqIHN0YXlXaXRoaW4pIGNvbnN0CiAgICAgcmV0dXJuIHRyYXZlcnNlTmV4dFNpYmxpbmcoc3Rh
eVdpdGhpbik7CiB9CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxOb2RlPiwgMTE+IE5vZGVWZWN0
b3I7CisvLyBUaGlzIGNvbnN0YW50IGNvbnRyb2xzIGhvdyBtdWNoIGJ1ZmZlciBpcyBpbml0aWFs
bHkgYWxsb2NhdGVkCisvLyBmb3IgYSBOb2RlIFZlY3RvciB0aGF0IGlzIHVzZWQgdG8gc3RvcmUg
Y2hpbGQgTm9kZXMgb2YgYSBnaXZlbiBOb2RlLgorLy8gRklYTUU6IE9wdGltaXplIHRoZSB2YWx1
ZS4KK2NvbnN0IGludCBpbml0aWFsTm9kZVZlY3RvclNpemUgPSAxMTsKK3R5cGVkZWYgVmVjdG9y
PFJlZlB0cjxOb2RlPiwgaW5pdGlhbE5vZGVWZWN0b3JTaXplPiBOb2RlVmVjdG9yOwogCiBpbmxp
bmUgdm9pZCBnZXRDaGlsZE5vZGVzKE5vZGUqIG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggNzk5OTE0ZTI4MTM1NzlhNzQ0MzY1NWNhZmNjNzM4YjVkNTI0MGMxMy4u
MzA4MjgxYThlZTIxMjY5MjE4YTA3MDY4N2YwMWI0OGRiMGY0MmVhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0zNjIsNiArMzYyLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRXZlbnRUYXJnZXREYXRhKCkg
Y29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNFdmVudFRhcmdldERhdGFGbGFnKTsgfQogICAgIHZv
aWQgc2V0SGFzRXZlbnRUYXJnZXREYXRhKGJvb2wgZmxhZykgeyBzZXRGbGFnKGZsYWcsIEhhc0V2
ZW50VGFyZ2V0RGF0YUZsYWcpOyB9CiAKKyAgICBib29sIGluRWRlbigpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoSW5FZGVuRmxhZyk7IH0KKyAgICB2b2lkIHNldEVkZW4oYm9vbCBmbGFnKSB7IHNl
dEZsYWcoZmxhZywgSW5FZGVuRmxhZyk7IH0KKwogICAgIGVudW0gU2hvdWxkU2V0QXR0YWNoZWQg
ewogICAgICAgICBTZXRBdHRhY2hlZCwKICAgICAgICAgRG9Ob3RTZXRBdHRhY2hlZApAQCAtNzM1
LDkgKzczOCwxMCBAQCBwcml2YXRlOgogICAgICAgICBIYXNDdXN0b21DYWxsYmFja3NGbGFnID0g
MSA8PCAyOCwKICAgICAgICAgSGFzU2NvcGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyOSwK
ICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyA9IDEgPDwgMzAsCisgICAgICAgIEluRWRl
bkZsYWcgPSAxIDw8IDMxCiAgICAgfTsKIAotICAgIC8vIDIgYml0cyByZW1haW5pbmcKKyAgICAv
LyAxIGJpdCByZW1haW5pbmcKIAogICAgIGJvb2wgZ2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykgY29u
c3QgeyByZXR1cm4gbV9ub2RlRmxhZ3MgJiBtYXNrOyB9CiAgICAgdm9pZCBzZXRGbGFnKGJvb2wg
ZiwgTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+
bWFzaykgfCAoLShpbnQzMl90KWYgJiBtYXNrKTsgfSAK
</data>

          </attachment>
      

    </bug>

</bugzilla>