<?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>26526</bug_id>
          
          <creation_ts>2009-06-18 16:35:53 -0700</creation_ts>
          <short_desc>Add support for input events (oninput) to contentEditable elements</short_desc>
          <delta_ts>2010-07-07 19:24:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38832</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>jparent</cc>
    
    <cc>mike</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>shadow2531</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>126808</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2009-06-18 16:35:53 -0700</bug_when>
    <thetext>This came up in bug 15189

It would be nice if the input event could fire for contentEditable elements as well. Basically it would provide a cleaner way than mutation events and would fire any time the content changes (any time innerHTML has changed?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126809</commentid>
    <comment_count>1</comment_count>
      <attachid>31517</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2009-06-18 16:37:43 -0700</bug_when>
    <thetext>Created attachment 31517
Test case

Editing in either of the content editable elements should output its HTML below it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128055</commentid>
    <comment_count>2</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-06-24 18:21:42 -0700</bug_when>
    <thetext>WhatWG discussion: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-June/020553.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186297</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-01-31 21:48:02 -0800</bug_when>
    <thetext>Noticed that Hixie&apos;s response doesn&apos;t show up in that link due to being in a different month: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-July/021101.html

I&apos;ll add that, as I said in that thread, that this should only fire for user-gestures. Modifications done by script don&apos;t need the event. This also matches the input event for other text controls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223134</commentid>
    <comment_count>4</comment_count>
      <attachid>55516</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-09 19:01:52 -0700</bug_when>
    <thetext>Created attachment 55516
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223136</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-09 19:20:29 -0700</bug_when>
    <thetext>Hi, we&apos;ve restarted the work. 
Here is some background links:

- http://lists.macosforge.org/pipermail/webkit-dev/2010-February/011579.html
  - http://lists.macosforge.org/pipermail/webkit-dev/2010-February/011581.html
- http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-March/025406.html

As little objection, we are going to implement it behind the flag to play with.
As maciej mentioned at webkit-dev list, the proposal consists of several changes:

&gt;1) Fire &quot;input&quot; event for contentEditable areas as well as for text- 
&gt;entry form controls.
&gt;2) For every case where we&apos;d fire &quot;input&quot; per #1, add a new  
&gt;&quot;beforeinput&quot; event.
&gt;3) Add a new InputEvent (or something) interface with an &quot;action&quot;  
&gt;attribute to use for &quot;input&quot; and &quot;beforeinput&quot; events.

This patch approaches (1) against which the community (seems to) arose no clear objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223363</commentid>
    <comment_count>6</comment_count>
      <attachid>55516</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-05-10 09:54:12 -0700</bug_when>
    <thetext>Comment on attachment 55516
patch v0

&gt; +// A trivial case: inserting text should dispatch the event
&gt; +var target0 = document.getElementById(&quot;target0&quot;);
&gt; +target0.addEventListener(&quot;input&quot;, function(evt) { fired(evt, &quot;target0&quot;, &quot;Text should be inserted here:Text&quot;); });
&gt; +var target0TextLength = target0.firstChild.data.length;
&gt; +sel.setBaseAndExtent(target0.firstChild, target0TextLength, target0.firstChild, target0TextLength);
&gt; +document.execCommand(&quot;insertText&quot;, false, &quot;Text&quot;);
&gt; +expectedInputEventCount++;

If script changes should not dispatch input events, then execCommand should not either. You can use eventSender to test user input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223685</commentid>
    <comment_count>7</comment_count>
      <attachid>55645</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-10 19:26:40 -0700</bug_when>
    <thetext>Created attachment 55645
v1; took feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223690</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-10 19:31:30 -0700</bug_when>
    <thetext>Hi Erik, thank you for the reviewing!

&gt; If script changes should not dispatch input events, then execCommand should not either. You can use eventSender to test user input.
Ah, the code comment, not  code itself, is wrong. I&apos;m sorry for confusion.
I updated the patch to fix it like:
&gt; // A direct DOM manipulation shouldn&apos;t dispatch the event.

Note that existing behavior fires input events for &lt;input&gt; and &lt;textarea&gt;
even via execCommand().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225052</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-05-12 19:24:02 -0700</bug_when>
    <thetext>Why is the event dispatching guarded by an if(renderer()) guard?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225220</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-05-13 03:22:43 -0700</bug_when>
    <thetext>Hi James, thank you for your feedback!

(In reply to comment #9)
&gt; Why is the event dispatching guarded by an if(renderer()) guard?
&quot;input&quot; event from other than contentEditable (i.e. &lt;input&gt; and &lt;textarea&gt;) is 
Because other code where handle webkitEditableContentChangedEvent does such as 
TMLFormControlElement.cpp such, I followed the same manner.
I think it is safer to check this because webkitEditableContentChangedEvent is fired inside renderer, 
and is aimed to be handled by visible elements, only which can trigger an user interaction.

But this isn&apos;t a strong opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238698</commentid>
    <comment_count>11</comment_count>
      <attachid>55645</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-16 00:18:15 -0700</bug_when>
    <thetext>Comment on attachment 55645
v1; took feedback

WebCore/Configurations/FeatureDefines.xcconfig:51
 +  ENABLE_EDITING_INPUT_EVENTS = ENABLE_EDITING_INPUT_EVENTS; 
Please make the same changes to all of FeatureDefines.xcconfig in other directories.


WebCore/dom/Node.cpp:3082
 +  #if ENABLE(EDITING_INPUT_EVENTS)
#if should be put before &quot;} else if&quot;


- We may enable ENABLE_EDITING_INPUT_EVENTS in WebKit/chromium/features.gypi
  This doesn&apos;t affect Chromium/Chrome browsers.
- New test should be skipped in other platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238750</commentid>
    <comment_count>12</comment_count>
      <attachid>58864</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-16 02:14:25 -0700</bug_when>
    <thetext>Created attachment 58864
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238751</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-16 02:15:38 -0700</bug_when>
    <thetext>Hi Kent-san, thank you for reviewing!
I Updated the patch.

&gt; (From update of attachment 55645 [details])
&gt; WebCore/Configurations/FeatureDefines.xcconfig:51
&gt;  +  ENABLE_EDITING_INPUT_EVENTS = ENABLE_EDITING_INPUT_EVENTS; 
&gt; Please make the same changes to all of FeatureDefines.xcconfig in other directories.
Done.

&gt; WebCore/dom/Node.cpp:3082
&gt;  +  #if ENABLE(EDITING_INPUT_EVENTS)
&gt; #if should be put before &quot;} else if&quot;
Done.

&gt; - We may enable ENABLE_EDITING_INPUT_EVENTS in WebKit/chromium/features.gypi
&gt;   This doesn&apos;t affect Chromium/Chrome browsers.
&gt; - New test should be skipped in other platforms
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238777</commentid>
    <comment_count>14</comment_count>
      <attachid>58864</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-16 04:05:18 -0700</bug_when>
    <thetext>Comment on attachment 58864
patch v2

The patch should have ChangeLogs for JavaScriptCore, WebKit/mac, and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239299</commentid>
    <comment_count>15</comment_count>
      <attachid>58971</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-17 01:43:12 -0700</bug_when>
    <thetext>Created attachment 58971
patch v3; reaname ENABLE_EDITING_INPUT_EVENTS to ENABLE_INPUT_EVENT_EXTENSIONS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239610</commentid>
    <comment_count>16</comment_count>
      <attachid>58971</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-17 15:45:03 -0700</bug_when>
    <thetext>Comment on attachment 58971
patch v3; reaname ENABLE_EDITING_INPUT_EVENTS to ENABLE_INPUT_EVENT_EXTENSIONS

Thanks for making this change. Sorry this took so long to get reviewed. I mostly just have nits about the test.

I don&apos;t think we need to do this behind a flag. There was pretty unanimous support for this on whatwg and webkit-dev and it&apos;s an existing event that&apos;s specced in HTML5 for text controls. We&apos;re just making it apply to contentEditable. Also, as a result, you won&apos;t need to add the test to the Skipped lists. :)

(In reply to comment #8)
&gt; &gt; If script changes should not dispatch input events, then execCommand should not either. You can use eventSender to test user input.
&gt; Ah, the code comment, not  code itself, is wrong. I&apos;m sorry for confusion.
&gt; I updated the patch to fix it like:
&gt; &gt; // A direct DOM manipulation shouldn&apos;t dispatch the event.
&gt; 
&gt; Note that existing behavior fires input events for &lt;input&gt; and &lt;textarea&gt;
&gt; even via execCommand().

I agree that we should match the input/textarea behavior. If we want to avoid firing &quot;input&quot; for execCommands, we should do so across the board. That&apos;s a separate bug.

(In reply to comment #10)
&gt; &gt; Why is the event dispatching guarded by an if(renderer()) guard?
&gt; &quot;input&quot; event from other than contentEditable (i.e. &lt;input&gt; and &lt;textarea&gt;) is 
&gt; Because other code where handle webkitEditableContentChangedEvent does such as 
&gt; TMLFormControlElement.cpp such, I followed the same manner.
&gt; I think it is safer to check this because webkitEditableContentChangedEvent is fired inside renderer, 
&gt; and is aimed to be handled by visible elements, only which can trigger an user interaction.
&gt; 
&gt; But this isn&apos;t a strong opinion.

I&apos;m not sure we need this restriction. It exists on input/textarea because this event is fired from within RenderTextControl*, but that seems like more of an implementation detail than an explicitly desired behavior. For example, we could move the dispatch of the input event from RenderTextControl* to HTMLFormControlElementWithState::defaultEventHandler and then we wouldn&apos;t need to restrict to rendered nodes. 

That said, it&apos;s not clear to me what the correct behavior here is or even if it&apos;s possible to hit this code without a renderer. If an element is display:none, the user certainly can&apos;t modify it&apos;s content and execCommands will fail. So, I don&apos;t think we need to explicitly add this guard.

---------------------------------
http://wkrietveld.appspot.com/26526/diff/2001/3004
File LayoutTests/fast/events/event-input-contentEditable.html (right):

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode1
LayoutTests/fast/events/event-input-contentEditable.html:1: &lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
These tests are great. I&apos;d like to to add a couple extra test cases:
1. A test or two that uses eventSender. That way we can confirm that input fires for keypresses in addition to execCommands.
2. Nested contentEditables. Specifically, two cases:
  a) &lt;div contentEditable&gt;&lt;div contentEditable&gt;foo&lt;/div&gt;&lt;/div&gt; &lt;-- I think input should fire on the outer-most div.
  b) &lt;div contentEditable&gt;&lt;div contentEditable=false&gt;&lt;div contentEditable&gt;foo&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;-- I think input should fire on the innerMost div and then bubble up.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode5
LayoutTests/fast/events/event-input-contentEditable.html:5: &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
This should just be a script-test. There are other script-tests in fast/events/script-tests. You just need to add one there and then run make-script-test-wrappers to generate the HTML file.

The only difference from what you have below is that you&apos;ll need to create your DOM in script instead of in lines 11-20 below. Otherwise, you can just move all the contents of the script tag below into a JS file.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode36
LayoutTests/fast/events/event-input-contentEditable.html:36: shouldBe(&quot;window.actualId&quot;, &quot;&apos;&quot; + expectedId + &quot;&apos;&quot;);
Can this just be:
shouldBe(&quot;event.target.id&quot;,  &quot;&apos;&quot; + expectedId + &quot;&apos;&quot;);

Note that event is a global object that points to the currently active event.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode39
LayoutTests/fast/events/event-input-contentEditable.html:39: shouldBe(&quot;window.actualText&quot;, &quot;window.expectedText&quot;);
Similarly, can this be:
shouldBe(&quot;event.target.innerHTML&quot;,  &quot;&apos;&quot; + expectedText + &quot;&apos;&quot;);

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode48
LayoutTests/fast/events/event-input-contentEditable.html:48: sel.setBaseAndExtent(target0.firstChild, target0TextLength, target0.firstChild, target0TextLength);
Nit: Can you just use sel.selectAllChildren(target0) here? I realize it&apos;s not exactly the same thing, but it should test the same case.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode55
LayoutTests/fast/events/event-input-contentEditable.html:55: target1.firstChild.data += &quot;Text&quot;;
Nit: Here and below, instead of doing target1.firstChild.data can you use target1.innerHTML? That makes it clear what&apos;s going on. With firstChild.data, whoever is reading this test will need to understand the initial DOM to figure out what firstChild is.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode81
LayoutTests/fast/events/event-input-contentEditable.html:81: // An event shouldn&apos;t be dispatched to a invisible node.
Lets call this a display:none node or an unrendered node. Invisible could be confused with visibility:hidden.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode86
LayoutTests/fast/events/event-input-contentEditable.html:86: document.execCommand(&quot;insertText&quot;, false, &quot;Text&quot;);
Each test has a lot of duplicate code.  Maybe you could do something like the following?

function setupTarget(target, inputHandler) {
    target.addEventListener(&quot;input&quot;, inputHandler);
    sel.selectAllChildren(target);
}

var target5 = document.getElementById(&quot;target5&quot;);
setupTarget(target5, function(evt) { testFailed(&quot;should not be reached&quot;); });
target5.style.display = &quot;none&quot;;
document.execCommand(&quot;insertText&quot;, false, &quot;Text&quot;);

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode92
LayoutTests/fast/events/event-input-contentEditable.html:92: var target6end    = document.getElementById(&quot;target6end&quot;);
Nit: webkit style is to not align the equals.

http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode106
LayoutTests/fast/events/event-input-contentEditable.html:106: setTimeout(function() {
Can this setTimeout be removed? Then you wouldn&apos;t need to call waitUntilDone/notifyDone. In addition to making tests slower, setTimeouts often lead to flaky tests. We should avoid them unless they&apos;re really necessary.

http://wkrietveld.appspot.com/26526/diff/2001/3011
File WebCore/dom/Node.cpp (right):

http://wkrietveld.appspot.com/26526/diff/2001/3011#newcode3032
WebCore/dom/Node.cpp:3032: event-&gt;setDefaultHandled();
Why do you need to set default handled here? Other events don&apos;t. I tried patching in your change without this line and the layout test still passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239803</commentid>
    <comment_count>17</comment_count>
      <attachid>59080</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-18 01:27:36 -0700</bug_when>
    <thetext>Created attachment 59080
patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239825</commentid>
    <comment_count>18</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-18 02:18:32 -0700</bug_when>
    <thetext>Hi Ojan, thank you for your careful review!
I updated the patch.

&gt; I don&apos;t think we need to do this behind a flag. There was pretty unanimous support for this on whatwg and webkit-dev and it&apos;s an existing event that&apos;s specced in HTML5 for text controls. We&apos;re just making it apply to contentEditable. Also, as a result, you won&apos;t need to add the test to the Skipped lists. :)

OK. The compilation flags are removed. 

&gt; 
&gt; (In reply to comment #8)
&gt; I agree that we should match the input/textarea behavior. If we want to avoid firing &quot;input&quot; for execCommands, we should do so across the board. That&apos;s a separate bug.

Sure. 
It&apos;s not clear to me whether we should suppress event for execCommand().
For example, we can implement some automation(macro) tool for the browser as, say, an extension.
In such case, the tool want to emulate user action. Suppressing events would be undesirable 
for such purpose. On other hand, web applications may want to control event timings.

&gt; I&apos;m not sure we need this restriction. It exists on input/textarea because this event is fired from within RenderTextControl*, but that seems like more of an implementation detail than an explicitly desired behavior. For example, we could move the dispatch of the input event from RenderTextControl* to HTMLFormControlElementWithState::defaultEventHandler and then we wouldn&apos;t need to restrict to rendered nodes. 
&gt; 
&gt; That said, it&apos;s not clear to me what the correct behavior here is or even if it&apos;s possible to hit this code without a renderer. If an element is display:none, the user certainly can&apos;t modify it&apos;s content and execCommands will fail. So, I don&apos;t think we need to explicitly add this guard.

Agreed. At this time, I just removed the guard. 
Trivial tests cannot unveil the difference. (modifying the tree inside an event handler may unveil it.)

&gt; 
&gt; ---------------------------------
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004
&gt; File LayoutTests/fast/events/event-input-contentEditable.html (right):
&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode1
&gt; LayoutTests/fast/events/event-input-contentEditable.html:1: &lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
&gt; These tests are great. I&apos;d like to to add a couple extra test cases:
&gt; 1. A test or two that uses eventSender. That way we can confirm that input fires for keypresses in addition to execCommands.
&gt; 2. Nested contentEditables. Specifically, two cases:
&gt;   a) &lt;div contentEditable&gt;&lt;div contentEditable&gt;foo&lt;/div&gt;&lt;/div&gt; &lt;-- I think input should fire on the outer-most div.
&gt;   b) &lt;div contentEditable&gt;&lt;div contentEditable=false&gt;&lt;div contentEditable&gt;foo&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;-- I think input should fire on the innerMost div and then bubble up.

Added these tests. (they behave like above expectations.)

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode5
&gt; LayoutTests/fast/events/event-input-contentEditable.html:5: &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; This should just be a script-test. There are other script-tests in fast/events/script-tests. You just need to add one there and then run make-script-test-wrappers to generate the HTML file.
&gt; 

Fixed.

&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode36
&gt; LayoutTests/fast/events/event-input-contentEditable.html:36: shouldBe(&quot;window.actualId&quot;, &quot;&apos;&quot; + expectedId + &quot;&apos;&quot;);
&gt; Can this just be:
&gt; shouldBe(&quot;event.target.id&quot;,  &quot;&apos;&quot; + expectedId + &quot;&apos;&quot;);
Fixed.

&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode39
&gt; LayoutTests/fast/events/event-input-contentEditable.html:39: shouldBe(&quot;window.actualText&quot;, &quot;window.expectedText&quot;);
&gt; Similarly, can this be:
&gt; shouldBe(&quot;event.target.innerHTML&quot;,  &quot;&apos;&quot; + expectedText + &quot;&apos;&quot;);

