<?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>103477</bug_id>
          
          <creation_ts>2012-11-27 19:15:55 -0800</creation_ts>
          <short_desc>Make NodeRenderingContext::parentRenderer and nextRenderer top layer aware</short_desc>
          <delta_ts>2013-01-08 20:48:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>falken</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>koivisto</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>stearns</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>777462</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 19:15:55 -0800</bug_when>
    <thetext>Make NodeRenderingContext::parentRenderer and nextRenderer htop layer aware</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777465</commentid>
    <comment_count>1</comment_count>
      <attachid>176385</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 19:28:34 -0800</bug_when>
    <thetext>Created attachment 176385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777467</commentid>
    <comment_count>2</comment_count>
      <attachid>176386</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 19:32:40 -0800</bug_when>
    <thetext>Created attachment 176386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777478</commentid>
    <comment_count>3</comment_count>
      <attachid>176386</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 20:18:37 -0800</bug_when>
    <thetext>Comment on attachment 176386
Patch

Attachment 176386 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15013319

New failing tests:
fast/dom/HTMLDialogElement/top-layer-display-none.html
fast/dom/HTMLDialogElement/top-layer-nesting.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777514</commentid>
    <comment_count>4</comment_count>
      <attachid>176395</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 21:34:57 -0800</bug_when>
    <thetext>Created attachment 176395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777515</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-27 21:37:25 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=176395) [details]
&gt; Patch

I fixed the brokenness but it seems there&apos;s much worse badness in top layer and flow threads and renderer hoisting since we do the normal parent renderer checks which seem wrong. :/

In general renderer hoisting seems to be very error prone, there&apos;s lots of oversights in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778088</commentid>
    <comment_count>6</comment_count>
      <attachid>176395</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-11-28 11:09:52 -0800</bug_when>
    <thetext>Comment on attachment 176395
Patch

I really don&apos;t see the point of this change. You are peppering the knowledge of top layer elements all over NodeRenderingContext for no good reason I could see. Could you clarify what&apos;s the intent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778101</commentid>
    <comment_count>7</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-28 11:23:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 176395 [details])
&gt; I really don&apos;t see the point of this change. You are peppering the knowledge of top layer elements all over NodeRenderingContext for no good reason I could see. Could you clarify what&apos;s the intent?

NodeRenderingContext(this).parentRenderer() and nextRenderer() return the wrong values for things that are in the top layer but are display none. This method that takes pointers by reference and reassigns them is also confusing to follow because it&apos;s not clear from the existing code that the parentRenderer is always the RenderView for top layer elements.

If you remove my comments about how the existing behavior that I didn&apos;t change is broken this is less code as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778127</commentid>
    <comment_count>8</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-28 11:43:31 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 176395 [details] [details])
&gt; &gt; I really don&apos;t see the point of this change. You are peppering the knowledge of top layer elements all over NodeRenderingContext for no good reason I could see. Could you clarify what&apos;s the intent?
&gt; 
&gt; NodeRenderingContext(this).parentRenderer() and nextRenderer() return the wrong values for things that are in the top layer but are display none. This method that takes pointers by reference and reassigns them is also confusing to follow because it&apos;s not clear from the existing code that the parentRenderer is always the RenderView for top layer elements.
&gt; 
&gt; If you remove my comments about how the existing behavior that I didn&apos;t change is broken this is less code as well.

Also note that as the code is currently written inside Element::rendererIsNeeded parentRenderer() and nextRenderer() return the wrong values for top layer elements and inside of NodeRenderingConext::shouldCreateRenderer() we use the wrong parent renderer for making decisions about if the renderer is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779787</commentid>
    <comment_count>9</comment_count>
      <attachid>176395</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-29 20:49:36 -0800</bug_when>
    <thetext>Comment on attachment 176395
Patch

Let&apos;s move isInTopLayer to NodeFlags from rareData. Then can we detect that non-toplayer case a bit earlier.
Also, I&apos;d rather extract traversal code in separate function. It&apos;s apparently invasive.

By the way, is toplayer system already used by fullscreen?
If so, we can move fullscreen handling in createRendererForElementIfNeeded() to toplayer handling path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779789</commentid>
    <comment_count>10</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-29 20:53:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; 
&gt; Also note that as the code is currently written inside Element::rendererIsNeeded parentRenderer() and nextRenderer() return the wrong values for top layer elements and inside of NodeRenderingConext::shouldCreateRenderer() we use the wrong parent renderer for making decisions about if the renderer is needed.

Can we write any layout test that captures this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779806</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-29 21:51:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 176395 [details])
&gt; Let&apos;s move isInTopLayer to NodeFlags from rareData. Then can we detect that non-toplayer case a bit earlier.

Can you explain what you mean by earlier?

&gt; Also, I&apos;d rather extract traversal code in separate function. It&apos;s apparently invasive.

Okay, I&apos;ll extract it.

&gt; 
&gt; By the way, is toplayer system already used by fullscreen?
&gt; If so, we can move fullscreen handling in createRendererForElementIfNeeded() to toplayer handling path.

No, it&apos;s not used there yet. We should migrate to it, but I don&apos;t know who owns that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779808</commentid>
    <comment_count>12</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-29 21:54:31 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; 
&gt; &gt; Also note that as the code is currently written inside Element::rendererIsNeeded parentRenderer() and nextRenderer() return the wrong values for top layer elements and inside of NodeRenderingConext::shouldCreateRenderer() we use the wrong parent renderer for making decisions about if the renderer is needed.
&gt; 
&gt; Can we write any layout test that captures this case?

Yeah, it occurred to be that doing &lt;col&gt;&lt;dialog&gt;&lt;/col&gt; should be broken right now or doing &lt;div&gt;&lt;dialog&gt;&lt;/div&gt; and then div { content: url(...); }.

I&apos;ll add a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790792</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-12-13 11:45:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; By the way, is toplayer system already used by fullscreen?
&gt; &gt; If so, we can move fullscreen handling in createRendererForElementIfNeeded() to toplayer handling path.
&gt; 
&gt; No, it&apos;s not used there yet. We should migrate to it, but I don&apos;t know who owns that.

I&apos;m planning to get to that as part of bug 84796.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793802</commentid>
    <comment_count>14</comment_count>
      <attachid>176395</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-12-18 10:32:13 -0800</bug_when>
    <thetext>Comment on attachment 176395
Patch

As pointed out in comment #10, this change needs some testing. If this solves a bug then this change is not a refactoring (as you presented it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796545</commentid>
    <comment_count>15</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2012-12-21 16:42:20 -0800</bug_when>
    <thetext>I think this is a real bug but I&apos;m not sure how to write a layout test that covers it for the current code. I&apos;m running into crashes in my patches for bug 105489 and bug 95946 because nextRenderer is not top layer aware. I&apos;m not sure why the problem shows up in those patches and not for the current code.

We at least need a check for top layer in a similar way that we have a check for flow thread in nextRenderer:

// Renderers for elements attached to a flow thread should be skipped because they are parented differently.
if (renderer-&gt;node()-&gt;isElementNode() &amp;&amp; renderer-&gt;style() &amp;&amp; !renderer-&gt;style()-&gt;flowThread().isEmpty())
    continue;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796547</commentid>
    <comment_count>16</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-21 16:46:25 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I think this is a real bug but I&apos;m not sure how to write a layout test that covers it for the current code. I&apos;m running into crashes in my patches for bug 105489 and bug 95946 because nextRenderer is not top layer aware. I&apos;m not sure why the problem shows up in those patches and not for the current code.
&gt; 
&gt; We at least need a check for top layer in a similar way that we have a check for flow thread in nextRenderer:
&gt; 
&gt; // Renderers for elements attached to a flow thread should be skipped because they are parented differently.
&gt; if (renderer-&gt;node()-&gt;isElementNode() &amp;&amp; renderer-&gt;style() &amp;&amp; !renderer-&gt;style()-&gt;flowThread().isEmpty())
&gt;     continue;

Yeah we need to fix that too. I&apos;ll upload another patch that contains that and a test for the original case we identified with &lt;col&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801185</commentid>
    <comment_count>17</comment_count>
      <attachid>181483</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-01-07 00:28:33 -0800</bug_when>
    <thetext>Created attachment 181483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801189</commentid>
    <comment_count>18</comment_count>
      <attachid>181483</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 00:42:02 -0800</bug_when>
    <thetext>Comment on attachment 181483
Patch

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

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:81
&gt; +#if ENABLE(DIALOG_ELEMENT)

Could you move this to NodeRenderingTraversal?
It helps fast paths to go fast.
See http://trac.webkit.org/changeset/137715 for detail.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:112
&gt; +#endif

Ditto.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:126
&gt; +#if ENABLE(DIALOG_ELEMENT)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801195</commentid>
    <comment_count>19</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-01-07 01:05:00 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Yeah we need to fix that too. I&apos;ll upload another patch that contains that and a test for the original case we identified with &lt;col&gt;.

Hi Elliott, I&apos;ve went ahead and done this. What do you think?

I&apos;d like to fix this so I can continue with bug 105489 and bug 95946.

BTW I couldn&apos;t immediately create a layout test that fails with &lt;col&gt;&lt;dialog&gt;&lt;/col&gt;. Since &lt;col&gt; doesn&apos;t have a renderer, m_renderingParent and parentRenderer() is just the first ancestor with a renderer.

