<?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>38087</bug_id>
          
          <creation_ts>2010-04-24 18:40:10 -0700</creation_ts>
          <short_desc>Clicking below last line of right-to-left editable text that puts caret in the wrong place</short_desc>
          <delta_ts>2011-04-03 00:11:17 -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>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,&lt;div dir=&quot;rtl&quot; style=&quot;-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; -webkit-user-modify: read-write; height: 2em; border: solid&quot;&gt;&amp;#x05d0;&amp;nbsp;&lt;/div&gt; </bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>leviw</cc>
    
    <cc>leviw</cc>
    
    <cc>rniwa</cc>
    
    <cc>uriber</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216771</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-04-24 18:40:10 -0700</bug_when>
    <thetext>In the URL, click in the bottom of the box, below the line of text. The care appears immediately after the letter and before the trailing space. Compare with what happens when you click in the top of the box (anywhere to the left of the text).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216772</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-04-24 18:54:54 -0700</bug_when>
    <thetext>Simple test case:

&lt;div dir=&quot;rtl&quot; style=&quot;-webkit-user-modify: read-write; height: 2em; border: solid&quot;&gt;&lt;span&gt;&amp;#x05d0&lt;/span&gt;&lt;span&gt;&amp;#x05d1&lt;/span&gt;&lt;span&gt;&amp;#x05d2&lt;/span&gt;&lt;/div&gt;

The problem is RenderBlock::positionForPointWithInlineChildren()’s use of firstLeafChild() and lastLeafChild() where it should probably get the logically first or last child in those cases. Or perhaps it could just avoid using line boxes in those cases and return the first/last positions inside the block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291892</commentid>
    <comment_count>2</comment_count>
      <attachid>70295</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-10-08 15:03:36 -0700</bug_when>
    <thetext>Created attachment 70295
test file

I tried both &apos;div&apos;s in the test file in Chrome 7.0.544.0 dev in Windows.
when click in the top of the box, the caret appears at the very left of the text,
when click in the bottom of the box, the caret appears at the very right of the text.

It is the same as Firefox.

What should be the expected result? or the bug is fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300104</commentid>
    <comment_count>3</comment_count>
    <who name="Uri Bernstein">uriber</who>
    <bug_when>2010-10-27 03:50:33 -0700</bug_when>
    <thetext>I can reproduce the behavior described in comment #0 in r70618 on OS X. The cursor appears between the first and second letters, which is clearly wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319282</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-12-08 22:43:58 -0800</bug_when>
    <thetext>For the very simple case as in:
&lt;div dir=&quot;rtl&quot; contenteditable style=&quot;border: solid 1px red; width: 150px; padding: 20px;&quot;&gt;&lt;span&gt;א&lt;/span&gt;&lt;span&gt;ב&lt;/span&gt;&lt;span&gt;ג&lt;/span&gt;&lt;/div&gt;

The following change suffice to fix the bug.

--- WebCore/rendering/RenderBlock.cpp	(revision 73592)
+++ WebCore/rendering/RenderBlock.cpp	(working copy)
@@ -4016,7 +4019,8 @@
     if (lastRootBoxWithChildren) {
         // We hit this case for Mac behavior when the Y coordinate is below the last box.
         ASSERT(moveCaretToBoundary);
-        return VisiblePosition(positionForBox(lastRootBoxWithChildren-&gt;lastLeafChild(), false), DOWNSTREAM);
+        InlineBox* logicallyLastBox = style()-&gt;isLeftToRightDirection() ? lastRootBoxWithChildren-&gt;lastLeafChild() : lastRootBoxWithChildren-&gt;firstLeafChild();
+        return VisiblePosition(positionForBox(logicallyLastBox, false), DOWNSTREAM);
     }

However, when we have LTR / RTL mixed content as in below, things get a tricker.
&lt;div style=&quot;border: solid 1px red; width: 150px; padding: 20px;&quot;&gt;hello&lt;span&gt;א&lt;/span&gt;&lt;span&gt;ב&lt;/span&gt;&lt;span&gt;ג&lt;/span&gt;&lt;/div&gt;
What should we expect to get for this case?  Should it be between hello and א, which is the logical end of the line?  Or should it be to the right of ג since we&apos;re in a LTR block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319649</commentid>
    <comment_count>5</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-09 12:22:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; For the very simple case as in:
&gt; &lt;div dir=&quot;rtl&quot; contenteditable style=&quot;border: solid 1px red; width: 150px; padding: 20px;&quot;&gt;&lt;span&gt;א&lt;/span&gt;&lt;span&gt;ב&lt;/span&gt;&lt;span&gt;ג&lt;/span&gt;&lt;/div&gt;
&gt; 
&gt; The following change suffice to fix the bug.
&gt; 
&gt; --- WebCore/rendering/RenderBlock.cpp    (revision 73592)
&gt; +++ WebCore/rendering/RenderBlock.cpp    (working copy)
&gt; @@ -4016,7 +4019,8 @@
&gt;      if (lastRootBoxWithChildren) {
&gt;          // We hit this case for Mac behavior when the Y coordinate is below the last box.
&gt;          ASSERT(moveCaretToBoundary);
&gt; -        return VisiblePosition(positionForBox(lastRootBoxWithChildren-&gt;lastLeafChild(), false), DOWNSTREAM);
&gt; +        InlineBox* logicallyLastBox = style()-&gt;isLeftToRightDirection() ? lastRootBoxWithChildren-&gt;lastLeafChild() : lastRootBoxWithChildren-&gt;firstLeafChild();


logically last box might not be the visually first box.
Following is Dan&apos;s example:
&lt;div dir=rtl&gt;abc &lt;span&gt;def OPQ &lt;/span&gt;RST&lt;/div&gt;.



&gt; +        return VisiblePosition(positionForBox(logicallyLastBox, false), DOWNSTREAM);
&gt;      }
&gt; 
&gt; However, when we have LTR / RTL mixed content as in below, things get a tricker.
&gt; &lt;div style=&quot;border: solid 1px red; width: 150px; padding: 20px;&quot;&gt;hello&lt;span&gt;א&lt;/span&gt;&lt;span&gt;ב&lt;/span&gt;&lt;span&gt;ג&lt;/span&gt;&lt;/div&gt;
&gt; What should we expect to get for this case?  Should it be between hello and א, which is the logical end of the line?  Or should it be to the right of ג since we&apos;re in a LTR block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319738</commentid>
    <comment_count>6</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2010-12-09 15:03:36 -0800</bug_when>
    <thetext>getLogicalEndBoxAndNode() in visible_units.cpp gets the last logical node in a line.
BTW, can you reproduce it in Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332464</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-01-11 11:08:08 -0800</bug_when>
    <thetext>I&apos;ve confirmed that this doesn&apos;t reproduce on Safari 5 or Chrome 9 on Windows.

I think using getLogicalEndBoxAndNode() is a valid fix.

