<?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>85421</bug_id>
          
          <creation_ts>2012-05-02 15:02:59 -0700</creation_ts>
          <short_desc>[chromium] Changes to layer tree structure from the public API need to be tracked properly</short_desc>
          <delta_ts>2012-05-04 17:37:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>derat</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>614706</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 15:02:59 -0700</bug_when>
    <thetext>When the layer tree is explicitly manipulates by outside code (such as aura), it should be considered as damage.   This is a unique case because it is (for now?) the only property change that comes from the main thread without needing a repaint, and that&apos;s also why this bug did not arise until Aura is now trying to manipulate the layer tree though they don&apos;t need re-painting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614723</commentid>
    <comment_count>1</comment_count>
      <attachid>139891</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 15:26:29 -0700</bug_when>
    <thetext>Created attachment 139891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614724</commentid>
    <comment_count>2</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 15:28:20 -0700</bug_when>
    <thetext>Antoine, if this needs to land ASAP, then we may need to find another reviewer since they are out this week =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614731</commentid>
    <comment_count>3</comment_count>
      <attachid>139891</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-02 15:41:07 -0700</bug_when>
    <thetext>Comment on attachment 139891
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:530
&gt; +        layer-&gt;noteLayerPropertyChangedForSubtree();

I would suggest putting a differently named method on the CCLayerImpl public API that is specific to this. layer-&gt;setSubtreeStructureHasChanged()? And just have it call the note method so it can remain private. Wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614732</commentid>
    <comment_count>4</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 15:43:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 139891 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139891&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:530
&gt; &gt; +        layer-&gt;noteLayerPropertyChangedForSubtree();
&gt; 
&gt; I would suggest putting a differently named method on the CCLayerImpl public API that is specific to this. layer-&gt;setSubtreeStructureHasChanged()? And just have it call the note method so it can remain private. Wdyt?

The crazy thing is that I toyed with that idea and concluded that if I did that, reviewers would request me to just simplify it the other way. =)

I&apos;m ok with doing it that way, though, it would be more consistent with other pushPropertiesTo methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614738</commentid>
    <comment_count>5</comment_count>
      <attachid>139891</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-02 15:48:57 -0700</bug_when>
    <thetext>Comment on attachment 139891
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:530
&gt;&gt;&gt; +        layer-&gt;noteLayerPropertyChangedForSubtree();
&gt;&gt; 
&gt;&gt; I would suggest putting a differently named method on the CCLayerImpl public API that is specific to this. layer-&gt;setSubtreeStructureHasChanged()? And just have it call the note method so it can remain private. Wdyt?
&gt; 
&gt; The crazy thing is that I toyed with that idea and concluded that if I did that, reviewers would request me to just simplify it the other way. =)
&gt; 
&gt; I&apos;m ok with doing it that way, though, it would be more consistent with other pushPropertiesTo methods.

Haha, damned if you do...

Everything else looks good, except the test. The current test adds + removes, and then you check for property changes. Can you have a test that makes sure both add and remove work as intended individually?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614759</commentid>
    <comment_count>6</comment_count>
      <attachid>139891</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-02 16:06:09 -0700</bug_when>
    <thetext>Comment on attachment 139891
Patch

Can you explain a little bit more what this bug is about? It sounds like the problem is that Aura is reparenting layers (that don&apos;t need repainting, but just are moved to a different part of the tree), but damage tracking somehow missed this, so these changes get scissored out during partial swap.

I&apos;m a little confused, though. I thought the damage tracker already handled layers that moved (in space), were just added, or were just removed.  What makes this case need to be explicitly marked?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614770</commentid>
    <comment_count>7</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 16:12:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 139891 [details])
&gt; Can you explain a little bit more what this bug is about? It sounds like the problem is that Aura is reparenting layers (that don&apos;t need repainting, but just are moved to a different part of the tree), but damage tracking somehow missed this, so these changes get scissored out during partial swap.
&gt; 
&gt; I&apos;m a little confused, though. I thought the damage tracker already handled layers that moved (in space), were just added, or were just removed.  What makes this case need to be explicitly marked?

You&apos;re exactly right, Aura is &quot;reparenting&quot; layers, but its doing so in an effort to just re-order the layers in the tree.  So, in this case all layers remain in the tree, nothing has any other property change that is already being tracked, nothing needs repainting, the only thing going on is that the children just get re-ordered.  That change wasn&apos;t propagating to damage tracking.

Someone has an upcoming Aura patch that may want to do this, for example when mousing over the window&apos;s task icon, the window would rise to the top as a nifty UI feature.  That&apos;s when we found this issue, and it got reported in http://code.google.com/p/chromium/issues/detail?id=125855

Does that clear it up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614776</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-02 16:15:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Everything else looks good, except the test. The current test adds + removes, and then you check for property changes. Can you have a test that makes sure both add and remove work as intended individually?

What if you removed a layer from parent A and added it to parent B, where A and B are at different positions. Would this do the right thing?

How come we don&apos;t have a problem when WebKit removed layers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614778</commentid>
    <comment_count>9</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 16:18:05 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #5)
&gt; &gt; Everything else looks good, except the test. The current test adds + removes, and then you check for property changes. Can you have a test that makes sure both add and remove work as intended individually?
&gt; 
&gt; What if you removed a layer from parent A and added it to parent B, where A and B are at different positions. Would this do the right thing?
&gt; 
&gt; How come we don&apos;t have a problem when WebKit removed layers?

The way this patch works, it damages the entire subtree (where the parent is the root, so the parent gets damaged, too) whenever a child is added, or whenever a child is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614786</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-02 16:26:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Everything else looks good, except the test. The current test adds + removes, and then you check for property changes. Can you have a test that makes sure both add and remove work as intended individually?
&gt; &gt; 
&gt; &gt; What if you removed a layer from parent A and added it to parent B, where A and B are at different positions. Would this do the right thing?
&gt; &gt; 
&gt; &gt; How come we don&apos;t have a problem when WebKit removed layers?
&gt; 
&gt; The way this patch works, it damages the entire subtree (where the parent is the root, so the parent gets damaged, too) whenever a child is added, or whenever a child is removed.

I was imagining the child is not contained within the parent&apos;s bounds, it seems like it would miss the layer where it was removed from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614793</commentid>
    <comment_count>11</comment_count>
      <attachid>139909</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 16:33:10 -0700</bug_when>
    <thetext>Created attachment 139909
Addressed reviewers comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614796</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-02 16:37:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 139891 [details] [details])
&gt; &gt; Can you explain a little bit more what this bug is about? It sounds like the problem is that Aura is reparenting layers (that don&apos;t need repainting, but just are moved to a different part of the tree), but damage tracking somehow missed this, so these changes get scissored out during partial swap.
&gt; &gt; 
&gt; &gt; I&apos;m a little confused, though. I thought the damage tracker already handled layers that moved (in space), were just added, or were just removed.  What makes this case need to be explicitly marked?
&gt; 
&gt; You&apos;re exactly right, Aura is &quot;reparenting&quot; layers, but its doing so in an effort to just re-order the layers in the tree.  So, in this case all layers remain in the tree, nothing has any other property change that is already being tracked, nothing needs repainting, the only thing going on is that the children just get re-ordered.  That change wasn&apos;t propagating to damage tracking.

Oh, I see.  When you change the ordering of children, the draw order changes for that entire subtree.  No layers get removed or added and no positions change from the perspective of the damage tracker, so you need to mark that subtree as damaged to pick up that change.  Sorry for my confusion; that wasn&apos;t really clear from the description of this patch or from what the unit tests are doing.

Why do you mark the parent as being damaged?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614809</commentid>
    <comment_count>13</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-02 16:43:39 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; Everything else looks good, except the test. The current test adds + removes, and then you check for property changes. Can you have a test that makes sure both add and remove work as intended individually?
&gt; &gt; &gt; 
&gt; &gt; &gt; What if you removed a layer from parent A and added it to parent B, where A and B are at different positions. Would this do the right thing?
&gt; &gt; &gt; 
&gt; &gt; &gt; How come we don&apos;t have a problem when WebKit removed layers?
&gt; &gt; 
&gt; &gt; The way this patch works, it damages the entire subtree (where the parent is the root, so the parent gets damaged, too) whenever a child is added, or whenever a child is removed.
&gt; 
&gt; I was imagining the child is not contained within the parent&apos;s bounds, it seems like it would miss the layer where it was removed from?

Here&apos;s the breakdown of possible scenarios:

Within one frame, a child is added:  damage tracker notices its a new area and considers it damaged no matter what.

Within one frame, a child is removed: damage tracker notices this area was tracked previously but no longer exists, and considers it damaged.

Within one frame, the same child is removed, and then added somewhere else: the damage tracker did not notice this, and there&apos;s no clear way to notice it.  This is a property change that has to be tracked when the tree is manipulated.

Its very likely damaging the entire subtree is conservative, but personally I don&apos;t think this is something we need to take risks to aggressively optimize?


(In reply to comment #12)
&gt; 
&gt; Why do you mark the parent as being damaged?


Good question =)  Seems like its not needed.  I can submit a new patch that uses noteLayerPropertyChangedForDescendants() instead of noteLayerPropertyChangedForSubtree().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615578</commentid>
    <comment_count>14</comment_count>
      <attachid>140083</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-03 13:50:42 -0700</bug_when>
    <thetext>Created attachment 140083
Addressed reviewers comments

Tested on linux layout tests and unit tests, no obvious regressions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615595</commentid>
    <comment_count>15</comment_count>
      <attachid>140083</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-03 14:03:18 -0700</bug_when>
    <thetext>Comment on attachment 140083
Addressed reviewers comments

Thanks, the test looks nicer, and I can see why this will work for this Aura scenario. I think I&apos;ve convinced myself that this should work for any future restacking Aura might want to do, so yay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615807</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Erat">derat</who>
    <bug_when>2012-05-03 17:18:53 -0700</bug_when>
    <thetext>Confirming that the third patch appears to fix the issue that I initially reported in the chromium bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615825</commentid>
    <comment_count>17</comment_count>
      <attachid>140132</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-03 17:34:27 -0700</bug_when>
    <thetext>Created attachment 140132
Same patch updated to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616400</commentid>
    <comment_count>18</comment_count>
      <attachid>140132</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-04 10:45:46 -0700</bug_when>
    <thetext>Comment on attachment 140132
Same patch updated to tip of tree

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Unit test added to TreeSynchronizerTest.

Like layout tests, can you call out the unit test you added here, e.g. &quot;Test: TreeSynchronizerTest.syncSimpleTreeAndTrackChangesProperly&quot; so that if it starts failing it&apos;s a lot more obvious that it&apos;s related to this change?

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:177
&gt; +    m_subtreeStructureHasChanged = true;

This still seems overly permissive to me.  Any time you remove one layer from a parent this will damage all of its children, even though you really want to damage just one child subtree, both in the case that it gets removed permanently or in the case that it gets reinserted into the same parent in a different place?

Maybe this flag should be on the child (in setParent) and not on the parent?

&gt; Source/WebKit/chromium/tests/TreeSynchronizerTest.cpp:201
&gt; +TEST(TreeSynchronizerTest, syncSimpleTreeAndTrackChangesProperly)

Sorry to be picky, but I have a few test nits here:

This test doesn&apos;t actually seem to be testing the scenario that this bug is about, i.e. removing and reinserting a layer.  It tests removing and adding but not both.

Can you test the result and not the implementation? In other words, removing or inserting or removing/reinserting a layer should cause damage, regardless of what internal flags are used to track it.  I think somebody should be able to change the implementation and verify that the test still passes.