(In reply to comment #18)
&gt; Could you move this to NodeRenderingTraversal?
&gt; It helps fast paths to go fast.
&gt; See http://trac.webkit.org/changeset/137715 for detail.

Thanks Morita-san! I&apos;ll look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801753</commentid>
    <comment_count>20</comment_count>
      <attachid>181483</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-07 15:50:31 -0800</bug_when>
    <thetext>Comment on attachment 181483
Patch

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

Add a test with display: table-column on an element around a &lt;dialog&gt;. I think we should land this and get things working and then refactor this out into a separate class like TopLayerController where you&apos;d document()-&gt;topLayer()-&gt;nextRendererForNode(...) and such and move all the complicated loops out of NodeRenderingContext.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:81
&gt;&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; 
&gt; Could you move this to NodeRenderingTraversal?
&gt; It helps fast paths to go fast.
&gt; See http://trac.webkit.org/changeset/137715 for detail.

This really doesn&apos;t make sense in NodeRenderingTraversal. If we want to factor things out we should do what Regions does and have a TopLayerController that manages all this stuff like RenderNamedFlowThread::nextRendererForNode.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:112
&gt;&gt; +#endif
&gt; 
&gt; Ditto.

@morrita: I&apos;m not sure what you want moved here, but this code should be here. We want to continue in this loop and skip all renderers that are in a different &quot;flow thread&quot; like regions (which is already here) or top layer.

&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:126
&gt;&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; 
&gt; Ditto.

This assert should be here. Please don&apos;t move this stuff out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801796</commentid>
    <comment_count>21</comment_count>
      <attachid>181483</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-07 16:24:39 -0800</bug_when>
    <thetext>Comment on attachment 181483
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:81
&gt;&gt;&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt;&gt; 
&gt;&gt; Could you move this to NodeRenderingTraversal?
&gt;&gt; It helps fast paths to go fast.
&gt;&gt; See http://trac.webkit.org/changeset/137715 for detail.
&gt; 
&gt; This really doesn&apos;t make sense in NodeRenderingTraversal. If we want to factor things out we should do what Regions does and have a TopLayerController that manages all this stuff like RenderNamedFlowThread::nextRendererForNode.

Adding TopLayerController sounds good.
What I hope is to keep NodeRenderingContext maintainable and clarify where the happy path goes.

&gt;&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:112
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; @morrita: I&apos;m not sure what you want moved here, but this code should be here. We want to continue in this loop and skip all renderers that are in a different &quot;flow thread&quot; like regions (which is already here) or top layer.

Right. Then we could just extract the skip condition to a RenderObject method or some free floating function to make this part clearer.

&gt;&gt;&gt; Source/WebCore/dom/NodeRenderingContext.cpp:126
&gt;&gt;&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; This assert should be here. Please don&apos;t move this stuff out.

Right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802003</commentid>
    <comment_count>22</comment_count>
      <attachid>181636</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-01-07 21:49:50 -0800</bug_when>
    <thetext>Created attachment 181636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802009</commentid>
    <comment_count>23</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-01-07 21:55:17 -0800</bug_when>
    <thetext>Thanks for the comments. I uploaded a new patch with a layout test for display: table-column and a helper function for the skip condition in next/previousRenderer. Also I&apos;ve removed the FIXME comment about &lt;dialog&gt; inside &lt;col&gt; since it seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802831</commentid>
    <comment_count>24</comment_count>
      <attachid>181636</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-08 17:07:00 -0800</bug_when>
    <thetext>Comment on attachment 181636
Patch

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

This looks good to me. We can refactor out the logic into a TopLayerController in a follow up patch.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:76
&gt; +static bool isRendererReparented(RenderObject* renderer)

Nice! const RenderObject* renderer for the argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802848</commentid>
    <comment_count>25</comment_count>
      <attachid>181812</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-01-08 17:39:06 -0800</bug_when>
    <thetext>Created attachment 181812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802969</commentid>
    <comment_count>26</comment_count>
      <attachid>181812</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 20:48:12 -0800</bug_when>
    <thetext>Comment on attachment 181812
Patch

Clearing flags on attachment: 181812

Committed r139154: &lt;http://trac.webkit.org/changeset/139154&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802970</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 20:48:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176385</attachid>
            <date>2012-11-27 19:28:34 -0800</date>
            <delta_ts>2012-11-27 19:32:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20121127222616.patch</filename>
            <type>text/plain</type>
            <size>5425</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzMGM2NzNiZTZlYzdi
NDhmZDM5NTcyNjE1YzkxYmY5YTI5NzkwMC4uNGY1MDE2MDMwNDg1MzcyZTYzYzgzNDhlYTNmMDM3
ZjUwMWNiY2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTI3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgaHRvcCBsYXll
ciBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zdGVhZCBvZiB1c2luZyBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudCBh
bmQgcmVhc3NpZ25pbmcKKyAgICAgICAgcG9pbnRlcnMgcGFzc2VkIGJ5IHJlZmVyZW5jZSB3ZSBz
aG91bGQganVzdCBtYWtlIG5leHRSZW5kZXJlciBhbmQgcGFyZW50UmVuZGVyZXIKKyAgICAgICAg
aGFuZGxlIHRoZSB0b3AgbGF5ZXIgcHJvcGVybHkuIFJpZ2h0IG5vdyB0aGV5IHdvdWxkIHJldHVy
biB0aGUgd3JvbmcgdmFsdWVzCisgICAgICAgIHNpbmNlIHdlIG9ubHkgY29ycmVjdGx5IGhhbmRs
ZSB0aGUgdG9wIGxheWVyIGR1cmluZyByZW5kZXJlciBjcmVhdGlvbi4KKworICAgICAgICBUaGlz
IG1ha2VzIGhhbmRsaW5nIG9mIHRvcCBsYXllciBlbGVtZW50cyBjb25zaXN0ZW50IHdpdGggaGFu
ZGxpbmcgb2YKKyAgICAgICAgb3RoZXIgc3BlY2lhbCByZW5kZXJlcmluZyBzeXN0ZW1zIGxpa2Ug
ZmxvdyB0aHJlYWRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywganVzdCByZWZhY3RvcmluZy4K
KworICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjphZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudCk6IFJlbW92ZWQgdGhp
cyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91
c1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJl
bnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlUmVuZGVyZXJGb3JFbGVtZW50SWZOZWVkZWQpOgorCiAyMDEyLTExLTI3ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0ZWQgYnVpbGQgZml4IGFmdGVy
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzNTg4OC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDliYmY2MGFiYWI4Y2E5ZmVlMjEw
YWVlOTg2ZGYxYTljOWUyYzY1YjYuLmNhNGY1ZGQxMzM1ZWE1YTQ4NjYwOGQ1Y2ExZTIxNzM0MDVj
ZjFiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtNzUsNiArNzUsMjAgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4
dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9k
ZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5uZXh0U2libGluZygpOwog
CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX25v
ZGUtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChtX25vZGUpIDogMDsKKyAgICBpZiAoZWxl
bWVudCAmJiBlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICBjb25zdCBWZWN0b3I8
UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVudHMgPSBlbGVtZW50LT5kb2N1bWVudCgp
LT50b3BMYXllckVsZW1lbnRzKCk7CisgICAgICAgIHNpemVfdCBwb3NpdGlvbiA9IHRvcExheWVy
RWxlbWVudHMuZmluZChlbGVtZW50KTsKKyAgICAgICAgQVNTRVJUKHBvc2l0aW9uICE9IG5vdEZv
dW5kKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHBvc2l0aW9uICsgMTsgaSA8IHRvcExheWVy
RWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gdG9wTGF5ZXJFbGVtZW50c1tpXS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
I2VuZGlmCisKICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBt
X3BhcmVudEZsb3dSZW5kZXJlci0+bmV4dFJlbmRlcmVyRm9yTm9kZShtX25vZGUpOwogCkBAIC0x
MDEsNiArMTE1LDEzIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZp
b3VzUmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9u
b2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGlu
ZygpOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIC8vIEZJWE1FOiBUaGlzIGRv
ZXNuJ3Qgd29yayBjb3JyZWN0bHkgZm9yIHRoaW5ncyBpbiB0aGUgdG9wIGxheWVyIHRoYXQgYXJl
CisgICAgLy8gZGlzcGxheTogbm9uZS4gV2UnZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgbG9naWMg
aW4gbmV4dFJlbmRlcmVyLCBidXQgc2luY2UKKyAgICAvLyBub3RoaW5nIG5lZWRzIHRoYXQgeWV0
IGp1c3QgYXNzZXJ0LgorICAgIEFTU0VSVCghbV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIXRv
RWxlbWVudChtX25vZGUpLT5pc0luVG9wTGF5ZXIoKSk7CisjZW5kaWYKKwogICAgIGlmIChtX3Bh
cmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5w
cmV2aW91c1JlbmRlcmVyRm9yTm9kZShtX25vZGUpOwogCkBAIC0xMjQsNiArMTQ1LDEyIEBAIFJl
bmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QK
IHsKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wYXJlbnQoKTsKKworI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKKyAgICBpZiAobV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG1f
bm9kZSktPmlzSW5Ub3BMYXllcigpKQorICAgICAgICByZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCk7CisjZW5kaWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogCkBAIC0xODQsMjYgKzIxMSw2
IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmlzT25VcHBlckVuY2Fwc3VsYXRpb25Cb3Vu
ZGFyeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbm9kZS0+cGFyZW50Tm9kZSgpICYmIG1fbm9kZS0+
cGFyZW50Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKTsKIH0KIAotI2lmIEVOQUJMRShESUFMT0dfRUxF
TUVOVCkKLXN0YXRpYyB2b2lkIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlck9iamVjdComIHBhcmVudFJlbmRlcmVyLCBSZW5kZXJP
YmplY3QqJiBuZXh0UmVuZGVyZXIpCi17Ci0gICAgcGFyZW50UmVuZGVyZXIgPSBwYXJlbnRSZW5k
ZXJlci0+dmlldygpOwotICAgIG5leHRSZW5kZXJlciA9IDA7Ci0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+
dG9wTGF5ZXJFbGVtZW50cygpOwotICAgIHNpemVfdCB0b3BMYXllclBvc2l0aW9uID0gdG9wTGF5
ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOwotICAgIEFTU0VSVCh0b3BMYXllclBvc2l0aW9uICE9
IG5vdEZvdW5kKTsKLSAgICAvLyBGaW5kIHRoZSBuZXh0IHRvcCBsYXllciByZW5kZXJlciB0aGF0
J3Mgc3RhY2tlZCBhYm92ZSB0aGlzIGVsZW1lbnQuIE5vdGUgdGhhdCB0aGUgaW1tZWRpYXRlIG5l
eHQgZWxlbWVudCBpbiB0aGUgdG9wIGxheWVyCi0gICAgLy8gc3RhY2sgbWlnaHQgbm90IGhhdmUg
YSByZW5kZXJlciAoZHVlIHRvIGRpc3BsYXk6IG5vbmUsIG9yIHBvc3NpYmx5IGl0IGlzIG5vdCBh
dHRhY2hlZCB5ZXQpLgotICAgIGZvciAoc2l6ZV90IGkgPSB0b3BMYXllclBvc2l0aW9uICsgMTsg
aSA8IHRvcExheWVyRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgbmV4dFJlbmRlcmVy
ID0gdG9wTGF5ZXJFbGVtZW50c1tpXS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKG5leHRSZW5k
ZXJlcikgewotICAgICAgICAgICAgQVNTRVJUKG5leHRSZW5kZXJlci0+cGFyZW50KCkgPT0gcGFy
ZW50UmVuZGVyZXIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0j
ZW5kaWYKLQogdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVt
ZW50SWZOZWVkZWQoKQogewogICAgIEFTU0VSVCghbV9ub2RlLT5yZW5kZXJlcigpKTsKQEAgLTIy
NSwxMSArMjMyLDYgQEAgdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVyZXJG
b3JFbGVtZW50SWZOZWVkZWQoKQogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0
aGlzLT5wYXJlbnRSZW5kZXJlcigpOwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyID0g
dGhpcy0+bmV4dFJlbmRlcmVyKCk7CiAKLSNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCi0gICAg
aWYgKGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKQotICAgICAgICBhZGp1c3RJbnNlcnRpb25Qb2lu
dEZvclRvcExheWVyRWxlbWVudChlbGVtZW50LCBwYXJlbnRSZW5kZXJlciwgbmV4dFJlbmRlcmVy
KTsKLSNlbmRpZgotCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQo
KTsKICAgICBSZW5kZXJPYmplY3QqIG5ld1JlbmRlcmVyID0gZWxlbWVudC0+Y3JlYXRlUmVuZGVy
ZXIoZG9jdW1lbnQtPnJlbmRlckFyZW5hKCksIG1fc3R5bGUuZ2V0KCkpOwogICAgIGlmICghbmV3
UmVuZGVyZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176386</attachid>
            <date>2012-11-27 19:32:40 -0800</date>
            <delta_ts>2012-11-27 21:34:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20121127223022.patch</filename>
            <type>text/plain</type>
            <size>5424</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzMGM2NzNiZTZlYzdi
NDhmZDM5NTcyNjE1YzkxYmY5YTI5NzkwMC4uNTgwOWYxN2EwZDA1NzY4NmI4ZmNiNjU1NTEyMDVk
YTZhYWU0MDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTI3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVy
IGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDM0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnN0ZWFkIG9mIHVzaW5nIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50IGFu
ZCByZWFzc2lnbmluZworICAgICAgICBwb2ludGVycyBwYXNzZWQgYnkgcmVmZXJlbmNlIHdlIHNo
b3VsZCBqdXN0IG1ha2UgbmV4dFJlbmRlcmVyIGFuZCBwYXJlbnRSZW5kZXJlcgorICAgICAgICBo
YW5kbGUgdGhlIHRvcCBsYXllciBwcm9wZXJseS4gUmlnaHQgbm93IHRoZXkgd291bGQgcmV0dXJu
IHRoZSB3cm9uZyB2YWx1ZXMKKyAgICAgICAgc2luY2Ugd2Ugb25seSBjb3JyZWN0bHkgaGFuZGxl
IHRoZSB0b3AgbGF5ZXIgZHVyaW5nIHJlbmRlcmVyIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMg
bWFrZXMgaGFuZGxpbmcgb2YgdG9wIGxheWVyIGVsZW1lbnRzIGNvbnNpc3RlbnQgd2l0aCBoYW5k
bGluZyBvZgorICAgICAgICBvdGhlciBzcGVjaWFsIHJlbmRlcmVyaW5nIHN5c3RlbXMgbGlrZSBm
bG93IHRocmVhZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBqdXN0IHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KTogUmVtb3ZlZCB0aGlz
IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3Vz
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVu
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVSZW5kZXJlckZvckVsZW1lbnRJZk5lZWRlZCk6CisKIDIwMTItMTEtMjcgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHRlZCBidWlsZCBmaXggYWZ0ZXIg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM1ODg4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOWJiZjYwYWJhYjhjYTlmZWUyMTBh
ZWU5ODZkZjFhOWM5ZTJjNjViNi4uY2E0ZjVkZDEzMzVlYTVhNDg2NjA4ZDVjYTFlMjE3MzQwNWNm
MWJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC03NSw2ICs3NSwyMCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0
UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2Rl
LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPm5leHRTaWJsaW5nKCk7CiAK
KyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgRWxlbWVudCogZWxlbWVudCA9IG1fbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG1fbm9kZSkgOiAwOworICAgIGlmIChlbGVt
ZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRvY3VtZW50KCkt
PnRvcExheWVyRWxlbWVudHMoKTsKKyAgICAgICAgc2l6ZV90IHBvc2l0aW9uID0gdG9wTGF5ZXJF
bGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgICAgICBBU1NFUlQocG9zaXRpb24gIT0gbm90Rm91
bmQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gcG9zaXRpb24gKyAxOyBpIDwgdG9wTGF5ZXJF
bGVtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0b3BMYXllckVsZW1lbnRzW2ldLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1f
cGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CiAKQEAgLTEw
MSw2ICsxMTUsMTMgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlv
dXNSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5n
KCk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgLy8gRklYTUU6IFRoaXMgZG9l
c24ndCB3b3JrIGNvcnJlY3RseSBmb3IgdGhpbmdzIGluIHRoZSB0b3AgbGF5ZXIgdGhhdCBhcmUK
KyAgICAvLyBkaXNwbGF5OiBub25lLiBXZSdkIG5lZWQgdG8gZHVwbGljYXRlIHRoZSBsb2dpYyBp
biBuZXh0UmVuZGVyZXIsIGJ1dCBzaW5jZQorICAgIC8vIG5vdGhpbmcgbmVlZHMgdGhhdCB5ZXQg
anVzdCBhc3NlcnQuCisgICAgQVNTRVJUKCFtX25vZGUtPmlzRWxlbWVudE5vZGUoKSB8fCAhdG9F
bGVtZW50KG1fbm9kZSktPmlzSW5Ub3BMYXllcigpKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcGFy
ZW50Rmxvd1JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPnBy
ZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CiAKQEAgLTEyNCw2ICsxNDUsMTIgQEAgUmVu
ZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIoKSBjb25zdAog
ewogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOworCisjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQorICAgIGlmIChtX25vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobV9u
b2RlKS0+aXNJblRvcExheWVyKCkpCisgICAgICAgIHJldHVybiBtX25vZGUtPmRvY3VtZW50KCkt
PnJlbmRlclZpZXcoKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQog
ICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7CiAKQEAgLTE4NCwyNiArMjExLDYg
QEAgYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5k
YXJ5KCkgY29uc3QKICAgICByZXR1cm4gbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5w
YXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpOwogfQogCi0jaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQotc3RhdGljIHZvaWQgYWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCwgUmVuZGVyT2JqZWN0KiYgcGFyZW50UmVuZGVyZXIsIFJlbmRlck9i
amVjdComIG5leHRSZW5kZXJlcikKLXsKLSAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVudFJlbmRl
cmVyLT52aWV3KCk7Ci0gICAgbmV4dFJlbmRlcmVyID0gMDsKLSAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVudHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT50
b3BMYXllckVsZW1lbnRzKCk7Ci0gICAgc2l6ZV90IHRvcExheWVyUG9zaXRpb24gPSB0b3BMYXll
ckVsZW1lbnRzLmZpbmQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKHRvcExheWVyUG9zaXRpb24gIT0g
bm90Rm91bmQpOwotICAgIC8vIEZpbmQgdGhlIG5leHQgdG9wIGxheWVyIHJlbmRlcmVyIHRoYXQn
cyBzdGFja2VkIGFib3ZlIHRoaXMgZWxlbWVudC4gTm90ZSB0aGF0IHRoZSBpbW1lZGlhdGUgbmV4
dCBlbGVtZW50IGluIHRoZSB0b3AgbGF5ZXIKLSAgICAvLyBzdGFjayBtaWdodCBub3QgaGF2ZSBh
IHJlbmRlcmVyIChkdWUgdG8gZGlzcGxheTogbm9uZSwgb3IgcG9zc2libHkgaXQgaXMgbm90IGF0
dGFjaGVkIHlldCkuCi0gICAgZm9yIChzaXplX3QgaSA9IHRvcExheWVyUG9zaXRpb24gKyAxOyBp
IDwgdG9wTGF5ZXJFbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBuZXh0UmVuZGVyZXIg
PSB0b3BMYXllckVsZW1lbnRzW2ldLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAobmV4dFJlbmRl
cmVyKSB7Ci0gICAgICAgICAgICBBU1NFUlQobmV4dFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBwYXJl
bnRSZW5kZXJlcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLSNl
bmRpZgotCiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZvckVsZW1l
bnRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKCFtX25vZGUtPnJlbmRlcmVyKCkpOwpAQCAtMjI1
LDExICsyMzIsNiBAQCB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZv
ckVsZW1lbnRJZk5lZWRlZCgpCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRo
aXMtPnBhcmVudFJlbmRlcmVyKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXIgPSB0
aGlzLT5uZXh0UmVuZGVyZXIoKTsKIAotI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKLSAgICBp
ZiAoZWxlbWVudC0+aXNJblRvcExheWVyKCkpCi0gICAgICAgIGFkanVzdEluc2VydGlvblBvaW50
Rm9yVG9wTGF5ZXJFbGVtZW50KGVsZW1lbnQsIHBhcmVudFJlbmRlcmVyLCBuZXh0UmVuZGVyZXIp
OwotI2VuZGlmCi0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgp
OwogICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBlbGVtZW50LT5jcmVhdGVSZW5kZXJl
cihkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSwgbV9zdHlsZS5nZXQoKSk7CiAgICAgaWYgKCFuZXdS
ZW5kZXJlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176395</attachid>
            <date>2012-11-27 21:34:57 -0800</date>
            <delta_ts>2013-01-07 00:28:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20121128003239.patch</filename>
            <type>text/plain</type>
            <size>6647</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAxYmY5OWQzMDQ0NjA2
NTM4ZDViNzdjMTU1YWVjM2U0NmJjNTllZC4uMDRlODk5Njc4NzQ4NTQzMGUwY2NhODY0ZTE3ZTYx
MzViYzdjMWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTI3ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVy
IGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDM0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bnN0ZWFkIG9mIHVzaW5nIGFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50IGFu
ZCByZWFzc2lnbmluZworICAgICAgICBwb2ludGVycyBwYXNzZWQgYnkgcmVmZXJlbmNlIHdlIHNo
b3VsZCBqdXN0IG1ha2UgbmV4dFJlbmRlcmVyIGFuZCBwYXJlbnRSZW5kZXJlcgorICAgICAgICBo
YW5kbGUgdGhlIHRvcCBsYXllciBwcm9wZXJseS4gUmlnaHQgbm93IHRoZXkgd291bGQgcmV0dXJu
IHRoZSB3cm9uZyB2YWx1ZXMKKyAgICAgICAgc2luY2Ugd2Ugb25seSBjb3JyZWN0bHkgaGFuZGxl
IHRoZSB0b3AgbGF5ZXIgZHVyaW5nIHJlbmRlcmVyIGNyZWF0aW9uLgorCisgICAgICAgIFRoaXMg
bWFrZXMgaGFuZGxpbmcgb2YgdG9wIGxheWVyIGVsZW1lbnRzIGNvbnNpc3RlbnQgd2l0aCBoYW5k
bGluZyBvZgorICAgICAgICBvdGhlciBzcGVjaWFsIHJlbmRlcmVyaW5nIHN5c3RlbXMgbGlrZSBm
bG93IHRocmVhZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBqdXN0IHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJFbGVtZW50KTogUmVtb3ZlZCB0aGlz
IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3Vz
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVu
dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91
bGRDcmVhdGVSZW5kZXJlcik6IENvbW1lbnQgYWJvdXQgYSBidWcgaW4gdGhlIGV4aXN0aW5nIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUmVuZGVy
ZXJGb3JFbGVtZW50SWZOZWVkZWQpOgorCiAyMDEyLTExLTI3ICBTaGlueWEgS2F3YW5ha2EgIDxz
aGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIEhhc1NlbGVjdG9y
Rm9yQ2xhc3NTdHlsZUZ1bmN0b3IgaW4gRWxlbWVudC5jcHAgc2VlbXMgdmVyYm9zZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOWJiZjYwYWJhYjhj
YTlmZWUyMTBhZWU5ODZkZjFhOWM5ZTJjNjViNi4uM2E4ZGQzNDBiNGNlYWMxN2ZkOWRmMWI2MWUz
MjVmNWUzZGVkOWE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC03NSw2ICs3NSwyMCBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPm5leHRTaWJs
aW5nKCk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgRWxlbWVudCogZWxlbWVu
dCA9IG1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KG1fbm9kZSkgOiAwOworICAg
IGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CisgICAgICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRv
Y3VtZW50KCktPnRvcExheWVyRWxlbWVudHMoKTsKKyAgICAgICAgc2l6ZV90IHBvc2l0aW9uID0g
dG9wTGF5ZXJFbGVtZW50cy5maW5kKGVsZW1lbnQpOworICAgICAgICBBU1NFUlQocG9zaXRpb24g
IT0gbm90Rm91bmQpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gcG9zaXRpb24gKyAxOyBpIDwg
dG9wTGF5ZXJFbGVtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSB0b3BMYXllckVsZW1lbnRzW2ldLT5yZW5kZXJlcigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAg
cmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5uZXh0UmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7
CiAKQEAgLTEwMSw2ICsxMTUsMTMgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cHJldmlv
dXNTaWJsaW5nKCk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgLy8gRklYTUU6
IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBmb3IgdGhpbmdzIGluIHRoZSB0b3AgbGF5ZXIg
dGhhdCBhcmUKKyAgICAvLyBkaXNwbGF5OiBub25lLiBXZSdkIG5lZWQgdG8gZHVwbGljYXRlIHRo
ZSBsb2dpYyBpbiBuZXh0UmVuZGVyZXIsIGJ1dCBzaW5jZQorICAgIC8vIG5vdGhpbmcgbmVlZHMg
dGhhdCB5ZXQganVzdCBhc3NlcnQuCisgICAgQVNTRVJUKCFtX25vZGUtPmlzRWxlbWVudE5vZGUo
KSB8fCAhdG9FbGVtZW50KG1fbm9kZSktPmlzSW5Ub3BMYXllcigpKTsKKyNlbmRpZgorCiAgICAg
aWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVu
ZGVyZXItPnByZXZpb3VzUmVuZGVyZXJGb3JOb2RlKG1fbm9kZSk7CiAKQEAgLTEyNCw2ICsxNDUs
MjIgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIo
KSBjb25zdAogewogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOworCisjaWYgRU5BQkxF
KERJQUxPR19FTEVNRU5UKQorICAgIGlmIChtX25vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0Vs
ZW1lbnQobV9ub2RlKS0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgLy8gVGhlIHBhcmVudCBy
ZW5kZXJlciBvZiB0b3AgbGF5ZXIgZWxlbWVudHMgaXMgdGhlIFJlbmRlclZpZXcsIGJ1dCBvbmx5
CisgICAgICAgIC8vIGlmIHRoZSBub3JtYWwgcGFyZW50IHdvdWxkIGhhdmUgaGFkIGEgcmVuZGVy
ZXIuCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGJlaGF2aW9yIGlzbid0IHF1aXRlIHJpZ2h0IGFz
IHRoZSBzcGVjIGZvciB0b3AgbGF5ZXIKKyAgICAgICAgLy8gb25seSB0YWxrcyBhYm91dCBkaXNw
bGF5OiBub25lIGFuY2VzdG9ycyBzbyBwdXR0aW5nIGEgPGRpYWxvZz4gaW5zaWRlCisgICAgICAg
IC8vIGFuIDxvcHRncm91cD4gc2VlbXMgbGlrZSBpdCBzaG91bGQgc3RpbGwgd29yayBldmVuIHRo
b3VnaCB0aGlzIGNoZWNrCisgICAgICAgIC8vIHdpbGwgcHJldmVudCBpdC4KKyAgICAgICAgTm9k
ZSogcGFyZW50ID0gbV9wYXJlbnREZXRhaWxzLm5vZGUoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQg
fHwgIXBhcmVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbV9ub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZs
b3dSZW5kZXJlcjsKIApAQCAtMTQxLDYgKzE3OCwxMCBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIHdyb25nIGZvciBlbGVtZW50
cyBpbiB0aGUgdG9wIGxheWVyIHNpbmNlIHRoZSBzcGVjCisgICAgLy8gb25seSB0YWxrcyBhYm91
dCBkaXNwbGF5OiBub25lLCBhbmQgY2FsbGluZyBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyCisg
ICAgLy8gbWVhbnMgPGRpYWxvZz4gaW5zaWRlIDxjb2w+IHdvbid0IHdvcmsgYnV0IGFzIHNwZWNp
ZmllZCBpdCBzaG91bGQuCisgICAgLy8gQSBzaW1pbGFyIGJ1ZyBsaWtlbHkgZXhpc3RzIGZvciBm
bG93IHRocmVhZHMuCiAgICAgaWYgKCFtX3BhcmVudERldGFpbHMubm9kZSgpLT5jaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwpAQCAtMTg0LDI2ICsyMjUsNiBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpp
c09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSBjb25zdAogICAgIHJldHVybiBtX25vZGUt
PnBhcmVudE5vZGUoKSAmJiBtX25vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCk7CiB9
CiAKLSNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCi1zdGF0aWMgdm9pZCBhZGp1c3RJbnNlcnRp
b25Qb2ludEZvclRvcExheWVyRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJPYmplY3Qq
JiBwYXJlbnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiYgbmV4dFJlbmRlcmVyKQotewotICAgIHBh
cmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnZpZXcoKTsKLSAgICBuZXh0UmVuZGVyZXIg
PSAwOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50
cyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnRvcExheWVyRWxlbWVudHMoKTsKLSAgICBzaXplX3Qg
dG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKLSAgICBB
U1NFUlQodG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3VuZCk7Ci0gICAgLy8gRmluZCB0aGUgbmV4
dCB0b3AgbGF5ZXIgcmVuZGVyZXIgdGhhdCdzIHN0YWNrZWQgYWJvdmUgdGhpcyBlbGVtZW50LiBO
b3RlIHRoYXQgdGhlIGltbWVkaWF0ZSBuZXh0IGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllcgotICAg
IC8vIHN0YWNrIG1pZ2h0IG5vdCBoYXZlIGEgcmVuZGVyZXIgKGR1ZSB0byBkaXNwbGF5OiBub25l
LCBvciBwb3NzaWJseSBpdCBpcyBub3QgYXR0YWNoZWQgeWV0KS4KLSAgICBmb3IgKHNpemVfdCBp
ID0gdG9wTGF5ZXJQb3NpdGlvbiArIDE7IGkgPCB0b3BMYXllckVsZW1lbnRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIG5leHRSZW5kZXJlciA9IHRvcExheWVyRWxlbWVudHNbaV0tPnJlbmRlcmVy
KCk7Ci0gICAgICAgIGlmIChuZXh0UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIEFTU0VSVChuZXh0
UmVuZGVyZXItPnBhcmVudCgpID09IHBhcmVudFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoIW1f
bm9kZS0+cmVuZGVyZXIoKSk7CkBAIC0yMjUsMTEgKzI0Niw2IEBAIHZvaWQgTm9kZVJlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKICAgICBSZW5kZXJP
YmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFyZW50UmVuZGVyZXIoKTsKICAgICBSZW5k
ZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IHRoaXMtPm5leHRSZW5kZXJlcigpOwogCi0jaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQotICAgIGlmIChlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKLSAg
ICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFy
ZW50UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7Ci0jZW5kaWYKLQogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJl
ciA9IGVsZW1lbnQtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBtX3N0
eWxlLmdldCgpKTsKICAgICBpZiAoIW5ld1JlbmRlcmVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181483</attachid>
            <date>2013-01-07 00:28:33 -0800</date>
            <delta_ts>2013-01-07 21:49:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20130107172538.patch</filename>
            <type>text/plain</type>
            <size>13128</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU5YTQ3YjNlNjI2YzA0
MzMxZmNhMWE1MDhlODMxMzliOTdiMjYxMi4uZmFlYzVhNWI4NzMzODAwNGIxZDIyMGM3YTIyOTk4
NDkyY2FjMzYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAxLTA3ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXll
ciBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3JpZ2luYWwgcGF0Y2ggYnkgRWxsaW90dCBTcHJlaG4gKG1pbm9yIGNvZGUgYW5kIGxheW91dCB0
ZXN0cyBhZGRlZCkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhZGp1c3RJbnNlcnRpb25Q
b2ludEZvclRvcExheWVyRWxlbWVudCBhbmQgcmVhc3NpZ25pbmcKKyAgICAgICAgcG9pbnRlcnMg
cGFzc2VkIGJ5IHJlZmVyZW5jZSB3ZSBzaG91bGQganVzdCBtYWtlIG5leHRSZW5kZXJlciBhbmQg
cGFyZW50UmVuZGVyZXIKKyAgICAgICAgaGFuZGxlIHRoZSB0b3AgbGF5ZXIgcHJvcGVybHkuIFJp
Z2h0IG5vdyB0aGV5IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzCisgICAgICAgIHNpbmNl
IHdlIG9ubHkgY29ycmVjdGx5IGhhbmRsZSB0aGUgdG9wIGxheWVyIGR1cmluZyByZW5kZXJlciBj
cmVhdGlvbi4KKworICAgICAgICBUaGlzIG1ha2VzIGhhbmRsaW5nIG9mIHRvcCBsYXllciBlbGVt
ZW50cyBjb25zaXN0ZW50IHdpdGggaGFuZGxpbmcgb2YKKyAgICAgICAgb3RoZXIgc3BlY2lhbCBy
ZW5kZXJlcmluZyBzeXN0ZW1zIGxpa2UgZmxvdyB0aHJlYWRzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwt
ZGlhbG9nLXNpYmxpbmcuaHRtbAorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEluc2VydGlvblBvaW50Rm9yVG9wTGF5ZXJF
bGVtZW50KTogUmVtb3ZlZCB0aGlzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5k
ZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6IENvbW1lbnQgYWJvdXQgYSBi
dWcgaW4gdGhlIGV4aXN0aW5nIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50SWZOZWVkZWQpOgorCiAyMDEzLTAxLTA0
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENocm9taXVtIHdp
bmRvd3MgY29tcGlsZSBmYWlscyBiZWNhdXNlIG9mIHRoZSBhc3NlcnRpb24gaW4gTm9kZVJhcmVE
YXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBm
OTk2ZmI0OTY0NDFlMGZkMWVmZmYyNzE2ZDNmZDQwYTRiODJmODAzLi5iYzI5YjNiNWYwYTViNGMx
NzRiODE3OGMzODA1OTg2Mzk3NTM3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTc4LDYgKzc4LDIwIEBAIFJlbmRlck9iamVjdCogTm9kZVJl
bmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX25vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJl
ci0+bmV4dFNpYmxpbmcoKTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBFbGVt
ZW50KiBlbGVtZW50ID0gbV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQobV9ub2Rl
KSA6IDA7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAg
ICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0g
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+dG9wTGF5ZXJFbGVtZW50cygpOworICAgICAgICBzaXplX3Qg
cG9zaXRpb24gPSB0b3BMYXllckVsZW1lbnRzLmZpbmQoZWxlbWVudCk7CisgICAgICAgIEFTU0VS
VChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBwb3NpdGlv
biArIDE7IGkgPCB0b3BMYXllckVsZW1lbnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRvcExheWVyRWxlbWVudHNbaV0tPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVy
KQogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvck5v
ZGUobV9ub2RlKTsKIApAQCAtODgsOSArMTAyLDE1IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRl
cmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAKICAgICBmb3IgKE5vZGUqIHNpYmxp
bmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyhtX25vZGUpOyBzaWJsaW5n
OyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcoc2libGluZykp
IHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJl
cigpKSB7Ci0gICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRv
IGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRl
ZCBkaWZmZXJlbnRseS4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1l
bnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93
VGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZsb3cgdGhyZWFkIG9y
IGluIHRoZSB0b3AgbGF5ZXIgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJl
bnRlZCBkaWZmZXJlbnRseS4KKyAgICAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0Vs
ZW1lbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkgJiYg
IXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgICAgICAg
ICAgICAgaWYgKHRvRWxlbWVudChyZW5kZXJlci0+bm9kZSgpKS0+aXNJblRvcExheWVyKCkpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmCisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDMsNiArMTIz
LDEzIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVy
ZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOwogCisj
aWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29y
ayBjb3JyZWN0bHkgZm9yIHRoaW5ncyBpbiB0aGUgdG9wIGxheWVyIHRoYXQgYXJlCisgICAgLy8g
ZGlzcGxheTogbm9uZS4gV2UnZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgbG9naWMgaW4gbmV4dFJl
bmRlcmVyLCBidXQgc2luY2UKKyAgICAvLyBub3RoaW5nIG5lZWRzIHRoYXQgeWV0IGp1c3QgYXNz
ZXJ0LgorICAgIEFTU0VSVCghbV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgfHwgIXRvRWxlbWVudCht
X25vZGUpLT5pc0luVG9wTGF5ZXIoKSk7CisjZW5kaWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dS
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyLT5wcmV2aW91c1Jl
bmRlcmVyRm9yTm9kZShtX25vZGUpOwogCkBAIC0xMjQsNiArMTUxLDIxIEBAIFJlbmRlck9iamVj
dCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIHJlbmRlcmVyLT5wYXJlbnQoKTsKKworI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
KyAgICBpZiAobV9ub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG1fbm9kZSktPmlz
SW5Ub3BMYXllcigpKSB7CisgICAgICAgIC8vIFRoZSBwYXJlbnQgcmVuZGVyZXIgb2YgdG9wIGxh
eWVyIGVsZW1lbnRzIGlzIHRoZSBSZW5kZXJWaWV3LCBidXQgb25seQorICAgICAgICAvLyBpZiB0
aGUgbm9ybWFsIHBhcmVudCB3b3VsZCBoYXZlIGhhZCBhIHJlbmRlcmVyLgorICAgICAgICAvLyBG
SVhNRTogVGhpcyBiZWhhdmlvciBpc24ndCBxdWl0ZSByaWdodCBhcyB0aGUgc3BlYyBmb3IgdG9w
IGxheWVyCisgICAgICAgIC8vIG9ubHkgdGFsa3MgYWJvdXQgZGlzcGxheTogbm9uZSBhbmNlc3Rv
cnMgc28gcHV0dGluZyBhIDxkaWFsb2c+IGluc2lkZQorICAgICAgICAvLyBhbiA8b3B0Z3JvdXA+
IHNlZW1zIGxpa2UgaXQgc2hvdWxkIHN0aWxsIHdvcmsgZXZlbiB0aG91Z2ggdGhpcyBjaGVjawor
ICAgICAgICAvLyB3aWxsIHByZXZlbnQgaXQuCisgICAgICAgIGlmICghbV9yZW5kZXJpbmdQYXJl
bnQgfHwgIW1fcmVuZGVyaW5nUGFyZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBtX25vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0
dXJuIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwogCkBAIC0xNDEsNiArMTgzLDEwIEBAIGJvb2wgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgd3Jv
bmcgZm9yIGVsZW1lbnRzIGluIHRoZSB0b3AgbGF5ZXIgc2luY2UgdGhlIHNwZWMKKyAgICAvLyBv
bmx5IHRhbGtzIGFib3V0IGRpc3BsYXk6IG5vbmUsIGFuZCBjYWxsaW5nIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIKKyAgICAvLyBtZWFucyA8ZGlhbG9nPiBpbnNpZGUgPGNvbD4gd29uJ3Qgd29y
ayBidXQgYXMgc3BlY2lmaWVkIGl0IHNob3VsZC4KKyAgICAvLyBBIHNpbWlsYXIgYnVnIGxpa2Vs
eSBleGlzdHMgZm9yIGZsb3cgdGhyZWFkcy4KICAgICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50LT5j
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKCp0aGlzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTk1LDI2ICsyNDEsNiBAQCBib29sIE5vZGVSZW5kZXJpbmdD
b250ZXh0Ojppc09uVXBwZXJFbmNhcHN1bGF0aW9uQm91bmRhcnkoKSBjb25zdAogICAgIHJldHVy
biBtX25vZGUtPnBhcmVudE5vZGUoKSAmJiBtX25vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dS
b290KCk7CiB9CiAKLSNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCi1zdGF0aWMgdm9pZCBhZGp1
c3RJbnNlcnRpb25Qb2ludEZvclRvcExheWVyRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5k
ZXJPYmplY3QqJiBwYXJlbnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiYgbmV4dFJlbmRlcmVyKQot
ewotICAgIHBhcmVudFJlbmRlcmVyID0gcGFyZW50UmVuZGVyZXItPnZpZXcoKTsKLSAgICBuZXh0
UmVuZGVyZXIgPSAwOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5
ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnRvcExheWVyRWxlbWVudHMoKTsKLSAg
ICBzaXplX3QgdG9wTGF5ZXJQb3NpdGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50
KTsKLSAgICBBU1NFUlQodG9wTGF5ZXJQb3NpdGlvbiAhPSBub3RGb3VuZCk7Ci0gICAgLy8gRmlu
ZCB0aGUgbmV4dCB0b3AgbGF5ZXIgcmVuZGVyZXIgdGhhdCdzIHN0YWNrZWQgYWJvdmUgdGhpcyBl
bGVtZW50LiBOb3RlIHRoYXQgdGhlIGltbWVkaWF0ZSBuZXh0IGVsZW1lbnQgaW4gdGhlIHRvcCBs
YXllcgotICAgIC8vIHN0YWNrIG1pZ2h0IG5vdCBoYXZlIGEgcmVuZGVyZXIgKGR1ZSB0byBkaXNw
bGF5OiBub25lLCBvciBwb3NzaWJseSBpdCBpcyBub3QgYXR0YWNoZWQgeWV0KS4KLSAgICBmb3Ig
KHNpemVfdCBpID0gdG9wTGF5ZXJQb3NpdGlvbiArIDE7IGkgPCB0b3BMYXllckVsZW1lbnRzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIG5leHRSZW5kZXJlciA9IHRvcExheWVyRWxlbWVudHNbaV0t
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmIChuZXh0UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIEFT
U0VSVChuZXh0UmVuZGVyZXItPnBhcmVudCgpID09IHBhcmVudFJlbmRlcmVyKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotI2VuZGlmCi0KIHZvaWQgTm9kZVJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIHsKICAgICBB
U1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIoKSk7CkBAIC0yMzMsMTEgKzI1OSw2IEBAIHZvaWQgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIAog
ICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRSZW5kZXJlcigp
OwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyID0gdGhpcy0+bmV4dFJlbmRlcmVyKCk7
Ci0gICAgCi0jaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQotICAgIGlmIChlbGVtZW50LT5pc0lu
VG9wTGF5ZXIoKSkKLSAgICAgICAgYWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1l
bnQoZWxlbWVudCwgcGFyZW50UmVuZGVyZXIsIG5leHRSZW5kZXJlcik7Ci0jZW5kaWYKIAogICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5k
ZXJBcmVuYSgpLCBtX3N0eWxlLmdldCgpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDY5ODk4ZjUzZmQ3ZjkzODhmN2M4
MTZjNDhjOWEyNjk1MzAwZTMxLi4wM2UyOTUxZTdlMmQxOGM4MGMyMWVmM2UxZmI4ZGRkY2UyZmRl
NjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEtMDcgIE1hdHQgRmFsa2VuaGFnZW4g
IDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVyIGF3YXJlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0NzcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hU
TUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi1yZXBsYWNlZC1yZW5kZXJlci1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2Rh
bC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmctZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlh
bG9nLXNpYmxpbmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDQgIFRlcnJ5IEFuZGVyc29uICA8
dGRhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcu
IFRlc3QgaXMgZmxha3kgb24gTGludXggYW5kIE1hYy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi1yZXBsYWNlZC1yZW5k
ZXJlci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTUzMzFiOWY5OGNhZTAwYjEzNzc4MTE2YTQyMTFjYWQ4ZTM5NzUyOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRp
YWxvZy1pbi1yZXBsYWNlZC1yZW5kZXJlci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQo
dHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7CisgICAgYmFja2dyb3VuZDogZ3Jl
ZW47CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKK30KK2RpdiB7CisgICAgY29udGVudDogdXJs
KGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQThBQUFBUEFR
TUFBQUFCR0FjSkFBQUFBMUJNVkVVQWdBQ2MrYVdSQUFBQURFbEVRVlI0Mm1OZ0lBRUFBQUF0QUFI
N0toTXFBQUFBQUVsRlRrU3VRbUNDKTsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxwPkJ1ZyA8YSBo
cmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzQ3NyI+MTAzNDc3PC9hPjogTWFrZQorTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVy
IGF3YXJlCis8cD5UaGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNxdWFyZSBuZWFy
IHRoZSB0b3AgYW5kIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9y
dC4KKzxkaXY+PC9kaXY+Cis8ZGlhbG9nIGlkPSJkaWFsb2ciPjwvZGlhbG9nPgorPHNjcmlwdD4K
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cnKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVw
bGFjZWQtcmVuZGVyZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmRjMDM4MTllZmEyNzg4OTNkY2VkNTVi
YjhmYTc3ZGRkYjQxMjFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLmh0bWwK
QEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFs
b2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAg
ICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworfQorZGl2IHsK
KyAgICBjb250ZW50OiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T
VWhFVWdBQUFBOEFBQUFQQVFNQUFBQUJHQWNKQUFBQUExQk1WRVVBZ0FDYythV1JBQUFBREVsRVFW
UjQybU5nSUFFQUFBQXRBQUg3S2hNcUFBQUFBRWxGVGtTdVFtQ0MpOworfQorPC9zdHlsZT4KKzxi
b2R5PgorPHA+QnVnIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8
L2E+OiBNYWtlCitOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRS
ZW5kZXJlciB0b3AgbGF5ZXIgYXdhcmUKKzxwPlRoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEg
Z3JlZW4gc3F1YXJlIG5lYXIgdGhlIHRvcCBhbmQgZ3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBjZW50
ZXIgb2YgdGhlIHZpZXdwb3J0LgorPGRpdj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+
Cis8L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nJykuc2hv
d01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1zaWJsaW5nLWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2Rh
bC1kaWFsb2ctc2libGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZDNiOWRlNTIwMjg4
YjdhZDIwZjNkMzE2NmRiYmJiZjllNDhkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxv
ZyB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKK30K
Kzwvc3R5bGU+Cis8Ym9keT4KKzxwPkJ1ZyA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzEw
MzQ3NyI+MTAzNDc3PC9hPjogTWFrZQorTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRl
cmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVyIGF3YXJlCis8cD5UaGUgdGVzdCBwYXNzZXMg
aWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9y
dC4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVu
dC9tb2RhbC1kaWFsb2ctc2libGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2JkNWQ2
MGM5NTUyYTI0Yzk2ZjNmOTg5ODQ5ODcxYTg0ZWE3MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmcu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CitkaWFsb2cg
eworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47Cit9Cis8
L3N0eWxlPgorPGJvZHk+Cis8cD5CdWcgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi8xMDM0
NzciPjEwMzQ3NzwvYT46IE1ha2UKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJl
ciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXllciBhd2FyZQorPHA+VGhlIHRlc3QgcGFzc2VzIGlm
IHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgaW4gdGhlIGNlbnRlciBvZiB0aGUgdmlld3BvcnQu
Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0iZGl2Ij48L2Rpdj4KKzxkaWFsb2cgaWQ9
ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rp
YWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLm9m
ZnNldFRvcDsgIC8vIGZvcmNlIGEgbGF5b3V0L3JlbmRlcmVyIGNyZWF0aW9uCitkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZGl2Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181636</attachid>
            <date>2013-01-07 21:49:50 -0800</date>
            <delta_ts>2013-01-08 17:39:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20130108144654.patch</filename>
            <type>text/plain</type>
            <size>15711</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYxYWNhNzk0OGYxYzIy
ZDIyNzQ0NTUzMmVhYjg1YTJlYjNmZDllYi4uOWUxM2ZmOGFiNzJkODAxZjc1NmJkYzE1Yjg0MGI0
M2ZiN2M4Yzg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTA3ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXll
ciBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3JpZ2luYWwgcGF0Y2ggYnkgRWxsaW90dCBTcHJlaG4gKG1pbm9yIGNvZGUgYW5kIGxheW91dCB0
ZXN0cyBhZGRlZCkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhZGp1c3RJbnNlcnRpb25Q
b2ludEZvclRvcExheWVyRWxlbWVudCBhbmQgcmVhc3NpZ25pbmcKKyAgICAgICAgcG9pbnRlcnMg
cGFzc2VkIGJ5IHJlZmVyZW5jZSB3ZSBzaG91bGQganVzdCBtYWtlIG5leHRSZW5kZXJlciBhbmQg
cGFyZW50UmVuZGVyZXIKKyAgICAgICAgaGFuZGxlIHRoZSB0b3AgbGF5ZXIgcHJvcGVybHkuIFJp
Z2h0IG5vdyB0aGV5IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzCisgICAgICAgIHNpbmNl
IHdlIG9ubHkgY29ycmVjdGx5IGhhbmRsZSB0aGUgdG9wIGxheWVyIGR1cmluZyByZW5kZXJlciBj
cmVhdGlvbi4KKworICAgICAgICBUaGlzIG1ha2VzIGhhbmRsaW5nIG9mIHRvcCBsYXllciBlbGVt
ZW50cyBjb25zaXN0ZW50IHdpdGggaGFuZGxpbmcgb2YKKyAgICAgICAgb3RoZXIgc3BlY2lhbCBy
ZW5kZXJlcmluZyBzeXN0ZW1zIGxpa2UgZmxvdyB0aHJlYWRzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwt
ZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy5odG1sCisKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJl
cGFyZW50ZWQpOiBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbi4gV2UgbXVzdCBza2lwCisgICAg
ICAgIHJlbmRlcmVycyB0aGF0IGFyZSByZXBhcmVudGVkIGluIG5leHRSZW5kZXJlciBhbmQgcHJl
dmlvdXNSZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQpOiBSZW1vdmVkIHRoaXMgbWV0aG9k
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRl
cmVyRm9yRWxlbWVudElmTmVlZGVkKToKKwogMjAxMy0wMS0wNSAgWmVubyBBbGJpc3NlciAgPHpl
bm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbVGV4bWFwXSBUZXh0dXJlTWFwcGVyR0wgc2hvdWxk
IHJlc2V0IEFSUkFZX0JVRkZFUiBhZnRlciBwYWludGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGY5OTZmYjQ5NjQ0MWUwZmQxZWZmZjI3MTZk
M2ZkNDBhNGI4MmY4MDMuLmE1OGY3MGUwNDM4ODE3OTg2M2IzMWRkM2Y3NTQzOWVhOGZhZjM3ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzMs
MTEgKzczLDM4IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojp+Tm9kZVJlbmRlcmluZ0NvbnRleHQo
KQogewogfQogCitzdGF0aWMgYm9vbCBpc1JlbmRlcmVyUmVwYXJlbnRlZChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpICYmICFy
ZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIGlmICh0b0VsZW1lbnQocmVu
ZGVyZXItPm5vZGUoKSktPmlzSW5Ub3BMYXllcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKwogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5u
ZXh0U2libGluZygpOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSBtX25vZGUtPmlzRWxlbWVudE5vZGUoKSA/IHRvRWxlbWVudChtX25vZGUpIDog
MDsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVudHMgPSBlbGVt
ZW50LT5kb2N1bWVudCgpLT50b3BMYXllckVsZW1lbnRzKCk7CisgICAgICAgIHNpemVfdCBwb3Np
dGlvbiA9IHRvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKKyAgICAgICAgQVNTRVJUKHBv
c2l0aW9uICE9IG5vdEZvdW5kKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHBvc2l0aW9uICsg
MTsgaSA8IHRvcExheWVyRWxlbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdG9wTGF5ZXJFbGVtZW50c1tpXS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobV9wYXJlbnRGbG93UmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlci0+bmV4dFJlbmRlcmVyRm9yTm9kZSht
X25vZGUpOwogCkBAIC04NywxMiArMTE0LDkgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBm
b3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVyc2FsOjpuZXh0U2libGluZyht
X25vZGUpOyBzaWJsaW5nOyBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNp
Ymxpbmcoc2libGluZykpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBz
aWJsaW5nLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICAvLyBSZW5kZXJlcnMgZm9yIGVsZW1l
bnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNraXBwZWQgYmVjYXVzZSB0
aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlci0+
bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxlKCkgJiYgIXJlbmRlcmVy
LT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIo
KTsKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVyUmVwYXJlbnRlZChyZW5kZXJl
cikpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gMDsKQEAgLTEwMywxOCArMTI3LDIyIEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRl
cmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVy
ZXItPnByZXZpb3VzU2libGluZygpOwogCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgZm9yIHRoaW5ncyBpbiB0aGUg
dG9wIGxheWVyIHRoYXQgYXJlCisgICAgLy8gZGlzcGxheTogbm9uZS4gV2UnZCBuZWVkIHRvIGR1
cGxpY2F0ZSB0aGUgbG9naWMgaW4gbmV4dFJlbmRlcmVyLCBidXQgc2luY2UKKyAgICAvLyBub3Ro
aW5nIG5lZWRzIHRoYXQgeWV0IGp1c3QgYXNzZXJ0LgorICAgIEFTU0VSVCghbV9ub2RlLT5pc0Vs
ZW1lbnROb2RlKCkgfHwgIXRvRWxlbWVudChtX25vZGUpLT5pc0luVG9wTGF5ZXIoKSk7CisjZW5k
aWYKKwogICAgIGlmIChtX3BhcmVudEZsb3dSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG1fcGFy
ZW50Rmxvd1JlbmRlcmVyLT5wcmV2aW91c1JlbmRlcmVyRm9yTm9kZShtX25vZGUpOwogCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2UgYXMgbmV4
dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5nIGl0LCBz
ZXZlcmFsIHRlc3RzIGZhaWxlZC4KICAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBOb2RlUmVuZGVy
aW5nVHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2libGluZyA9
IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhzaWJsaW5nKSkgewotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgICAgIC8vIFJlbmRlcmVycyBmb3IgZWxlbWVudHMgYXR0YWNoZWQgdG8gYSBmbG93
IHRocmVhZCBzaG91bGQgYmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgYXJlIHBhcmVudGVkIGRpZmZl
cmVudGx5LgotICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSAmJiByZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZsb3dUaHJlYWQo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpOworICAgICAgICBpZiAocmVuZGVy
ZXIgJiYgIWlzUmVuZGVyZXJSZXBhcmVudGVkKHJlbmRlcmVyKSkKICAgICAgICAgICAgIHJldHVy
biByZW5kZXJlcjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTI0LDYg
KzE1MiwyMSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5k
ZXJlcigpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUt
PnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+cGFyZW50KCk7CisKKyNpZiBF
TkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgaWYgKG1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChtX25vZGUpLT5pc0luVG9wTGF5ZXIoKSkgeworICAgICAgICAvLyBUaGUgcGFy
ZW50IHJlbmRlcmVyIG9mIHRvcCBsYXllciBlbGVtZW50cyBpcyB0aGUgUmVuZGVyVmlldywgYnV0
IG9ubHkKKyAgICAgICAgLy8gaWYgdGhlIG5vcm1hbCBwYXJlbnQgd291bGQgaGF2ZSBoYWQgYSBy
ZW5kZXJlci4KKyAgICAgICAgLy8gRklYTUU6IFRoaXMgYmVoYXZpb3IgaXNuJ3QgcXVpdGUgcmln
aHQgYXMgdGhlIHNwZWMgZm9yIHRvcCBsYXllcgorICAgICAgICAvLyBvbmx5IHRhbGtzIGFib3V0
IGRpc3BsYXk6IG5vbmUgYW5jZXN0b3JzIHNvIHB1dHRpbmcgYSA8ZGlhbG9nPiBpbnNpZGUKKyAg
ICAgICAgLy8gYW4gPG9wdGdyb3VwPiBzZWVtcyBsaWtlIGl0IHNob3VsZCBzdGlsbCB3b3JrIGV2
ZW4gdGhvdWdoIHRoaXMgY2hlY2sKKyAgICAgICAgLy8gd2lsbCBwcmV2ZW50IGl0LgorICAgICAg
ICBpZiAoIW1fcmVuZGVyaW5nUGFyZW50IHx8ICFtX3JlbmRlcmluZ1BhcmVudC0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9ub2RlLT5kb2N1bWVu
dCgpLT5yZW5kZXJWaWV3KCk7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobV9wYXJlbnRGbG93
UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKIApAQCAtMTk1
LDI2ICsyMzgsNiBAQCBib29sIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojppc09uVXBwZXJFbmNhcHN1
bGF0aW9uQm91bmRhcnkoKSBjb25zdAogICAgIHJldHVybiBtX25vZGUtPnBhcmVudE5vZGUoKSAm
JiBtX25vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCk7CiB9CiAKLSNpZiBFTkFCTEUo
RElBTE9HX0VMRU1FTlQpCi1zdGF0aWMgdm9pZCBhZGp1c3RJbnNlcnRpb25Qb2ludEZvclRvcExh
eWVyRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBSZW5kZXJPYmplY3QqJiBwYXJlbnRSZW5kZXJl
ciwgUmVuZGVyT2JqZWN0KiYgbmV4dFJlbmRlcmVyKQotewotICAgIHBhcmVudFJlbmRlcmVyID0g
cGFyZW50UmVuZGVyZXItPnZpZXcoKTsKLSAgICBuZXh0UmVuZGVyZXIgPSAwOwotICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgdG9wTGF5ZXJFbGVtZW50cyA9IGVsZW1lbnQtPmRv
Y3VtZW50KCktPnRvcExheWVyRWxlbWVudHMoKTsKLSAgICBzaXplX3QgdG9wTGF5ZXJQb3NpdGlv
biA9IHRvcExheWVyRWxlbWVudHMuZmluZChlbGVtZW50KTsKLSAgICBBU1NFUlQodG9wTGF5ZXJQ
b3NpdGlvbiAhPSBub3RGb3VuZCk7Ci0gICAgLy8gRmluZCB0aGUgbmV4dCB0b3AgbGF5ZXIgcmVu
ZGVyZXIgdGhhdCdzIHN0YWNrZWQgYWJvdmUgdGhpcyBlbGVtZW50LiBOb3RlIHRoYXQgdGhlIGlt
bWVkaWF0ZSBuZXh0IGVsZW1lbnQgaW4gdGhlIHRvcCBsYXllcgotICAgIC8vIHN0YWNrIG1pZ2h0
IG5vdCBoYXZlIGEgcmVuZGVyZXIgKGR1ZSB0byBkaXNwbGF5OiBub25lLCBvciBwb3NzaWJseSBp
dCBpcyBub3QgYXR0YWNoZWQgeWV0KS4KLSAgICBmb3IgKHNpemVfdCBpID0gdG9wTGF5ZXJQb3Np
dGlvbiArIDE7IGkgPCB0b3BMYXllckVsZW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG5l
eHRSZW5kZXJlciA9IHRvcExheWVyRWxlbWVudHNbaV0tPnJlbmRlcmVyKCk7Ci0gICAgICAgIGlm
IChuZXh0UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIEFTU0VSVChuZXh0UmVuZGVyZXItPnBhcmVu
dCgpID09IHBhcmVudFJlbmRlcmVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotfQotI2VuZGlmCi0KIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRl
cmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoIW1fbm9kZS0+cmVuZGVyZXIo
KSk7CkBAIC0yMzMsMTEgKzI1Niw2IEBAIHZvaWQgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZVJlbmRlcmVyRm9yRWxlbWVudElmTmVlZGVkKCkKIAogICAgIFJlbmRlck9iamVjdCogcGFyZW50
UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRSZW5kZXJlcigpOwogICAgIFJlbmRlck9iamVjdCogbmV4
dFJlbmRlcmVyID0gdGhpcy0+bmV4dFJlbmRlcmVyKCk7Ci0gICAgCi0jaWYgRU5BQkxFKERJQUxP
R19FTEVNRU5UKQotICAgIGlmIChlbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkKLSAgICAgICAgYWRq
dXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQoZWxlbWVudCwgcGFyZW50UmVuZGVy
ZXIsIG5leHRSZW5kZXJlcik7Ci0jZW5kaWYKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVs
ZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgUmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGVsZW1l
bnQtPmNyZWF0ZVJlbmRlcmVyKGRvY3VtZW50LT5yZW5kZXJBcmVuYSgpLCBtX3N0eWxlLmdldCgp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjNmJkYTcxZTA1MTYyZDc3NjkyMDM5Mzg0YTg2NjcwMjM5MWNkZjcxLi5lN2Rm
YWMyMGM4OWIxNmU2OTdlODY2YzE0MDcwMDM1ZTU5MDQ3NTk4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTMtMDEtMDcgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIE1ha2UgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBu
ZXh0UmVuZGVyZXIgdG9wIGxheWVyIGF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRp
YWxvZy1pbi1yZXBsYWNlZC1yZW5kZXJlci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVu
ZGVyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
bW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUtY29s
dW1uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21v
ZGFsLWRpYWxvZy1zaWJsaW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1zaWJsaW5nLmh0bWw6IEFkZGVkLgor
CiAyMDEzLTAxLTA1ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxh
Y2VkLXJlbmRlcmVyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlh
bG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXItZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNTMzMWI5Zjk4Y2FlMDBiMTM3NzgxMTZhNDIxMWNhZDhlMzk3NTI4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
bW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50
RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBiYWNrZ3Jv
dW5kOiBncmVlbjsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworfQorZGl2IHsKKyAgICBjb250
ZW50OiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFB
OEFBQUFQQVFNQUFBQUJHQWNKQUFBQUExQk1WRVVBZ0FDYythV1JBQUFBREVsRVFWUjQybU5nSUFF
QUFBQXRBQUg3S2hNcUFBQUFBRWxGVGtTdVFtQ0MpOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+
QnVnIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtl
CitOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0
b3AgbGF5ZXIgYXdhcmUKKzxwPlRoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1
YXJlIG5lYXIgdGhlIHRvcCBhbmQgZ3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBjZW50ZXIgb2YgdGhl
IHZpZXdwb3J0LgorPGRpdj48L2Rpdj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8
c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxv
Zy1pbi1yZXBsYWNlZC1yZW5kZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZGMwMzgxOWVmYTI3ODg5
M2RjZWQ1NWJiOGZhNzdkZGRiNDEyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CitkaWFs
b2cgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47Cit9
CitkaXYgeworICAgIGNvbnRlbnQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtH
Z29BQUFBTlNVaEVVZ0FBQUE4QUFBQVBBUU1BQUFBQkdBY0pBQUFBQTFCTVZFVUFnQUNjK2FXUkFB
QUFERWxFUVZSNDJtTmdJQUVBQUFBdEFBSDdLaE1xQUFBQUFFbEZUa1N1UW1DQyk7Cit9Cis8L3N0
eWxlPgorPGJvZHk+Cis8cD5CdWcgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi8xMDM0Nzci
PjEwMzQ3NzwvYT46IE1ha2UKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBh
bmQgbmV4dFJlbmRlcmVyIHRvcCBsYXllciBhd2FyZQorPHA+VGhlIHRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBncmVlbiBzcXVhcmUgbmVhciB0aGUgdG9wIGFuZCBncmVlbiByZWN0YW5nbGUgaW4g
dGhlIGNlbnRlciBvZiB0aGUgdmlld3BvcnQuCis8ZGl2PgorPGRpYWxvZyBpZD0iZGlhbG9nIj48
L2RpYWxvZz4KKzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFs
b2cnKS5zaG93TW9kYWwoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWlu
LXRhYmxlLWNvbHVtbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE1ZDNiOWRlNTIwMjg4YjdhZDIwZjNkMzE2NmRiYmJiZjllNDhkNzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2Rh
bC1kaWFsb2ctaW4tdGFibGUtY29sdW1uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0
cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVl
bjsKKyAgICBib3JkZXItY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+QnVn
IDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtlCitO
b2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0b3Ag
bGF5ZXIgYXdhcmUKKzxwPlRoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFu
Z2xlIGluIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXdwb3J0LgorPGRpYWxvZyBpZD0iZGlhbG9nIj48
L2RpYWxvZz4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nJykuc2hv
d01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1j
b2x1bW4uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFs
LWRpYWxvZy1pbi10YWJsZS1jb2x1bW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWY3NTZiMmNiMDM3Mjg5
N2RjNmU1MGEzZGU1MDMzODg2OGNjYzNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5o
dG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7
CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKK30KK2Rp
diB7CisgICAgZGlzcGxheTogdGFibGUtY29sdW1uOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+
QnVnIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtl
CitOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0
b3AgbGF5ZXIgYXdhcmUKKzxwPlRoZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVj
dGFuZ2xlIGluIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXdwb3J0LgorPGRpdj4KKzxkaWFsb2cgaWQ9
ImRpYWxvZyI+PC9kaWFsb2c+Cis8L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGlhbG9nJykuc2hvd01vZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFs
LWRpYWxvZy1zaWJsaW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE1ZDNiOWRlNTIwMjg4YjdhZDIwZjNkMzE2NmRiYmJiZjllNDhkNzQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFs
b2ctc2libGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzxzdHlsZT4KK2RpYWxvZyB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgYm9yZGVy
LWNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8Ym9keT4KKzxwPkJ1ZyA8YSBocmVmPSJodHRw
Oi8vd2Via2l0Lm9yZy9iLzEwMzQ3NyI+MTAzNDc3PC9hPjogTWFrZQorTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6OnBhcmVudFJlbmRlcmVyIGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVyIGF3YXJlCis8
cD5UaGUgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgY2Vu
dGVyIG9mIHRoZSB2aWV3cG9ydC4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2Ny
aXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wN2JkNWQ2MGM5NTUyYTI0Yzk2ZjNmOTg5ODQ5ODcxYTg0ZWE3MWI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9k
YWwtZGlhbG9nLXNpYmxpbmcuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+
Cis8c3R5bGU+CitkaWFsb2cgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIGJvcmRlci1j
b2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8cD5CdWcgPGEgaHJlZj0iaHR0cDov
L3dlYmtpdC5vcmcvYi8xMDM0NzciPjEwMzQ3NzwvYT46IE1ha2UKK05vZGVSZW5kZXJpbmdDb250
ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXllciBhd2FyZQorPHA+
VGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiByZWN0YW5nbGUgaW4gdGhlIGNlbnRl
ciBvZiB0aGUgdmlld3BvcnQuCis8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0iZGl2Ij48
L2Rpdj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RpYWxvZycpLm9mZnNldFRvcDsgIC8vIGZvcmNlIGEgbGF5b3V0L3JlbmRlcmVyIGNy
ZWF0aW9uCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGl2Jykuc3R5bGUuZGlzcGxheSA9ICdi
bG9jayc7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181812</attachid>
            <date>2013-01-08 17:39:06 -0800</date>
            <delta_ts>2013-01-08 20:48:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103477-20130109103610.patch</filename>
            <type>text/plain</type>
            <size>15747</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M5ODhiYTk1MjY2ZTFh
NzNlMTUwNjE3Y2ZiYjRhZmEwY2Q3MDk0Yy4uMWU2ODY3MGMzYTkwNWJkOGQwMjhkNzBkZmQzN2U4
YTMzMzRjYzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAxLTA4ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXll
ciBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T3JpZ2luYWwgcGF0Y2ggYnkgRWxsaW90dCBTcHJlaG4gKG1pbm9yIGNvZGUgYW5kIGxheW91dCB0
ZXN0cyBhZGRlZCkuCisKKyAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhZGp1c3RJbnNlcnRpb25Q
b2ludEZvclRvcExheWVyRWxlbWVudCBhbmQgcmVhc3NpZ25pbmcKKyAgICAgICAgcG9pbnRlcnMg
cGFzc2VkIGJ5IHJlZmVyZW5jZSB3ZSBzaG91bGQganVzdCBtYWtlIG5leHRSZW5kZXJlciBhbmQg
cGFyZW50UmVuZGVyZXIKKyAgICAgICAgaGFuZGxlIHRoZSB0b3AgbGF5ZXIgcHJvcGVybHkuIFJp
Z2h0IG5vdyB0aGV5IHdvdWxkIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzCisgICAgICAgIHNpbmNl
IHdlIG9ubHkgY29ycmVjdGx5IGhhbmRsZSB0aGUgdG9wIGxheWVyIGR1cmluZyByZW5kZXJlciBj
cmVhdGlvbi4KKworICAgICAgICBUaGlzIG1ha2VzIGhhbmRsaW5nIG9mIHRvcCBsYXllciBlbGVt
ZW50cyBjb25zaXN0ZW50IHdpdGggaGFuZGxpbmcgb2YKKyAgICAgICAgb3RoZXIgc3BlY2lhbCBy
ZW5kZXJlcmluZyBzeXN0ZW1zIGxpa2UgZmxvdyB0aHJlYWRzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVy
ZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwt
ZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy5odG1sCisKKyAgICAgICAgKiBkb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZW5kZXJlclJl
cGFyZW50ZWQpOiBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbi4gV2UgbXVzdCBza2lwCisgICAg
ICAgIHJlbmRlcmVycyB0aGF0IGFyZSByZXBhcmVudGVkIGluIG5leHRSZW5kZXJlciBhbmQgcHJl
dmlvdXNSZW5kZXJlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YWRq
dXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQpOiBSZW1vdmVkIHRoaXMgbWV0aG9k
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVy
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVJlbmRl
cmVyRm9yRWxlbWVudElmTmVlZGVkKToKKwogMjAxMy0wMS0wOCAgU2VyZ2lvIFZpbGxhciBTZW5p
biAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aXRoIC0t
d2ViLWF1ZGlvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCBmOTk2ZmI0OTY0NDFlMGZkMWVmZmYyNzE2ZDNmZDQwYTRiODJmODAzLi5iYWU1MWE3NGI4
YmI3MmIyYzE3YjYzYWM3MmY2NTkwNTRjZjk1ZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTczLDExICs3MywzOCBAQCBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6fk5vZGVSZW5kZXJpbmdDb250ZXh0KCkKIHsKIH0KIAorc3RhdGljIGJvb2wgaXNS
ZW5kZXJlclJlcGFyZW50ZWQoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBp
ZiAoIXJlbmRlcmVyLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKSAmJiAhcmVuZGVyZXItPnN0eWxlKCktPmZs
b3dUaHJlYWQoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKKyAgICBpZiAodG9FbGVtZW50KHJlbmRlcmVyLT5ub2RlKCkpLT5pc0lu
VG9wTGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJl
cigpIGNvbnN0CiB7CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX25vZGUtPnJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJlci0+bmV4dFNpYmxpbmcoKTsKIAorI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9ub2RlLT5p
c0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQobV9ub2RlKSA6IDA7CisgICAgaWYgKGVsZW1lbnQg
JiYgZWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+dG9w
TGF5ZXJFbGVtZW50cygpOworICAgICAgICBzaXplX3QgcG9zaXRpb24gPSB0b3BMYXllckVsZW1l
bnRzLmZpbmQoZWxlbWVudCk7CisgICAgICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBwb3NpdGlvbiArIDE7IGkgPCB0b3BMYXllckVsZW1l
bnRzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHRvcExheWVyRWxlbWVudHNbaV0tPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRp
ZgorCiAgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQogICAgICAgICByZXR1cm4gbV9wYXJl
bnRGbG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKIApAQCAtODcsMTIg
KzExNCw5IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJl
cigpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yIChOb2RlKiBzaWJsaW5nID0g
Tm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6bmV4dFNpYmxpbmcobV9ub2RlKTsgc2libGluZzsgc2li
bGluZyA9IE5vZGVSZW5kZXJpbmdUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKHNpYmxpbmcpKSB7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2libGluZy0+cmVuZGVyZXIoKSkg
ewotICAgICAgICAgICAgLy8gUmVuZGVyZXJzIGZvciBlbGVtZW50cyBhdHRhY2hlZCB0byBhIGZs
b3cgdGhyZWFkIHNob3VsZCBiZSBza2lwcGVkIGJlY2F1c2UgdGhleSBhcmUgcGFyZW50ZWQgZGlm
ZmVyZW50bHkuCi0gICAgICAgICAgICBpZiAocmVuZGVyZXItPm5vZGUoKS0+aXNFbGVtZW50Tm9k
ZSgpICYmIHJlbmRlcmVyLT5zdHlsZSgpICYmICFyZW5kZXJlci0+c3R5bGUoKS0+Zmxvd1RocmVh
ZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNpYmxpbmctPnJlbmRlcmVyKCk7CisgICAgICAgIGlmIChyZW5k
ZXJlciAmJiAhaXNSZW5kZXJlclJlcGFyZW50ZWQocmVuZGVyZXIpKQogICAgICAgICAgICAgcmV0
dXJuIHJlbmRlcmVyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMDMs
MTggKzEyNywyMiBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91
c1JlbmRlcmVyKCkgY29uc3QKICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9k
ZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmco
KTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vz
bid0IHdvcmsgY29ycmVjdGx5IGZvciB0aGluZ3MgaW4gdGhlIHRvcCBsYXllciB0aGF0IGFyZQor
ICAgIC8vIGRpc3BsYXk6IG5vbmUuIFdlJ2QgbmVlZCB0byBkdXBsaWNhdGUgdGhlIGxvZ2ljIGlu
IG5leHRSZW5kZXJlciwgYnV0IHNpbmNlCisgICAgLy8gbm90aGluZyBuZWVkcyB0aGF0IHlldCBq
dXN0IGFzc2VydC4KKyAgICBBU1NFUlQoIW1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICF0b0Vs
ZW1lbnQobV9ub2RlKS0+aXNJblRvcExheWVyKCkpOworI2VuZGlmCisKICAgICBpZiAobV9wYXJl
bnRGbG93UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5kZXJlci0+cHJl
dmlvdXNSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSB0aGUgc2FtZSBPKE5eMikgYXZvaWRhbmNlIGFzIG5leHRSZW5kZXJlciBkb2VzCiAgICAg
Ly8gaG93ZXZlciwgd2hlbiBJIHRyaWVkIGFkZGluZyBpdCwgc2V2ZXJhbCB0ZXN0cyBmYWlsZWQu
CiAgICAgZm9yIChOb2RlKiBzaWJsaW5nID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cHJldmlv
dXNTaWJsaW5nKG1fbm9kZSk7IHNpYmxpbmc7IHNpYmxpbmcgPSBOb2RlUmVuZGVyaW5nVHJhdmVy
c2FsOjpwcmV2aW91c1NpYmxpbmcoc2libGluZykpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzaWJsaW5nLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICAvLyBSZW5k
ZXJlcnMgZm9yIGVsZW1lbnRzIGF0dGFjaGVkIHRvIGEgZmxvdyB0aHJlYWQgc2hvdWxkIGJlIHNr
aXBwZWQgYmVjYXVzZSB0aGV5IGFyZSBwYXJlbnRlZCBkaWZmZXJlbnRseS4KLSAgICAgICAgICAg
IGlmIChyZW5kZXJlci0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyZXItPnN0eWxl
KCkgJiYgIXJlbmRlcmVyLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2li
bGluZy0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmICFpc1JlbmRlcmVyUmVw
YXJlbnRlZChyZW5kZXJlcikpCiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAgICAg
IH0KICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTEyNCw2ICsxNTIsMjEgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cGFyZW50UmVuZGVyZXIoKSBjb25zdAogewogICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm4gcmVuZGVyZXItPnBhcmVudCgpOworCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQorICAgIGlmIChtX25vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobV9ub2RlKS0+
aXNJblRvcExheWVyKCkpIHsKKyAgICAgICAgLy8gVGhlIHBhcmVudCByZW5kZXJlciBvZiB0b3Ag
bGF5ZXIgZWxlbWVudHMgaXMgdGhlIFJlbmRlclZpZXcsIGJ1dCBvbmx5CisgICAgICAgIC8vIGlm
IHRoZSBub3JtYWwgcGFyZW50IHdvdWxkIGhhdmUgaGFkIGEgcmVuZGVyZXIuCisgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGJlaGF2aW9yIGlzbid0IHF1aXRlIHJpZ2h0IGFzIHRoZSBzcGVjIGZvciB0
b3AgbGF5ZXIKKyAgICAgICAgLy8gb25seSB0YWxrcyBhYm91dCBkaXNwbGF5OiBub25lIGFuY2Vz
dG9ycyBzbyBwdXR0aW5nIGEgPGRpYWxvZz4gaW5zaWRlCisgICAgICAgIC8vIGFuIDxvcHRncm91
cD4gc2VlbXMgbGlrZSBpdCBzaG91bGQgc3RpbGwgd29yayBldmVuIHRob3VnaCB0aGlzIGNoZWNr
CisgICAgICAgIC8vIHdpbGwgcHJldmVudCBpdC4KKyAgICAgICAgaWYgKCFtX3JlbmRlcmluZ1Bh
cmVudCB8fCAhbV9yZW5kZXJpbmdQYXJlbnQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fcGFyZW50Rmxvd1JlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXI7CiAKQEAgLTE5NSwyNiArMjM4LDYgQEAgYm9vbCBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6aXNPblVwcGVyRW5jYXBzdWxhdGlvbkJvdW5kYXJ5KCkgY29u
c3QKICAgICByZXR1cm4gbV9ub2RlLT5wYXJlbnROb2RlKCkgJiYgbV9ub2RlLT5wYXJlbnROb2Rl
KCktPmlzU2hhZG93Um9vdCgpOwogfQogCi0jaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQotc3Rh
dGljIHZvaWQgYWRqdXN0SW5zZXJ0aW9uUG9pbnRGb3JUb3BMYXllckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyT2JqZWN0KiYgcGFyZW50UmVuZGVyZXIsIFJlbmRlck9iamVjdComIG5l
eHRSZW5kZXJlcikKLXsKLSAgICBwYXJlbnRSZW5kZXJlciA9IHBhcmVudFJlbmRlcmVyLT52aWV3
KCk7Ci0gICAgbmV4dFJlbmRlcmVyID0gMDsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1l
bnQ+ID4mIHRvcExheWVyRWxlbWVudHMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT50b3BMYXllckVs
ZW1lbnRzKCk7Ci0gICAgc2l6ZV90IHRvcExheWVyUG9zaXRpb24gPSB0b3BMYXllckVsZW1lbnRz
LmZpbmQoZWxlbWVudCk7Ci0gICAgQVNTRVJUKHRvcExheWVyUG9zaXRpb24gIT0gbm90Rm91bmQp
OwotICAgIC8vIEZpbmQgdGhlIG5leHQgdG9wIGxheWVyIHJlbmRlcmVyIHRoYXQncyBzdGFja2Vk
IGFib3ZlIHRoaXMgZWxlbWVudC4gTm90ZSB0aGF0IHRoZSBpbW1lZGlhdGUgbmV4dCBlbGVtZW50
IGluIHRoZSB0b3AgbGF5ZXIKLSAgICAvLyBzdGFjayBtaWdodCBub3QgaGF2ZSBhIHJlbmRlcmVy
IChkdWUgdG8gZGlzcGxheTogbm9uZSwgb3IgcG9zc2libHkgaXQgaXMgbm90IGF0dGFjaGVkIHll
dCkuCi0gICAgZm9yIChzaXplX3QgaSA9IHRvcExheWVyUG9zaXRpb24gKyAxOyBpIDwgdG9wTGF5
ZXJFbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBuZXh0UmVuZGVyZXIgPSB0b3BMYXll
ckVsZW1lbnRzW2ldLT5yZW5kZXJlcigpOwotICAgICAgICBpZiAobmV4dFJlbmRlcmVyKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQobmV4dFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBwYXJlbnRSZW5kZXJl
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLSNlbmRpZgotCiB2
b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZvckVsZW1lbnRJZk5lZWRl
ZCgpCiB7CiAgICAgQVNTRVJUKCFtX25vZGUtPnJlbmRlcmVyKCkpOwpAQCAtMjMzLDExICsyNTYs
NiBAQCB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVSZW5kZXJlckZvckVsZW1lbnRJ
Zk5lZWRlZCgpCiAKICAgICBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyID0gdGhpcy0+cGFy
ZW50UmVuZGVyZXIoKTsKICAgICBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlciA9IHRoaXMtPm5l
eHRSZW5kZXJlcigpOwotICAgIAotI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKLSAgICBpZiAo
ZWxlbWVudC0+aXNJblRvcExheWVyKCkpCi0gICAgICAgIGFkanVzdEluc2VydGlvblBvaW50Rm9y
VG9wTGF5ZXJFbGVtZW50KGVsZW1lbnQsIHBhcmVudFJlbmRlcmVyLCBuZXh0UmVuZGVyZXIpOwot
I2VuZGlmCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwog
ICAgIFJlbmRlck9iamVjdCogbmV3UmVuZGVyZXIgPSBlbGVtZW50LT5jcmVhdGVSZW5kZXJlcihk
b2N1bWVudC0+cmVuZGVyQXJlbmEoKSwgbV9zdHlsZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTgwYTkxMzgy
NTY3ZTVhOWY0MjA3MTJkMzQyMmY3OGU4MWY2NDE1ZS4uODBmZTIwMzM1NTJlODg3NDY2ZTliODI3
ODFlYjhhMjc1ODlmNGFlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAxLTA4ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBsYXll
ciBhd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVu
ZGVyZXItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJs
ZS1jb2x1bW4tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERp
YWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVu
dC9tb2RhbC1kaWFsb2ctc2libGluZy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOCAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTG9naW4g
JiBwYXNzd29yZCBzaG93biBpbiBicm93c2VycycgVVJMIGVudHJ5IGFmdGVyIHN1Y2Nlc3NmdWwg
SFRUUCBhdXRoZW50aWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxhY2VkLXJlbmRlcmVyLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFs
b2ctaW4tcmVwbGFjZWQtcmVuZGVyZXItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTMzMWI5
Zjk4Y2FlMDBiMTM3NzgxMTZhNDIxMWNhZDhlMzk3NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXJlcGxh
Y2VkLXJlbmRlcmVyLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPHN0eWxlPgorZGlhbG9nIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICBib3Jk
ZXItY29sb3I6IGdyZWVuOworfQorZGl2IHsKKyAgICBjb250ZW50OiB1cmwoZGF0YTppbWFnZS9w
bmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBOEFBQUFQQVFNQUFBQUJHQWNKQUFB
QUExQk1WRVVBZ0FDYythV1JBQUFBREVsRVFWUjQybU5nSUFFQUFBQXRBQUg3S2hNcUFBQUFBRWxG
VGtTdVFtQ0MpOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+QnVnIDxhIGhyZWY9Imh0dHA6Ly93
ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtlCitOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0b3AgbGF5ZXIgYXdhcmUKKzxwPlRo
ZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlIG5lYXIgdGhlIHRvcCBhbmQg
Z3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXdwb3J0LgorPGRpdj48L2Rp
dj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVu
dC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi1yZXBsYWNlZC1yZW5kZXJl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViZGMwMzgxOWVmYTI3ODg5M2RjZWQ1NWJiOGZhNzdkZGRiNDEy
MWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC9tb2RhbC1kaWFsb2ctaW4tcmVwbGFjZWQtcmVuZGVyZXIuaHRtbApAQCAtMCwwICsxLDI4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERpYWxvZ0VsZW1lbnRFbmFi
bGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CitkaWFsb2cgeworICAgIGJhY2tncm91bmQ6
IGdyZWVuOworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47Cit9CitkaXYgeworICAgIGNvbnRlbnQ6
IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUE4QUFB
QVBBUU1BQUFBQkdBY0pBQUFBQTFCTVZFVUFnQUNjK2FXUkFBQUFERWxFUVZSNDJtTmdJQUVBQUFB
dEFBSDdLaE1xQUFBQUFFbEZUa1N1UW1DQyk7Cit9Cis8L3N0eWxlPgorPGJvZHk+Cis8cD5CdWcg
PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi8xMDM0NzciPjEwMzQ3NzwvYT46IE1ha2UKK05v
ZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBhbmQgbmV4dFJlbmRlcmVyIHRvcCBs
YXllciBhd2FyZQorPHA+VGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiBzcXVhcmUg
bmVhciB0aGUgdG9wIGFuZCBncmVlbiByZWN0YW5nbGUgaW4gdGhlIGNlbnRlciBvZiB0aGUgdmll
d3BvcnQuCis8ZGl2PgorPGRpYWxvZyBpZD0iZGlhbG9nIj48L2RpYWxvZz4KKzwvZGl2PgorPHNj
cmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2cnKS5zaG93TW9kYWwoKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlh
bG9nLWluLXRhYmxlLWNvbHVtbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZDNiOWRlNTIw
Mjg4YjdhZDIwZjNkMzE2NmRiYmJiZjllNDhkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctaW4tdGFibGUtY29s
dW1uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXREaWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0
eWxlPgorZGlhbG9nIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICBib3JkZXItY29sb3I6
IGdyZWVuOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+QnVnIDxhIGhyZWY9Imh0dHA6Ly93ZWJr
aXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtlCitOb2RlUmVuZGVyaW5nQ29udGV4dDo6
cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0b3AgbGF5ZXIgYXdhcmUKKzxwPlRoZSB0
ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBjZW50ZXIgb2Yg
dGhlIHZpZXdwb3J0LgorPGRpYWxvZyBpZD0iZGlhbG9nIj48L2RpYWxvZz4KKzxzY3JpcHQ+Citk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nJykuc2hvd01vZGFsKCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1jb2x1bW4uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1pbi10YWJsZS1jb2x1
bW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MWY3NTZiMmNiMDM3Mjg5N2RjNmU1MGEzZGU1MDMzODg2OGNj
YzNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0Vs
ZW1lbnQvbW9kYWwtZGlhbG9nLWluLXRhYmxlLWNvbHVtbi5odG1sCkBAIC0wLDAgKzEsMjggQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQo
dHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7CisgICAgYmFja2dyb3VuZDogZ3Jl
ZW47CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKK30KK2RpdiB7CisgICAgZGlzcGxheTogdGFi
bGUtY29sdW1uOworfQorPC9zdHlsZT4KKzxib2R5PgorPHA+QnVnIDxhIGhyZWY9Imh0dHA6Ly93
ZWJraXQub3JnL2IvMTAzNDc3Ij4xMDM0Nzc8L2E+OiBNYWtlCitOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cGFyZW50UmVuZGVyZXIgYW5kIG5leHRSZW5kZXJlciB0b3AgbGF5ZXIgYXdhcmUKKzxwPlRo
ZSB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBjZW50ZXIg
b2YgdGhlIHZpZXdwb3J0LgorPGRpdj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8
L2Rpdj4KKzxzY3JpcHQ+Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nJykuc2hvd01v
ZGFsKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1zaWJsaW5nLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1k
aWFsb2ctc2libGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZDNiOWRlNTIwMjg4Yjdh
ZDIwZjNkMzE2NmRiYmJiZjllNDhkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctc2libGluZy1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KK2RpYWxvZyB7
CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgYm9yZGVyLWNvbG9yOiBncmVlbjsKK30KKzwv
c3R5bGU+Cis8Ym9keT4KKzxwPkJ1ZyA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzQ3
NyI+MTAzNDc3PC9hPjogTWFrZQorTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRlcmVy
IGFuZCBuZXh0UmVuZGVyZXIgdG9wIGxheWVyIGF3YXJlCis8cD5UaGUgdGVzdCBwYXNzZXMgaWYg
eW91IHNlZSBhIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydC4K
KzxkaWFsb2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9t
b2RhbC1kaWFsb2ctc2libGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxv
Z0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2JkNWQ2MGM5
NTUyYTI0Yzk2ZjNmOTg5ODQ5ODcxYTg0ZWE3MWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLXNpYmxpbmcuaHRt
bApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERp
YWxvZ0VsZW1lbnRFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+CitkaWFsb2cgewor
ICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIGJvcmRlci1jb2xvcjogZ3JlZW47Cit9Cis8L3N0
eWxlPgorPGJvZHk+Cis8cD5CdWcgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi8xMDM0Nzci
PjEwMzQ3NzwvYT46IE1ha2UKK05vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlciBh
bmQgbmV4dFJlbmRlcmVyIHRvcCBsYXllciBhd2FyZQorPHA+VGhlIHRlc3QgcGFzc2VzIGlmIHlv
dSBzZWUgYSBncmVlbiByZWN0YW5nbGUgaW4gdGhlIGNlbnRlciBvZiB0aGUgdmlld3BvcnQuCis8
ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lIiBpZD0iZGl2Ij48L2Rpdj4KKzxkaWFsb2cgaWQ9ImRp
YWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxv
ZycpLnNob3dNb2RhbCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLm9mZnNl
dFRvcDsgIC8vIGZvcmNlIGEgbGF5b3V0L3JlbmRlcmVyIGNyZWF0aW9uCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZGl2Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>