(In reply to comment #6)
&gt; getLogicalEndBoxAndNode() in visible_units.cpp gets the last logical node in a line.
&gt; BTW, can you reproduce it in Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347238</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-08 01:46:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;ve confirmed that this doesn&apos;t reproduce on Safari 5 or Chrome 9 on Windows.
&gt; 
&gt; I think using getLogicalEndBoxAndNode() is a valid fix.
&gt; 
&gt; (In reply to comment #6)
&gt; &gt; getLogicalEndBoxAndNode() in visible_units.cpp gets the last logical node in a line.
&gt; &gt; BTW, can you reproduce it in Windows?

It&apos;s really odd for RenderBlock to rely on visible_units.cpp though.  Perhaps, dependency becomes less odd once we implement RenderedPosition I proposed on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376228</commentid>
    <comment_count>9</comment_count>
      <attachid>87509</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 05:59:40 -0700</bug_when>
    <thetext>Created attachment 87509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376244</commentid>
    <comment_count>10</comment_count>
      <attachid>87509</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-30 06:11:28 -0700</bug_when>
    <thetext>Comment on attachment 87509
Patch

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

&gt; Source/WebCore/editing/visible_units.cpp:1062
&gt; -    getLogicalStartBoxAndNode(rootBox, logicalStartBox, logicalStartNode);
&gt; +    rootBox-&gt;getLogicalStartBoxAndNode(logicalStartBox, logicalStartNode);

Maybe we should return node instead of void?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376247</commentid>
    <comment_count>11</comment_count>
      <attachid>87518</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 06:16:20 -0700</bug_when>
    <thetext>Created attachment 87518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376260</commentid>
    <comment_count>12</comment_count>
      <attachid>87518</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-30 06:34:28 -0700</bug_when>
    <thetext>Comment on attachment 87518
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:4157
&gt;          // We hit this case for Mac behavior when the Y coordinate is below the last box.

So this bug only reproduces on Mac?

&gt; Source/WebCore/rendering/RenderBlock.cpp:4161
&gt; +        Node* endNode = lastRootBoxWithChildren-&gt;getLogicalEndBoxWithNode(logicallyLastBox);
&gt; +        if (endNode)

We should declare endNode inside the if as in:
if (Node* endNode = lastRootBoxWithChildren-&gt;getLogicalEndBoxWithNode(logicallyLastBox))

&gt; Source/WebCore/rendering/RootInlineBox.cpp:798
&gt; +        startNode = startBox-&gt;renderer()-&gt;node();
&gt; +        if (startNode)
&gt; +            return startNode;

We should do
if (leafBoxesInLogicalOrder[i]-&gt;renderer()-&gt;node()) {
    startBox = leafBoxesInLogicalOrder[i];
    return startBox-&gt;renderer()-&gt;node();
}
so that you don&apos;t have to assign startBox every iteration.  It also eliminates the need for startNode local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376272</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 06:47:56 -0700</bug_when>
    <thetext>Attachment 87518 did not build on chromium:
Build output: http://queues.webkit.org/results/8298301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376277</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-30 06:56:12 -0700</bug_when>
    <thetext>Attachment 87518 did not build on qt:
Build output: http://queues.webkit.org/results/8154136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376284</commentid>
    <comment_count>15</comment_count>
      <attachid>87528</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 07:01:12 -0700</bug_when>
    <thetext>Created attachment 87528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376292</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 07:21:06 -0700</bug_when>
    <thetext>Attachment 87528 did not build on chromium:
Build output: http://queues.webkit.org/results/8281883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376294</commentid>
    <comment_count>17</comment_count>
      <attachid>87530</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 07:24:24 -0700</bug_when>
    <thetext>Created attachment 87530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376295</commentid>
    <comment_count>18</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 07:24:48 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=87530) [details]
&gt; Patch

Sorry for the blatant EWS abuse!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376298</commentid>
    <comment_count>19</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-30 07:29:57 -0700</bug_when>
    <thetext>Attachment 87528 did not build on qt:
Build output: http://queues.webkit.org/results/8298312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376300</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 07:33:52 -0700</bug_when>
    <thetext>Attachment 87530 did not build on chromium:
Build output: http://queues.webkit.org/results/8298313</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376308</commentid>
    <comment_count>21</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-30 07:43:38 -0700</bug_when>
    <thetext>Attachment 87530 did not build on qt:
Build output: http://queues.webkit.org/results/8305043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376317</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-30 07:54:20 -0700</bug_when>
    <thetext>Attachment 87530 did not build on win:
Build output: http://queues.webkit.org/results/8281891</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376328</commentid>
    <comment_count>23</comment_count>
      <attachid>87537</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 08:05:18 -0700</bug_when>
    <thetext>Created attachment 87537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376336</commentid>
    <comment_count>24</comment_count>
      <attachid>87537</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-03-30 08:21:51 -0700</bug_when>
    <thetext>Comment on attachment 87537
Patch

Clearing flags on attachment: 87537

Committed r82447: &lt;http://trac.webkit.org/changeset/82447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376353</commentid>
    <comment_count>25</comment_count>
      <attachid>87537</attachid>
    <who name="">mitz</who>
    <bug_when>2011-03-30 08:41:51 -0700</bug_when>
    <thetext>Comment on attachment 87537
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:55
&gt; +#include &quot;visible_units.h&quot;

Is this necessary?

&gt; Source/WebCore/rendering/RootInlineBox.h:146
&gt; +    Node* getLogicalEndBoxWithNode(InlineBox*&amp;);

Can these be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376607</commentid>
    <comment_count>26</comment_count>
      <attachid>87537</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-30 12:55:52 -0700</bug_when>
    <thetext>Comment on attachment 87537
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderBlock.cpp:55
&gt;&gt; +#include &quot;visible_units.h&quot;
&gt; 
&gt; Is this necessary?

Oh, good catch. This should definitely be removed. Levi, can you do that?

&gt;&gt; Source/WebCore/rendering/RootInlineBox.h:146
&gt;&gt; +    Node* getLogicalEndBoxWithNode(InlineBox*&amp;);
&gt; 
&gt; Can these be const?

You mean
Node* getLogicalStartBoxWithNode(InlineBox*&amp;) const;
Node* getLogicalEndBoxWithNode(InlineBox*&amp;) const;
?  It seems like we can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376634</commentid>
    <comment_count>27</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-03-30 13:31:50 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt;&gt; Source/WebCore/rendering/RootInlineBox.h:146
&gt; &gt;&gt; +    Node* getLogicalEndBoxWithNode(InlineBox*&amp;);
&gt; &gt; 
&gt; &gt; Can these be const?
&gt; 
&gt; You mean
&gt; Node* getLogicalStartBoxWithNode(InlineBox*&amp;) const;
&gt; Node* getLogicalEndBoxWithNode(InlineBox*&amp;) const;

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378492</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-03 00:11:17 -0700</bug_when>
    <thetext>This bug has been fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>70295</attachid>
            <date>2010-10-08 15:03:36 -0700</date>
            <delta_ts>2010-10-08 15:03:36 -0700</delta_ts>
            <desc>test file</desc>
            <filename>38087.html</filename>
            <type>text/html</type>
            <size>601</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">77u/PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlv
bmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRp
b25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4N
CjxoZWFkPg0KICAgIDx0aXRsZT5VbnRpdGxlZCBQYWdlPC90aXRsZT4NCjwvaGVhZD4NCjxib2R5
Pg0KPGRpdiBjb250ZW50ZWRpdGFibGUgZGlyPSJydGwiIHN0eWxlPSItd2Via2l0LW5ic3AtbW9k
ZTogc3BhY2U7IC13ZWJraXQtbGluZS1icmVhazogYWZ0ZXItd2hpdGUtc3BhY2U7IC13ZWJraXQt
dXNlci1tb2RpZnk6IHJlYWQtd3JpdGU7IGhlaWdodDogMmVtOyBib3JkZXI6IHNvbGlkIj4mI3gw
NWQwOyZuYnNwOzwvZGl2PiA8L2JvZHk+DQo8ZGl2IGNvbnRlbnRlZGl0YWJsZSBkaXI9InJ0bCIg
c3R5bGU9Ii13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGU7IGhlaWdodDogMmVtOyBib3Jk
ZXI6IHNvbGlkIj48c3Bhbj4mI3gwNWQwPC9zcGFuPjxzcGFuPiYjeDA1ZDE8L3NwYW4+PHNwYW4+
JiN4MDVkMjwvc3Bhbj48L2Rpdj4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87509</attachid>
            <date>2011-03-30 05:59:40 -0700</date>
            <delta_ts>2011-03-30 06:16:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38087-20110330145938.patch</filename>
            <type>text/plain</type>
            <size>10079</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMzAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdodC10
by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcKKwor
ICAgICAgICBNb3ZpbmcgZ2V0TG9naWNhbFtTdGFydC9FbmRdQm94QW5kTm9kZSB0byBSb290SW5s
aW5lQm94IGFuZCB1c2luZyBpdCBpbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
CisgICAgICAgIGluc3RlYWQgb2YgbGFzdExlYWZDaGlsZCwgd2hpY2ggd2Fzbid0IGNvcnJlY3Qg
aW4gdGhlIFJUTCBjYXNlLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWJlbG93LXJ0bC10ZXh0Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsU3RhcnRQb3NpdGlvbkZvckxpbmUpOiBNb3Zl
ZCB0byBSb290SW5saW5lQm94LgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbEVuZFBvc2l0aW9u
Rm9yTGluZSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6IFVzZWluZyBnZXRM
b2dpY2FsRW5kQm94QW5kTm9kZSBpbnN0ZWFkCisgICAgICAgIG9mIGxhc3RMZWFmQ2hpbGQuCisg
ICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Um9vdElubGluZUJveDo6Z2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZSk6IE1vdmVkLgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbEVuZEJveEFuZE5vZGUpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorCiAyMDExLTAzLTMwICBM
ZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcAkocmV2aXNpb24gODI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQxLDM3ICsxMDQxLDYgQEAgVmlzaWJsZVBv
c2l0aW9uIGVuZE9mRWRpdGFibGVDb250ZW50KGNvbgogICAgIHJldHVybiBsYXN0UG9zaXRpb25J
bk5vZGUoaGlnaGVzdFJvb3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRMb2dpY2FsU3RhcnRCb3hB
bmROb2RlKFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIElubGluZUJveComIHN0YXJ0Qm94LCBOb2Rl
KiYgc3RhcnROb2RlKQotewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcjsKLSAgICByb290Qm94LT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwotICAgIHN0YXJ0Qm94ID0gMDsKLSAgICBzdGFydE5vZGUg
PSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXTsKLSAgICAgICAgc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsK
LSAgICAgICAgaWYgKHN0YXJ0Tm9kZSkKLSAgICAgICAgICAgIHJldHVybjsgCi0gICAgfQotfQot
Ci1zdGF0aWMgdm9pZCBnZXRMb2dpY2FsRW5kQm94QW5kTm9kZShSb290SW5saW5lQm94KiByb290
Qm94LCBJbmxpbmVCb3gqJiBlbmRCb3gsIE5vZGUqJiBlbmROb2RlKQotewotICAgIFZlY3RvcjxJ
bmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKLSAgICByb290Qm94LT5jb2xsZWN0
TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwotICAgIGVu
ZEJveCA9IDA7Ci0gICAgZW5kTm9kZSA9IDA7Ci0gICAgLy8gR2VuZXJhdGVkIGNvbnRlbnQgKGUu
Zy4gbGlzdCBtYXJrZXJzIGFuZCBDU1MgOmJlZm9yZSBhbmQgOmFmdGVyCi0gICAgLy8gcHNldWRv
ZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwgYW5kIHNvIGNhbm5v
dCBiZQotICAgIC8vIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiAgVXNlIHdoYXRl
dmVyIHByZWNlZGVzIGluc3RlYWQuCi0gICAgZm9yIChzaXplX3QgaSA9IGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyLnNpemUoKTsgaSA+IDA7IC0taSkgeyAKLSAgICAgICAgZW5kQm94ID0gbGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXJbaSAtIDFdOwotICAgICAgICBlbmROb2RlID0gZW5kQm94LT5yZW5k
ZXJlcigpLT5ub2RlKCk7Ci0gICAgICAgIGlmIChlbmROb2RlKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQogc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3RhcnRQb3NpdGlv
bkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogewogICAgIGlmIChjLmlzTnVsbCgp
KQpAQCAtMTA5MCw3ICsxMDU5LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3Rh
cnRQb3NpdAogICAgIAogICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0Qm94OwogICAgIE5vZGUq
IGxvZ2ljYWxTdGFydE5vZGU7Ci0gICAgZ2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZShyb290Qm94
LCBsb2dpY2FsU3RhcnRCb3gsIGxvZ2ljYWxTdGFydE5vZGUpOworICAgIHJvb3RCb3gtPmdldExv
Z2ljYWxTdGFydEJveEFuZE5vZGUobG9naWNhbFN0YXJ0Qm94LCBsb2dpY2FsU3RhcnROb2RlKTsK
IAogICAgIGlmICghbG9naWNhbFN0YXJ0Tm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwpAQCAtMTEyNiw3ICsxMDk1LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dp
Y2FsRW5kUG9zaXRpbwogICAgIAogICAgIElubGluZUJveCogbG9naWNhbEVuZEJveDsKICAgICBO
b2RlKiBsb2dpY2FsRW5kTm9kZTsKLSAgICBnZXRMb2dpY2FsRW5kQm94QW5kTm9kZShyb290Qm94
LCBsb2dpY2FsRW5kQm94LCBsb2dpY2FsRW5kTm9kZSk7CisgICAgcm9vdEJveC0+Z2V0TG9naWNh
bEVuZEJveEFuZE5vZGUobG9naWNhbEVuZEJveCwgbG9naWNhbEVuZE5vZGUpOwogICAgIGlmICgh
bG9naWNhbEVuZE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MjQx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUm9v
dElubGluZUJveDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBFV29yZFNpZGUgeyBS
aWdodFdvcmRJZk9uQm91bmRhcnkgPSBmYWxzZSwgTGVmdFdvcmRJZk9uQm91bmRhcnkgPSB0cnVl
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlz
aW9uIDgyNDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCisjaW5jbHVk
ZSAidmlzaWJsZV91bml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQxNTUsNyArNDE1NiwxMSBAQCBWaXNpYmxlUG9zaXRpb24g
UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yCiAgICAgaWYgKGxhc3RSb290Qm94V2l0aENoaWxkcmVu
KSB7CiAgICAgICAgIC8vIFdlIGhpdCB0aGlzIGNhc2UgZm9yIE1hYyBiZWhhdmlvciB3aGVuIHRo
ZSBZIGNvb3JkaW5hdGUgaXMgYmVsb3cgdGhlIGxhc3QgYm94LgogICAgICAgICBBU1NFUlQobW92
ZUNhcmV0VG9Cb3VuZGFyeSk7Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRp
b25Gb3JCb3gobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmxhc3RMZWFmQ2hpbGQoKSwgZmFsc2Up
LCBET1dOU1RSRUFNKTsKKyAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsbHlMYXN0Qm94OworICAg
ICAgICBOb2RlKiBlbmROb2RlOworICAgICAgICBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+Z2V0
TG9naWNhbEVuZEJveEFuZE5vZGUobG9naWNhbGx5TGFzdEJveCwgZW5kTm9kZSk7CisgICAgICAg
IGlmIChsb2dpY2FsbHlMYXN0Qm94ICYmIGVuZE5vZGUpCisgICAgICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxvZ2ljYWxseUxhc3RCb3gsIGZhbHNlKSwgRE9X
TlNUUkVBTSk7CiAgICAgfQogCiAgICAgLy8gQ2FuJ3QgcmVhY2ggdGhpcy4gV2UgaGF2ZSBhIHJv
b3QgbGluZSBib3gsIGJ1dCBpdCBoYXMgbm8ga2lkcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUs
NCArNzg1LDMyIEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGluZUJveEYKICAg
ICByZXR1cm4gKGxpbmVCb3hDb250YWluICYgTGluZUJveENvbnRhaW5CbG9jaykgfHwgKGxpbmVC
b3hDb250YWluICYgTGluZUJveENvbnRhaW5JbmxpbmUpIHx8IChsaW5lQm94Q29udGFpbiAmIExp
bmVCb3hDb250YWluRm9udCk7CiB9CiAKK3ZvaWQgUm9vdElubGluZUJveDo6Z2V0TG9naWNhbFN0
YXJ0Qm94QW5kTm9kZShJbmxpbmVCb3gqJiBzdGFydEJveCwgTm9kZSomIHN0YXJ0Tm9kZSkKK3sK
KyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgY29s
bGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAg
ICBzdGFydEJveCA9IDA7CisgICAgc3RhcnROb2RlID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgIHN0
YXJ0Qm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07CisgICAgICAgIHN0YXJ0Tm9kZSA9
IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgICAgIGlmIChzdGFydE5vZGUpCisg
ICAgICAgICAgICByZXR1cm47IAorICAgIH0KK30KKyAgICAKK3ZvaWQgUm9vdElubGluZUJveDo6
Z2V0TG9naWNhbEVuZEJveEFuZE5vZGUoSW5saW5lQm94KiYgZW5kQm94LCBOb2RlKiYgZW5kTm9k
ZSkKK3sKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Cisg
ICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVy
KTsKKyAgICBlbmRCb3ggPSAwOworICAgIGVuZE5vZGUgPSAwOworICAgIGZvciAoc2l6ZV90IGkg
PSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAtLWkpIHsgCisgICAgICAg
IGVuZEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXTsKKyAgICAgICAgZW5kTm9k
ZSA9IGVuZEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAgICAgICBpZiAoZW5kTm9kZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24gODI0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAgcHVibGljOgogICAgIGJvb2wgZml0c1RvR2x5cGhz
KCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRlc1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpIGNv
bnN0OwogCisgICAgdm9pZCBnZXRMb2dpY2FsU3RhcnRCb3hBbmROb2RlKElubGluZUJveComLCBO
b2RlKiYpOworICAgIHZvaWQgZ2V0TG9naWNhbEVuZEJveEFuZE5vZGUoSW5saW5lQm94KiYsIE5v
ZGUqJik7CiBwcml2YXRlOgogICAgIGJvb2wgaGFzRWxsaXBzaXNCb3goKSBjb25zdCB7IHJldHVy
biBtX2hhc0VsbGlwc2lzQm94T3JIeXBoZW47IH0KICAgICB2b2lkIHNldEhhc0VsbGlwc2lzQm94
KGJvb2wgaGFzRWxsaXBzaXNCb3gpIHsgbV9oYXNFbGxpcHNpc0JveE9ySHlwaGVuID0gaGFzRWxs
aXBzaXNCb3g7IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMzAgIExldmkg
V2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdo
dC10by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFj
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcK
KworICAgICAgICBEb2luZyB0aGUgcmlnaHQgdGhpbmcgd2hlbiBjbGlja2luZyBiZWxvdyB0aGUg
bGFzdCBsaW5lIGJveCBpbiBSVEwgZWRpdGFibGUgY29udGVudC4KKworICAgICAgICAqIGVkaXRp
bmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQuaHRtbDogQWRk
ZWQuCisKIDIwMTEtMDMtMjkgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzIEBACitUaGlzIHRlc3RzIHRoYXQgY2xpY2tpbmcgYmVsb3cgYSBsaW5lIG9mIGVkaXRh
YmxlIFJUTCB0ZXh0IGNvcnJlY3RseSBwbGFjZXMgdGhlIGNhcmV0IGF0IHRoZSBlbmQuIFRvIHJ1
biBtYW51YWxseSwgY2xpY2sgd2l0aGluIHRoZSBib3ggYmVsb3cgYnV0IGJlbG93IHRoZSB0ZXh0
LiBUaGUgY2FyZXQgc2hvdWxkIGFwcGVhciBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSB0ZXh0Lgor
15DXkdeSCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1i
ZWxvdy1ydGwtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyB0aGF0IGNsaWNraW5nIGJlbG93IGEgbGlu
ZSBvZiBlZGl0YWJsZSBSVEwgdGV4dCBjb3JyZWN0bHkgcGxhY2VzIHRoZSBjYXJldCBhdCB0aGUg
ZW5kLiBUbyBydW4gbWFudWFsbHksIGNsaWNrIHdpdGhpbiB0aGUgYm94IGJlbG93IGJ1dCBiZWxv
dyB0aGUgdGV4dC4gVGhlIGNhcmV0IHNob3VsZCBhcHBlYXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0
aGUgdGV4dC48L2Rpdj4KKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0cnVlIiBkaXI9InJ0bCIgc3R5
bGU9ImhlaWdodDogM2VtOyBib3JkZXI6IHNvbGlkIiBpZD0iY29udGFpbmVyIj48c3Bhbj4mI3gw
NWQwOzwvc3Bhbj48c3Bhbj4mI3gwNWQxOzwvc3Bhbj48c3BhbiBpZD0ibGFzdCI+JiN4MDVkMjs8
L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAg
ICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOwor
ICAgIHZhciBtaWRkbGVYID0gY29udGFpbmVyLm9mZnNldExlZnQgKyAoY29udGFpbmVyLm9mZnNl
dFdpZHRoIC8gMik7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkZGxlWCwgY29udGFp
bmVyLm9mZnNldFRvcCArIGNvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAxMCk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoNTAwKTsKKyAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Imxhc3QiKS5maXJzdENoaWxkICYmIHNlbC5hbmNob3JPZmZzZXQgPT0gMSkKKyAgICAgICAgcmVz
dWx0LmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdC5pbm5lclRl
eHQgPSAiRkFJTCI7Cit9CisKK3Rlc3QoKTsKKzwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87518</attachid>
            <date>2011-03-30 06:16:20 -0700</date>
            <delta_ts>2011-03-30 07:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38087-20110330151617.patch</filename>
            <type>text/plain</type>
            <size>10159</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMzAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdodC10
by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcKKwor
ICAgICAgICBNb3ZpbmcgZ2V0TG9naWNhbFtTdGFydC9FbmRdQm94QW5kTm9kZSB0byBSb290SW5s
aW5lQm94IGFuZCB1c2luZyBpdCBpbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
CisgICAgICAgIGluc3RlYWQgb2YgbGFzdExlYWZDaGlsZCwgd2hpY2ggd2Fzbid0IGNvcnJlY3Qg
aW4gdGhlIFJUTCBjYXNlLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNr
LWJlbG93LXJ0bC10ZXh0Lmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsU3RhcnRQb3NpdGlvbkZvckxpbmUpOiBNb3Zl
ZCB0byBSb290SW5saW5lQm94LgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbEVuZFBvc2l0aW9u
Rm9yTGluZSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6IFVzZWluZyBnZXRM
b2dpY2FsRW5kQm94QW5kTm9kZSBpbnN0ZWFkCisgICAgICAgIG9mIGxhc3RMZWFmQ2hpbGQuCisg
ICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Um9vdElubGluZUJveDo6Z2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZSk6IE1vdmVkLgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbEVuZEJveEFuZE5vZGUpOiBEaXR0
by4KKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorCiAyMDExLTAzLTMwICBM
ZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRz
LmNwcAkocmV2aXNpb24gODI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVf
dW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQxLDM3ICsxMDQxLDYgQEAgVmlzaWJsZVBv
c2l0aW9uIGVuZE9mRWRpdGFibGVDb250ZW50KGNvbgogICAgIHJldHVybiBsYXN0UG9zaXRpb25J
bk5vZGUoaGlnaGVzdFJvb3QpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRMb2dpY2FsU3RhcnRCb3hB
bmROb2RlKFJvb3RJbmxpbmVCb3gqIHJvb3RCb3gsIElubGluZUJveComIHN0YXJ0Qm94LCBOb2Rl
KiYgc3RhcnROb2RlKQotewotICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcjsKLSAgICByb290Qm94LT5jb2xsZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwotICAgIHN0YXJ0Qm94ID0gMDsKLSAgICBzdGFydE5vZGUg
PSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3RhcnRCb3ggPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRl
cltpXTsKLSAgICAgICAgc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsK
LSAgICAgICAgaWYgKHN0YXJ0Tm9kZSkKLSAgICAgICAgICAgIHJldHVybjsgCi0gICAgfQotfQot
Ci1zdGF0aWMgdm9pZCBnZXRMb2dpY2FsRW5kQm94QW5kTm9kZShSb290SW5saW5lQm94KiByb290
Qm94LCBJbmxpbmVCb3gqJiBlbmRCb3gsIE5vZGUqJiBlbmROb2RlKQotewotICAgIFZlY3RvcjxJ
bmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKLSAgICByb290Qm94LT5jb2xsZWN0
TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOwotICAgIGVu
ZEJveCA9IDA7Ci0gICAgZW5kTm9kZSA9IDA7Ci0gICAgLy8gR2VuZXJhdGVkIGNvbnRlbnQgKGUu
Zy4gbGlzdCBtYXJrZXJzIGFuZCBDU1MgOmJlZm9yZSBhbmQgOmFmdGVyCi0gICAgLy8gcHNldWRv
ZWxlbWVudHMpIGhhdmUgbm8gY29ycmVzcG9uZGluZyBET00gZWxlbWVudCwgYW5kIHNvIGNhbm5v
dCBiZQotICAgIC8vIHJlcHJlc2VudGVkIGJ5IGEgVmlzaWJsZVBvc2l0aW9uLiAgVXNlIHdoYXRl
dmVyIHByZWNlZGVzIGluc3RlYWQuCi0gICAgZm9yIChzaXplX3QgaSA9IGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyLnNpemUoKTsgaSA+IDA7IC0taSkgeyAKLSAgICAgICAgZW5kQm94ID0gbGVhZkJv
eGVzSW5Mb2dpY2FsT3JkZXJbaSAtIDFdOwotICAgICAgICBlbmROb2RlID0gZW5kQm94LT5yZW5k
ZXJlcigpLT5ub2RlKCk7Ci0gICAgICAgIGlmIChlbmROb2RlKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQogc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3RhcnRQb3NpdGlv
bkZvckxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogewogICAgIGlmIChjLmlzTnVsbCgp
KQpAQCAtMTA4OSw4ICsxMDU4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBsb2dpY2FsU3Rh
cnRQb3NpdAogICAgIH0KICAgICAKICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxTdGFydEJveDsKLSAg
ICBOb2RlKiBsb2dpY2FsU3RhcnROb2RlOwotICAgIGdldExvZ2ljYWxTdGFydEJveEFuZE5vZGUo
cm9vdEJveCwgbG9naWNhbFN0YXJ0Qm94LCBsb2dpY2FsU3RhcnROb2RlKTsKKyAgICBOb2RlKiBs
b2dpY2FsU3RhcnROb2RlID0gcm9vdEJveC0+Z2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9n
aWNhbFN0YXJ0Qm94KTsKIAogICAgIGlmICghbG9naWNhbFN0YXJ0Tm9kZSkKICAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAtMTEyNSw4ICsxMDkzLDggQEAgc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBsb2dpY2FsRW5kUG9zaXRpbwogICAgIH0KICAgICAKICAgICBJbmxpbmVCb3gq
IGxvZ2ljYWxFbmRCb3g7Ci0gICAgTm9kZSogbG9naWNhbEVuZE5vZGU7Ci0gICAgZ2V0TG9naWNh
bEVuZEJveEFuZE5vZGUocm9vdEJveCwgbG9naWNhbEVuZEJveCwgbG9naWNhbEVuZE5vZGUpOwor
ICAgIE5vZGUqIGxvZ2ljYWxFbmROb2RlID0gcm9vdEJveC0+Z2V0TG9naWNhbEVuZEJveEFuZE5v
ZGUobG9naWNhbEVuZEJveCwgbG9naWNhbEVuZE5vZGUpOworCiAgICAgaWYgKCFsb2dpY2FsRW5k
Tm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgJKHJldmlzaW9uIDgyNDExKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSb290SW5saW5lQm94
OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCiBlbnVtIEVXb3JkU2lkZSB7IFJpZ2h0V29yZElm
T25Cb3VuZGFyeSA9IGZhbHNlLCBMZWZ0V29yZElmT25Cb3VuZGFyeSA9IHRydWUgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODI0MTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJU
ZXh0UnVuLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKKyNpbmNsdWRlICJ2aXNpYmxl
X3VuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNDE1NSw3ICs0MTU2LDEwIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3IKICAgICBpZiAobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAgICAg
ICAgLy8gV2UgaGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29vcmRp
bmF0ZSBpcyBiZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRUb0Jv
dW5kYXJ5KTsKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJveChs
YXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFzdExlYWZDaGlsZCgpLCBmYWxzZSksIERPV05TVFJF
QU0pOworICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxseUxhc3RCb3g7CisgICAgICAgIE5vZGUq
IGVuZE5vZGUgPSBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+Z2V0TG9naWNhbEVuZEJveFdpdGhO
b2RlKGxvZ2ljYWxseUxhc3RCb3gpOworICAgICAgICBpZiAoZW5kTm9kZSkKKyAgICAgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25Gb3JCb3gobG9naWNhbGx5TGFzdEJveCwg
ZmFsc2UpLCBET1dOU1RSRUFNKTsKICAgICB9CiAKICAgICAvLyBDYW4ndCByZWFjaCB0aGlzLiBX
ZSBoYXZlIGEgcm9vdCBsaW5lIGJveCwgYnV0IGl0IGhhcyBubyBraWRzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gODI0MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4NSw0ICs3ODUsMzYgQEAgYm9vbCBSb290SW5saW5lQm94OjppbmNsdWRlc1Jvb3RM
aW5lQm94RgogICAgIHJldHVybiAobGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbkJsb2Nr
KSB8fCAobGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbklubGluZSkgfHwgKGxpbmVCb3hD
b250YWluICYgTGluZUJveENvbnRhaW5Gb250KTsKIH0KIAorTm9kZSogUm9vdElubGluZUJveDo6
Z2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUoSW5saW5lQm94KiYgc3RhcnRCb3gpCit7CisgICAg
VmVjdG9yPElubGluZUJveCo+IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyOworICAgIGNvbGxlY3RM
ZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcihsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcik7CisgICAgc3Rh
cnRCb3ggPSAwOworICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7ICsraSkgeworICAgICAgICBz
dGFydEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldOworICAgICAgICBzdGFydE5vZGUg
PSBzdGFydEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAgICAgICBpZiAoc3RhcnROb2RlKQor
ICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Tm9kZTsKKyAgICB9CisgICAgc3RhcnRCb3ggPSAwOwor
ICAgIHJldHVybiAwOworfQorICAgIAorTm9kZSogUm9vdElubGluZUJveDo6Z2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKElubGluZUJveComIGVuZEJveCkKK3sKKyAgICBWZWN0b3I8SW5saW5lQm94
Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNh
bE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAgICBlbmRCb3ggPSAwOworICAgIE5v
ZGUqIGVuZE5vZGUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxP
cmRlci5zaXplKCk7IGkgPiAwOyAtLWkpIHsgCisgICAgICAgIGVuZEJveCA9IGxlYWZCb3hlc0lu
TG9naWNhbE9yZGVyW2kgLSAxXTsKKyAgICAgICAgZW5kTm9kZSA9IGVuZEJveC0+cmVuZGVyZXIo
KS0+bm9kZSgpOworICAgICAgICBpZiAoZW5kTm9kZSkKKyAgICAgICAgICAgIHJldHVybiBlbmRO
b2RlOworICAgIH0KKyAgICBlbmRCb3ggPSAwOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmgJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGZpdHNUb0dseXBocygpIGNvbnN0OwogICAgIGJvb2wgaW5jbHVkZXNSb290TGluZUJv
eEZvbnRPckxlYWRpbmcoKSBjb25zdDsKIAorICAgIE5vZGUqIGdldExvZ2ljYWxTdGFydEJveFdp
dGhOb2RlKElubGluZUJveComLCBOb2RlKiYpOworICAgIE5vZGUqIGdldExvZ2ljYWxFbmRCb3hX
aXRoTm9kZShJbmxpbmVCb3gqJiwgTm9kZSomKTsKIHByaXZhdGU6CiAgICAgYm9vbCBoYXNFbGxp
cHNpc0JveCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRWxsaXBzaXNCb3hPckh5cGhlbjsgfQogICAg
IHZvaWQgc2V0SGFzRWxsaXBzaXNCb3goYm9vbCBoYXNFbGxpcHNpc0JveCkgeyBtX2hhc0VsbGlw
c2lzQm94T3JIeXBoZW4gPSBoYXNFbGxpcHNpc0JveDsgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODI0
MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xpY2tpbmcg
YmVsb3cgbGFzdCBsaW5lIG9mIHJpZ2h0LXRvLWxlZnQgZWRpdGFibGUgdGV4dCB0aGF0IHB1dHMg
Y2FyZXQgaW4gdGhlIHdyb25nIHBsYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zODA4NworCisgICAgICAgIERvaW5nIHRoZSByaWdodCB0aGluZyB3
aGVuIGNsaWNraW5nIGJlbG93IHRoZSBsYXN0IGxpbmUgYm94IGluIFJUTCBlZGl0YWJsZSBjb250
ZW50LgorCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1i
ZWxvdy1ydGwtdGV4dC5odG1sOiBBZGRlZC4KKwogMjAxMS0wMy0yOSAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vY2xpY2stYmVsb3ctcnRsLXRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgdGhhdCBjbGlja2lu
ZyBiZWxvdyBhIGxpbmUgb2YgZWRpdGFibGUgUlRMIHRleHQgY29ycmVjdGx5IHBsYWNlcyB0aGUg
Y2FyZXQgYXQgdGhlIGVuZC4gVG8gcnVuIG1hbnVhbGx5LCBjbGljayB3aXRoaW4gdGhlIGJveCBi
ZWxvdyBidXQgYmVsb3cgdGhlIHRleHQuIFRoZSBjYXJldCBzaG91bGQgYXBwZWFyIG9uIHRoZSBs
ZWZ0IHNpZGUgb2YgdGhlIHRleHQuCivXkNeR15IKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93
LXJ0bC10ZXh0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIHRo
YXQgY2xpY2tpbmcgYmVsb3cgYSBsaW5lIG9mIGVkaXRhYmxlIFJUTCB0ZXh0IGNvcnJlY3RseSBw
bGFjZXMgdGhlIGNhcmV0IGF0IHRoZSBlbmQuIFRvIHJ1biBtYW51YWxseSwgY2xpY2sgd2l0aGlu
IHRoZSBib3ggYmVsb3cgYnV0IGJlbG93IHRoZSB0ZXh0LiBUaGUgY2FyZXQgc2hvdWxkIGFwcGVh
ciBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSB0ZXh0LjwvZGl2PgorPGRpdiBjb250ZW50RWRpdGFi
bGU9InRydWUiIGRpcj0icnRsIiBzdHlsZT0iaGVpZ2h0OiAzZW07IGJvcmRlcjogc29saWQiIGlk
PSJjb250YWluZXIiPjxzcGFuPiYjeDA1ZDA7PC9zcGFuPjxzcGFuPiYjeDA1ZDE7PC9zcGFuPjxz
cGFuIGlkPSJsYXN0Ij4mI3gwNWQyOzwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9k
aXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpOworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGFpbmVyIik7CisgICAgdmFyIG1pZGRsZVggPSBjb250YWluZXIub2Zmc2V0
TGVmdCArIChjb250YWluZXIub2Zmc2V0V2lkdGggLyAyKTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhtaWRkbGVYLCBjb250YWluZXIub2Zmc2V0VG9wICsgY29udGFpbmVyLm9mZnNldEhl
aWdodCAtIDEwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCg1MDApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICB2YXIg
c2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmIChzZWwuYW5jaG9yTm9kZSA9PSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGFzdCIpLmZpcnN0Q2hpbGQgJiYgc2VsLmFuY2hvck9m
ZnNldCA9PSAxKQorICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIlBBU1MiOworICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJGQUlMIjsKK30KKwordGVzdCgpOworPC9zY3Jp
cHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87528</attachid>
            <date>2011-03-30 07:01:12 -0700</date>
            <delta_ts>2011-03-30 07:24:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38087-20110330160109.patch</filename>
            <type>text/plain</type>
            <size>10113</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMzAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdodC10
by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcKKwor
ICAgICAgICBNb3ZpbmcgZ2V0TG9naWNhbFtTdGFydC9FbmRdQm94V2l0aE5vZGUgdG8gUm9vdElu
bGluZUJveCBhbmQgdXNpbmcgaXQgaW4gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJl
bgorICAgICAgICBpbnN0ZWFkIG9mIGxhc3RMZWFmQ2hpbGQsIHdoaWNoIHdhc24ndCBjb3JyZWN0
IGluIHRoZSBSVEwgY2FzZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9jbGlj
ay1iZWxvdy1ydGwtdGV4dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKTogTW92
ZWQgdG8gUm9vdElubGluZUJveC4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxFbmRQb3NpdGlv
bkZvckxpbmUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOiBVc2VpbmcgZ2V0
TG9naWNhbEVuZEJveFdpdGhOb2RlIGluc3RlYWQKKyAgICAgICAgb2YgbGFzdExlYWZDaGlsZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSb290SW5saW5lQm94OjpnZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZSk6IE1vdmVkIGFuZCBy
ZWZhY3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKwogMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0MSwzNyAr
MTA0MSw2IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZkVkaXRhYmxlQ29udGVudChjb24KICAgICBy
ZXR1cm4gbGFzdFBvc2l0aW9uSW5Ob2RlKGhpZ2hlc3RSb290KTsKIH0KIAotc3RhdGljIHZvaWQg
Z2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZShSb290SW5saW5lQm94KiByb290Qm94LCBJbmxpbmVC
b3gqJiBzdGFydEJveCwgTm9kZSomIHN0YXJ0Tm9kZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94
Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0gICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hl
c0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKLSAgICBzdGFydEJveCA9
IDA7Ci0gICAgc3RhcnROb2RlID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07Ci0gICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5y
ZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgICAgIGlmIChzdGFydE5vZGUpCi0gICAgICAgICAgICBy
ZXR1cm47IAotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgZ2V0TG9naWNhbEVuZEJveEFuZE5vZGUo
Um9vdElubGluZUJveCogcm9vdEJveCwgSW5saW5lQm94KiYgZW5kQm94LCBOb2RlKiYgZW5kTm9k
ZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0g
ICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKTsKLSAgICBlbmRCb3ggPSAwOwotICAgIGVuZE5vZGUgPSAwOwotICAgIC8vIEdl
bmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDph
ZnRlcgotICAgIC8vIHBzZXVkb2VsZW1lbnRzKSBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgRE9NIGVs
ZW1lbnQsIGFuZCBzbyBjYW5ub3QgYmUKLSAgICAvLyByZXByZXNlbnRlZCBieSBhIFZpc2libGVQ
b3NpdGlvbi4gIFVzZSB3aGF0ZXZlciBwcmVjZWRlcyBpbnN0ZWFkLgotICAgIGZvciAoc2l6ZV90
IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAtLWkpIHsgCi0gICAg
ICAgIGVuZEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXTsKLSAgICAgICAgZW5k
Tm9kZSA9IGVuZEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgICAgICBpZiAoZW5kTm9kZSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsK
ICAgICBpZiAoYy5pc051bGwoKSkKQEAgLTEwODksOCArMTA1OCw3IEBAIHN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXQKICAgICB9CiAgICAgCiAgICAgSW5saW5lQm94KiBs
b2dpY2FsU3RhcnRCb3g7Ci0gICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZTsKLSAgICBnZXRMb2dp
Y2FsU3RhcnRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxTdGFydEJveCwgbG9naWNhbFN0YXJ0
Tm9kZSk7CisgICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZSA9IHJvb3RCb3gtPmdldExvZ2ljYWxT
dGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydEJveCk7CiAKICAgICBpZiAoIWxvZ2ljYWxTdGFy
dE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTExMjUsOCArMTA5
Myw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbEVuZFBvc2l0aW8KICAgICB9CiAg
ICAgCiAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kQm94OwotICAgIE5vZGUqIGxvZ2ljYWxFbmRO
b2RlOwotICAgIGdldExvZ2ljYWxFbmRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxFbmRCb3gs
IGxvZ2ljYWxFbmROb2RlKTsKKyAgICBOb2RlKiBsb2dpY2FsRW5kTm9kZSA9IHJvb3RCb3gtPmdl
dExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsRW5kQm94KTsKKwogICAgIGlmICghbG9naWNh
bEVuZE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MjQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUm9vdElubGlu
ZUJveDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBFV29yZFNpZGUgeyBSaWdodFdv
cmRJZk9uQm91bmRhcnkgPSBmYWxzZSwgTGVmdFdvcmRJZk9uQm91bmRhcnkgPSB0cnVlIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDgy
NDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCisjaW5jbHVkZSAidmlz
aWJsZV91bml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTQxNTUsNyArNDE1Niw5IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJC
bG9jazo6cG9zaXRpb25Gb3IKICAgICBpZiAobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAg
ICAgICAgLy8gV2UgaGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29v
cmRpbmF0ZSBpcyBiZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRU
b0JvdW5kYXJ5KTsKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJv
eChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFzdExlYWZDaGlsZCgpLCBmYWxzZSksIERPV05T
VFJFQU0pOworICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxseUxhc3RCb3g7CisgICAgICAgIGlm
IChOb2RlKiBlbmROb2RlID0gbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmdldExvZ2ljYWxFbmRC
b3hXaXRoTm9kZShsb2dpY2FsbHlMYXN0Qm94KSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxvZ2ljYWxseUxhc3RCb3gsIGZhbHNlKSwgRE9XTlNU
UkVBTSk7CiAgICAgfQogCiAgICAgLy8gQ2FuJ3QgcmVhY2ggdGhpcy4gV2UgaGF2ZSBhIHJvb3Qg
bGluZSBib3gsIGJ1dCBpdCBoYXMgbm8ga2lkcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsNCAr
Nzg1LDMyIEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGluZUJveEYKICAgICBy
ZXR1cm4gKGxpbmVCb3hDb250YWluICYgTGluZUJveENvbnRhaW5CbG9jaykgfHwgKGxpbmVCb3hD
b250YWluICYgTGluZUJveENvbnRhaW5JbmxpbmUpIHx8IChsaW5lQm94Q29udGFpbiAmIExpbmVC
b3hDb250YWluRm9udCk7CiB9CiAKK05vZGUqIFJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxTdGFy
dEJveFdpdGhOb2RlKElubGluZUJveComIHN0YXJ0Qm94KQoreworICAgIFZlY3RvcjxJbmxpbmVC
b3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBjb2xsZWN0TGVhZkJveGVzSW5Mb2dp
Y2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldLT5yZW5kZXJlcigpLT5ub2RlKCkpIHsKKyAgICAg
ICAgICAgIHN0YXJ0Qm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07CisgICAgICAgICAg
ICByZXR1cm4gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBzdGFydEJveCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCitOb2RlKiBSb290SW5s
aW5lQm94OjpnZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUoSW5saW5lQm94KiYgZW5kQm94KQorewor
ICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBjb2xs
ZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAg
IGZvciAoc2l6ZV90IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAt
LWkpIHsgCisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpIC0gMV0tPnJlbmRl
cmVyKCktPm5vZGUoKSkgeworICAgICAgICAgICAgZW5kQm94ID0gbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXJbaSAtIDFdOworICAgICAgICAgICAgcmV0dXJuIGVuZEJveC0+cmVuZGVyZXIoKS0+bm9k
ZSgpOworICAgICAgICB9CisgICAgfQorICAgIGVuZEJveCA9IDA7CisgICAgcmV0dXJuIDA7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24gODI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAg
cHVibGljOgogICAgIGJvb2wgZml0c1RvR2x5cGhzKCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpIGNvbnN0OwogCisgICAgTm9kZSogZ2V0TG9naWNh
bFN0YXJ0Qm94V2l0aE5vZGUoSW5saW5lQm94KiYsIE5vZGUqJik7CisgICAgTm9kZSogZ2V0TG9n
aWNhbEVuZEJveFdpdGhOb2RlKElubGluZUJveComLCBOb2RlKiYpOwogcHJpdmF0ZToKICAgICBi
b29sIGhhc0VsbGlwc2lzQm94KCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbGxpcHNpc0JveE9ySHlw
aGVuOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0JveChib29sIGhhc0VsbGlwc2lzQm94KSB7
IG1faGFzRWxsaXBzaXNCb3hPckh5cGhlbiA9IGhhc0VsbGlwc2lzQm94OyB9CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA4MjQyNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDExLTAzLTMwICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDbGlja2luZyBiZWxvdyBsYXN0IGxpbmUgb2YgcmlnaHQtdG8tbGVmdCBlZGl0YWJsZSB0ZXh0
IHRoYXQgcHV0cyBjYXJldCBpbiB0aGUgd3JvbmcgcGxhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDg3CisKKyAgICAgICAgRG9pbmcgdGhlIHJp
Z2h0IHRoaW5nIHdoZW4gY2xpY2tpbmcgYmVsb3cgdGhlIGxhc3QgbGluZSBib3ggaW4gUlRMIGVk
aXRhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxv
dy1ydGwtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTAzLTI5ICBMZXZp
IFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJl
bG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0
aGF0IGNsaWNraW5nIGJlbG93IGEgbGluZSBvZiBlZGl0YWJsZSBSVEwgdGV4dCBjb3JyZWN0bHkg
cGxhY2VzIHRoZSBjYXJldCBhdCB0aGUgZW5kLiBUbyBydW4gbWFudWFsbHksIGNsaWNrIHdpdGhp
biB0aGUgYm94IGJlbG93IGJ1dCBiZWxvdyB0aGUgdGV4dC4gVGhlIGNhcmV0IHNob3VsZCBhcHBl
YXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgdGV4dC4KK9eQ15HXkgorUEFTUwpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwt
dGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Y2xpY2stYmVsb3ctcnRsLXRleHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRo
aXMgdGVzdHMgdGhhdCBjbGlja2luZyBiZWxvdyBhIGxpbmUgb2YgZWRpdGFibGUgUlRMIHRleHQg
Y29ycmVjdGx5IHBsYWNlcyB0aGUgY2FyZXQgYXQgdGhlIGVuZC4gVG8gcnVuIG1hbnVhbGx5LCBj
bGljayB3aXRoaW4gdGhlIGJveCBiZWxvdyBidXQgYmVsb3cgdGhlIHRleHQuIFRoZSBjYXJldCBz
aG91bGQgYXBwZWFyIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHRleHQuPC9kaXY+Cis8ZGl2IGNv
bnRlbnRFZGl0YWJsZT0idHJ1ZSIgZGlyPSJydGwiIHN0eWxlPSJoZWlnaHQ6IDNlbTsgYm9yZGVy
OiBzb2xpZCIgaWQ9ImNvbnRhaW5lciI+PHNwYW4+JiN4MDVkMDs8L3NwYW4+PHNwYW4+JiN4MDVk
MTs8L3NwYW4+PHNwYW4gaWQ9Imxhc3QiPiYjeDA1ZDI7PC9zcGFuPjwvZGl2PgorPGRpdiBpZD0i
cmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIHZhciByZXN1bHQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKKyAgICB2YXIgbWlkZGxlWCA9IGNvbnRh
aW5lci5vZmZzZXRMZWZ0ICsgKGNvbnRhaW5lci5vZmZzZXRXaWR0aCAvIDIpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKG1pZGRsZVgsIGNvbnRhaW5lci5vZmZzZXRUb3AgKyBjb250YWlu
ZXIub2Zmc2V0SGVpZ2h0IC0gMTApOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
IGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbC5hbmNo
b3JOb2RlID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXN0IikuZmlyc3RDaGlsZCAmJiBz
ZWwuYW5jaG9yT2Zmc2V0ID09IDEpCisgICAgICAgIHJlc3VsdC5pbm5lclRleHQgPSAiUEFTUyI7
CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0gIkZBSUwiOworfQorCit0ZXN0
KCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87530</attachid>
            <date>2011-03-30 07:24:24 -0700</date>
            <delta_ts>2011-03-30 08:05:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38087-20110330162422.patch</filename>
            <type>text/plain</type>
            <size>10097</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMzAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdodC10
by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcKKwor
ICAgICAgICBNb3ZpbmcgZ2V0TG9naWNhbFtTdGFydC9FbmRdQm94V2l0aE5vZGUgdG8gUm9vdElu
bGluZUJveCBhbmQgdXNpbmcgaXQgaW4gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJl
bgorICAgICAgICBpbnN0ZWFkIG9mIGxhc3RMZWFmQ2hpbGQsIHdoaWNoIHdhc24ndCBjb3JyZWN0
IGluIHRoZSBSVEwgY2FzZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9jbGlj
ay1iZWxvdy1ydGwtdGV4dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKTogTW92
ZWQgdG8gUm9vdElubGluZUJveC4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxFbmRQb3NpdGlv
bkZvckxpbmUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOiBVc2VpbmcgZ2V0
TG9naWNhbEVuZEJveFdpdGhOb2RlIGluc3RlYWQKKyAgICAgICAgb2YgbGFzdExlYWZDaGlsZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSb290SW5saW5lQm94OjpnZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZSk6IE1vdmVkIGFuZCBy
ZWZhY3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKwogMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0MSwzNyAr
MTA0MSw2IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZkVkaXRhYmxlQ29udGVudChjb24KICAgICBy
ZXR1cm4gbGFzdFBvc2l0aW9uSW5Ob2RlKGhpZ2hlc3RSb290KTsKIH0KIAotc3RhdGljIHZvaWQg
Z2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZShSb290SW5saW5lQm94KiByb290Qm94LCBJbmxpbmVC
b3gqJiBzdGFydEJveCwgTm9kZSomIHN0YXJ0Tm9kZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94
Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0gICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hl
c0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKLSAgICBzdGFydEJveCA9
IDA7Ci0gICAgc3RhcnROb2RlID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07Ci0gICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5y
ZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgICAgIGlmIChzdGFydE5vZGUpCi0gICAgICAgICAgICBy
ZXR1cm47IAotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgZ2V0TG9naWNhbEVuZEJveEFuZE5vZGUo
Um9vdElubGluZUJveCogcm9vdEJveCwgSW5saW5lQm94KiYgZW5kQm94LCBOb2RlKiYgZW5kTm9k
ZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0g
ICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKTsKLSAgICBlbmRCb3ggPSAwOwotICAgIGVuZE5vZGUgPSAwOwotICAgIC8vIEdl
bmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDph
ZnRlcgotICAgIC8vIHBzZXVkb2VsZW1lbnRzKSBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgRE9NIGVs
ZW1lbnQsIGFuZCBzbyBjYW5ub3QgYmUKLSAgICAvLyByZXByZXNlbnRlZCBieSBhIFZpc2libGVQ
b3NpdGlvbi4gIFVzZSB3aGF0ZXZlciBwcmVjZWRlcyBpbnN0ZWFkLgotICAgIGZvciAoc2l6ZV90
IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAtLWkpIHsgCi0gICAg
ICAgIGVuZEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXTsKLSAgICAgICAgZW5k
Tm9kZSA9IGVuZEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgICAgICBpZiAoZW5kTm9kZSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsK
ICAgICBpZiAoYy5pc051bGwoKSkKQEAgLTEwODksOCArMTA1OCw3IEBAIHN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXQKICAgICB9CiAgICAgCiAgICAgSW5saW5lQm94KiBs
b2dpY2FsU3RhcnRCb3g7Ci0gICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZTsKLSAgICBnZXRMb2dp
Y2FsU3RhcnRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxTdGFydEJveCwgbG9naWNhbFN0YXJ0
Tm9kZSk7CisgICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZSA9IHJvb3RCb3gtPmdldExvZ2ljYWxT
dGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydEJveCk7CiAKICAgICBpZiAoIWxvZ2ljYWxTdGFy
dE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTExMjUsOCArMTA5
Myw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbEVuZFBvc2l0aW8KICAgICB9CiAg
ICAgCiAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kQm94OwotICAgIE5vZGUqIGxvZ2ljYWxFbmRO
b2RlOwotICAgIGdldExvZ2ljYWxFbmRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxFbmRCb3gs
IGxvZ2ljYWxFbmROb2RlKTsKKyAgICBOb2RlKiBsb2dpY2FsRW5kTm9kZSA9IHJvb3RCb3gtPmdl
dExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsRW5kQm94KTsKKwogICAgIGlmICghbG9naWNh
bEVuZE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MjQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUm9vdElubGlu
ZUJveDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBFV29yZFNpZGUgeyBSaWdodFdv
cmRJZk9uQm91bmRhcnkgPSBmYWxzZSwgTGVmdFdvcmRJZk9uQm91bmRhcnkgPSB0cnVlIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDgy
NDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCisjaW5jbHVkZSAidmlz
aWJsZV91bml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTQxNTUsNyArNDE1Niw5IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJC
bG9jazo6cG9zaXRpb25Gb3IKICAgICBpZiAobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAg
ICAgICAgLy8gV2UgaGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29v
cmRpbmF0ZSBpcyBiZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRU
b0JvdW5kYXJ5KTsKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJv
eChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFzdExlYWZDaGlsZCgpLCBmYWxzZSksIERPV05T
VFJFQU0pOworICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxseUxhc3RCb3g7CisgICAgICAgIGlm
IChOb2RlKiBlbmROb2RlID0gbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmdldExvZ2ljYWxFbmRC
b3hXaXRoTm9kZShsb2dpY2FsbHlMYXN0Qm94KSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKHBvc2l0aW9uRm9yQm94KGxvZ2ljYWxseUxhc3RCb3gsIGZhbHNlKSwgRE9XTlNU
UkVBTSk7CiAgICAgfQogCiAgICAgLy8gQ2FuJ3QgcmVhY2ggdGhpcy4gV2UgaGF2ZSBhIHJvb3Qg
bGluZSBib3gsIGJ1dCBpdCBoYXMgbm8ga2lkcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsNCAr
Nzg1LDMyIEBAIGJvb2wgUm9vdElubGluZUJveDo6aW5jbHVkZXNSb290TGluZUJveEYKICAgICBy
ZXR1cm4gKGxpbmVCb3hDb250YWluICYgTGluZUJveENvbnRhaW5CbG9jaykgfHwgKGxpbmVCb3hD
b250YWluICYgTGluZUJveENvbnRhaW5JbmxpbmUpIHx8IChsaW5lQm94Q29udGFpbiAmIExpbmVC
b3hDb250YWluRm9udCk7CiB9CiAKK05vZGUqIFJvb3RJbmxpbmVCb3g6OmdldExvZ2ljYWxTdGFy
dEJveFdpdGhOb2RlKElubGluZUJveComIHN0YXJ0Qm94KQoreworICAgIFZlY3RvcjxJbmxpbmVC
b3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBjb2xsZWN0TGVhZkJveGVzSW5Mb2dp
Y2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldLT5yZW5kZXJlcigpLT5ub2RlKCkpIHsKKyAgICAg
ICAgICAgIHN0YXJ0Qm94ID0gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07CisgICAgICAgICAg
ICByZXR1cm4gc3RhcnRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBzdGFydEJveCA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCitOb2RlKiBSb290SW5s
aW5lQm94OjpnZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUoSW5saW5lQm94KiYgZW5kQm94KQorewor
ICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcjsKKyAgICBjb2xs
ZWN0TGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIpOworICAg
IGZvciAoc2l6ZV90IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAt
LWkpIHsgCisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlcltpIC0gMV0tPnJlbmRl
cmVyKCktPm5vZGUoKSkgeworICAgICAgICAgICAgZW5kQm94ID0gbGVhZkJveGVzSW5Mb2dpY2Fs
T3JkZXJbaSAtIDFdOworICAgICAgICAgICAgcmV0dXJuIGVuZEJveC0+cmVuZGVyZXIoKS0+bm9k
ZSgpOworICAgICAgICB9CisgICAgfQorICAgIGVuZEJveCA9IDA7CisgICAgcmV0dXJuIDA7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaAkocmV2aXNpb24gODI0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAg
cHVibGljOgogICAgIGJvb2wgZml0c1RvR2x5cGhzKCkgY29uc3Q7CiAgICAgYm9vbCBpbmNsdWRl
c1Jvb3RMaW5lQm94Rm9udE9yTGVhZGluZygpIGNvbnN0OwogCisgICAgTm9kZSogZ2V0TG9naWNh
bFN0YXJ0Qm94V2l0aE5vZGUoSW5saW5lQm94KiYpOworICAgIE5vZGUqIGdldExvZ2ljYWxFbmRC
b3hXaXRoTm9kZShJbmxpbmVCb3gqJik7CiBwcml2YXRlOgogICAgIGJvb2wgaGFzRWxsaXBzaXNC
b3goKSBjb25zdCB7IHJldHVybiBtX2hhc0VsbGlwc2lzQm94T3JIeXBoZW47IH0KICAgICB2b2lk
IHNldEhhc0VsbGlwc2lzQm94KGJvb2wgaGFzRWxsaXBzaXNCb3gpIHsgbV9oYXNFbGxpcHNpc0Jv
eE9ySHlwaGVuID0gaGFzRWxsaXBzaXNCb3g7IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMzAgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93
IGxhc3QgbGluZSBvZiByaWdodC10by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0
IGluIHRoZSB3cm9uZyBwbGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzgwODcKKworICAgICAgICBEb2luZyB0aGUgcmlnaHQgdGhpbmcgd2hlbiBj
bGlja2luZyBiZWxvdyB0aGUgbGFzdCBsaW5lIGJveCBpbiBSVEwgZWRpdGFibGUgY29udGVudC4K
KworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ct
cnRsLXRleHQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDMtMjkgIExldmkgV2VpbnRyYXViICA8bGV2
aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Ns
aWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHRoYXQgY2xpY2tpbmcgYmVs
b3cgYSBsaW5lIG9mIGVkaXRhYmxlIFJUTCB0ZXh0IGNvcnJlY3RseSBwbGFjZXMgdGhlIGNhcmV0
IGF0IHRoZSBlbmQuIFRvIHJ1biBtYW51YWxseSwgY2xpY2sgd2l0aGluIHRoZSBib3ggYmVsb3cg
YnV0IGJlbG93IHRoZSB0ZXh0LiBUaGUgY2FyZXQgc2hvdWxkIGFwcGVhciBvbiB0aGUgbGVmdCBz
aWRlIG9mIHRoZSB0ZXh0Lgor15DXkdeSCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwt
dGV4dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyB0aGF0IGNs
aWNraW5nIGJlbG93IGEgbGluZSBvZiBlZGl0YWJsZSBSVEwgdGV4dCBjb3JyZWN0bHkgcGxhY2Vz
IHRoZSBjYXJldCBhdCB0aGUgZW5kLiBUbyBydW4gbWFudWFsbHksIGNsaWNrIHdpdGhpbiB0aGUg
Ym94IGJlbG93IGJ1dCBiZWxvdyB0aGUgdGV4dC4gVGhlIGNhcmV0IHNob3VsZCBhcHBlYXIgb24g
dGhlIGxlZnQgc2lkZSBvZiB0aGUgdGV4dC48L2Rpdj4KKzxkaXYgY29udGVudEVkaXRhYmxlPSJ0
cnVlIiBkaXI9InJ0bCIgc3R5bGU9ImhlaWdodDogM2VtOyBib3JkZXI6IHNvbGlkIiBpZD0iY29u
dGFpbmVyIj48c3Bhbj4mI3gwNWQwOzwvc3Bhbj48c3Bhbj4mI3gwNWQxOzwvc3Bhbj48c3BhbiBp
ZD0ibGFzdCI+JiN4MDVkMjs8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2Pgor
PC9ib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRhaW5lciIpOworICAgIHZhciBtaWRkbGVYID0gY29udGFpbmVyLm9mZnNldExlZnQg
KyAoY29udGFpbmVyLm9mZnNldFdpZHRoIC8gMik7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8obWlkZGxlWCwgY29udGFpbmVyLm9mZnNldFRvcCArIGNvbnRhaW5lci5vZmZzZXRIZWlnaHQg
LSAxMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubGVh
cEZvcndhcmQoNTAwKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgdmFyIHNlbCA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsLmFuY2hvck5vZGUgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxhc3QiKS5maXJzdENoaWxkICYmIHNlbC5hbmNob3JPZmZzZXQg
PT0gMSkKKyAgICAgICAgcmVzdWx0LmlubmVyVGV4dCA9ICJQQVNTIjsKKyAgICBlbHNlCisgICAg
ICAgIHJlc3VsdC5pbm5lclRleHQgPSAiRkFJTCI7Cit9CisKK3Rlc3QoKTsKKzwvc2NyaXB0Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87537</attachid>
            <date>2011-03-30 08:05:18 -0700</date>
            <delta_ts>2011-03-30 12:55:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38087-20110330170515.patch</filename>
            <type>text/plain</type>
            <size>10080</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgyNDI0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDMtMzAgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENsaWNraW5nIGJlbG93IGxhc3QgbGluZSBvZiByaWdodC10
by1sZWZ0IGVkaXRhYmxlIHRleHQgdGhhdCBwdXRzIGNhcmV0IGluIHRoZSB3cm9uZyBwbGFjZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgwODcKKwor
ICAgICAgICBNb3ZpbmcgZ2V0TG9naWNhbFtTdGFydC9FbmRdQm94V2l0aE5vZGUgdG8gUm9vdElu
bGluZUJveCBhbmQgdXNpbmcgaXQgaW4gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJl
bgorICAgICAgICBpbnN0ZWFkIG9mIGxhc3RMZWFmQ2hpbGQsIHdoaWNoIHdhc24ndCBjb3JyZWN0
IGluIHRoZSBSVEwgY2FzZS4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL3NlbGVjdGlvbi9jbGlj
ay1iZWxvdy1ydGwtdGV4dC5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKTogTW92
ZWQgdG8gUm9vdElubGluZUJveC4KKyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxFbmRQb3NpdGlv
bkZvckxpbmUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOiBVc2VpbmcgZ2V0
TG9naWNhbEVuZEJveFdpdGhOb2RlIGluc3RlYWQKKyAgICAgICAgb2YgbGFzdExlYWZDaGlsZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSb290SW5saW5lQm94OjpnZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZSk6IE1vdmVkIGFuZCBy
ZWZhY3RvcmVkLgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6Z2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKwogMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0MSwzNyAr
MTA0MSw2IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZkVkaXRhYmxlQ29udGVudChjb24KICAgICBy
ZXR1cm4gbGFzdFBvc2l0aW9uSW5Ob2RlKGhpZ2hlc3RSb290KTsKIH0KIAotc3RhdGljIHZvaWQg
Z2V0TG9naWNhbFN0YXJ0Qm94QW5kTm9kZShSb290SW5saW5lQm94KiByb290Qm94LCBJbmxpbmVC
b3gqJiBzdGFydEJveCwgTm9kZSomIHN0YXJ0Tm9kZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94
Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0gICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hl
c0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKLSAgICBzdGFydEJveCA9
IDA7Ci0gICAgc3RhcnROb2RlID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZC
b3hlc0luTG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHN0YXJ0Qm94ID0gbGVh
ZkJveGVzSW5Mb2dpY2FsT3JkZXJbaV07Ci0gICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Qm94LT5y
ZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgICAgIGlmIChzdGFydE5vZGUpCi0gICAgICAgICAgICBy
ZXR1cm47IAotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgZ2V0TG9naWNhbEVuZEJveEFuZE5vZGUo
Um9vdElubGluZUJveCogcm9vdEJveCwgSW5saW5lQm94KiYgZW5kQm94LCBOb2RlKiYgZW5kTm9k
ZSkKLXsKLSAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7Ci0g
ICAgcm9vdEJveC0+Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKTsKLSAgICBlbmRCb3ggPSAwOwotICAgIGVuZE5vZGUgPSAwOwotICAgIC8vIEdl
bmVyYXRlZCBjb250ZW50IChlLmcuIGxpc3QgbWFya2VycyBhbmQgQ1NTIDpiZWZvcmUgYW5kIDph
ZnRlcgotICAgIC8vIHBzZXVkb2VsZW1lbnRzKSBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgRE9NIGVs
ZW1lbnQsIGFuZCBzbyBjYW5ub3QgYmUKLSAgICAvLyByZXByZXNlbnRlZCBieSBhIFZpc2libGVQ
b3NpdGlvbi4gIFVzZSB3aGF0ZXZlciBwcmVjZWRlcyBpbnN0ZWFkLgotICAgIGZvciAoc2l6ZV90
IGkgPSBsZWFmQm94ZXNJbkxvZ2ljYWxPcmRlci5zaXplKCk7IGkgPiAwOyAtLWkpIHsgCi0gICAg
ICAgIGVuZEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXTsKLSAgICAgICAgZW5k
Tm9kZSA9IGVuZEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpOwotICAgICAgICBpZiAoZW5kTm9kZSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bG9naWNhbFN0YXJ0UG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKIHsK
ICAgICBpZiAoYy5pc051bGwoKSkKQEAgLTEwODksOCArMTA1OCw3IEBAIHN0YXRpYyBWaXNpYmxl
UG9zaXRpb24gbG9naWNhbFN0YXJ0UG9zaXQKICAgICB9CiAgICAgCiAgICAgSW5saW5lQm94KiBs
b2dpY2FsU3RhcnRCb3g7Ci0gICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZTsKLSAgICBnZXRMb2dp
Y2FsU3RhcnRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxTdGFydEJveCwgbG9naWNhbFN0YXJ0
Tm9kZSk7CisgICAgTm9kZSogbG9naWNhbFN0YXJ0Tm9kZSA9IHJvb3RCb3gtPmdldExvZ2ljYWxT
dGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydEJveCk7CiAKICAgICBpZiAoIWxvZ2ljYWxTdGFy
dE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTExMjUsOCArMTA5
Myw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbG9naWNhbEVuZFBvc2l0aW8KICAgICB9CiAg
ICAgCiAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kQm94OwotICAgIE5vZGUqIGxvZ2ljYWxFbmRO
b2RlOwotICAgIGdldExvZ2ljYWxFbmRCb3hBbmROb2RlKHJvb3RCb3gsIGxvZ2ljYWxFbmRCb3gs
IGxvZ2ljYWxFbmROb2RlKTsKKyAgICBOb2RlKiBsb2dpY2FsRW5kTm9kZSA9IHJvb3RCb3gtPmdl
dExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsRW5kQm94KTsKKwogICAgIGlmICghbG9naWNh
bEVuZE5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCShyZXZpc2lvbiA4MjQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUm9vdElubGlu
ZUJveDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAogZW51bSBFV29yZFNpZGUgeyBSaWdodFdv
cmRJZk9uQm91bmRhcnkgPSBmYWxzZSwgTGVmdFdvcmRJZk9uQm91bmRhcnkgPSB0cnVlIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDgy
NDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCisjaW5jbHVkZSAidmlz
aWJsZV91bml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKQEAgLTQxNTUsNyArNDE1Niw5IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJC
bG9jazo6cG9zaXRpb25Gb3IKICAgICBpZiAobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKICAg
ICAgICAgLy8gV2UgaGl0IHRoaXMgY2FzZSBmb3IgTWFjIGJlaGF2aW9yIHdoZW4gdGhlIFkgY29v
cmRpbmF0ZSBpcyBiZWxvdyB0aGUgbGFzdCBib3guCiAgICAgICAgIEFTU0VSVChtb3ZlQ2FyZXRU
b0JvdW5kYXJ5KTsKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkZvckJv
eChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGFzdExlYWZDaGlsZCgpLCBmYWxzZSksIERPV05T
VFJFQU0pOworICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxseUxhc3RCb3g7CisgICAgICAgIGlm
IChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+Z2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2lj
YWxseUxhc3RCb3gpKQorICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3NpdGlv
bkZvckJveChsb2dpY2FsbHlMYXN0Qm94LCBmYWxzZSksIERPV05TVFJFQU0pOwogICAgIH0KIAog
ICAgIC8vIENhbid0IHJlYWNoIHRoaXMuIFdlIGhhdmUgYSByb290IGxpbmUgYm94LCBidXQgaXQg
aGFzIG5vIGtpZHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCShyZXZpc2lvbiA4MjQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg1LDQgKzc4NSwzMiBAQCBib29sIFJv
b3RJbmxpbmVCb3g6OmluY2x1ZGVzUm9vdExpbmVCb3hGCiAgICAgcmV0dXJuIChsaW5lQm94Q29u
dGFpbiAmIExpbmVCb3hDb250YWluQmxvY2spIHx8IChsaW5lQm94Q29udGFpbiAmIExpbmVCb3hD
b250YWluSW5saW5lKSB8fCAobGluZUJveENvbnRhaW4gJiBMaW5lQm94Q29udGFpbkZvbnQpOwog
fQogCitOb2RlKiBSb290SW5saW5lQm94OjpnZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShJbmxp
bmVCb3gqJiBzdGFydEJveCkKK3sKKyAgICBWZWN0b3I8SW5saW5lQm94Kj4gbGVhZkJveGVzSW5M
b2dpY2FsT3JkZXI7CisgICAgY29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKGxlYWZCb3hl
c0luTG9naWNhbE9yZGVyKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlYWZCb3hlc0lu
TG9naWNhbE9yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlcltpXS0+cmVuZGVyZXIoKS0+bm9kZSgpKSB7CisgICAgICAgICAgICBzdGFydEJveCA9
IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2ldOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0Qm94
LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhcnRCb3ggPSAw
OworICAgIHJldHVybiAwOworfQorICAgIAorTm9kZSogUm9vdElubGluZUJveDo6Z2V0TG9naWNh
bEVuZEJveFdpdGhOb2RlKElubGluZUJveComIGVuZEJveCkKK3sKKyAgICBWZWN0b3I8SW5saW5l
Qm94Kj4gbGVhZkJveGVzSW5Mb2dpY2FsT3JkZXI7CisgICAgY29sbGVjdExlYWZCb3hlc0luTG9n
aWNhbE9yZGVyKGxlYWZCb3hlc0luTG9naWNhbE9yZGVyKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
bGVhZkJveGVzSW5Mb2dpY2FsT3JkZXIuc2l6ZSgpOyBpID4gMDsgLS1pKSB7IAorICAgICAgICBp
ZiAobGVhZkJveGVzSW5Mb2dpY2FsT3JkZXJbaSAtIDFdLT5yZW5kZXJlcigpLT5ub2RlKCkpIHsK
KyAgICAgICAgICAgIGVuZEJveCA9IGxlYWZCb3hlc0luTG9naWNhbE9yZGVyW2kgLSAxXTsKKyAg
ICAgICAgICAgIHJldHVybiBlbmRCb3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbmRCb3ggPSAwOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgJ
KHJldmlzaW9uIDgyNDExKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw4IEBAIHB1YmxpYzoKICAgICBib29s
IGZpdHNUb0dseXBocygpIGNvbnN0OwogICAgIGJvb2wgaW5jbHVkZXNSb290TGluZUJveEZvbnRP
ckxlYWRpbmcoKSBjb25zdDsKIAorICAgIE5vZGUqIGdldExvZ2ljYWxTdGFydEJveFdpdGhOb2Rl
KElubGluZUJveComKTsKKyAgICBOb2RlKiBnZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUoSW5saW5l
Qm94KiYpOwogcHJpdmF0ZToKICAgICBib29sIGhhc0VsbGlwc2lzQm94KCkgY29uc3QgeyByZXR1
cm4gbV9oYXNFbGxpcHNpc0JveE9ySHlwaGVuOyB9CiAgICAgdm9pZCBzZXRIYXNFbGxpcHNpc0Jv
eChib29sIGhhc0VsbGlwc2lzQm94KSB7IG1faGFzRWxsaXBzaXNCb3hPckh5cGhlbiA9IGhhc0Vs
bGlwc2lzQm94OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MjQyNCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTMwICBMZXZp
IFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGlja2luZyBiZWxvdyBsYXN0IGxpbmUgb2Ygcmln
aHQtdG8tbGVmdCBlZGl0YWJsZSB0ZXh0IHRoYXQgcHV0cyBjYXJldCBpbiB0aGUgd3JvbmcgcGxh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDg3
CisKKyAgICAgICAgRG9pbmcgdGhlIHJpZ2h0IHRoaW5nIHdoZW4gY2xpY2tpbmcgYmVsb3cgdGhl
IGxhc3QgbGluZSBib3ggaW4gUlRMIGVkaXRhYmxlIGNvbnRlbnQuCisKKyAgICAgICAgKiBlZGl0
aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0Lmh0bWw6IEFk
ZGVkLgorCiAyMDExLTAzLTI5ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NsaWNrLWJlbG93LXJ0bC10ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0aGF0IGNsaWNraW5nIGJlbG93IGEgbGluZSBvZiBlZGl0
YWJsZSBSVEwgdGV4dCBjb3JyZWN0bHkgcGxhY2VzIHRoZSBjYXJldCBhdCB0aGUgZW5kLiBUbyBy
dW4gbWFudWFsbHksIGNsaWNrIHdpdGhpbiB0aGUgYm94IGJlbG93IGJ1dCBiZWxvdyB0aGUgdGV4
dC4gVGhlIGNhcmV0IHNob3VsZCBhcHBlYXIgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgdGV4dC4K
K9eQ15HXkgorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2st
YmVsb3ctcnRsLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jbGljay1iZWxvdy1ydGwtdGV4dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2xpY2stYmVsb3ctcnRsLXRleHQuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PGRpdiBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgdGhhdCBjbGlja2luZyBiZWxvdyBhIGxp
bmUgb2YgZWRpdGFibGUgUlRMIHRleHQgY29ycmVjdGx5IHBsYWNlcyB0aGUgY2FyZXQgYXQgdGhl
IGVuZC4gVG8gcnVuIG1hbnVhbGx5LCBjbGljayB3aXRoaW4gdGhlIGJveCBiZWxvdyBidXQgYmVs
b3cgdGhlIHRleHQuIFRoZSBjYXJldCBzaG91bGQgYXBwZWFyIG9uIHRoZSBsZWZ0IHNpZGUgb2Yg
dGhlIHRleHQuPC9kaXY+Cis8ZGl2IGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSIgZGlyPSJydGwiIHN0
eWxlPSJoZWlnaHQ6IDNlbTsgYm9yZGVyOiBzb2xpZCIgaWQ9ImNvbnRhaW5lciI+PHNwYW4+JiN4
MDVkMDs8L3NwYW4+PHNwYW4+JiN4MDVkMTs8L3NwYW4+PHNwYW4gaWQ9Imxhc3QiPiYjeDA1ZDI7
PC9zcGFuPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICByZXR1cm47CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7Cisg
ICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsK
KyAgICB2YXIgbWlkZGxlWCA9IGNvbnRhaW5lci5vZmZzZXRMZWZ0ICsgKGNvbnRhaW5lci5vZmZz
ZXRXaWR0aCAvIDIpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZGRsZVgsIGNvbnRh
aW5lci5vZmZzZXRUb3AgKyBjb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMTApOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDUwMCk7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisgICAgaWYgKHNlbC5hbmNob3JOb2RlID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsYXN0IikuZmlyc3RDaGlsZCAmJiBzZWwuYW5jaG9yT2Zmc2V0ID09IDEpCisgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgZWxzZQorICAgICAgICByZXN1bHQuaW5uZXJU
ZXh0ID0gIkZBSUwiOworfQorCit0ZXN0KCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>