I prefer finer test granularity rather than sticking a bunch of cases in the same test. If you don&apos;t want to repeat yourself, you can use a macro or TEST_F. That way when there&apos;s failure, you know that trackLayerRemoved failed vs. trackLayerReinserted just from name alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616412</commentid>
    <comment_count>19</comment_count>
      <attachid>140132</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-04 10:49:00 -0700</bug_when>
    <thetext>Comment on attachment 140132
Same patch updated to tip of tree

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:177
&gt;&gt; +    m_subtreeStructureHasChanged = true;
&gt; 
&gt; This still seems overly permissive to me.  Any time you remove one layer from a parent this will damage all of its children, even though you really want to damage just one child subtree, both in the case that it gets removed permanently or in the case that it gets reinserted into the same parent in a different place?
&gt; 
&gt; Maybe this flag should be on the child (in setParent) and not on the parent?

Moving one layer down may make any number of siblings become visible where it was.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616424</commentid>
    <comment_count>20</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-04 10:55:24 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 140132 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140132&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:177
&gt; &gt;&gt; +    m_subtreeStructureHasChanged = true;
&gt; &gt; 
&gt; &gt; This still seems overly permissive to me.  Any time you remove one layer from a parent this will damage all of its children, even though you really want to damage just one child subtree, both in the case that it gets removed permanently or in the case that it gets reinserted into the same parent in a different place?
&gt; &gt; 
&gt; &gt; Maybe this flag should be on the child (in setParent) and not on the parent?
&gt; 
&gt; Moving one layer down may make any number of siblings become visible where it was.

If you reinsert a layer in a different place in its parent, different siblings will become visible, but only where that subtree used to cover them up.  Damaging that entire subtree during reinsertion seems like it will give the correct target and screen space damage.  Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616442</commentid>
    <comment_count>21</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-04 11:11:19 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 140132 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140132&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:177
&gt; &gt; &gt;&gt; +    m_subtreeStructureHasChanged = true;
&gt; &gt; &gt; 
&gt; &gt; &gt; This still seems overly permissive to me.  Any time you remove one layer from a parent this will damage all of its children, even though you really want to damage just one child subtree, both in the case that it gets removed permanently or in the case that it gets reinserted into the same parent in a different place?
&gt; &gt; &gt; 
&gt; &gt; &gt; Maybe this flag should be on the child (in setParent) and not on the parent?
&gt; &gt; 
&gt; &gt; Moving one layer down may make any number of siblings become visible where it was.
&gt; 
&gt; If you reinsert a layer in a different place in its parent, different siblings will become visible, but only where that subtree used to cover them up.  Damaging that entire subtree during reinsertion seems like it will give the correct target and screen space damage.  Am I missing something?

Probably not missing anything, seems quite correct to me.  I&apos;ll test it out and submit a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616613</commentid>
    <comment_count>22</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-04 13:59:03 -0700</bug_when>
    <thetext>
I&apos;m having second thoughts about the approach I&apos;m taking on this patch.

I think maybe we should be implementing order-dependent damage tracking instead of order-independent tracking.

The damage tracker receives a layer list, and determines what has changed:
  - any layers in the list that have updated their contents
  - any layers in the list whose properties have changed
  - any layers that no longer exist
  - any layers that are new

  ---&gt;  the one that is missing is &quot;changes to the draw order of layers in the list&quot;


The patch I have uploaded now might be an unclean design; it categorizes &quot;changes to draw order&quot; as a &quot;property change of each layer in the subtree&quot;, which seems like a bit of a hacky solution the more I think about it.

SO, there are three options:

(1) continue with this patch

(2) divert and do the order-dependent damage tracking solution (will not happen today, so we will have to merge back to 20 later)

(3) do this patch now just for m20, and make another bug that is intended to remove that and do it correctly as order-dependent damage tracking.


derat@, antoine@, enne@ - please let me know which option is better for your priorities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616642</commentid>
    <comment_count>23</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-05-04 14:15:49 -0700</bug_when>
    <thetext>Whatever you think is best.
I guess the short term issue is fixing the bug. A conservative approach is fine for that.
If you think you can do a better approach but it&apos;ll take longer and have more impact, I suspect it&apos;s better to leave it for post 20, and not try to merge it in.

Hence I&apos;d say (3), unless you have an issue with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616740</commentid>
    <comment_count>24</comment_count>
      <attachid>140342</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-04 15:44:26 -0700</bug_when>
    <thetext>Created attachment 140342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616745</commentid>
    <comment_count>25</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-04 15:46:49 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=140342) [details]
&gt; Patch

A note about the most recent patch:

Superficially it might seem like I didn&apos;t pay attention to reviewer comments, but actually they sort of canceled each other out.

  - flagging the child only allowed us to remove this flag from the removeChild() side.  That way, it turns out we don&apos;t need to test remove/add both.

  - but, to set up the correct scenario for the test case, I still had to set up the tree, and then remove the layer before adding it.  Otherwise there are other property changes that get triggered that make the test a false positive.


As Antoine suggested, we can go for option 3, asking to land this today/asap and I created https://bugs.webkit.org/show_bug.cgi?id=85677 to follow through with a cleaner fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616767</commentid>
    <comment_count>26</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-04 16:05:40 -0700</bug_when>
    <thetext>
I should also point out that Enne and I discussed offline, and it felt like testing all the way from main thread LayerChromium tweaks through the TreeSynchronizer and LTHi to check damage may be a little heavy handed... especially if our intention will be to undo this patch with a cleaner one after m20.

Thanks =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616787</commentid>
    <comment_count>27</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-04 16:19:50 -0700</bug_when>
    <thetext>Patch seems good, I agree with doing this right in DamageTracker after, I&apos;m glad you thought of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616793</commentid>
    <comment_count>28</comment_count>
      <attachid>140342</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-05-04 16:24:12 -0700</bug_when>
    <thetext>Comment on attachment 140342
Patch

I&apos;m with piman.  Let&apos;s land this for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616828</commentid>
    <comment_count>29</comment_count>
      <attachid>140342</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 17:37:22 -0700</bug_when>
    <thetext>Comment on attachment 140342
Patch

Clearing flags on attachment: 140342

Committed r116195: &lt;http://trac.webkit.org/changeset/116195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616829</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-04 17:37:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139891</attachid>
            <date>2012-05-02 15:26:29 -0700</date>
            <delta_ts>2012-05-02 16:33:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85421-20120502152628.patch</filename>
            <type>text/plain</type>
            <size>8135</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIwMDg5NGZlYmE1NTM3