Fixed.

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode48
&gt; LayoutTests/fast/events/event-input-contentEditable.html:48: sel.setBaseAndExtent(target0.firstChild, target0TextLength, target0.firstChild, target0TextLength);
&gt; Nit: Can you just use sel.selectAllChildren(target0) here? I realize it&apos;s not exactly the same thing, but it should test the same case.
Agreed. Fixed to use selectAllChild()

&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode55
&gt; LayoutTests/fast/events/event-input-contentEditable.html:55: target1.firstChild.data += &quot;Text&quot;;
&gt; Nit: Here and below, instead of doing target1.firstChild.data can you use target1.innerHTML? That makes it clear what&apos;s going on. With firstChild.data, whoever is reading this test will need to understand the initial DOM to figure out what firstChild is.

Fixed.

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode81
&gt; LayoutTests/fast/events/event-input-contentEditable.html:81: // An event shouldn&apos;t be dispatched to a invisible node.
&gt; Lets call this a display:none node or an unrendered node. Invisible could be confused with visibility:hidden.
Fixed.

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode86
&gt; LayoutTests/fast/events/event-input-contentEditable.html:86: document.execCommand(&quot;insertText&quot;, false, &quot;Text&quot;);
&gt; Each test has a lot of duplicate code.  Maybe you could do something like the following?

Certainly. So I tried to gather common part up.

&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode92
&gt; LayoutTests/fast/events/event-input-contentEditable.html:92: var target6end    = document.getElementById(&quot;target6end&quot;);
&gt; Nit: webkit style is to not align the equals.