MDI2OTQ5MzE2MmJkOGMyN2JmZDBmMWVlMC4uMGIzMzVlZGRmNTJmOTUzOTkyYWZmNDU4NWRlMWRi
MmZkMzZkODgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA1LTAyICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2hhbmdlcyB0byBsYXllciB0cmVlIHN0cnVjdHVyZSBuZWVkIHRvIGJlIHRyYWNrZWQgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0
ZXN0IGluIFRyZWVTeW5jaHJvbml6ZXJUZXN0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gY292ZXIgdGhp
cyBmaXguCisKKyAgICAgICAgRWFybGllciwgd2Ugd2VyZSByZWx5aW5nIG9uIFdlYkNvcmUgYmVo
YXZpb3IgdGhhdCBhbHdheXMgY2FsbGVkCisgICAgICAgIHNldE5lZWRzRGlzcGxheSB3aGVuZXZl
ciB0aGUgbGF5ZXIgdHJlZSBzdHJ1Y3R1cmUKKyAgICAgICAgY2hhbmdlZC4gSG93ZXZlciwgaW4g
Z2VuZXJhbCBpdCBpcyBtb3JlIGNvcnJlY3QgdG8gY29uc2lkZXIgbGF5ZXIKKyAgICAgICAgdHJl
ZSBjaGFuZ2VzIGV2ZW4gd2hlbiB0aGluZ3MgZG9uJ3QgbmVlZCByZXBhaW50aW5nOyBmb3IgZXhh
bXBsZQorICAgICAgICBBdXJhIGNvZGUgaXMgZW5jb3VudHJpbmcgdGhpcyBidWcgbm93LiBUaGlz
IHBhdGNoIGNvcnJlY3RzIHRoZQorICAgICAgICBjb21wb3NpdG9yIHNvIHRoYXQgbGF5ZXIgdHJl
ZSBzdHJ1Y3R1cmFsIGNoYW5nZXMgYXJlIGNvbnNpZGVyZWQKKyAgICAgICAgcHJvcGVydHkgY2hh
bmdlcywgd2l0aG91dCByZXF1aXJpbmcgdGhhdCBsYXllcnMgbmVlZGVkIHRvIGJlCisgICAgICAg
IHJlcGFpbnRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjppbnNlcnRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorCiAyMDEyLTA1LTAyICBBZGFtIEtsZWlu
ICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoaWxkbGlzdCBtdXRhdGlvbnMgaW4g
c2hhZG93IERPTSBzaG91bGQgYmUgb2JzZXJ2YWJsZSB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY2MDI0OTlhMDMzM2ZiMmQyNmQyNDk2MWI5YmY4
NmZjYzY5N2E5N2MuLjhkNmU1Y2YwMmZmMTU3ZDlmNzE2OWZiMTIzYjhmZDM0ZTJjYTBjNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDUtMDIgIFNo
YXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBDaGFuZ2VzIHRvIGxheWVyIHRyZWUgc3RydWN0dXJlIG5lZWQgdG8gYmUgdHJhY2tlZCBwcm9w
ZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU0
MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNS0wMiAgSm9jaGVuIEVpc2luZ2Vy
ICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBXZWJEb2N1
bWVudDo6cmVmZXJyZXJQb2xpY3koKSB3aGljaCB3cmFwcyB0aGUgc2FtZSBtZXRob2Qgb24gRG9j
dW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDhjNTc1NDk3NjBjMTYzMTRiZTc4ZDBj
OThlODNiZTZhOThjZjlmNS4uMzhkYjU4OGE5N2NiMWM2MjcwMWFkZGY3YTczZjgxYzM1MmRlMWE2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgUGFzc1JlZlB0cjxM
YXllckNocm9taXVtPiBMYXllckNocm9taXVtOjpjcmVhdGUoKQogCiBMYXllckNocm9taXVtOjpM
YXllckNocm9taXVtKCkKICAgICA6IG1fbmVlZHNEaXNwbGF5KGZhbHNlKQorICAgICwgbV9zdWJ0
cmVlU3RydWN0dXJlSGFzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1fbGF5ZXJJZChzX25leHRMYXll
cklkKyspCiAgICAgLCBtX3BhcmVudCgwKQogICAgICwgbV9sYXllclRyZWVIb3N0KDApCkBAIC0x
NTUsNiArMTU2LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjppbnNlcnRDaGlsZChQYXNzUmVmUHRy
PExheWVyQ2hyb21pdW0+IGNoaWxkLCBzaXplX3QgaW5kZXgpCiAgICAgY2hpbGQtPnNldFBhcmVu
dCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmluc2VydChpbmRleCwgY2hpbGQpOwogICAgIHNldE5l
ZWRzQ29tbWl0KCk7CisgICAgbV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCA9IHRydWU7CiB9
CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlRnJvbVBhcmVudCgpCkBAIC0xNzIsNiArMTc0
LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpyZW1vdmVDaGlsZChMYXllckNocm9taXVtKiBjaGls
ZCkKICAgICBjaGlsZC0+c2V0UGFyZW50KDApOwogICAgIG1fY2hpbGRyZW4ucmVtb3ZlKGZvdW5k
SW5kZXgpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CisgICAgbV9zdWJ0cmVlU3RydWN0dXJlSGFz
Q2hhbmdlZCA9IHRydWU7CiB9CiAKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cmVwbGFjZUNoaWxkKExh
eWVyQ2hyb21pdW0qIHJlZmVyZW5jZSwgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBuZXdMYXll
cikKQEAgLTUyMyw2ICs1MjYsOSBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRTY3JvbGxEZWx0YShsYXllci0+
c2Nyb2xsRGVsdGEoKSAtIGxheWVyLT5zZW50U2Nyb2xsRGVsdGEoKSk7CiAgICAgbGF5ZXItPnNl
dFNlbnRTY3JvbGxEZWx0YShJbnRTaXplKCkpOwogCisgICAgaWYgKG1fc3VidHJlZVN0cnVjdHVy
ZUhhc0NoYW5nZWQpCisgICAgICAgIGxheWVyLT5ub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JT
dWJ0cmVlKCk7CisKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5w
dXNoUHJvcGVydGllc1RvKGxheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgaWYgKHJlcGxpY2FMYXll
cigpKQpAQCAtNTMxLDYgKzUzNyw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIt
PnB1c2hBbmltYXRpb25VcGRhdGVzVG8obGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
KTsKIAogICAgIC8vIFJlc2V0IGFueSBzdGF0ZSB0aGF0IHNob3VsZCBiZSBjbGVhcmVkIGZvciB0
aGUgbmV4dCB1cGRhdGUuCisgICAgbV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCA9IGZhbHNl
OwogICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
aW5kZXggZDU5NDg0MDA3ODg5NDc2YWVjZmJjMmIyMzQ2MzAzZDFkNjc1NGIyNS4uYzc2MWIyMGFh
OGFiN2RlODg2NzkyNjg1MGMwYWU4ZWNlYzgwMzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAt
MjY5LDYgKzI2OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVu
IGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KICAgICBib29sIG1fbmVlZHNEaXNwbGF5
OwogCisgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVuIHRoZSBsYXllcidzIGNoaWxkcmVuIGhh
dmUgYmVlbiBtYW5pcHVsYXRlZCwKKyAgICAvLyBjaGFuZ2luZyB0aGUgc3RydWN0dXJlIG9mIHRo
ZSBsYXllciB0cmVlLgorICAgIGJvb2wgbV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZDsKKwog
ICAgIC8vIFRoZSB1cGRhdGUgcmVjdCBpcyB0aGUgcmVnaW9uIG9mIHRoZSBjb21wb3NpdG9yIHJl
c291cmNlIHRoYXQgd2FzIGFjdHVhbGx5IHVwZGF0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCiAgICAg
Ly8gRm9yIGxheWVycyB0aGF0IG1heSBkbyB1cGRhdGluZyBvdXRzaWRlIHRoZSBjb21wb3NpdG9y
J3MgY29udHJvbCAoaS5lLiBwbHVnaW4gbGF5ZXJzKSwgdGhpcyBpbmZvcm1hdGlvbgogICAgIC8v
IGlzIG5vdCBhdmFpbGFibGUgYW5kIHRoZSB1cGRhdGUgcmVjdCB3aWxsIHJlbWFpbiBlbXB0eS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDYwM2FlNTgyOTdmN2JkZWM1OWRkMjFjMjljNzc4Nzcy
YTQ4ZDgxMmMuLjI1OWI5ZTNiYjI0YjJhY2MzMDcxMDA0MTA0MTA2ODdlZWFjNDNjZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaApAQCAtMjMzLDYgKzIzMyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAKICAgICBib29sIGxheWVyUHJvcGVydHlDaGFuZ2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZDsgfQorICAgIHZvaWQgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogICAgIHZvaWQgcmVzZXRBbGxDaGFu
Z2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5nZXQoKTsgfQpAQCAtMjU4LDggKzI1OSw2IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7CiAgICAgdm9pZCBjbGVhckNoaWxkTGlzdCgpOyAvLyBX
YXJuaW5nOiBUaGlzIGRvZXMgbm90IHByZXNlcnZlIHRyZWUgc3RydWN0dXJlIGludmFyaWFudHMg
YW5kIHNvIGlzIG9ubHkgZXhwb3NlZCB0byB0aGUgdHJlZSBzeW5jaHJvbml6ZXIuCiAKLSAgICB2
b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKLQogICAgIC8vIE5vdGUg
Y2FyZWZ1bGx5IHRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBjdXJyZW50IGxheWVyLgogICAgIHZv
aWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yRGVzY2VuZGFudHMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApp
bmRleCAxZjhkZTBkZmJkYTE0M2E2YTJhNzJmNTIwY2Q2MjYwMGViYzkwOGZkLi5iNGEzNTc3NGVj
M2I2ODI2MDUyOGMzMThmNjg1NmJlMDIzNzdlMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApAQCAtMTcwLDcgKzE3
MCw3IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlRnJvbUVtcHR5
KQogICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5
ZXJUcmVlUm9vdC5nZXQoKSk7CiB9CiAKLS8vIENvbnN0cnVjdHMgYSB2ZXJ5IHNpbXBsZSB0cmVl
IGFuZCBzeW5jaHJvbml6ZXMgaXQgYXR0ZW1wdGluZyB0byByZXVzZSBzb21lIGxheWVycworLy8g
Q29uc3RydWN0cyBhIHZlcnkgc2ltcGxlIHRyZWUgYW5kIHN5bmNocm9uaXplcyBpdCBhdHRlbXB0
aW5nIHRvIHJldXNlIHNvbWUgbGF5ZXJzLgogVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3lu
Y1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsOwpAQCAtMTgyLDcgKzE4Miw4IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNTaW1wbGVUcmVlUmV1c2luZ0xheWVycykKIAogICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NM
YXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRy
ZWVSb290LmdldCgpLCBudWxscHRyKTsKICAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXll
clRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOwotCisgICAgY2NMYXllclRy
ZWVSb290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJlZSgpOworICAgIAogICAgIC8v
IEFkZCBhIG5ldyBsYXllciB0byB0aGUgTGF5ZXJDaHJvbWl1bSBzaWRlCiAgICAgbGF5ZXJUcmVl
Um9vdC0+Y2hpbGRyZW4oKVswXS0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgm
Y2NMYXllckRlc3RydWN0aW9uTGlzdCkpOwogICAgIC8vIFJlbW92ZSBvbmUuCkBAIC0xOTUsNiAr
MTk2LDExIEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlUmV1c2lu
Z0xheWVycykKIAogICAgIEFTU0VSVF9FUSgxdSwgY2NMYXllckRlc3RydWN0aW9uTGlzdC5zaXpl
KCkpOwogICAgIEVYUEVDVF9FUShzZWNvbmRDQ0xheWVySWQsIGNjTGF5ZXJEZXN0cnVjdGlvbkxp
c3RbMF0pOworCisgICAgLy8gU3RydWN0dXJhbCBjaGFuZ2VzIG9uIHRoZSBtYWluIHRocmVhZCBz
aG91bGQgYmUgY29uc2lkZXJlZCBwcm9wZXJ0eSBjaGFuZ2VzIG9uIHRoZSBpbXBsIHRocmVhZC4K
KyAgICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkp
OworICAgIEVYUEVDVF9UUlVFKGNjTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+bGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX1RSVUUoY2NMYXllclRyZWVSb290LT5jaGls
ZHJlbigpWzFdLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKIH0KIAogVEVTVChUcmVlU3luY2hy
b25pemVyVGVzdCwgc3luY1NpbXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139909</attachid>
            <date>2012-05-02 16:33:10 -0700</date>
            <delta_ts>2012-05-03 13:50:38 -0700</delta_ts>
            <desc>Addressed reviewers comments</desc>
            <filename>bug-85421-20120502163309.patch</filename>
            <type>text/plain</type>
            <size>9759</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIwMDg5NGZlYmE1NTM3
MDI2OTQ5MzE2MmJkOGMyN2JmZDBmMWVlMC4uZjI5MGMwMWIyOWYxMDJkZDYwOWYwYzFlMTc2YWZl
MDdjMzAzNjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTAyICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2hhbmdlcyB0byBsYXllciB0cmVlIHN0cnVjdHVyZSBuZWVkIHRvIGJlIHRyYWNrZWQgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0
ZXN0IGFkZGVkIHRvIFRyZWVTeW5jaHJvbml6ZXJUZXN0LgorCisgICAgICAgIEVhcmxpZXIsIHdl
IHdlcmUgcmVseWluZyBvbiBXZWJDb3JlIGJlaGF2aW9yIHRoYXQgYWx3YXlzIGNhbGxlZAorICAg
ICAgICBzZXROZWVkc0Rpc3BsYXkgd2hlbmV2ZXIgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlCisg
ICAgICAgIGNoYW5nZWQuIEhvd2V2ZXIsIGluIGdlbmVyYWwgaXQgaXMgbW9yZSBjb3JyZWN0IHRv
IGNvbnNpZGVyIGxheWVyCisgICAgICAgIHRyZWUgY2hhbmdlcyBldmVuIHdoZW4gdGhpbmdzIGRv
bid0IG5lZWQgcmVwYWludGluZzsgZm9yIGV4YW1wbGUKKyAgICAgICAgQXVyYSBjb2RlIGlzIGVu
Y291bnRyaW5nIHRoaXMgYnVnIG5vdy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUKKyAgICAgICAg
Y29tcG9zaXRvciBzbyB0aGF0IGxheWVyIHRyZWUgc3RydWN0dXJhbCBjaGFuZ2VzIGFyZSBjb25z
aWRlcmVkCisgICAgICAgIHByb3BlcnR5IGNoYW5nZXMsIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQg
bGF5ZXJzIG5lZWRlZCB0byBiZQorICAgICAgICByZXBhaW50ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFN1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisKIDIwMTItMDUtMDIgIEFkYW0gS2xlaW4g
IDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hpbGRsaXN0IG11dGF0aW9ucyBpbiBz
aGFkb3cgRE9NIHNob3VsZCBiZSBvYnNlcnZhYmxlIHdpdGggTXV0YXRpb25PYnNlcnZlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjYwMjQ5OWEwMzMzZmIyZDI2ZDI0OTYxYjliZjg2
ZmNjNjk3YTk3Yy4uOGQ2ZTVjZjAyZmYxNTdkOWY3MTY5ZmIxMjNiOGZkMzRlMmNhMGM1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wMiAgU2hh
d24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IENoYW5nZXMgdG8gbGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgbmVlZCB0byBiZSB0cmFja2VkIHByb3Bl
cmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTQy
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTA1LTAyICBKb2NoZW4gRWlzaW5nZXIg
IDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIFdlYkRvY3Vt
ZW50OjpyZWZlcnJlclBvbGljeSgpIHdoaWNoIHdyYXBzIHRoZSBzYW1lIG1ldGhvZCBvbiBEb2N1
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0OGM1NzU0OTc2MGMxNjMxNGJlNzhkMGM5
OGU4M2JlNmE5OGNmOWY1Li4xZTlhN2JhNjMxYTU1ZWRmOTgzZTZhZWQ5MDdjYTMwMGFjYThkYjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTcsNiArNTcsNyBAQCBQYXNzUmVmUHRyPExh
eWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpCiAKIExheWVyQ2hyb21pdW06Okxh
eWVyQ2hyb21pdW0oKQogICAgIDogbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCisgICAgLCBtX3N1YnRy
ZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVy
SWQrKykKICAgICAsIG1fcGFyZW50KDApCiAgICAgLCBtX2xheWVyVHJlZUhvc3QoMCkKQEAgLTE1
NSw2ICsxNTYsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06Omluc2VydENoaWxkKFBhc3NSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQsIHNpemVfdCBpbmRleCkKICAgICBjaGlsZC0+c2V0UGFyZW50
KHRoaXMpOwogICAgIG1fY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBjaGlsZCk7CiAgICAgc2V0TmVl
ZHNDb21taXQoKTsKKyAgICBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkID0gdHJ1ZTsKIH0K
IAogdm9pZCBMYXllckNocm9taXVtOjpyZW1vdmVGcm9tUGFyZW50KCkKQEAgLTE3Miw2ICsxNzQs
NyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnJlbW92ZUNoaWxkKExheWVyQ2hyb21pdW0qIGNoaWxk
KQogICAgIGNoaWxkLT5zZXRQYXJlbnQoMCk7CiAgICAgbV9jaGlsZHJlbi5yZW1vdmUoZm91bmRJ
bmRleCk7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKKyAgICBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXND
aGFuZ2VkID0gdHJ1ZTsKIH0KIAogdm9pZCBMYXllckNocm9taXVtOjpyZXBsYWNlQ2hpbGQoTGF5
ZXJDaHJvbWl1bSogcmVmZXJlbmNlLCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IG5ld0xheWVy
KQpAQCAtNTIzLDYgKzUyNiw4IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5z
Y3JvbGxEZWx0YSgpIC0gbGF5ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0
U2VudFNjcm9sbERlbHRhKEludFNpemUoKSk7CiAKKyAgICBsYXllci0+c2V0U3VidHJlZVN0cnVj
dHVyZUhhc0NoYW5nZWQobV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCk7CisKICAgICBpZiAo
bWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
LT5tYXNrTGF5ZXIoKSk7CiAgICAgaWYgKHJlcGxpY2FMYXllcigpKQpAQCAtNTMxLDYgKzUzNiw3
IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5
ZXIpCiAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXItPnB1c2hBbmltYXRpb25VcGRhdGVz
VG8obGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsKIAogICAgIC8vIFJlc2V0IGFu
eSBzdGF0ZSB0aGF0IHNob3VsZCBiZSBjbGVhcmVkIGZvciB0aGUgbmV4dCB1cGRhdGUuCisgICAg
bV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCA9IGZhbHNlOwogICAgIG1fdXBkYXRlUmVjdCA9
IEZsb2F0UmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZDU5NDg0MDA3ODg5NDc2
YWVjZmJjMmIyMzQ2MzAzZDFkNjc1NGIyNS4uYzc2MWIyMGFhOGFiN2RlODg2NzkyNjg1MGMwYWU4
ZWNlYzgwMzkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjY5LDYgKzI2OSwxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGlu
Zy91cGRhdGluZy4KICAgICBib29sIG1fbmVlZHNEaXNwbGF5OwogCisgICAgLy8gVGhpcyBmbGFn
IGlzIHNldCB3aGVuIHRoZSBsYXllcidzIGNoaWxkcmVuIGhhdmUgYmVlbiBtYW5pcHVsYXRlZCwK
KyAgICAvLyBjaGFuZ2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZSBsYXllciB0cmVlLgorICAgIGJv
b2wgbV9zdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZDsKKwogICAgIC8vIFRoZSB1cGRhdGUgcmVj
dCBpcyB0aGUgcmVnaW9uIG9mIHRoZSBjb21wb3NpdG9yIHJlc291cmNlIHRoYXQgd2FzIGFjdHVh
bGx5IHVwZGF0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuCiAgICAgLy8gRm9yIGxheWVycyB0aGF0IG1h
eSBkbyB1cGRhdGluZyBvdXRzaWRlIHRoZSBjb21wb3NpdG9yJ3MgY29udHJvbCAoaS5lLiBwbHVn
aW4gbGF5ZXJzKSwgdGhpcyBpbmZvcm1hdGlvbgogICAgIC8vIGlzIG5vdCBhdmFpbGFibGUgYW5k
IHRoZSB1cGRhdGUgcmVjdCB3aWxsIHJlbWFpbiBlbXB0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAppbmRleCA5YjIzM2FmZWMzODU3ZDNkZjExNDU5YzhiYzEwYWIyYmI3OWY5OGYxLi4zMDkwZGY1
OWUzYjY5ODRiODc0M2ZlMmRjYjBjNzYxMTAxN2MzMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCkBAIC0yOTYsNiArMjk2LDEzIEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXllcihUZXh0
U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKICAgICAgICAgbV9jaGlsZHJlbltpXS0+ZHVt
cExheWVyKHRzLCBpbmRlbnQrMSk7CiB9CiAKK3ZvaWQgQ0NMYXllckltcGw6OnNldFN1YnRyZWVT
dHJ1Y3R1cmVIYXNDaGFuZ2VkKGJvb2wgc3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQpCit7Cisg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBzdG9yZSB0aGlzIGZsYWc7IHdlIG9ubHkgbmVlZCB0byB0
cmFjayB0aGF0IHRoZSBjaGFuZ2Ugb2NjdXJyZWQuCisgICAgaWYgKHN1YnRyZWVTdHJ1Y3R1cmVI
YXNDaGFuZ2VkKQorICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7
Cit9CisKIHZvaWQgQ0NMYXllckltcGw6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRy
ZWUoKQogewogICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmgKaW5kZXggNjAzYWU1ODI5N2Y3YmRlYzU5ZGQyMWMyOWM3Nzg3NzJhNDhkODEyYy4uMWM5
ZDMxNGRhYmVkMDQwNTVmZmYyNjM5MTNjYmQzMzZiNDIwMzE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCkBAIC0yMzIsNiArMjMyLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxheWVyVHJlZUFz
VGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRTdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZChi
b29sKTsKKwogICAgIGJvb2wgbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBt
X2xheWVyUHJvcGVydHlDaGFuZ2VkOyB9CiAgICAgdm9pZCByZXNldEFsbENoYW5nZVRyYWNraW5n
Rm9yU3VidHJlZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VHJlZVN5bmNocm9uaXplclRlc3QuY3BwCmluZGV4IDFmOGRlMGRmYmRhMTQzYTZhMmE3MmY1MjBj
ZDYyNjAwZWJjOTA4ZmQuLmQ3N2IwM2VlYjFkOGZlYmI3NWMxMDBjZmE1YTE1YTRmYTgzYWUyMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9uaXpl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5bmNocm9u
aXplclRlc3QuY3BwCkBAIC0xOTcsNiArMTk3LDQ5IEBAIFRFU1QoVHJlZVN5bmNocm9uaXplclRl
c3QsIHN5bmNTaW1wbGVUcmVlUmV1c2luZ0xheWVycykKICAgICBFWFBFQ1RfRVEoc2Vjb25kQ0NM
YXllcklkLCBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0WzBdKTsKIH0KIAorLy8gQ29uc3RydWN0cyBh
IHZlcnkgc2ltcGxlIHRyZWUgYW5kIGNoZWNrcyB0aGF0IHN0cnVjdHVyYWwgY2hhbmdlcyB0byB0
aGUgdHJlZSBhcmUgdHJhY2tlZCBwcm9wZXJseS4KK1RFU1QoVHJlZVN5bmNocm9uaXplclRlc3Qs
IHN5bmNTaW1wbGVUcmVlQW5kVHJhY2tDaGFuZ2VzUHJvcGVybHkpCit7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGw7CisgICAgVmVjdG9yPGludD4gY2NMYXllckRlc3RydWN0aW9u
TGlzdDsKKworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290ID0gTW9ja0xh
eWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCk7CisgICAgbGF5ZXJU
cmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3Ry
dWN0aW9uTGlzdCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKE1vY2tMYXllckNocm9t
aXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKKworICAgIE93blB0cjxDQ0xh
eWVySW1wbD4gY2NMYXllclRyZWVSb290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVU
cmVlcyhsYXllclRyZWVSb290LmdldCgpLCBudWxscHRyKTsKKyAgICBleHBlY3RUcmVlc0FyZUlk
ZW50aWNhbChsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworICAg
IGNjTGF5ZXJUcmVlUm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKKwor
ICAgIC8vIENBU0UgMTogQWRkaW5nIGEgbmV3IGxheWVyIHRvIHRoZSBMYXllckNocm9taXVtIHNp
ZGUgc2hvdWxkIGJlIHRyYWNrZWQgcHJvcGVydGx5IGJ5IHRoZSBpbXBsIHRocmVhZC4KKyAgICBs
YXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7CisKKyAgICAvLyBTeW5jaHJvbml6ZS4K
KyAgICBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVz
KGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5yZWxlYXNlKCkpOworICAgIGV4
cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9v
dC5nZXQoKSk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBpbXBsIHRocmVhZCBwcm9wZXJseSB0
cmFja2VkIHRoZSBjaGFuZ2UuIFRoZSByb290IGFuZCBzZWNvbmQgY2hpbGQKKyAgICAvLyBzaG91
bGQgcmVtYWluIHVuLWRhbWFnZWQsIHdoaWxlIHRoZSBmaXJzdCBjaGlsZCBhbmQgdGhlIG5ldyBn
cmFuZGNoaWxkIHNob3VsZCBiZQorICAgIC8vIGRhbWFnZWQuCisgICAgRVhQRUNUX0ZBTFNFKGNj
TGF5ZXJUcmVlUm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGNjTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVsxXS0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7
CisgICAgRVhQRUNUX1RSVUUoY2NMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5sYXllclBy
b3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3QtPmNoaWxk
cmVuKClbMF0tPmNoaWxkcmVuKClbMF0tPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworCisgICAg
Ly8gQ0FTRSAyOiBSZW1vdmluZyBhIGxheWVyIGZyb20gdGhlIExheWVyQ2hyb21pdW0gc2lkZSBz
aG91bGQgYmUgdHJhY2tlZCBwcm9wZXJ0bHkgYnkgdGhlIGltcGwgdGhyZWFkLgorICAgIGNjTGF5
ZXJUcmVlUm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKKyAgICBsYXll
clRyZWVSb290LT5jaGlsZHJlbigpWzFdLT5yZW1vdmVGcm9tUGFyZW50KCk7CisKKyAgICAvLyBT
eW5jaHJvbml6ZS4KKyAgICBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5j
aHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5yZWxlYXNl
KCkpOworICAgIGV4cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNj
TGF5ZXJUcmVlUm9vdC5nZXQoKSk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBpbXBsIHRocmVh
ZCBwcm9wZXJseSB0cmFja2VkIHRoZSBjaGFuZ2UuCisgICAgRVhQRUNUX1RSVUUoY2NMYXllclRy
ZWVSb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjY0xheWVy
VHJlZVJvb3QtPmNoaWxkcmVuKClbMF0tPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVY
UEVDVF9UUlVFKGNjTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+
bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7Cit9CisKIFRFU1QoVHJlZVN5bmNocm9uaXplclRlc3Qs
IHN5bmNTaW1wbGVUcmVlQW5kUHJvcGVydGllcykKIHsKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140083</attachid>
            <date>2012-05-03 13:50:42 -0700</date>
            <delta_ts>2012-05-03 17:34:18 -0700</delta_ts>
            <desc>Addressed reviewers comments</desc>
            <filename>bug-85421-20120503135041.patch</filename>
            <type>text/plain</type>
            <size>9866</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1OTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzE1ZjcxM2NmNjQyNDYy