Fixed.

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3004#newcode106
&gt; LayoutTests/fast/events/event-input-contentEditable.html:106: setTimeout(function() {
&gt; Can this setTimeout be removed? Then you wouldn&apos;t need to call waitUntilDone/notifyDone. In addition to making tests slower, setTimeouts often lead to flaky tests. We should avoid them unless they&apos;re really necessary.

Removed, and it works.
I don&apos;t remember why I did such...

&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3011
&gt; File WebCore/dom/Node.cpp (right):
&gt; 
&gt; http://wkrietveld.appspot.com/26526/diff/2001/3011#newcode3032
&gt; WebCore/dom/Node.cpp:3032: event-&gt;setDefaultHandled();
&gt; Why do you need to set default handled here? Other events don&apos;t. I tried patching in your change without this line and the layout test still passes.

Removed.
I thought we need this because we are canceling default action.
But it doesn&apos;t matter because it&apos;s an internal event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247950</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-07-07 19:24:45 -0700</bug_when>
    <thetext>Committed r62741: &lt;http://trac.webkit.org/changeset/62741&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31517</attachid>
            <date>2009-06-18 16:37:43 -0700</date>
            <delta_ts>2009-06-18 16:37:43 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>content-editable-oninput.html</filename>
            <type>text/html</type>
            <size>436</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">PCFET0NUWVBFaHRtbD4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+PC90aXRsZT4KPHN0eWxlPgoKW2Nv
bnRlbnRlZGl0YWJsZV0gewogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Cn0KCjwvc3R5bGU+Cjxz
Y3JpcHQ+CgpmdW5jdGlvbiBoYW5kbGVJbnB1dChlKSB7CiAgZS50YXJnZXQubmV4dEVsZW1lbnRT
aWJsaW5nLnRleHRDb250ZW50ID0gZS50YXJnZXQuaW5uZXJIVE1MOwp9CgoKPC9zY3JpcHQ+Cjwv
aGVhZD4KPGJvZHkgb25pbnB1dD0iaGFuZGxlSW5wdXQoZXZlbnQpIj4KCjxwPkNvbnRlbnQgZWRp
YXRhYmxlCjxkaXYgY29udGVudGVkaXRhYmxlPjwvZGl2PjxwcmU+PC9wcmU+Cgo8cD5QbGFpbiB0
ZXh0IGNvbnRlbnQgZWRpdGFibGUKPGRpdiBjb250ZW50ZWRpdGFibGU9InBsYWludGV4dC1vbmx5
Ij48L2Rpdj48cHJlPjwvcHJlPgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55516</attachid>
            <date>2010-05-09 19:01:52 -0700</date>
            <delta_ts>2010-05-10 19:26:32 -0700</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-26526-20100510110150.patch</filename>
            <type>text/plain</type>
            <size>13748</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNzdkZjdiZTk2NTRiYzE4Y2MwZDkzOTYzODIyY2YwNzg3NzY4YmE2Li5iMTYxNjg5
MDRkMjNiYzYyY2UyODkwNjZiY2MxYzZhYjYyNDVlY2FjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMDkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTI2CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBp
bnB1dCBldmVudHMgKG9uaW5wdXQpIHRvIGNvbnRlbnRFZGl0YWJsZSBlbGVtZW50cworCisgICAg
ICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRh
YmxlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTA1ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2Vp
QHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtv
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVu
dEVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlu
cHV0LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlZTdlOTRhMDc3
MTI2ZGYzMGVjYjA2OTcyNTI0YjY2MDRhYzNjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHRoZSBpbnB1dCBldmVudHMgYXJlIGRp
c3BhdGNoZWQgd2hlbiBjb250ZW50RWRpdGFibGUgbm9kZXMgYXJlIGVkaXRlZAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuYWN0dWFsSWQgaXMgJ3RhcmdldDAn
CitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBlY3RlZFRleHQKK1BBU1Mgd2lu
ZG93LmFjdHVhbElkIGlzICd0YXJnZXQyJworUEFTUyB3aW5kb3cuYWN0dWFsVGV4dCBpcyB3aW5k
b3cuZXhwZWN0ZWRUZXh0CitQQVNTIHdpbmRvdy5hY3R1YWxJZCBpcyAndGFyZ2V0MycKK1BBU1Mg
d2luZG93LmFjdHVhbFRleHQgaXMgd2luZG93LmV4cGVjdGVkVGV4dAorUEFTUyB3aW5kb3cuYWN0
dWFsSWQgaXMgJ3RhcmdldDQnCitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBl
Y3RlZFRleHQKK1BBU1Mgd2luZG93LmFjdHVhbElkIGlzICd0YXJnZXQ2cGFyZW50JworUEFTUyB3
aW5kb3cuYWN0dWFsVGV4dCBpcyB3aW5kb3cuZXhwZWN0ZWRUZXh0CitQQVNTIGV4cGVjdGVkSW5w
dXRFdmVudENvdW50IGlzIGFjdHVhbElucHV0RXZlbnRDb3VudAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitGb2xsb3dpbmdzIGFyZSB0ZXN0IGRhdGEg
c2V0LiBZb3UgY2FuIGp1c3QgaWdub3JlIHRoZW0uCisKK1RleHQgc2hvdWxkIGJlIGluc2VydGVk
IGhlcmU6VGV4dAorCitUZXh0IHNob3VsZCBiZSBpbnNlcnQgdmlhIHNjcmlwdDpUZXh0CisKK1Ro
aXMgdGV4dCBzaG91bGRuJ3QgYmUgY2hhbmdlZC4KKworCisKK1RoaXMgdGV4dCBzaG91bGQgYmUg
YSBsaW5rLgorCitTdGFydCxNaWRkbGUsRW5kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OGU0Zjc0NjNhM2M3NzUyMjRjYTc5OWE0OWU5ZDkwZmQzZjVjZTJkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0
bWwKQEAgLTAsMCArMSwxMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGgyPkZv
bGxvd2luZ3MgYXJlIHRlc3QgZGF0YSBzZXQuIFlvdSBjYW4ganVzdCBpZ25vcmUgdGhlbS48L2gy
PgorPGRpdiBpZD0idGVzdERhdGEiPgorICA8cCBpZD0idGFyZ2V0MCIgY29udGVudEVkaXRhYmxl
PlRleHQgc2hvdWxkIGJlIGluc2VydGVkIGhlcmU6PC9wPgorICA8cCBpZD0idGFyZ2V0MSIgY29u
dGVudEVkaXRhYmxlPlRleHQgc2hvdWxkIGJlIGluc2VydCB2aWEgc2NyaXB0OjwvcD4KKyAgPHAg
aWQ9InRhcmdldDIiIGNvbnRlbnRFZGl0YWJsZT5UaGlzIHRleHQgc2hvdWxkbid0IGJlIGNoYW5n
ZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0MyIgY29udGVudEVkaXRhYmxlPlRoaXMgdGV4dCBzaG91
bGRuIGJlIGRlbGV0ZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0NCIgY29udGVudEVkaXRhYmxlPlRo
aXMgdGV4dCBzaG91bGQgYmUgYSBsaW5rLjwvcD4KKyAgPHAgaWQ9InRhcmdldDUiIGNvbnRlbnRF
ZGl0YWJsZT5UaGlzIHdpbGwgbm90IGJlIHJlbmRlcmVkLjwvcD4KKyAgPHAgaWQ9InRhcmdldDZw
YXJlbnQiIGNvbnRlbnRFZGl0YWJsZT48c3BhbiBpZD0idGFyZ2V0NnN0YXJ0Ij5TdGFydCw8L3Nw
YW4+PHNwYW4gaWQ9InRhcmdldDZtaWRkbGUiPk1pZGRsZSw8L3NwYW4+PHNwYW4gaWQ9InRhcmdl
dDZlbmQiPkVuZC48L3NwYW4+PC9wPgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoYXQgdGhlIGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB3aGVuIGNv
bnRlbnRFZGl0YWJsZSBub2RlcyBhcmUgZWRpdGVkIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
Cit2YXIgYWN0dWFsSW5wdXRFdmVudENvdW50ID0gMDsKK3ZhciBleHBlY3RlZElucHV0RXZlbnRD
b3VudCA9IDA7CisKK2Z1bmN0aW9uIGZpcmVkKGV2dCwgZXhwZWN0ZWRJZCwgZXhwZWN0ZWRUZXh0
KQoreworICAgIGFjdHVhbElucHV0RXZlbnRDb3VudCsrOworICAgIHdpbmRvdy5hY3R1YWxJZCA9
IGV2dC50YXJnZXQuaWQ7CisgICAgc2hvdWxkQmUoIndpbmRvdy5hY3R1YWxJZCIsICInIiArIGV4
cGVjdGVkSWQgKyAiJyIpOworICAgIHdpbmRvdy5hY3R1YWxUZXh0ID0gZXZ0LnRhcmdldC5pbm5l
ckhUTUw7CisgICAgd2luZG93LmV4cGVjdGVkVGV4dCA9IGV4cGVjdGVkVGV4dDsKKyAgICBzaG91
bGRCZSgid2luZG93LmFjdHVhbFRleHQiLCAid2luZG93LmV4cGVjdGVkVGV4dCIpOworfQorCit2
YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisKKy8vIEEgdHJpdmlhbCBjYXNlOiBp
bnNlcnRpbmcgdGV4dCBzaG91bGQgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2YXIgdGFyZ2V0MCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQwIik7Cit0YXJnZXQwLmFkZEV2ZW50TGlzdGVu
ZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDAiLCAiVGV4dCBz
aG91bGQgYmUgaW5zZXJ0ZWQgaGVyZTpUZXh0Iik7IH0pOwordmFyIHRhcmdldDBUZXh0TGVuZ3Ro
ID0gdGFyZ2V0MC5maXJzdENoaWxkLmRhdGEubGVuZ3RoOworc2VsLnNldEJhc2VBbmRFeHRlbnQo
dGFyZ2V0MC5maXJzdENoaWxkLCB0YXJnZXQwVGV4dExlbmd0aCwgdGFyZ2V0MC5maXJzdENoaWxk
LCB0YXJnZXQwVGV4dExlbmd0aCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIs
IGZhbHNlLCAiVGV4dCIpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gVHJlZSBt
b2RpZmljYXRpb25zIHZpYSB0aGUgc2NyaXB0IHNob3VsZG4ndCBkaXNwYXRjaCB0aGUgZXZlbnQK
K3ZhciB0YXJnZXQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKK3Rhcmdl
dDEuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxlZCgi
c2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0MS5maXJzdENoaWxkLmRhdGEgKz0g
IlRleHQiOworCisvLyBBbiBldmVudCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIGlmIHJlc3Vs
dGluZyBET00gdHJlZSBkb2Vzbid0IGNoYW5nZSBhZnRlciB0aGUgZWRpdC4gKHdpdGggcmVwbGFj
aW5nIGl0KQordmFyIHRhcmdldDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIp
OwordmFyIHJlcGxhY2luZ1RleHQgPSB0YXJnZXQyLmZpcnN0Q2hpbGQuZGF0YTsKK3RhcmdldDIu
YWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgZmlyZWQoZXZ0LCAidGFy
Z2V0MiIsIHJlcGxhY2luZ1RleHQpOyB9KTsKK3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQy
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRUZXh0IiwgZmFsc2UsIHJlcGxhY2luZ1Rl
eHQpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gQW4gImRlbGV0ZSIgY29tbWFu
ZCBzaG91bGQgZGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQuCit2YXIgdGFyZ2V0MyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQzIik7Cit0YXJnZXQzLmFkZEV2ZW50TGlzdGVuZXIoImlu
cHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDMiLCAiPGJyPiIpOyB9KTsK
K3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQzKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJk
ZWxldGUiLCBmYWxzZSk7CitleHBlY3RlZElucHV0RXZlbnRDb3VudCsrOworCisvLyBBIGNvbW1h
bmQgb3RoZXIgdGhhbiB0ZXh0LWVkaXRpbmcgc2hvdWxkIGRpc3BhdGNoIGFuIGlucHV0IGV2ZW50
LgorLy8gQWxzbyBub3RlIHRoYXQgY3JlYXRlTGluayBpcyBhIGNvbXBvc2l0ZSBjb21tYW5kLCAK
Ky8vIHNvIHRoaXMgdGVzdCBhbHNvIGVuc3VyZXMgdGhhdCBldmVuIGNvbXBvc2l0ZSBjb21tYW5k
IGRpc3BhdGNoZXMgdGhlIGV2ZW50IG9ubHkgb25jZS4KK3ZhciB0YXJnZXQ0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldDQiKTsKK3RhcmdldDQuYWRkRXZlbnRMaXN0ZW5lcigiaW5w
dXQiLCBmdW5jdGlvbihldnQpIHsgZmlyZWQoZXZ0LCAidGFyZ2V0NCIsICI8YSBocmVmPVwiaHR0
cDovL3d3dy5leGFtcGxlLmNvbS9cIj5UaGlzIHRleHQgc2hvdWxkIGJlIGEgbGluay48L2E+Iik7
IH0pOworc2VsLnNlbGVjdEFsbENoaWxkcmVuKHRhcmdldDQpOworZG9jdW1lbnQuZXhlY0NvbW1h
bmQoImNyZWF0ZUxpbmsiLCBmYWxzZSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7CitleHBl
Y3RlZElucHV0RXZlbnRDb3VudCsrOworCisvLyBBbiBldmVudCBzaG91bGRuJ3QgYmUgZGlzcGF0
Y2hlZCB0byBhIGludmlzaWJsZSBub2RlLgordmFyIHRhcmdldDUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0NSIpOwordGFyZ2V0NS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1
bmN0aW9uKGV2dCkgeyB0ZXN0RmFpbGVkKCJzaG91bGQgbm90IGJlIHJlYWNoZWQiKTsgfSk7Citz
ZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0NSk7Cit0YXJnZXQ1LnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCAiVGV4dCIp
OworCisvLyBUaGUgZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgZWRpdGFibGUg
cm9vdC4KK3ZhciB0YXJnZXQ2cGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dDZwYXJlbnQiKTsKK3ZhciB0YXJnZXQ2c3RhcnQgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDZzdGFydCIpOwordmFyIHRhcmdldDZtaWRkbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0Nm1pZGRsZSIpOwordmFyIHRhcmdldDZlbmQgICAgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0NmVuZCIpOworCit2YXIgZXhwZWN0ZWRUZXh0NiA9ICI8c3BhbiBp
ZD1cInRhcmdldDZzdGFydFwiPjxhIGhyZWY9XCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiPlN0
YXJ0LDwvYT48L3NwYW4+PHNwYW4gaWQ9XCJ0YXJnZXQ2bWlkZGxlXCI+PGEgaHJlZj1cImh0dHA6
Ly93d3cuZXhhbXBsZS5jb20vXCI+TWlkZGxlLDwvYT48L3NwYW4+PHNwYW4gaWQ9XCJ0YXJnZXQ2
ZW5kXCI+PGEgaHJlZj1cImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vXCI+RW5kLjwvYT48L3NwYW4+
IjsKK3RhcmdldDZwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQp
IHsgZmlyZWQoZXZ0LCAidGFyZ2V0NnBhcmVudCIsIGV4cGVjdGVkVGV4dDYpOyB9KTsKK2V4cGVj
dGVkSW5wdXRFdmVudENvdW50Kys7Cit0YXJnZXQ2c3RhcnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5w
dXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7
IH0pOwordGFyZ2V0NmVuZC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkg
eyB0ZXN0RmFpbGVkKCJzaG91bGQgbm90IGJlIHJlYWNoZWQiKTsgfSk7Cit0YXJnZXQ2bWlkZGxl
LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRh
cmdldDZlbmQiLCAiIik7IH0pOworc2VsLnNldEJhc2VBbmRFeHRlbnQodGFyZ2V0NnN0YXJ0LmZp
cnN0Q2hpbGQsIDAsIAorICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0NmVuZC5maXJzdENoaWxk
LCB0YXJnZXQ2ZW5kLmZpcnN0Q2hpbGQuZGF0YS5sZW5ndGgpOworZG9jdW1lbnQuZXhlY0NvbW1h
bmQoImNyZWF0ZUxpbmsiLCBmYWxzZSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7CisKK3N1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
c2hvdWxkQmUoImV4cGVjdGVkSW5wdXRFdmVudENvdW50IiwgImFjdHVhbElucHV0RXZlbnRDb3Vu
dCIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIDApOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggOWMxYWI5ZDhlNWJhNGMyMzJhMGUyMzJlMzM5OWZiZmQwYzM5NzM3Mi4uZjc0
NTBiZTdlMzE0YzZiMzc5OTc0MDg1NzJhODMwYjdlMjc4MGM0MSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
MC0wNS0wOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MjYKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlucHV0
IGV2ZW50cyAob25pbnB1dCkgdG8gY29udGVudEVkaXRhYmxlIGVsZW1lbnRzCisKKyAgICAgICAg
TWFkZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXIgb24gTm9kZSB0byBkaXNwYXRjaCBpbnB1dCBldmVu
dCB3aGVuCisgICAgICAgIHdlYmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWQgYXJyaXZlZC4KKyAg
ICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0
YWJsZS5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKwogMjAxMC0wNS0wNSAgQ2hhcmxlcyBXZWkgIDxjaGFybGVz
LndlaUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0
YWlrb3MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CmluZGV4IDg4MWM3ODg4MjViYTQ4YTg2NmY4OGMxMDlkMTllMDdhNmZjMTllZTUuLjUwYzZmMTMy
ZTk2NWI5NjQ5YmJmNTRmMGVjMmE4NGZjNWExMDZmMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDgsNiArNDgsNyBAQCBFTkFCTEVf
REFUQUJBU0UgPSBFTkFCTEVfREFUQUJBU0U7CiBFTkFCTEVfREFUQUdSSUQgPSA7CiBFTkFCTEVf
REFUQUxJU1QgPSBFTkFCTEVfREFUQUxJU1Q7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVf
RE9NX1NUT1JBR0U7CitFTkFCTEVfRURJVElOR19JTlBVVF9FVkVOVFMgPSBFTkFCTEVfRURJVElO
R19JTlBVVF9FVkVOVFM7IAogRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNF
OwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURFUiA9
IDsKQEAgLTc4LDQgKzc5LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBF
TkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklO
RVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVf
QkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAk
KEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09V
UkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklM
RV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQo
RU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQo
RU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQo
RU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZH
X0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JF
SUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dF
Ql9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1M
TVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQo
RU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NM
SUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxF
X0RBVEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRURJVElOR19JTlBVVF9F
VkVOVFMpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9G
SUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVT
U19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxF
X1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xU
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggODNlOWIwMDIyNTZhMjY2NDQ2MjM0NjU4OTgzMjU4MjBlYmY3MjUzZi4uZDMwN2Q1
M2NhNWE1YTYxODg2NjE3NzJlMjRkMDc0YjY0ZmI2ZDIyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTMwNzgsNiArMzA3OCwx
MyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKHN0YXJ0Tm9kZSwg
d2hlZWxFdmVudCk7CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS53ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQpIHsKKyNpZiBFTkFCTEUoRURJVElO
R19JTlBVVF9FVkVOVFMpCisgICAgICAgIGlmIChyZW5kZXJlcigpKSB7CisgICAgICAgICAgICBk
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUs
IGZhbHNlKSk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAg
ICAgfQorI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYzA2ZTc4ODZmYmJkODg3MTAyNTkyNTI3
MTg1M2QzOTYwNjQzMDJmMi4uNTAzZTU5OTViMjFlYTVmMjk0ZjI2MjNmYTc3YTk2MDEyMDc0NTFm
ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA1LTA5ICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUyNgor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5wdXQgZXZlbnRzIChvbmlucHV0KSB0byBjb250ZW50
RWRpdGFibGUgZWxlbWVudHMKKyAgICAgICAgCisgICAgICAgIEFkZGVkICItLWVkaXRpbmctaW5w
dXQtZXZlbnRzIiBvcHRpb24gZm9yIGJ1aWxkLXdlYmtpdCwgdG8gY29udHJvbCB0aGUgZmxhZy4K
KworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEwLTA1LTA1ICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggM2EzZWRiOWNiZDVjOTYy
YzhmZWYxYjBlYWU4MGRlMDhhYmVmMjAxNC4uMWEyYmNhN2M0MmFjZjY5ZDhlODgxYTMyMDkzZjJj
MDg0ZjQ5NDU2ZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTU3LDcgKzU3LDcgQEAg
bXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNoYW5u
ZWxNZXNzYWdpbmdTdXBwb3J0LCAkY2wKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1
cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRz
dmdGb250c1N1cHBvcnQsCiAgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3Vw
cG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdj
c3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhT
dXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3Vw
cG9ydCwgJGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0gICAg
JGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQpOworICAgICRmaWxlUmVhZGVy
U3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZWRpdGluZ0lucHV0RXZlbnRzU3VwcG9ydCk7
CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiM2QtY2FudmFzIiwgZGVzYyA9
PiAiVG9nZ2xlIDNEIGNhbnZhcyBzdXBwb3J0IiwKQEAgLTE4Miw2ICsxODIsOSBAQCBteSBAZmVh
dHVyZXMgPSAoCiAKICAgICB7IG9wdGlvbiA9PiAiZmlsZS13cml0ZXIiLCBkZXNjID0+ICJUb2dn
bGUgRmlsZVdyaXRlciBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVfV1JJ
VEVSIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGZpbGVXcml0ZXJTdXBwb3J0IH0sCisKKyAg
ICB7IG9wdGlvbiA9PiAiZWRpdGluZy1pbnB1dC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUgZGlz
cGF0Y2hpbmcgZWRpdGluZyBpbnB1dCBldmVudHMiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
RURJVElOR19JTlBVVF9FVkVOVFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZWRpdGluZ0lu
cHV0RXZlbnRzU3VwcG9ydCB9LAogKTsKIAogIyBVcGRhdGUgZGVmYXVsdHMgZnJvbSBRdCdzIHBy
b2plY3QgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55645</attachid>
            <date>2010-05-10 19:26:40 -0700</date>
            <delta_ts>2010-06-16 02:14:16 -0700</delta_ts>
            <desc>v1; took feedback</desc>
            <filename>bug-26526-20100511112638.patch</filename>
            <type>text/plain</type>
            <size>13751</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNzdkZjdiZTk2NTRiYzE4Y2MwZDkzOTYzODIyY2YwNzg3NzY4YmE2Li5iMTYxNjg5
MDRkMjNiYzYyY2UyODkwNjZiY2MxYzZhYjYyNDVlY2FjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDUtMDkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTI2CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBp
bnB1dCBldmVudHMgKG9uaW5wdXQpIHRvIGNvbnRlbnRFZGl0YWJsZSBlbGVtZW50cworCisgICAg
ICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRh
YmxlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTA1ICBDaGFybGVzIFdlaSAgPGNoYXJsZXMud2Vp
QHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtv
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVu
dEVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlu
cHV0LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQyYjI4OTUxMjlm
MTA4NWFmZjYxYjMyYjI4NTFiYTg3NjQ3NzNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHRoZSBpbnB1dCBldmVudHMgYXJlIGRp
c3BhdGNoZWQgd2hlbiBjb250ZW50RWRpdGFibGUgbm9kZXMgYXJlIGVkaXRlZAorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuYWN0dWFsSWQgaXMgJ3RhcmdldDAn
CitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBlY3RlZFRleHQKK1BBU1Mgd2lu
ZG93LmFjdHVhbElkIGlzICd0YXJnZXQyJworUEFTUyB3aW5kb3cuYWN0dWFsVGV4dCBpcyB3aW5k
b3cuZXhwZWN0ZWRUZXh0CitQQVNTIHdpbmRvdy5hY3R1YWxJZCBpcyAndGFyZ2V0MycKK1BBU1Mg
d2luZG93LmFjdHVhbFRleHQgaXMgd2luZG93LmV4cGVjdGVkVGV4dAorUEFTUyB3aW5kb3cuYWN0
dWFsSWQgaXMgJ3RhcmdldDQnCitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBl
Y3RlZFRleHQKK1BBU1Mgd2luZG93LmFjdHVhbElkIGlzICd0YXJnZXQ2cGFyZW50JworUEFTUyB3
aW5kb3cuYWN0dWFsVGV4dCBpcyB3aW5kb3cuZXhwZWN0ZWRUZXh0CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgZXhwZWN0ZWRJbnB1dEV2ZW50
Q291bnQgaXMgYWN0dWFsSW5wdXRFdmVudENvdW50CitGb2xsb3dpbmdzIGFyZSB0ZXN0IGRhdGEg
c2V0LiBZb3UgY2FuIGp1c3QgaWdub3JlIHRoZW0uCisKK1RleHQgc2hvdWxkIGJlIGluc2VydGVk
IGhlcmU6VGV4dAorCitUZXh0IHNob3VsZCBiZSBpbnNlcnQgdmlhIHNjcmlwdDpUZXh0CisKK1Ro
aXMgdGV4dCBzaG91bGRuJ3QgYmUgY2hhbmdlZC4KKworCisKK1RoaXMgdGV4dCBzaG91bGQgYmUg
YSBsaW5rLgorCitTdGFydCxNaWRkbGUsRW5kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
Njc2YTg1ZWFiNmZiYmMzN2FlM2E3MmU5NTRlOWFlYWVjMGE4Yjg3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0
bWwKQEAgLTAsMCArMSwxMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGgyPkZv
bGxvd2luZ3MgYXJlIHRlc3QgZGF0YSBzZXQuIFlvdSBjYW4ganVzdCBpZ25vcmUgdGhlbS48L2gy
PgorPGRpdiBpZD0idGVzdERhdGEiPgorICA8cCBpZD0idGFyZ2V0MCIgY29udGVudEVkaXRhYmxl
PlRleHQgc2hvdWxkIGJlIGluc2VydGVkIGhlcmU6PC9wPgorICA8cCBpZD0idGFyZ2V0MSIgY29u
dGVudEVkaXRhYmxlPlRleHQgc2hvdWxkIGJlIGluc2VydCB2aWEgc2NyaXB0OjwvcD4KKyAgPHAg
aWQ9InRhcmdldDIiIGNvbnRlbnRFZGl0YWJsZT5UaGlzIHRleHQgc2hvdWxkbid0IGJlIGNoYW5n
ZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0MyIgY29udGVudEVkaXRhYmxlPlRoaXMgdGV4dCBzaG91
bGRuIGJlIGRlbGV0ZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0NCIgY29udGVudEVkaXRhYmxlPlRo
aXMgdGV4dCBzaG91bGQgYmUgYSBsaW5rLjwvcD4KKyAgPHAgaWQ9InRhcmdldDUiIGNvbnRlbnRF
ZGl0YWJsZT5UaGlzIHdpbGwgbm90IGJlIHJlbmRlcmVkLjwvcD4KKyAgPHAgaWQ9InRhcmdldDZw
YXJlbnQiIGNvbnRlbnRFZGl0YWJsZT48c3BhbiBpZD0idGFyZ2V0NnN0YXJ0Ij5TdGFydCw8L3Nw
YW4+PHNwYW4gaWQ9InRhcmdldDZtaWRkbGUiPk1pZGRsZSw8L3NwYW4+PHNwYW4gaWQ9InRhcmdl
dDZlbmQiPkVuZC48L3NwYW4+PC9wPgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoYXQgdGhlIGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB3aGVuIGNv
bnRlbnRFZGl0YWJsZSBub2RlcyBhcmUgZWRpdGVkIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
Cit2YXIgYWN0dWFsSW5wdXRFdmVudENvdW50ID0gMDsKK3ZhciBleHBlY3RlZElucHV0RXZlbnRD
b3VudCA9IDA7CisKK2Z1bmN0aW9uIGZpcmVkKGV2dCwgZXhwZWN0ZWRJZCwgZXhwZWN0ZWRUZXh0
KQoreworICAgIGFjdHVhbElucHV0RXZlbnRDb3VudCsrOworICAgIHdpbmRvdy5hY3R1YWxJZCA9
IGV2dC50YXJnZXQuaWQ7CisgICAgc2hvdWxkQmUoIndpbmRvdy5hY3R1YWxJZCIsICInIiArIGV4
cGVjdGVkSWQgKyAiJyIpOworICAgIHdpbmRvdy5hY3R1YWxUZXh0ID0gZXZ0LnRhcmdldC5pbm5l
ckhUTUw7CisgICAgd2luZG93LmV4cGVjdGVkVGV4dCA9IGV4cGVjdGVkVGV4dDsKKyAgICBzaG91
bGRCZSgid2luZG93LmFjdHVhbFRleHQiLCAid2luZG93LmV4cGVjdGVkVGV4dCIpOworfQorCit2
YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisKKy8vIEEgdHJpdmlhbCBjYXNlOiBp
bnNlcnRpbmcgdGV4dCBzaG91bGQgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2YXIgdGFyZ2V0MCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQwIik7Cit0YXJnZXQwLmFkZEV2ZW50TGlzdGVu
ZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDAiLCAiVGV4dCBz
aG91bGQgYmUgaW5zZXJ0ZWQgaGVyZTpUZXh0Iik7IH0pOwordmFyIHRhcmdldDBUZXh0TGVuZ3Ro
ID0gdGFyZ2V0MC5maXJzdENoaWxkLmRhdGEubGVuZ3RoOworc2VsLnNldEJhc2VBbmRFeHRlbnQo
dGFyZ2V0MC5maXJzdENoaWxkLCB0YXJnZXQwVGV4dExlbmd0aCwgdGFyZ2V0MC5maXJzdENoaWxk
LCB0YXJnZXQwVGV4dExlbmd0aCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIs
IGZhbHNlLCAiVGV4dCIpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gQSBkaXJl
Y3QgRE9NIG1hbmlwdWxhdGlvbiBzaG91bGRuJ3QgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2YXIgdGFy
Z2V0MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7Cit0YXJnZXQxLmFkZEV2
ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBu
b3QgYmUgcmVhY2hlZCIpOyB9KTsKK3RhcmdldDEuZmlyc3RDaGlsZC5kYXRhICs9ICJUZXh0IjsK
KworLy8gQW4gZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiBpZiByZXN1bHRpbmcgRE9N
IHRyZWUgZG9lc24ndCBjaGFuZ2UgYWZ0ZXIgdGhlIGVkaXQuICh3aXRoIHJlcGxhY2luZyBpdCkK
K3ZhciB0YXJnZXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKK3ZhciBy
ZXBsYWNpbmdUZXh0ID0gdGFyZ2V0Mi5maXJzdENoaWxkLmRhdGE7Cit0YXJnZXQyLmFkZEV2ZW50
TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDIiLCBy
ZXBsYWNpbmdUZXh0KTsgfSk7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0Mik7Citkb2N1
bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCByZXBsYWNpbmdUZXh0KTsKK2V4
cGVjdGVkSW5wdXRFdmVudENvdW50Kys7CisKKy8vIEFuICJkZWxldGUiIGNvbW1hbmQgc2hvdWxk
IGRpc3BhdGNoIGFuIGlucHV0IGV2ZW50LgordmFyIHRhcmdldDMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0MyIpOwordGFyZ2V0My5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1
bmN0aW9uKGV2dCkgeyBmaXJlZChldnQsICJ0YXJnZXQzIiwgIjxicj4iKTsgfSk7CitzZWwuc2Vs
ZWN0QWxsQ2hpbGRyZW4odGFyZ2V0Myk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiZGVsZXRlIiwg
ZmFsc2UpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gQSBjb21tYW5kIG90aGVy
IHRoYW4gdGV4dC1lZGl0aW5nIHNob3VsZCBkaXNwYXRjaCBhbiBpbnB1dCBldmVudC4KKy8vIEFs
c28gbm90ZSB0aGF0IGNyZWF0ZUxpbmsgaXMgYSBjb21wb3NpdGUgY29tbWFuZCwgCisvLyBzbyB0
aGlzIHRlc3QgYWxzbyBlbnN1cmVzIHRoYXQgZXZlbiBjb21wb3NpdGUgY29tbWFuZCBkaXNwYXRj
aGVzIHRoZSBldmVudCBvbmx5IG9uY2UuCit2YXIgdGFyZ2V0NCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQ0Iik7Cit0YXJnZXQ0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVu
Y3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDQiLCAiPGEgaHJlZj1cImh0dHA6Ly93d3cu
ZXhhbXBsZS5jb20vXCI+VGhpcyB0ZXh0IHNob3VsZCBiZSBhIGxpbmsuPC9hPiIpOyB9KTsKK3Nl
bC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQ0KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJjcmVh
dGVMaW5rIiwgZmFsc2UsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOworZXhwZWN0ZWRJbnB1
dEV2ZW50Q291bnQrKzsKKworLy8gQW4gZXZlbnQgc2hvdWxkbid0IGJlIGRpc3BhdGNoZWQgdG8g
YSBpbnZpc2libGUgbm9kZS4KK3ZhciB0YXJnZXQ1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDUiKTsKK3RhcmdldDUuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihl
dnQpIHsgdGVzdEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOworc2VsLnNlbGVj
dEFsbENoaWxkcmVuKHRhcmdldDUpOwordGFyZ2V0NS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydFRleHQiLCBmYWxzZSwgIlRleHQiKTsKKworLy8g
VGhlIGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIGVkaXRhYmxlIHJvb3QuCit2
YXIgdGFyZ2V0NnBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQ2cGFyZW50
Iik7Cit2YXIgdGFyZ2V0NnN0YXJ0ICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQ2
c3RhcnQiKTsKK3ZhciB0YXJnZXQ2bWlkZGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldDZtaWRkbGUiKTsKK3ZhciB0YXJnZXQ2ZW5kICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldDZlbmQiKTsKKwordmFyIGV4cGVjdGVkVGV4dDYgPSAiPHNwYW4gaWQ9XCJ0YXJn
ZXQ2c3RhcnRcIj48YSBocmVmPVwiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIj5TdGFydCw8L2E+
PC9zcGFuPjxzcGFuIGlkPVwidGFyZ2V0Nm1pZGRsZVwiPjxhIGhyZWY9XCJodHRwOi8vd3d3LmV4
YW1wbGUuY29tL1wiPk1pZGRsZSw8L2E+PC9zcGFuPjxzcGFuIGlkPVwidGFyZ2V0NmVuZFwiPjxh
IGhyZWY9XCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiPkVuZC48L2E+PC9zcGFuPiI7Cit0YXJn
ZXQ2cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVk
KGV2dCwgInRhcmdldDZwYXJlbnQiLCBleHBlY3RlZFRleHQ2KTsgfSk7CitleHBlY3RlZElucHV0
RXZlbnRDb3VudCsrOwordGFyZ2V0NnN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVu
Y3Rpb24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBub3QgYmUgcmVhY2hlZCIpOyB9KTsKK3Rh
cmdldDZlbmQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZh
aWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0Nm1pZGRsZS5hZGRFdmVu
dExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyBmaXJlZChldnQsICJ0YXJnZXQ2ZW5k
IiwgIiIpOyB9KTsKK3NlbC5zZXRCYXNlQW5kRXh0ZW50KHRhcmdldDZzdGFydC5maXJzdENoaWxk
LCAwLCAKKyAgICAgICAgICAgICAgICAgICAgIHRhcmdldDZlbmQuZmlyc3RDaGlsZCwgdGFyZ2V0
NmVuZC5maXJzdENoaWxkLmRhdGEubGVuZ3RoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJjcmVh
dGVMaW5rIiwgZmFsc2UsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJl
KCJleHBlY3RlZElucHV0RXZlbnRDb3VudCIsICJhY3R1YWxJbnB1dEV2ZW50Q291bnQiKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCAxMDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWMxYWI5ZDhlNWJhNGMyMzJhMGUyMzJlMzM5OWZiZmQwYzM5NzM3Mi4uZjBjYmJkNDdl
ZDE4ZWUxMmNkYmEzMjJiMmY4NmY3MGE4YTc0YTQzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNS0w
OSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjY1MjYKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlucHV0IGV2ZW50
cyAob25pbnB1dCkgdG8gY29udGVudEVkaXRhYmxlIGVsZW1lbnRzCisKKyAgICAgICAgTWFkZSBh
IGRlZmF1bHQgZXZlbnQgaGFuZGxlciBvbiB0aGUgTm9kZSB0byBkaXNwYXRjaCBhbiBpbnB1dCBl
dmVudCB3aGVuCisgICAgICAgIHdlYmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWQgYXJyaXZlZC4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRF
ZGl0YWJsZS5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKwogMjAxMC0wNS0wNSAgQ2hhcmxlcyBXZWkgIDxjaGFy
bGVzLndlaUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vvcmdl
IFN0YWlrb3MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCmluZGV4IDg4MWM3ODg4MjViYTQ4YTg2NmY4OGMxMDlkMTllMDdhNmZjMTllZTUuLjUwYzZm
MTMyZTk2NWI5NjQ5YmJmNTRmMGVjMmE4NGZjNWExMDZmMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNDgsNiArNDgsNyBAQCBFTkFC
TEVfREFUQUJBU0UgPSBFTkFCTEVfREFUQUJBU0U7CiBFTkFCTEVfREFUQUdSSUQgPSA7CiBFTkFC
TEVfREFUQUxJU1QgPSBFTkFCTEVfREFUQUxJU1Q7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFC
TEVfRE9NX1NUT1JBR0U7CitFTkFCTEVfRURJVElOR19JTlBVVF9FVkVOVFMgPSBFTkFCTEVfRURJ
VElOR19JTlBVVF9FVkVOVFM7IAogRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09V
UkNFOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURF
UiA9IDsKQEAgLTc4LDQgKzc5LDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEgg
PSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RF
RklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5U
U09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVf
RklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIp
ICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkp
ICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcp
ICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVf
U1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hI
VE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9C
X1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5B
QkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRURJVElOR19JTlBV
VF9FVkVOVFMpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTk9USUZJ
Q0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9H
UkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJF
RF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggODNlOWIwMDIyNTZhMjY2NDQ2MjM0NjU4OTgzMjU4MjBlYmY3MjUzZi4uZDMw
N2Q1M2NhNWE1YTYxODg2NjE3NzJlMjRkMDc0YjY0ZmI2ZDIyYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTMwNzgsNiArMzA3
OCwxMyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAg
ICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgICAg
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKHN0YXJ0Tm9k
ZSwgd2hlZWxFdmVudCk7CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS53ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQpIHsKKyNpZiBFTkFCTEUoRURJ
VElOR19JTlBVVF9FVkVOVFMpCisgICAgICAgIGlmIChyZW5kZXJlcigpKSB7CisgICAgICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRy
dWUsIGZhbHNlKSk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAg
ICAgICAgfQorI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYzA2ZTc4ODZmYmJkODg3MTAyNTky
NTI3MTg1M2QzOTYwNjQzMDJmMi4uNTAzZTU5OTViMjFlYTVmMjk0ZjI2MjNmYTc3YTk2MDEyMDc0
NTFmZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA1LTA5ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUy
NgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaW5wdXQgZXZlbnRzIChvbmlucHV0KSB0byBjb250
ZW50RWRpdGFibGUgZWxlbWVudHMKKyAgICAgICAgCisgICAgICAgIEFkZGVkICItLWVkaXRpbmct
aW5wdXQtZXZlbnRzIiBvcHRpb24gZm9yIGJ1aWxkLXdlYmtpdCwgdG8gY29udHJvbCB0aGUgZmxh
Zy4KKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDEwLTA1LTA1ICBKb3Nl
cGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
UGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggM2EzZWRiOWNiZDVj
OTYyYzhmZWYxYjBlYWU4MGRlMDhhYmVmMjAxNC4uMWEyYmNhN2M0MmFjZjY5ZDhlODgxYTMyMDkz
ZjJjMDg0ZjQ5NDU2ZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTU3LDcgKzU3LDcg
QEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCwgJGNo
YW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkY2wKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlv
blN1cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQs
ICRzdmdGb250c1N1cHBvcnQsCiAgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNl
U3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwg
JHdjc3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBh
dGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25z
U3VwcG9ydCwgJGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCi0g
ICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQpOworICAgICRmaWxlUmVh
ZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkZWRpdGluZ0lucHV0RXZlbnRzU3VwcG9y
dCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiM2QtY2FudmFzIiwgZGVz
YyA9PiAiVG9nZ2xlIDNEIGNhbnZhcyBzdXBwb3J0IiwKQEAgLTE4Miw2ICsxODIsOSBAQCBteSBA
ZmVhdHVyZXMgPSAoCiAKICAgICB7IG9wdGlvbiA9PiAiZmlsZS13cml0ZXIiLCBkZXNjID0+ICJU
b2dnbGUgRmlsZVdyaXRlciBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0ZJTEVf
V1JJVEVSIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGZpbGVXcml0ZXJTdXBwb3J0IH0sCisK
KyAgICB7IG9wdGlvbiA9PiAiZWRpdGluZy1pbnB1dC1ldmVudHMiLCBkZXNjID0+ICJUb2dnbGUg
ZGlzcGF0Y2hpbmcgZWRpdGluZyBpbnB1dCBldmVudHMiLAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfRURJVElOR19JTlBVVF9FVkVOVFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkZWRpdGlu
Z0lucHV0RXZlbnRzU3VwcG9ydCB9LAogKTsKIAogIyBVcGRhdGUgZGVmYXVsdHMgZnJvbSBRdCdz
IHByb2plY3QgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58864</attachid>
            <date>2010-06-16 02:14:25 -0700</date>
            <delta_ts>2010-06-17 01:43:05 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug-26526-20100616181423.patch</filename>
            <type>text/plain</type>
            <size>24147</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggNWI1Mjc5MzFmZTJhMGM3MDZkYzIwYTI0M2ZiMzI2OTc3YmE0MDAyZi4u
YWVjNDUyYThjNmVhNmY5OWI2NmY4ZGJiNDQzMzM1YmVlNGQ5NmI3OCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTQ5LDYgKzQ5LDcgQEAgRU5BQkxFX0RBVEFHUklEID0gOwogRU5BQkxFX0RBVEFMSVNUID0gRU5B
QkxFX0RBVEFMSVNUOwogRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiA9IDsKIEVOQUJMRV9ET01f
U1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKK0VOQUJMRV9FRElUSU5HX0lOUFVUX0VWRU5U
UyA9IEVOQUJMRV9FRElUSU5HX0lOUFVUX0VWRU5UUzsgCiBFTkFCTEVfRVZFTlRTT1VSQ0UgPSBF
TkFCTEVfRVZFTlRTT1VSQ0U7CiBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5B
QkxFX0ZJTEVfUkVBREVSID0gRU5BQkxFX0ZJTEVfUkVBREVSOwpAQCAtODEsNCArODIsNCBAQCBF
TkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9Y
U0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZB
UykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9F
VkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5B
QkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFC
QVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAk
KEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01F
VEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxF
X1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxF
X1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9P
QkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NL
RVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAk
KEVOQUJMRV9FRElUSU5HX0lOUFVUX0VWRU5UUykgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikg
JChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1B
R0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjU3NjRhZGNlNjAwMTg3NGZkMTI1MzAzYTE0MmY1YTg4ZDhk
YTVlZC4uMTk4MGRhNWU3YTRhNDcxYjFkZTkxN2Q5M2VmZWFkOGJkNTE5M2QwMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEwLTA1LTA5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUyNgorICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgaW5wdXQgZXZlbnRzIChvbmlucHV0KSB0byBjb250ZW50RWRpdGFibGUgZWxl
bWVudHMKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJs
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2V2ZW50LWlucHV0
LWNvbnRlbnRFZGl0YWJsZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNi0xNiAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRh
YmxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDJiMjg5NTEyOWYxMDg1YWZmNjFiMzJiMjg1
MWJhODc2NDc3M2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBA
CitUaGlzIHRlc3RzIHRoYXQgdGhlIGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB3aGVuIGNv
bnRlbnRFZGl0YWJsZSBub2RlcyBhcmUgZWRpdGVkCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHdpbmRvdy5hY3R1YWxJZCBpcyAndGFyZ2V0MCcKK1BBU1Mgd2luZG93LmFj
dHVhbFRleHQgaXMgd2luZG93LmV4cGVjdGVkVGV4dAorUEFTUyB3aW5kb3cuYWN0dWFsSWQgaXMg
J3RhcmdldDInCitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBlY3RlZFRleHQK
K1BBU1Mgd2luZG93LmFjdHVhbElkIGlzICd0YXJnZXQzJworUEFTUyB3aW5kb3cuYWN0dWFsVGV4
dCBpcyB3aW5kb3cuZXhwZWN0ZWRUZXh0CitQQVNTIHdpbmRvdy5hY3R1YWxJZCBpcyAndGFyZ2V0
NCcKK1BBU1Mgd2luZG93LmFjdHVhbFRleHQgaXMgd2luZG93LmV4cGVjdGVkVGV4dAorUEFTUyB3
aW5kb3cuYWN0dWFsSWQgaXMgJ3RhcmdldDZwYXJlbnQnCitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0
IGlzIHdpbmRvdy5leHBlY3RlZFRleHQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorUEFTUyBleHBlY3RlZElucHV0RXZlbnRDb3VudCBpcyBhY3R1YWxJ
bnB1dEV2ZW50Q291bnQKK0ZvbGxvd2luZ3MgYXJlIHRlc3QgZGF0YSBzZXQuIFlvdSBjYW4ganVz
dCBpZ25vcmUgdGhlbS4KKworVGV4dCBzaG91bGQgYmUgaW5zZXJ0ZWQgaGVyZTpUZXh0CisKK1Rl
eHQgc2hvdWxkIGJlIGluc2VydCB2aWEgc2NyaXB0OlRleHQKKworVGhpcyB0ZXh0IHNob3VsZG4n
dCBiZSBjaGFuZ2VkLgorCisKKworVGhpcyB0ZXh0IHNob3VsZCBiZSBhIGxpbmsuCisKK1N0YXJ0
LE1pZGRsZSxFbmQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1p
bnB1dC1jb250ZW50RWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50
LWlucHV0LWNvbnRlbnRFZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzZhODVlYWI2ZmJiYzM3
YWUzYTcyZTk1NGU5YWVhZWMwYThiODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbApAQCAtMCwwICsxLDEx
NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8aDI+Rm9sbG93aW5ncyBhcmUgdGVz
dCBkYXRhIHNldC4gWW91IGNhbiBqdXN0IGlnbm9yZSB0aGVtLjwvaDI+Cis8ZGl2IGlkPSJ0ZXN0
RGF0YSI+CisgIDxwIGlkPSJ0YXJnZXQwIiBjb250ZW50RWRpdGFibGU+VGV4dCBzaG91bGQgYmUg
aW5zZXJ0ZWQgaGVyZTo8L3A+CisgIDxwIGlkPSJ0YXJnZXQxIiBjb250ZW50RWRpdGFibGU+VGV4
dCBzaG91bGQgYmUgaW5zZXJ0IHZpYSBzY3JpcHQ6PC9wPgorICA8cCBpZD0idGFyZ2V0MiIgY29u
dGVudEVkaXRhYmxlPlRoaXMgdGV4dCBzaG91bGRuJ3QgYmUgY2hhbmdlZC48L3A+CisgIDxwIGlk
PSJ0YXJnZXQzIiBjb250ZW50RWRpdGFibGU+VGhpcyB0ZXh0IHNob3VsZG4gYmUgZGVsZXRlZC48
L3A+CisgIDxwIGlkPSJ0YXJnZXQ0IiBjb250ZW50RWRpdGFibGU+VGhpcyB0ZXh0IHNob3VsZCBi
ZSBhIGxpbmsuPC9wPgorICA8cCBpZD0idGFyZ2V0NSIgY29udGVudEVkaXRhYmxlPlRoaXMgd2ls
bCBub3QgYmUgcmVuZGVyZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0NnBhcmVudCIgY29udGVudEVk
aXRhYmxlPjxzcGFuIGlkPSJ0YXJnZXQ2c3RhcnQiPlN0YXJ0LDwvc3Bhbj48c3BhbiBpZD0idGFy
Z2V0Nm1pZGRsZSI+TWlkZGxlLDwvc3Bhbj48c3BhbiBpZD0idGFyZ2V0NmVuZCI+RW5kLjwvc3Bh
bj48L3A+Cis8L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCB0aGUgaW5wdXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHdoZW4gY29udGVudEVkaXRhYmxlIG5v
ZGVzIGFyZSBlZGl0ZWQiKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBhY3R1YWxJbnB1
dEV2ZW50Q291bnQgPSAwOwordmFyIGV4cGVjdGVkSW5wdXRFdmVudENvdW50ID0gMDsKKworZnVu
Y3Rpb24gZmlyZWQoZXZ0LCBleHBlY3RlZElkLCBleHBlY3RlZFRleHQpCit7CisgICAgYWN0dWFs
SW5wdXRFdmVudENvdW50Kys7CisgICAgd2luZG93LmFjdHVhbElkID0gZXZ0LnRhcmdldC5pZDsK
KyAgICBzaG91bGRCZSgid2luZG93LmFjdHVhbElkIiwgIiciICsgZXhwZWN0ZWRJZCArICInIik7
CisgICAgd2luZG93LmFjdHVhbFRleHQgPSBldnQudGFyZ2V0LmlubmVySFRNTDsKKyAgICB3aW5k
b3cuZXhwZWN0ZWRUZXh0ID0gZXhwZWN0ZWRUZXh0OworICAgIHNob3VsZEJlKCJ3aW5kb3cuYWN0
dWFsVGV4dCIsICJ3aW5kb3cuZXhwZWN0ZWRUZXh0Iik7Cit9CisKK3ZhciBzZWwgPSBkb2N1bWVu
dC5nZXRTZWxlY3Rpb24oKTsKKworLy8gQSB0cml2aWFsIGNhc2U6IGluc2VydGluZyB0ZXh0IHNo
b3VsZCBkaXNwYXRjaCB0aGUgZXZlbnQKK3ZhciB0YXJnZXQwID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldDAiKTsKK3RhcmdldDAuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5j
dGlvbihldnQpIHsgZmlyZWQoZXZ0LCAidGFyZ2V0MCIsICJUZXh0IHNob3VsZCBiZSBpbnNlcnRl
ZCBoZXJlOlRleHQiKTsgfSk7Cit2YXIgdGFyZ2V0MFRleHRMZW5ndGggPSB0YXJnZXQwLmZpcnN0
Q2hpbGQuZGF0YS5sZW5ndGg7CitzZWwuc2V0QmFzZUFuZEV4dGVudCh0YXJnZXQwLmZpcnN0Q2hp
bGQsIHRhcmdldDBUZXh0TGVuZ3RoLCB0YXJnZXQwLmZpcnN0Q2hpbGQsIHRhcmdldDBUZXh0TGVu
Z3RoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRUZXh0IiwgZmFsc2UsICJUZXh0Iik7
CitleHBlY3RlZElucHV0RXZlbnRDb3VudCsrOworCisvLyBBIGRpcmVjdCBET00gbWFuaXB1bGF0
aW9uIHNob3VsZG4ndCBkaXNwYXRjaCB0aGUgZXZlbnQKK3ZhciB0YXJnZXQxID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKK3RhcmdldDEuYWRkRXZlbnRMaXN0ZW5lcigiaW5w
dXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7
IH0pOwordGFyZ2V0MS5maXJzdENoaWxkLmRhdGEgKz0gIlRleHQiOworCisvLyBBbiBldmVudCBz
aG91bGQgYmUgZGlzcGF0Y2hlZCBldmVuIGlmIHJlc3VsdGluZyBET00gdHJlZSBkb2Vzbid0IGNo
YW5nZSBhZnRlciB0aGUgZWRpdC4gKHdpdGggcmVwbGFjaW5nIGl0KQordmFyIHRhcmdldDIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOwordmFyIHJlcGxhY2luZ1RleHQgPSB0
YXJnZXQyLmZpcnN0Q2hpbGQuZGF0YTsKK3RhcmdldDIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQi
LCBmdW5jdGlvbihldnQpIHsgZmlyZWQoZXZ0LCAidGFyZ2V0MiIsIHJlcGxhY2luZ1RleHQpOyB9
KTsKK3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQyKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJpbnNlcnRUZXh0IiwgZmFsc2UsIHJlcGxhY2luZ1RleHQpOworZXhwZWN0ZWRJbnB1dEV2ZW50
Q291bnQrKzsKKworLy8gQW4gImRlbGV0ZSIgY29tbWFuZCBzaG91bGQgZGlzcGF0Y2ggYW4gaW5w
dXQgZXZlbnQuCit2YXIgdGFyZ2V0MyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQz
Iik7Cit0YXJnZXQzLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZp
cmVkKGV2dCwgInRhcmdldDMiLCAiPGJyPiIpOyB9KTsKK3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0
YXJnZXQzKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJkZWxldGUiLCBmYWxzZSk7CitleHBlY3Rl
ZElucHV0RXZlbnRDb3VudCsrOworCisvLyBBIGNvbW1hbmQgb3RoZXIgdGhhbiB0ZXh0LWVkaXRp
bmcgc2hvdWxkIGRpc3BhdGNoIGFuIGlucHV0IGV2ZW50LgorLy8gQWxzbyBub3RlIHRoYXQgY3Jl
YXRlTGluayBpcyBhIGNvbXBvc2l0ZSBjb21tYW5kLCAKKy8vIHNvIHRoaXMgdGVzdCBhbHNvIGVu
c3VyZXMgdGhhdCBldmVuIGNvbXBvc2l0ZSBjb21tYW5kIGRpc3BhdGNoZXMgdGhlIGV2ZW50IG9u
bHkgb25jZS4KK3ZhciB0YXJnZXQ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDQi
KTsKK3RhcmdldDQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgZmly
ZWQoZXZ0LCAidGFyZ2V0NCIsICI8YSBocmVmPVwiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIj5U
aGlzIHRleHQgc2hvdWxkIGJlIGEgbGluay48L2E+Iik7IH0pOworc2VsLnNlbGVjdEFsbENoaWxk
cmVuKHRhcmdldDQpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNyZWF0ZUxpbmsiLCBmYWxzZSwg
Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7CitleHBlY3RlZElucHV0RXZlbnRDb3VudCsrOwor
CisvLyBBbiBldmVudCBzaG91bGRuJ3QgYmUgZGlzcGF0Y2hlZCB0byBhIGludmlzaWJsZSBub2Rl
LgordmFyIHRhcmdldDUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0NSIpOwordGFy
Z2V0NS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyB0ZXN0RmFpbGVk
KCJzaG91bGQgbm90IGJlIHJlYWNoZWQiKTsgfSk7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFy
Z2V0NSk7Cit0YXJnZXQ1LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Citkb2N1bWVudC5leGVjQ29t
bWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCAiVGV4dCIpOworCisvLyBUaGUgZXZlbnQgc2hvdWxk
IGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgZWRpdGFibGUgcm9vdC4KK3ZhciB0YXJnZXQ2cGFyZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDZwYXJlbnQiKTsKK3ZhciB0YXJnZXQ2
c3RhcnQgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDZzdGFydCIpOwordmFyIHRh
cmdldDZtaWRkbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Nm1pZGRsZSIpOwor
dmFyIHRhcmdldDZlbmQgICAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0NmVuZCIp
OworCit2YXIgZXhwZWN0ZWRUZXh0NiA9ICI8c3BhbiBpZD1cInRhcmdldDZzdGFydFwiPjxhIGhy
ZWY9XCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiPlN0YXJ0LDwvYT48L3NwYW4+PHNwYW4gaWQ9
XCJ0YXJnZXQ2bWlkZGxlXCI+PGEgaHJlZj1cImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vXCI+TWlk
ZGxlLDwvYT48L3NwYW4+PHNwYW4gaWQ9XCJ0YXJnZXQ2ZW5kXCI+PGEgaHJlZj1cImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20vXCI+RW5kLjwvYT48L3NwYW4+IjsKK3RhcmdldDZwYXJlbnQuYWRkRXZl
bnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgZmlyZWQoZXZ0LCAidGFyZ2V0NnBh
cmVudCIsIGV4cGVjdGVkVGV4dDYpOyB9KTsKK2V4cGVjdGVkSW5wdXRFdmVudENvdW50Kys7Cit0
YXJnZXQ2c3RhcnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVz
dEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0NmVuZC5hZGRFdmVu
dExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyB0ZXN0RmFpbGVkKCJzaG91bGQgbm90
IGJlIHJlYWNoZWQiKTsgfSk7Cit0YXJnZXQ2bWlkZGxlLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0
IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDZlbmQiLCAiIik7IH0pOworc2Vs
LnNldEJhc2VBbmRFeHRlbnQodGFyZ2V0NnN0YXJ0LmZpcnN0Q2hpbGQsIDAsIAorICAgICAgICAg
ICAgICAgICAgICAgdGFyZ2V0NmVuZC5maXJzdENoaWxkLCB0YXJnZXQ2ZW5kLmZpcnN0Q2hpbGQu
ZGF0YS5sZW5ndGgpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNyZWF0ZUxpbmsiLCBmYWxzZSwg
Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIik7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoImV4cGVjdGVkSW5wdXRF
dmVudENvdW50IiwgImFjdHVhbElucHV0RXZlbnRDb3VudCIpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30sIDEwMCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvU2tpcHBlZAppbmRleCA1MzZmYmZkMzM1MDU0NmI2NjNhZDU5OGRhZGEzYmJmNWI3Y2E2
ZGZhLi41NzI2MDMwMWU2NzE4MGNhMjMwOGUwODY3Y2UwM2E3NWJiMDEzYjI2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZApAQCAtMTI0Myw2ICsxMjQzLDcgQEAgZmFzdC9ldmVudHMvc3RvcC1s
b2FkLWluLXVubG9hZC1oYW5kbGVyLXVzaW5nLWRvY3VtZW50LXdyaXRlLmh0bWwKIGZhc3QvZXZl
bnRzL3N0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11c2luZy13aW5kb3ctc3RvcC5odG1sCiBm
YXN0L2V2ZW50cy90YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sCiBmYXN0L2V2ZW50cy90YWJp
bmRleC1mb2N1cy1jaGFpbi5odG1sCitmYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRp
dGFibGUuaHRtbAogZmFzdC9mb3Jtcy9idXR0b24tc3RhdGUtcmVzdG9yZS5odG1sCiBmYXN0L2Zv
cm1zL2RyYWctaW50by10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2RyYWctb3V0LW9mLXRleHRh
cmVhLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggZWY4ZTJmZWM4ZGM5MWJjYzZl
OGY4ZTBhYWUxMDI1MzMwNzZhYWJlYS4uODIzNjdlMzg5NGNhZTk1OWVjMjE1ZmQ3YzIxNWQxNDAx
MmQwOGM3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTE2MCw2ICsxNjAsOSBAQCBm
YXN0L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3JlZC1hbmQtdGhlbi1sb2NrZWQuaHRtbAogZWRp
dGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJv
cC10ZXh0LWh0bWwuaHRtbAogCisjIEVESVRJTkdfSU5QVVRfRVZFTlRTIGlzIG5vdCBlbmFibGVk
CitmYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbAorCiAjIE1pc3Np
bmcgYW4gaW1wbGVtZW50YXRpb24gb2YgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRG
b3JMaXN0SXRlbSgpCiBmYXN0L2xpc3RzL29sLW5lc3RlZC1pdGVtcy1keW5hbWljLWluc2VydC5o
dG1sCiBmYXN0L2xpc3RzL29sLW5lc3RlZC1pdGVtcy1keW5hbWljLXJlbW92ZS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCBlMzBiMWE5NmFkNDgzZjVlNzcxOTM1YjgyNWMwZGYzMjQ2
YmM1YzZhLi4yZDA0YWQ4NjkzZTA2YjM1OGEzMGYyMTRkZWVjNzBiNzEwYzliYjllIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTc2Niw2ICs3NjYsOSBAQCBlZGl0aW5nL3RleHQtaXRlcmF0
b3IvYmFzaWMtaXRlcmF0aW9uLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9u
LWJhY2stY2FjaGVkLmh0bWwKIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2st
Y2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwKIAorIyBFRElUSU5HX0lOUFVUX0VWRU5UUyBpcyBub3Qg
ZW5hYmxlZAorZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0bWwKKwog
IyBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKSBkb2VzIG5vdCBy
ZXBvcnQgdGhlIG9yaWdpbiBub2RlCiBmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTgu
aHRtbAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDdmYjlhYWQ4OTMwZGNjZjUwYTBi
NzZiY2MzOWUxZjIyOGE3MTkzOTUuLmNmMDU1MGZmYmQyYTdiODU5YjJjOWViZDkwMTU0MWE5NmE1
NDNmMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xMjYsNiArMTI2LDkgQEAgZmFz
dC9ldmVudHMvZnJhbWUtdGFiLWZvY3VzLmh0bWwKIGZhc3QvZXZlbnRzL29wdGlvbi10YWIuaHRt
bAogZmFzdC9mb3Jtcy9mb2N1czIuaHRtbAogCisjIEVESVRJTkdfSU5QVVRfRVZFTlRTIGlzIG5v
dCBlbmFibGVkCitmYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbAor
CiAjIGZhc3QvaHRtbC9rZXlnZW4uaHRtbCBpcyBmYWlsaW5nIG9uIGJvb21lciA8cmRhcjovL3By
b2JsZW0vNTEzMzc5OT4KIGZhc3QvaHRtbC9rZXlnZW4uaHRtbAogZmFzdC9pbnZhbGlkL3Jlc2lk
dWFsLXN0eWxlLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYjRjMjY5MDA3MWEzYjRhZDhiMzNmOTVhYjI4NTcwOTg0NTdmNDE3Mi4u
NGQzYTI0ZTNjOTQzYTZmYTU3MzFmMDY3OGFhMmI4NjQzNWM3Y2IyMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMC0wNS0wOSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MjYKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlu
cHV0IGV2ZW50cyAob25pbnB1dCkgdG8gY29udGVudEVkaXRhYmxlIGVsZW1lbnRzCisKKyAgICAg
ICAgTWFkZSBhIGRlZmF1bHQgZXZlbnQgaGFuZGxlciBvbiB0aGUgTm9kZSB0byBkaXNwYXRjaCBh
biBpbnB1dCBldmVudCB3aGVuCisgICAgICAgIHdlYmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWQg
YXJyaXZlZC4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL2V2ZW50LWlucHV0
LWNvbnRlbnRFZGl0YWJsZS5odG1sCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKwogMjAxMC0wNi0xNiAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBiL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggNWI1Mjc5MzFmZTJhMGM3MDZkYzIwYTI0M2ZiMzI2OTc3YmE0MDAyZi4uNmIxYjY5YWE5MTVk
ZWEyMDliYjg5Y2QyNTQ4N2E4MzQ5ZmEwYjk4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00OSw2ICs0OSw3IEBAIEVOQUJMRV9EQVRB
R1JJRCA9IDsKIEVOQUJMRV9EQVRBTElTVCA9IEVOQUJMRV9EQVRBTElTVDsKIEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04gPSA7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JB
R0U7CitFTkFCTEVfRURJVElOR19JTlBVVF9FVkVOVFMgPSBFTkFCTEVfRURJVElOR19JTlBVVF9F
VkVOVFM7CiBFTkFCTEVfRVZFTlRTT1VSQ0UgPSBFTkFCTEVfRVZFTlRTT1VSQ0U7CiBFTkFCTEVf
RklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5BQkxFX0ZJTEVfUkVBREVSID0gRU5BQkxFX0ZJ
TEVfUkVBREVSOwpAQCAtODEsNCArODIsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9Y
UEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAk
KEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVf
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFU
QUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVS
UykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9H
RU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVS
KSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VS
KSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FU
SU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVT
U19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9X
T1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NW
R19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdf
Rk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChF
TkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxF
X1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xU
KTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykg
JChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChF
TkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5U
QVRJT04pICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FRElUSU5HX0lOUFVUX0VWRU5U
UykgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVf
UkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5B
QkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1M
KSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9S
VUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVf
U1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5B
QkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9T
VkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVO
QUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJM
RV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGE5YWVhZGQ4
MGE0ZWFjMWIxNjVmM2E0M2YzNjkxMzI2NjdmNmY4OGYuLjZlMjU4NWJkYTNhNjIyYjZiZjUzZTA4
YjY4ZWJhNGRhMjUxOTZiOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zMDI1LDYgKzMwMjUsMTMgQEAgdm9pZCBOb2RlOjpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgaWYgKHN0YXJ0Tm9kZSAm
JiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihzdGFydE5vZGUsIHdoZWVsRXZlbnQpOworI2lm
IEVOQUJMRShFRElUSU5HX0lOUFVUX0VWRU5UUykKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLndlYmtpdEVkaXRhYmxlQ29udGVudENoYW5nZWRFdmVudCkgewor
ICAgICAgICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIH0KKyNlbmRpZgogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyBiL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggNWI1Mjc5MzFmZTJhMGM3MDZkYzIwYTI0M2ZiMzI2OTc3YmE0MDAyZi4u
NmIxYjY5YWE5MTVkZWEyMDliYjg5Y2QyNTQ4N2E4MzQ5ZmEwYjk4ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC00OSw2ICs0
OSw3IEBAIEVOQUJMRV9EQVRBR1JJRCA9IDsKIEVOQUJMRV9EQVRBTElTVCA9IEVOQUJMRV9EQVRB
TElTVDsKIEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04gPSA7CiBFTkFCTEVfRE9NX1NUT1JBR0Ug
PSBFTkFCTEVfRE9NX1NUT1JBR0U7CitFTkFCTEVfRURJVElOR19JTlBVVF9FVkVOVFMgPSBFTkFC
TEVfRURJVElOR19JTlBVVF9FVkVOVFM7CiBFTkFCTEVfRVZFTlRTT1VSQ0UgPSBFTkFCTEVfRVZF
TlRTT1VSQ0U7CiBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5BQkxFX0ZJTEVf
UkVBREVSID0gRU5BQkxFX0ZJTEVfUkVBREVSOwpAQCAtODEsNCArODIsNCBAQCBFTkFCTEVfWEhU
TUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFC
TEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRB
QkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJ
Q0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJD
RSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVf
V1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykg
JChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
KSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gp
ICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklN
QVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJ
TkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChF
TkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVO
QUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQ
QVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX0NBTlZB
UykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVO
QUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9F
RElUSU5HX0lOUFVUX0VWRU5UUykgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRF
UlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVf
R0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpF
UikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJM
RV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNM
VCk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpp
bmRleCAxOWI2ZDE5MTJlYzBiZmUxOTUxMDMyNzhjOTBkNTYxNWJjMjExNGUwLi43NmIwYzYyNTUy
YTFkZmNmODliYjYwZmYwNjczM2IxYWY5M2I2NWVmIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktpdDIvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTQ4LDYgKzQ4LDcgQEAgRU5BQkxFX0RB
VEFCQVNFID0gRU5BQkxFX0RBVEFCQVNFOwogRU5BQkxFX0RBVEFHUklEID0gOwogRU5BQkxFX0RB
VEFMSVNUID0gRU5BQkxFX0RBVEFMSVNUOwogRU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RP
TV9TVE9SQUdFOworRU5BQkxFX0VESVRJTkdfSU5QVVRfRVZFTlRTID0gRU5BQkxFX0VESVRJTkdf
SU5QVVRfRVZFTlRTOwogRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNFOwog
RU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURFUiA9IEVO
QUJMRV9GSUxFX1JFQURFUjsKQEAgLTc5LDQgKzgwLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBF
TkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwog
Ci1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRF
UklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQo
RU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5B
QkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURF
UikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dN
TCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQo
RU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RB
VEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RP
TV9TVE9SQUdFKSAkKEVOQUJMRV9FRElUSU5HX0lOUFVUX0VWRU5UUykgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkg
JChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1Nf
VEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggZGI0M2MxZjk3M2FhMTU2Nzc5NWQ2MjgwZGExZmQ5OWM5ZmE2MTcwYy4uNThmYmEx
ZDU5YWQyZTZlYzgyMmE4YjlhZDU5NzgxOTRhNWRkZmI3MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEwLTA1LTA5ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUyNgorICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
aW5wdXQgZXZlbnRzIChvbmlucHV0KSB0byBjb250ZW50RWRpdGFibGUgZWxlbWVudHMKKyAgICAg
ICAgCisgICAgICAgIEFkZGVkICItLWVkaXRpbmctaW5wdXQtZXZlbnRzIiBvcHRpb24gZm9yIGJ1
aWxkLXdlYmtpdCwgdG8gY29udHJvbCB0aGUgZmxhZy4KKworICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtd2Via2l0OgorCiAyMDEwLTA2LTE1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CmluZGV4IGEyOWE2ZmQzMWZiMjc4NThiOTdhNzkwOWY5OGRjNTI3MzhkYjJjNWEuLmQ0NTU3
NmNlYmZjYzg2NzYzYmEwMTk4MGJjNTQ2N2ViNWUwNzAwZDUgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0CkBAIC02MSw3ICs2MSw3IEBAIG15ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVl
RFJlbmRlcmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGNsCiAgICAgJHN2
Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdE
T01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAogICAgICRzdmdGb3JlaWdu
T2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRz
U3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29y
a2Vyc1N1cHBvcnQsCiAgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VT
dXBwb3J0LCAkbm90aWZpY2F0aW9uc1N1cHBvcnQsICRibG9iU2xpY2VTdXBwb3J0LCAkdGlsZWRC
YWNraW5nU3RvcmVTdXBwb3J0LAotICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJT
dXBwb3J0KTsKKyAgICAkZmlsZVJlYWRlclN1cHBvcnQsICRmaWxlV3JpdGVyU3VwcG9ydCwgJGVk
aXRpbmdJbnB1dEV2ZW50c1N1cHBvcnQpOwogCiBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRp
b24gPT4gIjNkLWNhbnZhcyIsIGRlc2MgPT4gIlRvZ2dsZSAzRCBjYW52YXMgc3VwcG9ydCIsCkBA
IC0xODksNiArMTg5LDkgQEAgbXkgQGZlYXR1cmVzID0gKAogCiAgICAgeyBvcHRpb24gPT4gImZp
bGUtd3JpdGVyIiwgZGVzYyA9PiAiVG9nZ2xlIEZpbGVXcml0ZXIgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9GSUxFX1dSSVRFUiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRm
aWxlV3JpdGVyU3VwcG9ydCB9LAorCisgICAgeyBvcHRpb24gPT4gImVkaXRpbmctaW5wdXQtZXZl
bnRzIiwgZGVzYyA9PiAiVG9nZ2xlIGRpc3BhdGNoaW5nIGVkaXRpbmcgaW5wdXQgZXZlbnRzIiwK
KyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VESVRJTkdfSU5QVVRfRVZFTlRTIiwgZGVmYXVsdCA9
PiAxLCB2YWx1ZSA9PiBcJGVkaXRpbmdJbnB1dEV2ZW50c1N1cHBvcnQgfSwKICk7CiAKICMgVXBk
YXRlIGRlZmF1bHRzIGZyb20gUXQncyBwcm9qZWN0IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58971</attachid>
            <date>2010-06-17 01:43:12 -0700</date>
            <delta_ts>2010-06-18 01:27:30 -0700</delta_ts>
            <desc>patch v3; reaname ENABLE_EDITING_INPUT_EVENTS to ENABLE_INPUT_EVENT_EXTENSIONS</desc>
            <filename>bug-26526-20100617174309.patch</filename>
            <type>text/plain</type>
            <size>24206</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggNWI1Mjc5MzFmZTJhMGM3MDZkYzIwYTI0M2ZiMzI2OTc3YmE0MDAyZi4u
OTRhMDdhOWIzMDIzZGU0YjA3MzUxNDM4ZWNlOGMzNTM2NWM1ZGRjMyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIv
SmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAg
LTU3LDYgKzU3LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0gRU5BQkxFX0dFT0xPQ0FUSU9OOwog
RU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSU1BR0Vf
UkVTSVpFUiA9IDsKIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFID0gOworRU5BQkxFX0lOUFVUX0VW
RU5UX0VYVEVOU0lPTlMgPSBFTkFCTEVfSU5QVVRfRVZFTlRfRVhURU5TSU9OUzsKIEVOQUJMRV9K
QVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFCTEVf
TUFUSE1MID0gOwogRU5BQkxFX01FVEVSX1RBRyA9IEVOQUJMRV9NRVRFUl9UQUc7CkBAIC04MSw0
ICs4Miw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRI
OwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFC
TEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0Up
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9D
QVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFU
QUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9NX1NUT1JBR0Up
ICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JF
QURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkg
JChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVC
WSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NW
RykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJM
RV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZH
X0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JM
T0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFT
RURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChF
TkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX0VWRU5UX0VYVEVOU0lPTlMpICQoRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJf
VEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FO
REJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFC
TEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI1NzY0YWRjZTYwMDE4NzRmZDEyNTMw
M2ExNDJmNWE4OGQ4ZGE1ZWQuLjE5ODBkYTVlN2E0YTQ3MWIxZGU5MTdkOTNlZmVhZDhiZDUxOTNk
MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNS0wOSAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MjYK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlucHV0IGV2ZW50cyAob25pbnB1dCkgdG8gY29udGVu
dEVkaXRhYmxlIGVsZW1lbnRzCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1j
b250ZW50RWRpdGFibGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTYg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVk
aXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0
LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQyYjI4OTUxMjlmMTA4
NWFmZjYxYjMyYjI4NTFiYTg3NjQ3NzNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHRoZSBpbnB1dCBldmVudHMgYXJlIGRpc3Bh
dGNoZWQgd2hlbiBjb250ZW50RWRpdGFibGUgbm9kZXMgYXJlIGVkaXRlZAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuYWN0dWFsSWQgaXMgJ3RhcmdldDAnCitQ
QVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBlY3RlZFRleHQKK1BBU1Mgd2luZG93
LmFjdHVhbElkIGlzICd0YXJnZXQyJworUEFTUyB3aW5kb3cuYWN0dWFsVGV4dCBpcyB3aW5kb3cu
ZXhwZWN0ZWRUZXh0CitQQVNTIHdpbmRvdy5hY3R1YWxJZCBpcyAndGFyZ2V0MycKK1BBU1Mgd2lu
ZG93LmFjdHVhbFRleHQgaXMgd2luZG93LmV4cGVjdGVkVGV4dAorUEFTUyB3aW5kb3cuYWN0dWFs
SWQgaXMgJ3RhcmdldDQnCitQQVNTIHdpbmRvdy5hY3R1YWxUZXh0IGlzIHdpbmRvdy5leHBlY3Rl
ZFRleHQKK1BBU1Mgd2luZG93LmFjdHVhbElkIGlzICd0YXJnZXQ2cGFyZW50JworUEFTUyB3aW5k
b3cuYWN0dWFsVGV4dCBpcyB3aW5kb3cuZXhwZWN0ZWRUZXh0CitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgZXhwZWN0ZWRJbnB1dEV2ZW50Q291
bnQgaXMgYWN0dWFsSW5wdXRFdmVudENvdW50CitGb2xsb3dpbmdzIGFyZSB0ZXN0IGRhdGEgc2V0
LiBZb3UgY2FuIGp1c3QgaWdub3JlIHRoZW0uCisKK1RleHQgc2hvdWxkIGJlIGluc2VydGVkIGhl
cmU6VGV4dAorCitUZXh0IHNob3VsZCBiZSBpbnNlcnQgdmlhIHNjcmlwdDpUZXh0CisKK1RoaXMg
dGV4dCBzaG91bGRuJ3QgYmUgY2hhbmdlZC4KKworCisKK1RoaXMgdGV4dCBzaG91bGQgYmUgYSBs
aW5rLgorCitTdGFydCxNaWRkbGUsRW5kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Njc2
YTg1ZWFiNmZiYmMzN2FlM2E3MmU5NTRlOWFlYWVjMGE4Yjg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0bWwK
QEAgLTAsMCArMSwxMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGgyPkZvbGxv
d2luZ3MgYXJlIHRlc3QgZGF0YSBzZXQuIFlvdSBjYW4ganVzdCBpZ25vcmUgdGhlbS48L2gyPgor
PGRpdiBpZD0idGVzdERhdGEiPgorICA8cCBpZD0idGFyZ2V0MCIgY29udGVudEVkaXRhYmxlPlRl
eHQgc2hvdWxkIGJlIGluc2VydGVkIGhlcmU6PC9wPgorICA8cCBpZD0idGFyZ2V0MSIgY29udGVu
dEVkaXRhYmxlPlRleHQgc2hvdWxkIGJlIGluc2VydCB2aWEgc2NyaXB0OjwvcD4KKyAgPHAgaWQ9
InRhcmdldDIiIGNvbnRlbnRFZGl0YWJsZT5UaGlzIHRleHQgc2hvdWxkbid0IGJlIGNoYW5nZWQu
PC9wPgorICA8cCBpZD0idGFyZ2V0MyIgY29udGVudEVkaXRhYmxlPlRoaXMgdGV4dCBzaG91bGRu
IGJlIGRlbGV0ZWQuPC9wPgorICA8cCBpZD0idGFyZ2V0NCIgY29udGVudEVkaXRhYmxlPlRoaXMg
dGV4dCBzaG91bGQgYmUgYSBsaW5rLjwvcD4KKyAgPHAgaWQ9InRhcmdldDUiIGNvbnRlbnRFZGl0
YWJsZT5UaGlzIHdpbGwgbm90IGJlIHJlbmRlcmVkLjwvcD4KKyAgPHAgaWQ9InRhcmdldDZwYXJl
bnQiIGNvbnRlbnRFZGl0YWJsZT48c3BhbiBpZD0idGFyZ2V0NnN0YXJ0Ij5TdGFydCw8L3NwYW4+
PHNwYW4gaWQ9InRhcmdldDZtaWRkbGUiPk1pZGRsZSw8L3NwYW4+PHNwYW4gaWQ9InRhcmdldDZl
bmQiPkVuZC48L3NwYW4+PC9wPgorPC9kaXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgdGhlIGlucHV0IGV2ZW50cyBhcmUgZGlzcGF0Y2hlZCB3aGVuIGNvbnRl
bnRFZGl0YWJsZSBub2RlcyBhcmUgZWRpdGVkIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2
YXIgYWN0dWFsSW5wdXRFdmVudENvdW50ID0gMDsKK3ZhciBleHBlY3RlZElucHV0RXZlbnRDb3Vu
dCA9IDA7CisKK2Z1bmN0aW9uIGZpcmVkKGV2dCwgZXhwZWN0ZWRJZCwgZXhwZWN0ZWRUZXh0KQor
eworICAgIGFjdHVhbElucHV0RXZlbnRDb3VudCsrOworICAgIHdpbmRvdy5hY3R1YWxJZCA9IGV2
dC50YXJnZXQuaWQ7CisgICAgc2hvdWxkQmUoIndpbmRvdy5hY3R1YWxJZCIsICInIiArIGV4cGVj
dGVkSWQgKyAiJyIpOworICAgIHdpbmRvdy5hY3R1YWxUZXh0ID0gZXZ0LnRhcmdldC5pbm5lckhU
TUw7CisgICAgd2luZG93LmV4cGVjdGVkVGV4dCA9IGV4cGVjdGVkVGV4dDsKKyAgICBzaG91bGRC
ZSgid2luZG93LmFjdHVhbFRleHQiLCAid2luZG93LmV4cGVjdGVkVGV4dCIpOworfQorCit2YXIg
c2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisKKy8vIEEgdHJpdmlhbCBjYXNlOiBpbnNl
cnRpbmcgdGV4dCBzaG91bGQgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2YXIgdGFyZ2V0MCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQwIik7Cit0YXJnZXQwLmFkZEV2ZW50TGlzdGVuZXIo
ImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDAiLCAiVGV4dCBzaG91
bGQgYmUgaW5zZXJ0ZWQgaGVyZTpUZXh0Iik7IH0pOwordmFyIHRhcmdldDBUZXh0TGVuZ3RoID0g
dGFyZ2V0MC5maXJzdENoaWxkLmRhdGEubGVuZ3RoOworc2VsLnNldEJhc2VBbmRFeHRlbnQodGFy
Z2V0MC5maXJzdENoaWxkLCB0YXJnZXQwVGV4dExlbmd0aCwgdGFyZ2V0MC5maXJzdENoaWxkLCB0
YXJnZXQwVGV4dExlbmd0aCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZh
bHNlLCAiVGV4dCIpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gQSBkaXJlY3Qg
RE9NIG1hbmlwdWxhdGlvbiBzaG91bGRuJ3QgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2YXIgdGFyZ2V0
MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7Cit0YXJnZXQxLmFkZEV2ZW50
TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBub3Qg
YmUgcmVhY2hlZCIpOyB9KTsKK3RhcmdldDEuZmlyc3RDaGlsZC5kYXRhICs9ICJUZXh0IjsKKwor
Ly8gQW4gZXZlbnQgc2hvdWxkIGJlIGRpc3BhdGNoZWQgZXZlbiBpZiByZXN1bHRpbmcgRE9NIHRy
ZWUgZG9lc24ndCBjaGFuZ2UgYWZ0ZXIgdGhlIGVkaXQuICh3aXRoIHJlcGxhY2luZyBpdCkKK3Zh
ciB0YXJnZXQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKK3ZhciByZXBs
YWNpbmdUZXh0ID0gdGFyZ2V0Mi5maXJzdENoaWxkLmRhdGE7Cit0YXJnZXQyLmFkZEV2ZW50TGlz
dGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDIiLCByZXBs
YWNpbmdUZXh0KTsgfSk7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0Mik7Citkb2N1bWVu
dC5leGVjQ29tbWFuZCgiaW5zZXJ0VGV4dCIsIGZhbHNlLCByZXBsYWNpbmdUZXh0KTsKK2V4cGVj
dGVkSW5wdXRFdmVudENvdW50Kys7CisKKy8vIEFuICJkZWxldGUiIGNvbW1hbmQgc2hvdWxkIGRp
c3BhdGNoIGFuIGlucHV0IGV2ZW50LgordmFyIHRhcmdldDMgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0MyIpOwordGFyZ2V0My5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0
aW9uKGV2dCkgeyBmaXJlZChldnQsICJ0YXJnZXQzIiwgIjxicj4iKTsgfSk7CitzZWwuc2VsZWN0
QWxsQ2hpbGRyZW4odGFyZ2V0Myk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiZGVsZXRlIiwgZmFs
c2UpOworZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKworLy8gQSBjb21tYW5kIG90aGVyIHRo
YW4gdGV4dC1lZGl0aW5nIHNob3VsZCBkaXNwYXRjaCBhbiBpbnB1dCBldmVudC4KKy8vIEFsc28g
bm90ZSB0aGF0IGNyZWF0ZUxpbmsgaXMgYSBjb21wb3NpdGUgY29tbWFuZCwgCisvLyBzbyB0aGlz
IHRlc3QgYWxzbyBlbnN1cmVzIHRoYXQgZXZlbiBjb21wb3NpdGUgY29tbWFuZCBkaXNwYXRjaGVz
IHRoZSBldmVudCBvbmx5IG9uY2UuCit2YXIgdGFyZ2V0NCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQ0Iik7Cit0YXJnZXQ0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rp
b24oZXZ0KSB7IGZpcmVkKGV2dCwgInRhcmdldDQiLCAiPGEgaHJlZj1cImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20vXCI+VGhpcyB0ZXh0IHNob3VsZCBiZSBhIGxpbmsuPC9hPiIpOyB9KTsKK3NlbC5z
ZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQ0KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJjcmVhdGVM
aW5rIiwgZmFsc2UsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOworZXhwZWN0ZWRJbnB1dEV2
ZW50Q291bnQrKzsKKworLy8gQW4gZXZlbnQgc2hvdWxkbid0IGJlIGRpc3BhdGNoZWQgdG8gYSBp
bnZpc2libGUgbm9kZS4KK3ZhciB0YXJnZXQ1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldDUiKTsKK3RhcmdldDUuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQp
IHsgdGVzdEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOworc2VsLnNlbGVjdEFs
bENoaWxkcmVuKHRhcmdldDUpOwordGFyZ2V0NS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworZG9j
dW1lbnQuZXhlY0NvbW1hbmQoImluc2VydFRleHQiLCBmYWxzZSwgIlRleHQiKTsKKworLy8gVGhl
IGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIGVkaXRhYmxlIHJvb3QuCit2YXIg
dGFyZ2V0NnBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQ2cGFyZW50Iik7
Cit2YXIgdGFyZ2V0NnN0YXJ0ICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQ2c3Rh
cnQiKTsKK3ZhciB0YXJnZXQ2bWlkZGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dDZtaWRkbGUiKTsKK3ZhciB0YXJnZXQ2ZW5kICAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDZlbmQiKTsKKwordmFyIGV4cGVjdGVkVGV4dDYgPSAiPHNwYW4gaWQ9XCJ0YXJnZXQ2
c3RhcnRcIj48YSBocmVmPVwiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIj5TdGFydCw8L2E+PC9z
cGFuPjxzcGFuIGlkPVwidGFyZ2V0Nm1pZGRsZVwiPjxhIGhyZWY9XCJodHRwOi8vd3d3LmV4YW1w
bGUuY29tL1wiPk1pZGRsZSw8L2E+PC9zcGFuPjxzcGFuIGlkPVwidGFyZ2V0NmVuZFwiPjxhIGhy
ZWY9XCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiPkVuZC48L2E+PC9zcGFuPiI7Cit0YXJnZXQ2
cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2
dCwgInRhcmdldDZwYXJlbnQiLCBleHBlY3RlZFRleHQ2KTsgfSk7CitleHBlY3RlZElucHV0RXZl
bnRDb3VudCsrOwordGFyZ2V0NnN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rp
b24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBub3QgYmUgcmVhY2hlZCIpOyB9KTsKK3Rhcmdl
dDZlbmQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxl
ZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0Nm1pZGRsZS5hZGRFdmVudExp
c3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyBmaXJlZChldnQsICJ0YXJnZXQ2ZW5kIiwg
IiIpOyB9KTsKK3NlbC5zZXRCYXNlQW5kRXh0ZW50KHRhcmdldDZzdGFydC5maXJzdENoaWxkLCAw
LCAKKyAgICAgICAgICAgICAgICAgICAgIHRhcmdldDZlbmQuZmlyc3RDaGlsZCwgdGFyZ2V0NmVu
ZC5maXJzdENoaWxkLmRhdGEubGVuZ3RoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJjcmVhdGVM
aW5rIiwgZmFsc2UsICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOworCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCJl
eHBlY3RlZElucHV0RXZlbnRDb3VudCIsICJhY3R1YWxJbnB1dEV2ZW50Q291bnQiKTsKKyAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9LCAxMDApOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNTM2ZmJmZDMzNTA1NDZiNjYzYWQ1OThk
YWRhM2JiZjViN2NhNmRmYS4uNTcyNjAzMDFlNjcxODBjYTIzMDhlMDg2N2NlMDNhNzViYjAxM2Iy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTEyNDMsNiArMTI0Myw3IEBAIGZhc3Qv
ZXZlbnRzL3N0b3AtbG9hZC1pbi11bmxvYWQtaGFuZGxlci11c2luZy1kb2N1bWVudC13cml0ZS5o
dG1sCiBmYXN0L2V2ZW50cy9zdG9wLWxvYWQtaW4tdW5sb2FkLWhhbmRsZXItdXNpbmctd2luZG93
LXN0b3AuaHRtbAogZmFzdC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtYmx1ci1hbGwuaHRtbAogZmFz
dC9ldmVudHMvdGFiaW5kZXgtZm9jdXMtY2hhaW4uaHRtbAorZmFzdC9ldmVudHMvZXZlbnQtaW5w
dXQtY29udGVudEVkaXRhYmxlLmh0bWwKIGZhc3QvZm9ybXMvYnV0dG9uLXN0YXRlLXJlc3RvcmUu
aHRtbAogZmFzdC9mb3Jtcy9kcmFnLWludG8tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9kcmFn
LW91dC1vZi10ZXh0YXJlYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IGVmOGUy
ZmVjOGRjOTFiY2M2ZThmOGUwYWFlMTAyNTMzMDc2YWFiZWEuLjgyMzY3ZTM4OTRjYWU5NTllYzIx
NWZkN2MyMTVkMTQwMTJkMDhjNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xNjAs
NiArMTYwLDkgQEAgZmFzdC9vdmVyZmxvdy9zY3JvbGxiYXItcmVzdG9yZWQtYW5kLXRoZW4tbG9j
a2VkLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC5odG1sCiBmYXN0
L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLmh0bWwKIAorIyBFRElUSU5HX0lOUFVUX0VWRU5UUyBp
cyBub3QgZW5hYmxlZAorZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmh0
bWwKKwogIyBNaXNzaW5nIGFuIGltcGxlbWVudGF0aW9uIG9mIExheW91dFRlc3RDb250cm9sbGVy
OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oKQogZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMtZHlu
YW1pYy1pbnNlcnQuaHRtbAogZmFzdC9saXN0cy9vbC1uZXN0ZWQtaXRlbXMtZHluYW1pYy1yZW1v
dmUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZTMwYjFhOTZhZDQ4M2Y1ZTc3MTkz
NWI4MjVjMGRmMzI0NmJjNWM2YS4uMmQwNGFkODY5M2UwNmIzNThhMzBmMjE0ZGVlYzcwYjcxMGM5
YmI5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC03NjYsNiArNzY2LDkgQEAgZWRpdGlu
Zy90ZXh0LWl0ZXJhdG9yL2Jhc2ljLWl0ZXJhdGlvbi5odG1sCiBmYXN0L2V2ZW50cy9wYWdlc2hv
dy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sCiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sCiAKKyMgRURJVElOR19JTlBVVF9F
VkVOVFMgaXMgbm90IGVuYWJsZWQKK2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0
YWJsZS5odG1sCisKICMgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdEZvclBvbGljeURlbGVnYXRl
KCkgZG9lcyBub3QgcmVwb3J0IHRoZSBvcmlnaW4gbm9kZQogZmFzdC9lbmNvZGluZy9tYWlsdG8t
YWx3YXlzLXV0Zi04Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA3ZmI5YWFk
ODkzMGRjY2Y1MGEwYjc2YmNjMzllMWYyMjhhNzE5Mzk1Li5jZjA1NTBmZmJkMmE3Yjg1OWIyYzll
YmQ5MDE1NDFhOTZhNTQzZjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTI2LDYg
KzEyNiw5IEBAIGZhc3QvZXZlbnRzL2ZyYW1lLXRhYi1mb2N1cy5odG1sCiBmYXN0L2V2ZW50cy9v
cHRpb24tdGFiLmh0bWwKIGZhc3QvZm9ybXMvZm9jdXMyLmh0bWwKIAorIyBFRElUSU5HX0lOUFVU
X0VWRU5UUyBpcyBub3QgZW5hYmxlZAorZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVk
aXRhYmxlLmh0bWwKKwogIyBmYXN0L2h0bWwva2V5Z2VuLmh0bWwgaXMgZmFpbGluZyBvbiBib29t
ZXIgPHJkYXI6Ly9wcm9ibGVtLzUxMzM3OTk+CiBmYXN0L2h0bWwva2V5Z2VuLmh0bWwKIGZhc3Qv
aW52YWxpZC9yZXNpZHVhbC1zdHlsZS5odG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI0YzI2OTAwNzFhM2I0YWQ4YjMzZjk1YWIyODU3
MDk4NDU3ZjQxNzIuLjRkM2EyNGUzYzk0M2E2ZmE1NzMxZjA2NzhhYTJiODY0MzVjN2NiMjIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMDUtMDkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTI2CisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBpbnB1dCBldmVudHMgKG9uaW5wdXQpIHRvIGNvbnRlbnRFZGl0YWJsZSBlbGVt
ZW50cworCisgICAgICAgIE1hZGUgYSBkZWZhdWx0IGV2ZW50IGhhbmRsZXIgb24gdGhlIE5vZGUg
dG8gZGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQgd2hlbgorICAgICAgICB3ZWJraXRFZGl0YWJsZUNv
bnRlbnRDaGFuZ2VkIGFycml2ZWQuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L2V2ZW50
cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbAorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisKIDIwMTAtMDYt
MTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDViNTI3OTMxZmUyYTBjNzA2ZGMyMGEyNDNmYjMyNjk3N2JhNDAwMmYu
Ljk0YTA3YTliMzAyM2RlNGIwNzM1MTQzOGVjZThjMzUzNjVjNWRkYzMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtNTcsNiArNTcsNyBA
QCBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9JTUFHRV9SRVNJWkVSID0gOwog
RU5BQkxFX0lOREVYRURfREFUQUJBU0UgPSA7CitFTkFCTEVfSU5QVVRfRVZFTlRfRVhURU5TSU9O
UyA9IEVOQUJMRV9JTlBVVF9FVkVOVF9FWFRFTlNJT05TOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUjsKIEVOQUJMRV9NQVRITUwgPSA7CiBF
TkFCTEVfTUVURVJfVEFHID0gRU5BQkxFX01FVEVSX1RBRzsKQEAgLTgxLDQgKzgyLDQgQEAgRU5B
QkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMp
ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFC
TEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFC
TEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJM
RV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFT
RSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRF
Ul9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9T
QU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8z
RF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChF
TkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElP
TikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElT
VCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChF
TkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVS
KSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lD
T05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRSkgJChFTkFCTEVfSU5QVVRfRVZFTlRfRVhURU5TSU9OUykgJChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IGE5YWVhZGQ4MGE0ZWFjMWIxNjVmM2E0M2YzNjkxMzI2NjdmNmY4
OGYuLjBjNWVhOTE5OGE2NjBjZDQ5YjJmYTI4YzZlOWFlNTA1NGJjZWZkMDcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zMDI1
LDYgKzMwMjUsMTMgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVu
dCkKICAgICAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKICAgICAgICAg
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihz
dGFydE5vZGUsIHdoZWVsRXZlbnQpOworI2lmIEVOQUJMRShJTlBVVF9FVkVOVF9FWFRFTlNJT05T
KQorICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2Via2l0RWRp
dGFibGVDb250ZW50Q2hhbmdlZEV2ZW50KSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpKSB7Cisg
ICAgICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlucHV0
RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
bWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvV2ViS2l0L21hYy9D
b25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA1YjUyNzkzMWZlMmEw
YzcwNmRjMjBhMjQzZmIzMjY5NzdiYTQwMDJmLi45NGEwN2E5YjMwMjNkZTRiMDczNTE0MzhlY2U4
YzM1MzY1YzVkZGMzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKQEAgLTU3LDYgKzU3LDcgQEAgRU5BQkxFX0dFT0xPQ0FUSU9OID0g
RU5BQkxFX0dFT0xPQ0FUSU9OOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFU
QUJBU0U7CiBFTkFCTEVfSU1BR0VfUkVTSVpFUiA9IDsKIEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNF
ID0gOworRU5BQkxFX0lOUFVUX0VWRU5UX0VYVEVOU0lPTlMgPSBFTkFCTEVfSU5QVVRfRVZFTlRf
RVhURU5TSU9OUzsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVI7CiBFTkFCTEVfTUFUSE1MID0gOwogRU5BQkxFX01FVEVSX1RBRyA9IEVOQUJM
RV9NRVRFUl9UQUc7CkBAIC04MSw0ICs4Miw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxF
X1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVB
VFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9E
QVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0la
RVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dS
RVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVE
X1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVf
U1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NW
R19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAk
KEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTikgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVO
QUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lN
QUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX0VW
RU5UX0VYVEVOU0lPTlMpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFC
TEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChF
TkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYktp
dDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMTliNmQxOTEy
ZWMwYmZlMTk1MTAzMjc4YzkwZDU2MTViYzIxMTRlMC4uNWEzZGUzNTQ5M2UxZjYyNjgzYjhkNzRm
YTQ3NjRlZGYzY2RjM2Y3YyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC01NSw2ICs1NSw3IEBAIEVOQUJMRV9GSUxFX1dSSVRFUiA9IDsK
IEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVOQUJMRV9JQ09OREFU
QUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0lOREVYRURfREFUQUJBU0UgPSA7
CitFTkFCTEVfSU5QVVRfRVZFTlRfRVhURU5TSU9OUyA9IEVOQUJMRV9JTlBVVF9FVkVOVF9FWFRF
TlNJT05TOwogRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUjsKIEVOQUJMRV9NQVRITUwgPSA7CiBFTkFCTEVfTUVURVJfVEFHID0gRU5BQkxFX01F
VEVSX1RBRzsKQEAgLTc5LDQgKzgwLDQgQEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBB
VEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFH
UklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VW
RU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFC
TEVfRklMRV9XUklURVIpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJB
U0UpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklD
QVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dS
RVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVE
X1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVf
U1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NW
R19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAk
KEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9S
RU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5H
KSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAk
KEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RPTV9TVE9SQUdF
KSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9S
RUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBV
VF9FVkVOVF9FWFRFTlNJT05TKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJM
RV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQo
RU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAk
KEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFH
RSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQo
RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklE
RU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMp
ICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCBkYjQzYzFmOTczYWExNTY3Nzk1ZDYyODBkYTFmZDk5YzlmYTYxNzBjLi41OGZiYTFkNTlhZDJl
NmVjODIyYThiOWFkNTk3ODE5NGE1ZGRmYjczIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAt
MDUtMDkgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2NTI2CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbnB1dCBl
dmVudHMgKG9uaW5wdXQpIHRvIGNvbnRlbnRFZGl0YWJsZSBlbGVtZW50cworICAgICAgICAKKyAg
ICAgICAgQWRkZWQgIi0tZWRpdGluZy1pbnB1dC1ldmVudHMiIG9wdGlvbiBmb3IgYnVpbGQtd2Vi
a2l0LCB0byBjb250cm9sIHRoZSBmbGFnLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJr
aXQ6CisKIDIwMTAtMDYtMTUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5k
ZXggYTI5YTZmZDMxZmIyNzg1OGI5N2E3OTA5Zjk4ZGM1MjczOGRiMmM1YS4uY2ZjNWRlNjlhZjQ2
OWMwZDFhZWEyODNiOWM2MTk5ZmQ3ZDFiMWIzMSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
QEAgLTYxLDcgKzYxLDcgQEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVy
aW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkY2wKICAgICAkc3ZnU3VwcG9y
dCwgJHN2Z0FuaW1hdGlvblN1cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNC
aW5kaW5nc1N1cHBvcnQsICRzdmdGb250c1N1cHBvcnQsCiAgICAgJHN2Z0ZvcmVpZ25PYmplY3RT
dXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0
LCAkd21sU3VwcG9ydCwgJHdjc3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3Vw
cG9ydCwKICAgICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQs
ICRub3RpZmljYXRpb25zU3VwcG9ydCwgJGJsb2JTbGljZVN1cHBvcnQsICR0aWxlZEJhY2tpbmdT
dG9yZVN1cHBvcnQsCi0gICAgJGZpbGVSZWFkZXJTdXBwb3J0LCAkZmlsZVdyaXRlclN1cHBvcnQp
OworICAgICRmaWxlUmVhZGVyU3VwcG9ydCwgJGZpbGVXcml0ZXJTdXBwb3J0LCAkaW5wdXRFdmVu
dEV4dGVuc2lvbnNTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+
ICIzZC1jYW52YXMiLCBkZXNjID0+ICJUb2dnbGUgM0QgY2FudmFzIHN1cHBvcnQiLApAQCAtMTg5
LDYgKzE4OSw5IEBAIG15IEBmZWF0dXJlcyA9ICgKIAogICAgIHsgb3B0aW9uID0+ICJmaWxlLXdy
aXRlciIsIGRlc2MgPT4gIlRvZ2dsZSBGaWxlV3JpdGVyIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfRklMRV9XUklURVIiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkZmlsZVdy
aXRlclN1cHBvcnQgfSwKKworICAgIHsgb3B0aW9uID0+ICJpbnB1dC1ldmVudC1leHRlbnNpb25z
IiwgZGVzYyA9PiAiVG9nZ2xlIGRpc3BhdGNoaW5nIGV4dGVuZGVkIGlucHV0IGV2ZW50cyIsCisg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9FVkVOVF9FWFRFTlNJT05TIiwgZGVmYXVsdCA9
PiAxLCB2YWx1ZSA9PiBcJGlucHV0RXZlbnRFeHRlbnNpb25zU3VwcG9ydCB9LAogKTsKIAogIyBV
cGRhdGUgZGVmYXVsdHMgZnJvbSBRdCdzIHByb2plY3QgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59080</attachid>
            <date>2010-06-18 01:27:36 -0700</date>
            <delta_ts>2010-07-07 16:45:02 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug-26526-20100618172734.patch</filename>
            <type>text/plain</type>
            <size>10708</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNTc2NGFkY2U2MDAxODc0ZmQxMjUzMDNhMTQyZjVhODhkOGRhNWVkLi4zYzk1ZWNj
MTlkNzUyMzM1YTU1ODllN2MzMzkyNTRhZWVhMTExZjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDYtMTggIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTI2CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBp
bnB1dCBldmVudHMgKG9uaW5wdXQpIHRvIGNvbnRlbnRFZGl0YWJsZSBlbGVtZW50cworCisgICAg
ICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRh
YmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9ldmVu
dC1pbnB1dC1jb250ZW50RWRpdGFibGUuanM6IEFkZGVkLgorCiAyMDEwLTA2LTE2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50
RWRpdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzNGZmMGI0YmNhMDczNzhhZjMxMmJk
YWRmY2I1N2Y3YmUyNjhlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjggQEAKK1RoaXMgdGVzdHMgdGhhdCB0aGUgaW5wdXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHdo
ZW4gY29udGVudEVkaXRhYmxlIG5vZGVzIGFyZSBlZGl0ZWQKKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICd0YXJnZXQwJworUEFTUyBldmVu
dC50YXJnZXQuaW5uZXJIVE1MIGlzICdUZXh0JworUEFTUyBldmVudC50YXJnZXQuaWQgaXMgJ3Rh
cmdldDInCitQQVNTIGV2ZW50LnRhcmdldC5pbm5lckhUTUwgaXMgJ1RoaXMgdGV4dCBzaG91bGQg
bm90IGJlIGNoYW5nZWQuJworUEFTUyBldmVudC50YXJnZXQuaWQgaXMgJ3RhcmdldDMnCitQQVNT
IGV2ZW50LnRhcmdldC5pbm5lckhUTUwgaXMgJzxicj4nCitQQVNTIGV2ZW50LnRhcmdldC5pZCBp
cyAndGFyZ2V0NCcKK1BBU1MgZXZlbnQudGFyZ2V0LmlubmVySFRNTCBpcyAnPGEgaHJlZj0iaHR0
cDovL3d3dy5leGFtcGxlLmNvbS8iPlRoaXMgdGV4dCBzaG91bGQgYmUgYSBsaW5rLjwvYT4nCitQ
QVNTIGV2ZW50LnRhcmdldC5pZCBpcyAndGFyZ2V0NnBhcmVudCcKK1BBU1MgZXZlbnQudGFyZ2V0
LmlubmVySFRNTCBpcyAnPHNwYW4gaWQ9InRhcmdldDZzdGFydCI+PGEgaHJlZj0iaHR0cDovL3d3
dy5leGFtcGxlLmNvbS8iPlN0YXJ0LDwvYT48L3NwYW4+PHNwYW4gaWQ9InRhcmdldDZtaWRkbGUi
PjxhIGhyZWY9Imh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIj5NaWRkbGUsPC9hPjwvc3Bhbj48c3Bh
biBpZD0idGFyZ2V0NmVuZCI+PGEgaHJlZj0iaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iPkVuZC48
L2E+PC9zcGFuPicKK1BBU1MgZXZlbnQudGFyZ2V0LmlkIGlzICd0YXJnZXQ3JworUEFTUyBldmVu
dC50YXJnZXQuaW5uZXJIVE1MIGlzICdYJworUEFTUyBldmVudC50YXJnZXQuaWQgaXMgJ3Rhcmdl
dDgnCitQQVNTIGV2ZW50LnRhcmdldC5pbm5lckhUTUwgaXMgJzxicj4nCitQQVNTIGV2ZW50LnRh
cmdldC5pZCBpcyAndGFyZ2V0OXBhcmVudCcKK1BBU1MgZXZlbnQudGFyZ2V0LmlubmVySFRNTCBp
cyAnPGRpdiBpZD0idGFyZ2V0OWNoaWxkIiBjb250ZW50ZWRpdGFibGU9IiI+UmVwbGFjaW5nPC9k
aXY+JworUEFTUyBldmVudC50YXJnZXQuaWQgaXMgJ3QxMGdjaCcKK1BBU1MgZXZlbnQudGFyZ2V0
LmlubmVySFRNTCBpcyAnUmVwbGFjaW5nJworUEFTUyBleHBlY3RlZElucHV0RXZlbnRDb3VudCBp
cyBhY3R1YWxJbnB1dEV2ZW50Q291bnQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9l
dmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwZTU2MzI3NzRh
NzVhODE0ZjI2MGE4MTE0YTUzZmI1NTVmZDUyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbApAQCAtMCww
ICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVz
dHMvZXZlbnQtaW5wdXQtY29udGVudEVkaXRhYmxlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2NyaXB0LXRlc3RzL2V2ZW50LWlucHV0LWNvbnRlbnRFZGl0YWJsZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNzA1M2FiYWQ0NDgyMWJkODViOTI3ZTNiNTZlOTFlNzU3YzVkYmEwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL2V2ZW50LWlucHV0LWNv
bnRlbnRFZGl0YWJsZS5qcwpAQCAtMCwwICsxLDExNCBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCB0aGUgaW5wdXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHdoZW4gY29udGVudEVkaXRh
YmxlIG5vZGVzIGFyZSBlZGl0ZWQiKTsKKwordmFyIGFjdHVhbElucHV0RXZlbnRDb3VudCA9IDA7
Cit2YXIgZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQgPSAwOworCitmdW5jdGlvbiBmaXJlZChldnQs
IGV4cGVjdGVkSWQsIGV4cGVjdGVkVGV4dCkKK3sKKyAgICBhY3R1YWxJbnB1dEV2ZW50Q291bnQr
KzsKKyAgICBzaG91bGRCZSgiZXZlbnQudGFyZ2V0LmlkIiwgIiciICsgZXhwZWN0ZWRJZCArICIn
Iik7CisgICAgc2hvdWxkQmUoImV2ZW50LnRhcmdldC5pbm5lckhUTUwiLCAiJyIgKyBleHBlY3Rl
ZFRleHQgKyAiJyIpOworfQorCit2YXIgdGVzdERhdGFSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3REYXRhUm9vdCk7CisK
K2Z1bmN0aW9uIG1ha2VUZXN0VGFyZ2V0KGZyYWdtZW50KQoreworICAgIHRlc3REYXRhUm9vdC5p
bm5lckhUTUwgPSBmcmFnbWVudDsKKyAgICByZXR1cm4gdGVzdERhdGFSb290LmZpcnN0Q2hpbGQ7
Cit9CisKK2Z1bmN0aW9uIGNsZWFyVGVzdFRhcmdldCgpCit7CisgICAgbWFrZVRlc3RUYXJnZXQo
IiIpOworfQorCitmdW5jdGlvbiBzZXR1cEZvckZpcmluZ1Rlc3QoZnJhZ21lbnQsIGV4cGVjdGVk
VGV4dCkKK3sKKyAgICB2YXIgdGFyZ2V0ID0gbWFrZVRlc3RUYXJnZXQoZnJhZ21lbnQpOworICAg
IHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyBmaXJlZChl
dnQsIHRhcmdldC5pZCwgZXhwZWN0ZWRUZXh0KTsgfSk7CisgICAgc2VsLnNlbGVjdEFsbENoaWxk
cmVuKHRhcmdldCk7CisgICAgZXhwZWN0ZWRJbnB1dEV2ZW50Q291bnQrKzsKKyAgICByZXR1cm4g
dGFyZ2V0OworfQorCit2YXIgc2VsID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7CisKKy8vIEEg
dHJpdmlhbCBjYXNlOiBpbnNlcnRpbmcgdGV4dCBzaG91bGQgZGlzcGF0Y2ggdGhlIGV2ZW50Cit2
YXIgdGFyZ2V0MCA9IHNldHVwRm9yRmlyaW5nVGVzdCgnPHAgaWQ9InRhcmdldDAiIGNvbnRlbnRF
ZGl0YWJsZT5UZXh0IHNob3VsZCBiZSByZXBsYWNlIHRoaXM8L3A+JywgIlRleHQiKTsKK3NlbC5z
ZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQwKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRU
ZXh0IiwgZmFsc2UsICJUZXh0Iik7CisKKy8vIEEgZGlyZWN0IERPTSBtYW5pcHVsYXRpb24gc2hv
dWxkbid0IGRpc3BhdGNoIHRoZSBldmVudAordmFyIHRhcmdldDEgPSBtYWtlVGVzdFRhcmdldCgn
PHAgaWQ9InRhcmdldDEiIGNvbnRlbnRFZGl0YWJsZT5UZXh0IHNob3VsZCBiZSBpbnNlcnQgdmlh
IHNjcmlwdDo8L3A+Jyk7Cit0YXJnZXQxLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rp
b24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBub3QgYmUgcmVhY2hlZCIpOyB9KTsKK3Rhcmdl
dDEuZmlyc3RDaGlsZC5kYXRhICs9ICJUZXh0IjsKKworLy8gQW4gZXZlbnQgc2hvdWxkIGJlIGRp
c3BhdGNoZWQgZXZlbiBpZiByZXN1bHRpbmcgRE9NIHRyZWUgZG9lc24ndCBjaGFuZ2UgYWZ0ZXIg
dGhlIGVkaXQuICh3aXRoIHJlcGxhY2luZyBpdCkKK3ZhciB0YXJnZXQyVGV4dCA9ICJUaGlzIHRl
eHQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLiI7Cit2YXIgdGFyZ2V0MiA9IHNldHVwRm9yRmlyaW5n
VGVzdCgnPHAgaWQ9InRhcmdldDIiIGNvbnRlbnRFZGl0YWJsZT5UaGlzIHRleHQgc2hvdWxkIG5v
dCBiZSBjaGFuZ2VkLjwvcD4nLCB0YXJnZXQyVGV4dCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgi
aW5zZXJ0VGV4dCIsIGZhbHNlLCB0YXJnZXQyVGV4dCk7CisKKy8vIEFuICJkZWxldGUiIGNvbW1h
bmQgc2hvdWxkIGRpc3BhdGNoIGFuIGlucHV0IGV2ZW50LgordmFyIHRhcmdldDMgPSBzZXR1cEZv
ckZpcmluZ1Rlc3QoJzxwIGlkPSJ0YXJnZXQzIiBjb250ZW50RWRpdGFibGU+VGhpcyB0ZXh0IHNo
b3VsZG4gYmUgZGVsZXRlZC48L3A+JywgIjxicj4iKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJk
ZWxldGUiLCBmYWxzZSk7CisKKy8vIEEgY29tbWFuZCBvdGhlciB0aGFuIHRleHQtZWRpdGluZyBz
aG91bGQgZGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQuCisvLyBBbHNvIG5vdGUgdGhhdCBjcmVhdGVM
aW5rIGlzIGEgY29tcG9zaXRlIGNvbW1hbmQsIAorLy8gc28gdGhpcyB0ZXN0IGFsc28gZW5zdXJl
cyB0aGF0IGV2ZW4gY29tcG9zaXRlIGNvbW1hbmQgZGlzcGF0Y2hlcyB0aGUgZXZlbnQgb25seSBv
bmNlLgordmFyIHRhcmdldDQgPSBzZXR1cEZvckZpcmluZ1Rlc3QoJzxwIGlkPSJ0YXJnZXQ0IiBj
b250ZW50RWRpdGFibGU+VGhpcyB0ZXh0IHNob3VsZCBiZSBhIGxpbmsuPC9wPicsICI8YSBocmVm
PVwiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIj5UaGlzIHRleHQgc2hvdWxkIGJlIGEgbGluay48
L2E+Iik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiY3JlYXRlTGluayIsIGZhbHNlLCAiaHR0cDov
L3d3dy5leGFtcGxlLmNvbS8iKTsKKworLy8gQW4gZXZlbnQgc2hvdWxkbid0IGJlIGRpc3BhdGNo
ZWQgdG8gYSAnZGlzcGxheTpub25lJyBub2RlLgordmFyIHRhcmdldDUgPSBtYWtlVGVzdFRhcmdl
dCgnPHAgaWQ9InRhcmdldDUiIGNvbnRlbnRFZGl0YWJsZT5UaGlzIHdpbGwgbm90IGJlIHJlbmRl
cmVkLjwvcD4nKTsKK3RhcmdldDUuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihl
dnQpIHsgdGVzdEZhaWxlZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOworc2VsLnNlbGVj
dEFsbENoaWxkcmVuKHRhcmdldDUpOwordGFyZ2V0NS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwor
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoImluc2VydFRleHQiLCBmYWxzZSwgIlRleHQiKTsKKworLy8g
VGhlIGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIGVkaXRhYmxlIHJvb3QuCitt
YWtlVGVzdFRhcmdldCgnPHAgaWQ9InRhcmdldDZwYXJlbnQiIGNvbnRlbnRFZGl0YWJsZT48c3Bh
biBpZD0idGFyZ2V0NnN0YXJ0Ij5TdGFydCw8L3NwYW4+PHNwYW4gaWQ9InRhcmdldDZtaWRkbGUi
Pk1pZGRsZSw8L3NwYW4+PHNwYW4gaWQ9InRhcmdldDZlbmQiPkVuZC48L3NwYW4+PC9wPicpOwor
dmFyIHRhcmdldDZwYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0NnBhcmVu
dCIpOwordmFyIHRhcmdldDZzdGFydCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQ2
c3RhcnQiKTsKK3ZhciB0YXJnZXQ2bWlkZGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldDZtaWRkbGUiKTsKK3ZhciB0YXJnZXQ2ZW5kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDZlbmQiKTsKKwordmFyIGV4cGVjdGVkVGV4dDYgPSAiPHNwYW4gaWQ9XCJ0YXJnZXQ2
c3RhcnRcIj48YSBocmVmPVwiaHR0cDovL3d3dy5leGFtcGxlLmNvbS9cIj5TdGFydCw8L2E+PC9z
cGFuPjxzcGFuIGlkPVwidGFyZ2V0Nm1pZGRsZVwiPjxhIGhyZWY9XCJodHRwOi8vd3d3LmV4YW1w
bGUuY29tL1wiPk1pZGRsZSw8L2E+PC9zcGFuPjxzcGFuIGlkPVwidGFyZ2V0NmVuZFwiPjxhIGhy
ZWY9XCJodHRwOi8vd3d3LmV4YW1wbGUuY29tL1wiPkVuZC48L2E+PC9zcGFuPiI7Cit0YXJnZXQ2
cGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rpb24oZXZ0KSB7IGZpcmVkKGV2
dCwgInRhcmdldDZwYXJlbnQiLCBleHBlY3RlZFRleHQ2KTsgfSk7CitleHBlY3RlZElucHV0RXZl
bnRDb3VudCsrOwordGFyZ2V0NnN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVuY3Rp
b24oZXZ0KSB7IHRlc3RGYWlsZWQoInNob3VsZCBub3QgYmUgcmVhY2hlZCIpOyB9KTsKK3Rhcmdl
dDZlbmQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxl
ZCgic2hvdWxkIG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0Nm1pZGRsZS5hZGRFdmVudExp
c3RlbmVyKCJpbnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyBmaXJlZChldnQsICJ0YXJnZXQ2ZW5kIiwg
IiIpOyB9KTsKK3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQ2cGFyZW50KTsKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCJjcmVhdGVMaW5rIiwgZmFsc2UsICJodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyIpOworCisvLyBFbnN1cmUga2V5IGV2ZW50cyBjYW4gY2F1c2UgdGhlIGV2ZW50IAordmFyIHRh
cmdldDcgPSBzZXR1cEZvckZpcmluZ1Rlc3QoJzxwIGlkPSJ0YXJnZXQ3IiBjb250ZW50RWRpdGFi
bGU+UmVwbGFjZWQ8L3A+JywgIlgiKTsKK3NlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQ3KTsK
K2V2ZW50U2VuZGVyLmtleURvd24oJ1gnKTsKKwordmFyIHRhcmdldDggPSBzZXR1cEZvckZpcmlu
Z1Rlc3QoJzxwIGlkPSJ0YXJnZXQ4IiBjb250ZW50RWRpdGFibGU+RGVsZXRlZDwvcD4nLCAnPGJy
PicpOworc2VsLnNlbGVjdEFsbENoaWxkcmVuKHRhcmdldDgpOworZXZlbnRTZW5kZXIua2V5RG93
bignZGVsZXRlJyk7CisKK3ZhciB0YXJnZXQ5cGFyZW50ID0gbWFrZVRlc3RUYXJnZXQoJzxkaXYg
aWQ9InRhcmdldDlwYXJlbnQiIGNvbnRlbnRlZGl0YWJsZT48ZGl2IGlkPSJ0YXJnZXQ5Y2hpbGQi
IGNvbnRlbnRlZGl0YWJsZT5mb288L2Rpdj48L2Rpdj4nKTsKK3ZhciB0YXJnZXQ5Y2hpbGQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0OWNoaWxkJyk7Cit0YXJnZXQ5Y2hpbGQuYWRk
RXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBmdW5jdGlvbihldnQpIHsgdGVzdEZhaWxlZCgic2hvdWxk
IG5vdCBiZSByZWFjaGVkIik7IH0pOwordGFyZ2V0OXBhcmVudC5hZGRFdmVudExpc3RlbmVyKCJp
bnB1dCIsIGZ1bmN0aW9uKGV2dCkgeyBmaXJlZChldnQsIHRhcmdldDlwYXJlbnQuaWQsICc8ZGl2
IGlkPSJ0YXJnZXQ5Y2hpbGQiIGNvbnRlbnRlZGl0YWJsZT0iIj5SZXBsYWNpbmc8L2Rpdj4nKTsg
fSk7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0OWNoaWxkKTsKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCJpbnNlcnRUZXh0IiwgZmFsc2UsICJSZXBsYWNpbmciKTsKK2V4cGVjdGVkSW5wdXRF
dmVudENvdW50Kys7CisKK3ZhciB0YXJnZXQxMHBhcmVudCA9IG1ha2VUZXN0VGFyZ2V0KCc8ZGl2
IGlkPSJ0MTBwYXJlbnQiIGNvbnRlbnRlZGl0YWJsZT48ZGl2IGlkPSJ0MTBjaGlsZCIgY29udGVu
dGVkaXRhYmxlPWZhbHNlPjxkaXYgaWQ9InQxMGdjaCIgY29udGVudGVkaXRhYmxlPmZvbzwvZGl2
PjwvZGl2PjwvZGl2PicpOwordmFyIHRhcmdldDEwY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidDEwY2hpbGQiKTsKK3ZhciB0YXJnZXQxMGdjaCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0MTBnY2giKTsKK3RhcmdldDEwZ2NoLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZnVu
Y3Rpb24oZXZ0KSB7IGZpcmVkKGV2dCwgdGFyZ2V0MTBnY2guaWQsICdSZXBsYWNpbmcnKTsgfSk7
CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0MTBnY2gpOworZG9jdW1lbnQuZXhlY0NvbW1h
bmQoImluc2VydFRleHQiLCBmYWxzZSwgIlJlcGxhY2luZyIpOworZXhwZWN0ZWRJbnB1dEV2ZW50
Q291bnQrKzsKKworc2hvdWxkQmUoImV4cGVjdGVkSW5wdXRFdmVudENvdW50IiwgImFjdHVhbElu
cHV0RXZlbnRDb3VudCIpOworY2xlYXJUZXN0VGFyZ2V0KCk7CisKK3N1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNGMyNjkwMDcxYTNiNGFkOGIz
M2Y5NWFiMjg1NzA5ODQ1N2Y0MTcyLi5jN2MxYmM4MTQ4MTU3NGUzNDdkZmNiNzNiZTY0MjhkMjFl
NWE2NjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTE4ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUyNgorICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgaW5wdXQgZXZlbnRzIChvbmlucHV0KSB0byBjb250ZW50RWRp
dGFibGUgZWxlbWVudHMKKyAgICAgICAgCisgICAgICAgIE1hZGUgYSBkZWZhdWx0IGV2ZW50IGhh
bmRsZXIgb24gdGhlIE5vZGUgdG8gZGlzcGF0Y2ggYW4gaW5wdXQgZXZlbnQgd2hlbgorICAgICAg
ICB3ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkIGFycml2ZWQuCisgICAgICAgIAorICAgICAg
ICBUZXN0OiBmYXN0L2V2ZW50cy9ldmVudC1pbnB1dC1jb250ZW50RWRpdGFibGUuaHRtbAorCisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2
ZW50SGFuZGxlcik6CisKIDIwMTAtMDYtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYTlhZWFkZDgwYTRl
YWMxYjE2NWYzYTQzZjM2OTEzMjY2N2Y2Zjg4Zi4uNGJhOWY0MzhiNDExOTZhNDc0YjA2ZWRmNmUz
Y2Y1OGZlMzJhNWQ4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTMwMjUsNiArMzAyNSw4IEBAIHZvaWQgTm9kZTo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3Rh
cnROb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5k
ZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoc3RhcnROb2RlLCB3aGVlbEV2ZW50KTsKKyAgICB9IGVs
c2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLndlYmtpdEVkaXRhYmxlQ29udGVu
dENoYW5nZWRFdmVudCkgeworICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="45711"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>