NzYyYWZkNDczNmI0NWUzM2YwZjkzMDNlOS4uZTIxMTEzNjRjZGRkZjkwYjBmMDBkYmQ2ODEyZTdh
YmViMWUxOWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTAyICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2hhbmdlcyB0byBsYXllciB0cmVlIHN0cnVjdHVyZSBuZWVkIHRvIGJlIHRyYWNrZWQgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0
ZXN0IGFkZGVkIHRvIFRyZWVTeW5jaHJvbml6ZXJUZXN0LgorCisgICAgICAgIEVhcmxpZXIsIHdl
IHdlcmUgcmVseWluZyBvbiBXZWJDb3JlIGJlaGF2aW9yIHRoYXQgYWx3YXlzIGNhbGxlZAorICAg
ICAgICBzZXROZWVkc0Rpc3BsYXkgd2hlbmV2ZXIgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlCisg
ICAgICAgIGNoYW5nZWQuIEhvd2V2ZXIsIGluIGdlbmVyYWwgaXQgaXMgbW9yZSBjb3JyZWN0IHRv
IGNvbnNpZGVyIGxheWVyCisgICAgICAgIHRyZWUgY2hhbmdlcyBldmVuIHdoZW4gdGhpbmdzIGRv
bid0IG5lZWQgcmVwYWludGluZzsgZm9yIGV4YW1wbGUKKyAgICAgICAgQXVyYSBjb2RlIGlzIGVu
Y291bnRyaW5nIHRoaXMgYnVnIG5vdy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUKKyAgICAgICAg
Y29tcG9zaXRvciBzbyB0aGF0IGxheWVyIHRyZWUgc3RydWN0dXJhbCBjaGFuZ2VzIGFyZSBjb25z
aWRlcmVkCisgICAgICAgIHByb3BlcnR5IGNoYW5nZXMsIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQg
bGF5ZXJzIG5lZWRlZCB0byBiZQorICAgICAgICByZXBhaW50ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFN1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisKIDIwMTItMDUtMDMgIEZhZHkgU2FtdWVs
ICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZpbmcgbGluZSBpbiBjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzIHRoYXQgZW5mb3JjZXMgYSBtaW5pbXVtIHNjYWxlIGZhY3Rv
ciB0byBuZXZlciBhbGxvdyB6b29taW5nIG91dCBtb3JlIHRoYW4gdmlld3BvcnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZWE5MGYyMWYxYjViM2JmMTkzN2FhY2RkNjMzOTJlMDU2OGI2
YWYyOC4uODk3Zjg2M2Q2YjQ3Yjg1MWFhM2QwNmUyYzgyZmJjY2UyNmMxZGRkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wMiAgU2hhd24gU2lu
Z2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENoYW5n
ZXMgdG8gbGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgbmVlZCB0byBiZSB0cmFja2VkIHByb3Blcmx5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTQyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVHJl
ZVN5bmNocm9uaXplclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OlRFU1QpOgorCiAyMDEyLTA1LTAzICBBbnRvbnkgU2FyZ2VudCAgPGFzYXJn
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgbWV0aG9kcyB0byBjcmVhdGUgV2ViQXJy
YXlCdWZmZXIvV2ViQXJyYXlCdWZmZXJWaWV3IGZyb20gdjggb2JqZWN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcAppbmRleCA0OGM1NzU0OTc2MGMxNjMxNGJlNzhkMGM5OGU4M2JlNmE5OGNmOWY1Li4x
ZTlhN2JhNjMxYTU1ZWRmOTgzZTZhZWQ5MDdjYTMwMGFjYThkYjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmNwcApAQCAtNTcsNiArNTcsNyBAQCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpCiAKIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAg
IDogbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCisgICAgLCBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFu
Z2VkKGZhbHNlKQogICAgICwgbV9sYXllcklkKHNfbmV4dExheWVySWQrKykKICAgICAsIG1fcGFy
ZW50KDApCiAgICAgLCBtX2xheWVyVHJlZUhvc3QoMCkKQEAgLTE1NSw2ICsxNTYsNyBAQCB2b2lk
IExheWVyQ2hyb21pdW06Omluc2VydENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGQsIHNpemVfdCBpbmRleCkKICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwogICAgIG1fY2hp
bGRyZW4uaW5zZXJ0KGluZGV4LCBjaGlsZCk7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKKyAgICBt
X3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkID0gdHJ1ZTsKIH0KIAogdm9pZCBMYXllckNocm9t
aXVtOjpyZW1vdmVGcm9tUGFyZW50KCkKQEAgLTE3Miw2ICsxNzQsNyBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnJlbW92ZUNoaWxkKExheWVyQ2hyb21pdW0qIGNoaWxkKQogICAgIGNoaWxkLT5zZXRQ
YXJlbnQoMCk7CiAgICAgbV9jaGlsZHJlbi5yZW1vdmUoZm91bmRJbmRleCk7CiAgICAgc2V0TmVl
ZHNDb21taXQoKTsKKyAgICBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkID0gdHJ1ZTsKIH0K
IAogdm9pZCBMYXllckNocm9taXVtOjpyZXBsYWNlQ2hpbGQoTGF5ZXJDaHJvbWl1bSogcmVmZXJl
bmNlLCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IG5ld0xheWVyKQpAQCAtNTIzLDYgKzUyNiw4
IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5
ZXIpCiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5
ZXItPnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CiAKKyAgICBsYXllci0+c2V0U3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQobV9z
dWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCk7CisKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAg
ICAgIG1hc2tMYXllcigpLT5wdXNoUHJvcGVydGllc1RvKGxheWVyLT5tYXNrTGF5ZXIoKSk7CiAg
ICAgaWYgKHJlcGxpY2FMYXllcigpKQpAQCAtNTMxLDYgKzUzNiw3IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV9sYXllckFu
aW1hdGlvbkNvbnRyb2xsZXItPnB1c2hBbmltYXRpb25VcGRhdGVzVG8obGF5ZXItPmxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcigpKTsKIAogICAgIC8vIFJlc2V0IGFueSBzdGF0ZSB0aGF0IHNob3Vs
ZCBiZSBjbGVhcmVkIGZvciB0aGUgbmV4dCB1cGRhdGUuCisgICAgbV9zdWJ0cmVlU3RydWN0dXJl
SGFzQ2hhbmdlZCA9IGZhbHNlOwogICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggZDU5NDg0MDA3ODg5NDc2YWVjZmJjMmIyMzQ2MzAzZDFk
Njc1NGIyNS4uYzc2MWIyMGFhOGFiN2RlODg2NzkyNjg1MGMwYWU4ZWNlYzgwMzkwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtMjY5LDYgKzI2OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhp
cyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91cGRhdGluZy4KICAgICBi
b29sIG1fbmVlZHNEaXNwbGF5OwogCisgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVuIHRoZSBs
YXllcidzIGNoaWxkcmVuIGhhdmUgYmVlbiBtYW5pcHVsYXRlZCwKKyAgICAvLyBjaGFuZ2luZyB0
aGUgc3RydWN0dXJlIG9mIHRoZSBsYXllciB0cmVlLgorICAgIGJvb2wgbV9zdWJ0cmVlU3RydWN0
dXJlSGFzQ2hhbmdlZDsKKwogICAgIC8vIFRoZSB1cGRhdGUgcmVjdCBpcyB0aGUgcmVnaW9uIG9m
IHRoZSBjb21wb3NpdG9yIHJlc291cmNlIHRoYXQgd2FzIGFjdHVhbGx5IHVwZGF0ZWQgYnkgdGhl
IGNvbXBvc2l0b3IuCiAgICAgLy8gRm9yIGxheWVycyB0aGF0IG1heSBkbyB1cGRhdGluZyBvdXRz
aWRlIHRoZSBjb21wb3NpdG9yJ3MgY29udHJvbCAoaS5lLiBwbHVnaW4gbGF5ZXJzKSwgdGhpcyBp
bmZvcm1hdGlvbgogICAgIC8vIGlzIG5vdCBhdmFpbGFibGUgYW5kIHRoZSB1cGRhdGUgcmVjdCB3
aWxsIHJlbWFpbiBlbXB0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA5YjIzM2FmZWMz
ODU3ZDNkZjExNDU5YzhiYzEwYWIyYmI3OWY5OGYxLi4xZWU2MGRhNTNiMGQzYjM0ZTg2MDZlY2My
ZTllN2NlNDA5YjE0ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0yOTYsNiArMjk2
LDEzIEBAIHZvaWQgQ0NMYXllckltcGw6OmR1bXBMYXllcihUZXh0U3RyZWFtJiB0cywgaW50IGlu
ZGVudCkgY29uc3QKICAgICAgICAgbV9jaGlsZHJlbltpXS0+ZHVtcExheWVyKHRzLCBpbmRlbnQr
MSk7CiB9CiAKK3ZvaWQgQ0NMYXllckltcGw6OnNldFN1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2Vk
KGJvb2wgc3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQpCit7CisgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBzdG9yZSB0aGlzIGZsYWc7IHdlIG9ubHkgbmVlZCB0byB0cmFjayB0aGF0IHRoZSBjaGFu
Z2Ugb2NjdXJyZWQuCisgICAgaWYgKHN1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKQorICAgICAg
ICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cygpOworfQorCiB2b2lkIEND
TGF5ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCkKIHsKICAgICBt
X2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDYw
M2FlNTgyOTdmN2JkZWM1OWRkMjFjMjljNzc4NzcyYTQ4ZDgxMmMuLjFjOWQzMTRkYWJlZDA0MDU1
ZmZmMjYzOTEzY2JkMzM2YjQyMDMxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMjMyLDYg
KzIzMiw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsK
IAorICAgIHZvaWQgc2V0U3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQoYm9vbCk7CisKICAgICBi
b29sIGxheWVyUHJvcGVydHlDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5
Q2hhbmdlZDsgfQogICAgIHZvaWQgcmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hyb25p
emVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6
ZXJUZXN0LmNwcAppbmRleCAxZjhkZTBkZmJkYTE0M2E2YTJhNzJmNTIwY2Q2MjYwMGViYzkwOGZk
Li4zMDY3ODU4MTE3M2EzMWEzMzA5NDlkOGY4YjIxN2IzMWQzODQxMDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcApA
QCAtMTk3LDYgKzE5Nyw1MSBAQCBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxl
VHJlZVJldXNpbmdMYXllcnMpCiAgICAgRVhQRUNUX0VRKHNlY29uZENDTGF5ZXJJZCwgY2NMYXll
ckRlc3RydWN0aW9uTGlzdFswXSk7CiB9CiAKKy8vIENvbnN0cnVjdHMgYSB2ZXJ5IHNpbXBsZSB0
cmVlIGFuZCBjaGVja3MgdGhhdCBzdHJ1Y3R1cmFsIGNoYW5nZXMgdG8gdGhlIHRyZWUgYXJlIHRy
YWNrZWQgcHJvcGVybHkuCitURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJl
ZUFuZFRyYWNrQ2hhbmdlc1Byb3Blcmx5KQoreworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsOworICAgIFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3Q7CisKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IE1vY2tMYXllckNocm9taXVtOjpj
cmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOworICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZDIgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25M
aXN0KTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+Y2hpbGRy
ZW4oKVswXS0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3Ry
dWN0aW9uTGlzdCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMik7CisKKyAg
ICBPd25QdHI8Q0NMYXllckltcGw+IGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6
OnN5bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgbnVsbHB0cik7CisgICAgZXhw
ZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290
LmdldCgpKTsKKworICAgIC8vIENBU0UgMTogUmVtb3ZpbmcgYSBsYXllciBmcm9tIHRoZSBMYXll
ckNocm9taXVtIHNpZGUgc2hvdWxkIGJlIHRyYWNrZWQgcHJvcGVybHkgYnkgdGhlIGltcGwgdGhy
ZWFkLgorICAgIGNjTGF5ZXJUcmVlUm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRy
ZWUoKTsKKyAgICBjaGlsZDItPnJlbW92ZUZyb21QYXJlbnQoKTsKKworICAgIC8vIFN5bmNocm9u
aXplLgorICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5bmNocm9uaXpl
VHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVhc2UoKSk7Cisg
ICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRy
ZWVSb290LmdldCgpKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIGltcGwgdGhyZWFkIHByb3Bl
cmx5IHRyYWNrZWQgdGhlIGNoYW5nZS4gVGhlIHJlbW92ZWQgbGF5ZXIncworICAgIC8vIHNpYmxp
bmdzIChhbmQgc3VidHJlZXMpIHNob3VsZCBiZSBkYW1hZ2VkLgorICAgIEVYUEVDVF9GQUxTRShj
Y0xheWVyVHJlZVJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9UUlVF
KGNjTGF5ZXJUcmVlUm9vdC0+Y2hpbGRyZW4oKVswXS0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7
CisgICAgRVhQRUNUX1RSVUUoY2NMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJl
bigpWzBdLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKworICAgIC8vIENBU0UgMjogQWRkaW5n
IGEgbGF5ZXIgdG8gdGhlIExheWVyQ2hyb21pdW0gc2lkZSBzaG91bGQgYmUgdHJhY2tlZCBwcm9w
ZXJ0bHkgYnkgdGhlIGltcGwgdGhyZWFkLgorICAgIGNjTGF5ZXJUcmVlUm9vdC0+cmVzZXRBbGxD
aGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChj
aGlsZDIpOworCisgICAgLy8gU3luY2hyb25pemUuCisgICAgY2NMYXllclRyZWVSb290ID0gVHJl
ZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xh
eWVyVHJlZVJvb3QucmVsZWFzZSgpKTsKKyAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXll
clRyZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworCisgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgaW1wbCB0aHJlYWQgcHJvcGVybHkgdHJhY2tlZCB0aGUgY2hhbmdlLiBFdmVyeXRo
aW5nIHdvdWxkIHJlbWFpbgorICAgIC8vIHVuLWRhbWFnZWQgZXhjZXB0IHRoZSBuZXcgZ3JhbmRj
aGlsZC4KKyAgICBFWFBFQ1RfRkFMU0UoY2NMYXllclRyZWVSb290LT5sYXllclByb3BlcnR5Q2hh
bmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0t
PmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9UUlVFKGNjTGF5ZXJUcmVlUm9v
dC0+Y2hpbGRyZW4oKVswXS0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX1RS
VUUoY2NMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5sYXllclBy
b3BlcnR5Q2hhbmdlZCgpKTsKK30KKwogVEVTVChUcmVlU3luY2hyb25pemVyVGVzdCwgc3luY1Np
bXBsZVRyZWVBbmRQcm9wZXJ0aWVzKQogewogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140132</attachid>
            <date>2012-05-03 17:34:27 -0700</date>
            <delta_ts>2012-05-04 15:44:22 -0700</delta_ts>
            <desc>Same patch updated to tip of tree</desc>
            <filename>bug-85421-20120503173426.patch</filename>
            <type>text/plain</type>
            <size>9832</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNkZmY0NDBiMDcwZTM2
MWY4NzYxZTVjZDJhZDA5NTdmMzQ2YWRkYy4uYjM3MTIxZTcyNTk0OGFlNmI4N2Y4ZTRiYzdmZGFi
Y2M0YjEzNmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA1LTAyICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2hhbmdlcyB0byBsYXllciB0cmVlIHN0cnVjdHVyZSBuZWVkIHRvIGJlIHRyYWNrZWQgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0
ZXN0IGFkZGVkIHRvIFRyZWVTeW5jaHJvbml6ZXJUZXN0LgorCisgICAgICAgIEVhcmxpZXIsIHdl
IHdlcmUgcmVseWluZyBvbiBXZWJDb3JlIGJlaGF2aW9yIHRoYXQgYWx3YXlzIGNhbGxlZAorICAg
ICAgICBzZXROZWVkc0Rpc3BsYXkgd2hlbmV2ZXIgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlCisg
ICAgICAgIGNoYW5nZWQuIEhvd2V2ZXIsIGluIGdlbmVyYWwgaXQgaXMgbW9yZSBjb3JyZWN0IHRv
IGNvbnNpZGVyIGxheWVyCisgICAgICAgIHRyZWUgY2hhbmdlcyBldmVuIHdoZW4gdGhpbmdzIGRv
bid0IG5lZWQgcmVwYWludGluZzsgZm9yIGV4YW1wbGUKKyAgICAgICAgQXVyYSBjb2RlIGlzIGVu
Y291bnRyaW5nIHRoaXMgYnVnIG5vdy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUKKyAgICAgICAg
Y29tcG9zaXRvciBzbyB0aGF0IGxheWVyIHRyZWUgc3RydWN0dXJhbCBjaGFuZ2VzIGFyZSBjb25z
aWRlcmVkCisgICAgICAgIHByb3BlcnR5IGNoYW5nZXMsIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQg
bGF5ZXJzIG5lZWRlZCB0byBiZQorICAgICAgICByZXBhaW50ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFN1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisKIDIwMTItMDUtMDMgIEFsZWMgRmxldHQg
IDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUmVwbGFjZSBu
dW1lcmljIGNvbnN0YW50cyB3aXRoIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggNjQ3ZDM5ZDRjYTg4ZmMxNDIyNzFiODM4MDI4YWYyNTRlNDExYjAwYi4uZDU1YmI5ZTQ1MjFk
NjVhYjNjMjI1YzMxZmVkNjg5MGRkMTMxMTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNS0wMiAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENoYW5nZXMgdG8gbGF5ZXIgdHJlZSBz
dHJ1Y3R1cmUgbmVlZCB0byBiZSB0cmFja2VkIHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViS2l0VGVzdHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1Qp
OgorCiAyMDEyLTA1LTAzICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIFJldmlzZSB0b3VjaHBhZCBmbGluZyBjdXJ2ZSB0byB1
c2UgZXhwb25lbnRpYWwgY3VydmUsIHRvIGltcHJvdmUgZmVlbCBhbmQgc21hbGwgZmxpbmcgcGVy
Zm9ybWFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDQ4YzU3NTQ5NzYwYzE2MzE0YmU3
OGQwYzk4ZTgzYmU2YTk4Y2Y5ZjUuLjFlOWE3YmE2MzFhNTVlZGY5ODNlNmFlZDkwN2NhMzAwYWNh
OGRiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKIAogTGF5ZXJDaHJvbWl1
bTo6TGF5ZXJDaHJvbWl1bSgpCiAgICAgOiBtX25lZWRzRGlzcGxheShmYWxzZSkKKyAgICAsIG1f
c3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2xheWVySWQoc19uZXh0
TGF5ZXJJZCsrKQogICAgICwgbV9wYXJlbnQoMCkKICAgICAsIG1fbGF5ZXJUcmVlSG9zdCgwKQpA
QCAtMTU1LDYgKzE1Niw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6aW5zZXJ0Q2hpbGQoUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCwgc2l6ZV90IGluZGV4KQogICAgIGNoaWxkLT5zZXRQ
YXJlbnQodGhpcyk7CiAgICAgbV9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGNoaWxkKTsKICAgICBz
ZXROZWVkc0NvbW1pdCgpOworICAgIG1fc3VidHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQgPSB0cnVl
OwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQoKQpAQCAtMTcyLDYg
KzE3NCw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQ2hpbGQoTGF5ZXJDaHJvbWl1bSog
Y2hpbGQpCiAgICAgY2hpbGQtPnNldFBhcmVudCgwKTsKICAgICBtX2NoaWxkcmVuLnJlbW92ZShm
b3VuZEluZGV4KTsKICAgICBzZXROZWVkc0NvbW1pdCgpOworICAgIG1fc3VidHJlZVN0cnVjdHVy
ZUhhc0NoYW5nZWQgPSB0cnVlOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06OnJlcGxhY2VDaGls
ZChMYXllckNocm9taXVtKiByZWZlcmVuY2UsIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbmV3
TGF5ZXIpCkBAIC01MjMsNiArNTI2LDggQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBsYXllci0+c2V0U2Nyb2xsRGVsdGEobGF5
ZXItPnNjcm9sbERlbHRhKCkgLSBsYXllci0+c2VudFNjcm9sbERlbHRhKCkpOwogICAgIGxheWVy
LT5zZXRTZW50U2Nyb2xsRGVsdGEoSW50U2l6ZSgpKTsKIAorICAgIGxheWVyLT5zZXRTdWJ0cmVl
U3RydWN0dXJlSGFzQ2hhbmdlZChtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkKTsKKwogICAg
IGlmIChtYXNrTGF5ZXIoKSkKICAgICAgICAgbWFza0xheWVyKCktPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXItPm1hc2tMYXllcigpKTsKICAgICBpZiAocmVwbGljYUxheWVyKCkpCkBAIC01MzEsNiAr
NTM2LDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBs
KiBsYXllcikKICAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+cHVzaEFuaW1hdGlvblVw
ZGF0ZXNUbyhsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOwogCiAgICAgLy8gUmVz
ZXQgYW55IHN0YXRlIHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgZm9yIHRoZSBuZXh0IHVwZGF0ZS4K
KyAgICBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkID0gZmFsc2U7CiAgICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBkNTk0ODQwMDc4
ODk0NzZhZWNmYmMyYjIzNDYzMDNkMWQ2NzU0YjI1Li5jNzYxYjIwYWE4YWI3ZGU4ODY3OTI2ODUw
YzBhZThlY2VjODAzOTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yNjksNiArMjY5LDEwIEBA
IHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGZsYWcgaXMgc2V0IHdoZW4gbGF5ZXIgbmVlZCByZXBh
aW50aW5nL3VwZGF0aW5nLgogICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXk7CiAKKyAgICAvLyBUaGlz
IGZsYWcgaXMgc2V0IHdoZW4gdGhlIGxheWVyJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIG1hbmlwdWxh
dGVkLAorICAgIC8vIGNoYW5naW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxheWVyIHRyZWUuCisg
ICAgYm9vbCBtX3N1YnRyZWVTdHJ1Y3R1cmVIYXNDaGFuZ2VkOworCiAgICAgLy8gVGhlIHVwZGF0
ZSByZWN0IGlzIHRoZSByZWdpb24gb2YgdGhlIGNvbXBvc2l0b3IgcmVzb3VyY2UgdGhhdCB3YXMg
YWN0dWFsbHkgdXBkYXRlZCBieSB0aGUgY29tcG9zaXRvci4KICAgICAvLyBGb3IgbGF5ZXJzIHRo
YXQgbWF5IGRvIHVwZGF0aW5nIG91dHNpZGUgdGhlIGNvbXBvc2l0b3IncyBjb250cm9sIChpLmUu
IHBsdWdpbiBsYXllcnMpLCB0aGlzIGluZm9ybWF0aW9uCiAgICAgLy8gaXMgbm90IGF2YWlsYWJs
ZSBhbmQgdGhlIHVwZGF0ZSByZWN0IHdpbGwgcmVtYWluIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCmluZGV4IDliMjMzYWZlYzM4NTdkM2RmMTE0NTljOGJjMTBhYjJiYjc5Zjk4ZjEuLjFl
ZTYwZGE1M2IwZDNiMzRlODYwNmVjYzJlOWU3Y2U0MDliMTRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKQEAgLTI5Niw2ICsyOTYsMTMgQEAgdm9pZCBDQ0xheWVySW1wbDo6ZHVtcExheWVy
KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogICAgICAgICBtX2NoaWxkcmVuW2ld
LT5kdW1wTGF5ZXIodHMsIGluZGVudCsxKTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0U3Vi
dHJlZVN0cnVjdHVyZUhhc0NoYW5nZWQoYm9vbCBzdWJ0cmVlU3RydWN0dXJlSGFzQ2hhbmdlZCkK
K3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0b3JlIHRoaXMgZmxhZzsgd2Ugb25seSBuZWVk
IHRvIHRyYWNrIHRoYXQgdGhlIGNoYW5nZSBvY2N1cnJlZC4KKyAgICBpZiAoc3VidHJlZVN0cnVj
dHVyZUhhc0NoYW5nZWQpCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvckRlc2Nl
bmRhbnRzKCk7Cit9CisKIHZvaWQgQ0NMYXllckltcGw6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZEZvclN1YnRyZWUoKQogewogICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKaW5kZXggNjAzYWU1ODI5N2Y3YmRlYzU5ZGQyMWMyOWM3Nzg3NzJhNDhk
ODEyYy4uMWM5ZDMxNGRhYmVkMDQwNTVmZmYyNjM5MTNjYmQzMzZiNDIwMzE3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oCkBAIC0yMzIsNiArMjMyLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxh
eWVyVHJlZUFzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRTdWJ0cmVlU3RydWN0dXJlSGFz
Q2hhbmdlZChib29sKTsKKwogICAgIGJvb2wgbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBjb25zdCB7
IHJldHVybiBtX2xheWVyUHJvcGVydHlDaGFuZ2VkOyB9CiAgICAgdm9pZCByZXNldEFsbENoYW5n
ZVRyYWNraW5nRm9yU3VidHJlZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RyZWVTeW5jaHJvbml6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwCmluZGV4IDFmOGRlMGRmYmRhMTQzYTZh
MmE3MmY1MjBjZDYyNjAwZWJjOTA4ZmQuLjMwNjc4NTgxMTczYTMxYTMzMDk0OWQ4ZjhiMjE3YjMx
ZDM4NDEwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJlZVN5
bmNocm9uaXplclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJl
ZVN5bmNocm9uaXplclRlc3QuY3BwCkBAIC0xOTcsNiArMTk3LDUxIEBAIFRFU1QoVHJlZVN5bmNo
cm9uaXplclRlc3QsIHN5bmNTaW1wbGVUcmVlUmV1c2luZ0xheWVycykKICAgICBFWFBFQ1RfRVEo
c2Vjb25kQ0NMYXllcklkLCBjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0WzBdKTsKIH0KIAorLy8gQ29u
c3RydWN0cyBhIHZlcnkgc2ltcGxlIHRyZWUgYW5kIGNoZWNrcyB0aGF0IHN0cnVjdHVyYWwgY2hh
bmdlcyB0byB0aGUgdHJlZSBhcmUgdHJhY2tlZCBwcm9wZXJseS4KK1RFU1QoVHJlZVN5bmNocm9u
aXplclRlc3QsIHN5bmNTaW1wbGVUcmVlQW5kVHJhY2tDaGFuZ2VzUHJvcGVybHkpCit7CisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CisgICAgVmVjdG9yPGludD4gY2NMYXllckRl
c3RydWN0aW9uTGlzdDsKKworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllclRyZWVSb290
ID0gTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IE1vY2tMYXllckNocm9taXVtOjpjcmVh
dGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxk
KE1vY2tMYXllckNocm9taXVtOjpjcmVhdGUoJmNjTGF5ZXJEZXN0cnVjdGlvbkxpc3QpKTsKKyAg
ICBsYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5hZGRDaGlsZChNb2NrTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCZjY0xheWVyRGVzdHJ1Y3Rpb25MaXN0KSk7CisgICAgbGF5ZXJUcmVlUm9vdC0+
YWRkQ2hpbGQoY2hpbGQyKTsKKworICAgIE93blB0cjxDQ0xheWVySW1wbD4gY2NMYXllclRyZWVS
b290ID0gVHJlZVN5bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290Lmdl
dCgpLCBudWxscHRyKTsKKyAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllclRyZWVSb290
LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworCisgICAgLy8gQ0FTRSAxOiBSZW1vdmlu
ZyBhIGxheWVyIGZyb20gdGhlIExheWVyQ2hyb21pdW0gc2lkZSBzaG91bGQgYmUgdHJhY2tlZCBw
cm9wZXJseSBieSB0aGUgaW1wbCB0aHJlYWQuCisgICAgY2NMYXllclRyZWVSb290LT5yZXNldEFs
bENoYW5nZVRyYWNraW5nRm9yU3VidHJlZSgpOworICAgIGNoaWxkMi0+cmVtb3ZlRnJvbVBhcmVu
dCgpOworCisgICAgLy8gU3luY2hyb25pemUuCisgICAgY2NMYXllclRyZWVSb290ID0gVHJlZVN5
bmNocm9uaXplcjo6c3luY2hyb25pemVUcmVlcyhsYXllclRyZWVSb290LmdldCgpLCBjY0xheWVy
VHJlZVJvb3QucmVsZWFzZSgpKTsKKyAgICBleHBlY3RUcmVlc0FyZUlkZW50aWNhbChsYXllclRy
ZWVSb290LmdldCgpLCBjY0xheWVyVHJlZVJvb3QuZ2V0KCkpOworCisgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgaW1wbCB0aHJlYWQgcHJvcGVybHkgdHJhY2tlZCB0aGUgY2hhbmdlLiBUaGUgcmVtb3Zl
ZCBsYXllcidzCisgICAgLy8gc2libGluZ3MgKGFuZCBzdWJ0cmVlcykgc2hvdWxkIGJlIGRhbWFn
ZWQuCisgICAgRVhQRUNUX0ZBTFNFKGNjTGF5ZXJUcmVlUm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoKSk7CisgICAgRVhQRUNUX1RSVUUoY2NMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5s
YXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3Qt
PmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0tPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOwor
CisgICAgLy8gQ0FTRSAyOiBBZGRpbmcgYSBsYXllciB0byB0aGUgTGF5ZXJDaHJvbWl1bSBzaWRl
IHNob3VsZCBiZSB0cmFja2VkIHByb3BlcnRseSBieSB0aGUgaW1wbCB0aHJlYWQuCisgICAgY2NM
YXllclRyZWVSb290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJlZSgpOworICAgIGxh
eWVyVHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMik7CisKKyAgICAvLyBTeW5jaHJvbml6ZS4KKyAg
ICBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVyOjpzeW5jaHJvbml6ZVRyZWVzKGxh
eWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5yZWxlYXNlKCkpOworICAgIGV4cGVj
dFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9vdC5n
ZXQoKSk7CisKKyAgICAvLyBDaGVjayB0aGF0IHRoZSBpbXBsIHRocmVhZCBwcm9wZXJseSB0cmFj
a2VkIHRoZSBjaGFuZ2UuIEV2ZXJ5dGhpbmcgd291bGQgcmVtYWluCisgICAgLy8gdW4tZGFtYWdl
ZCBleGNlcHQgdGhlIG5ldyBncmFuZGNoaWxkLgorICAgIEVYUEVDVF9GQUxTRShjY0xheWVyVHJl
ZVJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9UUlVFKGNjTGF5ZXJU
cmVlUm9vdC0+Y2hpbGRyZW4oKVsxXS0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQ
RUNUX1RSVUUoY2NMYXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5sYXllclByb3BlcnR5Q2hh
bmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMF0t
PmNoaWxkcmVuKClbMF0tPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworfQorCiBURVNUKFRyZWVT
eW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxlVHJlZUFuZFByb3BlcnRpZXMpCiB7CiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140342</attachid>
            <date>2012-05-04 15:44:26 -0700</date>
            <delta_ts>2012-05-04 17:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85421-20120504154425.patch</filename>
            <type>text/plain</type>
            <size>8608</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNkZmY0NDBiMDcwZTM2
MWY4NzYxZTVjZDJhZDA5NTdmMzQ2YWRkYy4uODg3MjEyMjZlNmFmNGE4NTE5OGQ0NjZiOWY0Nzgx
ZTQ3NDk3ZGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTA0ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q2hhbmdlcyB0byBsYXllciB0cmVlIHN0cnVjdHVyZSBuZWVkIHRvIGJlIHRyYWNrZWQgcHJvcGVy
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0
ZXN0IGFkZGVkOiBUcmVlU3luY2hyb25pemVyVGVzdC5zeW5jU2ltcGxlVHJlZUFuZFRyYWNrU3Rh
Y2tpbmdPcmRlckNoYW5nZQorCisgICAgICAgIEVhcmxpZXIsIHdlIHdlcmUgcmVseWluZyBvbiBX
ZWJDb3JlIGJlaGF2aW9yIHRoYXQgYWx3YXlzIGNhbGxlZAorICAgICAgICBzZXROZWVkc0Rpc3Bs
YXkgd2hlbmV2ZXIgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIGNoYW5nZWQuCisgICAgICAgIEhv
d2V2ZXIsIGluIGdlbmVyYWwgaXQgaXMgbW9yZSBjb3JyZWN0IHRvIGNvbnNpZGVyIGxheWVyIHRy
ZWUKKyAgICAgICAgY2hhbmdlcyBldmVuIHdoZW4gdGhpbmdzIGRvbid0IG5lZWQgcmVwYWludGlu
ZzsgZm9yIGV4YW1wbGUgQXVyYQorICAgICAgICBjb2RlIGlzIGVuY291bnRyaW5nIHRoaXMgYnVn
IG5vdy4gVGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUKKyAgICAgICAgY29tcG9zaXRvciBzbyB0aGF0
IGxheWVyIHRyZWUgc3RydWN0dXJhbCBjaGFuZ2VzIGFyZSBjb25zaWRlcmVkCisgICAgICAgIHBy
b3BlcnR5IGNoYW5nZXMsIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQgbGF5ZXJzIG5lZWRlZCB0byBi
ZQorICAgICAgICByZXBhaW50ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06
OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aW5zZXJ0
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OnNldFN0YWNraW5nT3JkZXJDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAg
IChDQ0xheWVySW1wbCk6CisKIDIwMTItMDUtMDMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUmVwbGFjZSBudW1lcmljIGNvbnN0YW50
cyB3aXRoIHN0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjQ3ZDM5ZDRjYTg4
ZmMxNDIyNzFiODM4MDI4YWYyNTRlNDExYjAwYi4uYWMwOGNiY2ZmYzVmZDZiOWZmOGQ2OTI0ZmIw
Mzk0NzNjYjMwZDgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxMi0wNS0wNCAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIENoYW5nZXMgdG8gbGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgbmVlZCB0
byBiZSB0cmFja2VkIHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTQyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuaXQgdGVzdCBhZGRlZDogVHJlZVN5bmNocm9uaXplclRlc3Quc3luY1Np
bXBsZVRyZWVBbmRUcmFja1N0YWNraW5nT3JkZXJDaGFuZ2UKKworICAgICAgICAqIHRlc3RzL1Ry
ZWVTeW5jaHJvbml6ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMi0wNS0wMyAgVy4gSmFtZXMgTWFjTGVhbiAgPHdq
bWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZXZpc2UgdG91Y2hw
YWQgZmxpbmcgY3VydmUgdG8gdXNlIGV4cG9uZW50aWFsIGN1cnZlLCB0byBpbXByb3ZlIGZlZWwg
YW5kIHNtYWxsIGZsaW5nIHBlcmZvcm1hbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0
OGM1NzU0OTc2MGMxNjMxNGJlNzhkMGM5OGU4M2JlNmE5OGNmOWY1Li5kOTdlNmQ2MzI4NmMwODYy
NDZhMDkzNWIzYmUzZDExNzFjOWVmYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNTcs
NiArNTcsNyBAQCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpCiAKIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgIDogbV9uZWVkc0Rpc3Bs
YXkoZmFsc2UpCisgICAgLCBtX3N0YWNraW5nT3JkZXJDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9s
YXllcklkKHNfbmV4dExheWVySWQrKykKICAgICAsIG1fcGFyZW50KDApCiAgICAgLCBtX2xheWVy
VHJlZUhvc3QoMCkKQEAgLTE1Myw2ICsxNTQsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06Omluc2Vy
dENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQsIHNpemVfdCBpbmRleCkKICAg
ICBpbmRleCA9IG1pbihpbmRleCwgbV9jaGlsZHJlbi5zaXplKCkpOwogICAgIGNoaWxkLT5yZW1v
dmVGcm9tUGFyZW50KCk7CiAgICAgY2hpbGQtPnNldFBhcmVudCh0aGlzKTsKKyAgICBjaGlsZC0+
bV9zdGFja2luZ09yZGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgbV9jaGlsZHJlbi5pbnNlcnQoaW5k
ZXgsIGNoaWxkKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtNTIzLDYgKzUyNSw4IEBA
IHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIp
CiAgICAgbGF5ZXItPnNldFNjcm9sbERlbHRhKGxheWVyLT5zY3JvbGxEZWx0YSgpIC0gbGF5ZXIt
PnNlbnRTY3JvbGxEZWx0YSgpKTsKICAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKEludFNp
emUoKSk7CiAKKyAgICBsYXllci0+c2V0U3RhY2tpbmdPcmRlckNoYW5nZWQobV9zdGFja2luZ09y
ZGVyQ2hhbmdlZCk7CisKICAgICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigp
LT5wdXNoUHJvcGVydGllc1RvKGxheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgaWYgKHJlcGxpY2FM
YXllcigpKQpAQCAtNTMxLDYgKzUzNSw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV9sYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXItPnB1c2hBbmltYXRpb25VcGRhdGVzVG8obGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpKTsKIAogICAgIC8vIFJlc2V0IGFueSBzdGF0ZSB0aGF0IHNob3VsZCBiZSBjbGVhcmVkIGZv
ciB0aGUgbmV4dCB1cGRhdGUuCisgICAgbV9zdGFja2luZ09yZGVyQ2hhbmdlZCA9IGZhbHNlOwog
ICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5k
ZXggZDU5NDg0MDA3ODg5NDc2YWVjZmJjMmIyMzQ2MzAzZDFkNjc1NGIyNS4uMjBkZjJmNWU1ZmVm
OTM5NTY3ZWI4NzhlZTk4NGM2MGE4YjBlM2Y3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjY5
LDYgKzI2OSw5IEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGZsYWcgaXMgc2V0IHdoZW4gbGF5
ZXIgbmVlZCByZXBhaW50aW5nL3VwZGF0aW5nLgogICAgIGJvb2wgbV9uZWVkc0Rpc3BsYXk7CiAK
KyAgICAvLyBUcmFja3Mgd2hldGhlciB0aGlzIGxheWVyIG1heSBoYXZlIGNoYW5nZWQgc3RhY2tp
bmcgb3JkZXIgd2l0aCBpdHMgc2libGluZ3MuCisgICAgYm9vbCBtX3N0YWNraW5nT3JkZXJDaGFu
Z2VkOworCiAgICAgLy8gVGhlIHVwZGF0ZSByZWN0IGlzIHRoZSByZWdpb24gb2YgdGhlIGNvbXBv
c2l0b3IgcmVzb3VyY2UgdGhhdCB3YXMgYWN0dWFsbHkgdXBkYXRlZCBieSB0aGUgY29tcG9zaXRv
ci4KICAgICAvLyBGb3IgbGF5ZXJzIHRoYXQgbWF5IGRvIHVwZGF0aW5nIG91dHNpZGUgdGhlIGNv
bXBvc2l0b3IncyBjb250cm9sIChpLmUuIHBsdWdpbiBsYXllcnMpLCB0aGlzIGluZm9ybWF0aW9u
CiAgICAgLy8gaXMgbm90IGF2YWlsYWJsZSBhbmQgdGhlIHVwZGF0ZSByZWN0IHdpbGwgcmVtYWlu
IGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDliMjMzYWZlYzM4NTdkM2RmMTE0
NTljOGJjMTBhYjJiYjc5Zjk4ZjEuLjY5ZjhmYmI2MWE5Y2U4MDE0MTEwMjU2M2UzNjhjYTI2NGY4
YWY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTI5Niw2ICsyOTYsMTMgQEAgdm9p
ZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25z
dAogICAgICAgICBtX2NoaWxkcmVuW2ldLT5kdW1wTGF5ZXIodHMsIGluZGVudCsxKTsKIH0KIAor
dm9pZCBDQ0xheWVySW1wbDo6c2V0U3RhY2tpbmdPcmRlckNoYW5nZWQoYm9vbCBzdGFja2luZ09y
ZGVyQ2hhbmdlZCkKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHN0b3JlIHRoaXMgZmxhZzsg
d2Ugb25seSBuZWVkIHRvIHRyYWNrIHRoYXQgdGhlIGNoYW5nZSBvY2N1cnJlZC4KKyAgICBpZiAo
c3RhY2tpbmdPcmRlckNoYW5nZWQpCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZv
clN1YnRyZWUoKTsKK30KKwogdm9pZCBDQ0xheWVySW1wbDo6bm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkRm9yU3VidHJlZSgpCiB7CiAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCA2MDNhZTU4Mjk3ZjdiZGVjNTlkZDIxYzI5Yzc3ODc3MmE0
OGQ4MTJjLi42MGY3YzQ0YzFmODU3MWNlOTgwYzZmMDRkNDA5YzA5Y2JkM2I1YjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTIzMiw2ICsyMzIsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFN0YWNraW5nT3JkZXJDaGFu
Z2VkKGJvb2wpOworCiAgICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQ7IH0KICAgICB2b2lkIHJlc2V0QWxsQ2hhbmdlVHJh
Y2tpbmdGb3JTdWJ0cmVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVHJlZVN5bmNocm9uaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAKaW5kZXggMWY4ZGUwZGZiZGExNDNhNmEyYTcy
ZjUyMGNkNjI2MDBlYmM5MDhmZC4uMDk4ZGQyNzMxNjBlNWU1ZDAyYjgyNGVkMGMyMzFkYTRhYzg5
OTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3luY2hy
b25pemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAKQEAgLTE5Nyw2ICsxOTcsMzQgQEAgVEVTVChUcmVlU3luY2hyb25p
emVyVGVzdCwgc3luY1NpbXBsZVRyZWVSZXVzaW5nTGF5ZXJzKQogICAgIEVYUEVDVF9FUShzZWNv
bmRDQ0xheWVySWQsIGNjTGF5ZXJEZXN0cnVjdGlvbkxpc3RbMF0pOwogfQogCisvLyBDb25zdHJ1
Y3RzIGEgdmVyeSBzaW1wbGUgdHJlZSBhbmQgY2hlY2tzIHRoYXQgYSBzdGFja2luZy1vcmRlciBj
aGFuZ2UgaXMgdHJhY2tlZCBwcm9wZXJseS4KK1RFU1QoVHJlZVN5bmNocm9uaXplclRlc3QsIHN5
bmNTaW1wbGVUcmVlQW5kVHJhY2tTdGFja2luZ09yZGVyQ2hhbmdlKQoreworICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsOworICAgIFZlY3RvcjxpbnQ+IGNjTGF5ZXJEZXN0cnVjdGlv
bkxpc3Q7CisKKyAgICAvLyBTZXQgdXAgdGhlIHRyZWUgYW5kIHN5bmMgb25jZS4gY2hpbGQyIG5l
ZWRzIHRvIGJlIHN5bmNlZCBoZXJlLCB0b28sIGV2ZW4gdGhvdWdoIHdlCisgICAgLy8gcmVtb3Zl
IGl0IHRvIHNldCB1cCB0aGUgaW50ZW5kZWQgc2NlbmFyaW8uCisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGxheWVyVHJlZVJvb3QgPSBNb2NrTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCZjY0xheWVy
RGVzdHJ1Y3Rpb25MaXN0KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTW9j
a0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRlc3RydWN0aW9uTGlzdCk7CisgICAgbGF5
ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoTW9ja0xheWVyQ2hyb21pdW06OmNyZWF0ZSgmY2NMYXllckRl
c3RydWN0aW9uTGlzdCkpOworICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMik7Cisg
ICAgT3duUHRyPENDTGF5ZXJJbXBsPiBjY0xheWVyVHJlZVJvb3QgPSBUcmVlU3luY2hyb25pemVy
OjpzeW5jaHJvbml6ZVRyZWVzKGxheWVyVHJlZVJvb3QuZ2V0KCksIG51bGxwdHIpOworICAgIGV4
cGVjdFRyZWVzQXJlSWRlbnRpY2FsKGxheWVyVHJlZVJvb3QuZ2V0KCksIGNjTGF5ZXJUcmVlUm9v
dC5nZXQoKSk7CisgICAgY2NMYXllclRyZWVSb290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9y
U3VidHJlZSgpOworCisgICAgLy8gcmUtaW5zZXJ0IHRoZSBsYXllciBhbmQgc3luYyBhZ2Fpbi4K
KyAgICBjaGlsZDItPnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICBsYXllclRyZWVSb290LT5hZGRD
aGlsZChjaGlsZDIpOworICAgIGNjTGF5ZXJUcmVlUm9vdCA9IFRyZWVTeW5jaHJvbml6ZXI6OnN5
bmNocm9uaXplVHJlZXMobGF5ZXJUcmVlUm9vdC5nZXQoKSwgY2NMYXllclRyZWVSb290LnJlbGVh
c2UoKSk7CisgICAgZXhwZWN0VHJlZXNBcmVJZGVudGljYWwobGF5ZXJUcmVlUm9vdC5nZXQoKSwg
Y2NMYXllclRyZWVSb290LmdldCgpKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlIGltcGwgdGhy
ZWFkIHByb3Blcmx5IHRyYWNrZWQgdGhlIGNoYW5nZS4KKyAgICBFWFBFQ1RfRkFMU0UoY2NMYXll
clRyZWVSb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2NM
YXllclRyZWVSb290LT5jaGlsZHJlbigpWzBdLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShjY0xheWVyVHJlZVJvb3QtPmNoaWxkcmVuKClbMV0tPmxheWVyUHJvcGVy
dHlDaGFuZ2VkKCkpOworfQorCiBURVNUKFRyZWVTeW5jaHJvbml6ZXJUZXN0LCBzeW5jU2ltcGxl
VHJlZUFuZFByb3BlcnRpZXMpCiB7CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>