<?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>62914</bug_id>
          
          <creation_ts>2011-06-17 16:03:05 -0700</creation_ts>
          <short_desc>Incorrectly placed SVG gradients can cause crashes when referenced</short_desc>
          <delta_ts>2011-06-23 03:44:19 -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>SVG</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>krit</cc>
    
    <cc>mjs</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422938</commentid>
    <comment_count>0</comment_count>
      <attachid>97665</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-17 16:03:05 -0700</bug_when>
    <thetext>Created attachment 97665
Repro

&lt;rdar://problem/9516596&gt;

Reproducing test case attached

  1 com.apple.WebCore              0x7fff919990d6 WebCore::SVGStopElement::stopColorIncludingOpacity() const + 0x8
   2 com.apple.WebCore              0x7fff91998f0a WebCore::SVGGradientElement::buildStops() + 0x9c
   3 com.apple.WebCore              0x7fff92098718 WebCore::SVGLinearGradientElement::collectGradientAttributes(WebCore::LinearGradientAttributes&amp;) + 0x1b0
   4 com.apple.WebCore              0x7fff91fed34c WebCore::RenderSVGResourceLinearGradient::collectGradientAttributes(WebCore::SVGGradientElement*) + 0x192
   5 com.apple.WebCore              0x7fff919987a8 WebCore::RenderSVGResourceGradient::applyResource(WebCore::RenderObject*, WebCore::RenderStyle*, WebCore::GraphicsContext*&amp;, unsigned short) + 0x86
   6 com.apple.WebCore              0x7fff91ff0fad non-virtual thunk to WebCore::RenderSVGResourceGradient::applyResource(WebCore::RenderObject*, WebCore::RenderStyle*, WebCore::GraphicsContext*&amp;, unsigned short) + 0xd
   7 com.apple.WebCore              0x7fff91ff48c3 WebCore::RenderSVGPath::fillAndStrokePath(WebCore::GraphicsContext*) + 0x6b
   8 com.apple.WebCore              0x7fff91fe8adf WebCore::RenderSVGPath::paint(WebCore::PaintInfo&amp;, int, int) + 0x1c7
   9 com.apple.WebCore              0x7fff91fe4d24 WebCore::RenderSVGContainer::paint(WebCore::PaintInfo&amp;, int, int) + 0x1ac
  10 com.apple.WebCore              0x7fff91fe4d24 WebCore::RenderSVGContainer::paint(WebCore::PaintInfo&amp;, int, int) + 0x1ac
  11 com.apple.WebCore              0x7fff91fa42c4 WebCore::RenderBox::paint(WebCore::PaintInfo&amp;, int, int) + 0x94
  12 com.apple.WebCore              0x7fff91ff0271 WebCore::RenderSVGRoot::paint(WebCore::PaintInfo&amp;, int, int) + 0x295
  13 com.apple.WebCore              0x7fff91caad43 WebCore::InlineBox::paint(WebCore::PaintInfo&amp;, int, int, int, int) + 0x157
  14 com.apple.WebCore              0x7fff91cab789 WebCore::InlineFlowBox::paint(WebCore::PaintInfo&amp;, int, int, int, int) + 0x339
  15 com.apple.WebCore              0x7fff92022443 WebCore::RootInlineBox::paint(WebCore::PaintInfo&amp;, int, int, int, int) + 0x37
  16 com.apple.WebCore              0x7fff91fcbc01 WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject*, WebCore::PaintInfo&amp;, int, int) const + 0x355
  17 com.apple.WebCore              0x7fff91f92621 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, int, int) + 0x14d
  18 com.apple.WebCore              0x7fff91f929e2 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, int, int) + 0x112
  19 com.apple.WebCore              0x7fff91f91d90 WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&amp;, int, int) + 0x1e2
  20 com.apple.WebCore              0x7fff91f92635 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, int, int) + 0x161
  21 com.apple.WebCore              0x7fff91f929e2 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, int, int) + 0x112
  22 com.apple.WebCore              0x7fff91f91d90 WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&amp;, int, int) + 0x1e2
  23 com.apple.WebCore              0x7fff91f92635 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, int, int) + 0x161
  24 com.apple.WebCore              0x7fff91f929e2 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, int, int) + 0x112
  25 com.apple.WebCore              0x7fff91fc4513 WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&amp;, unsigned int, WebCore::RenderObject*, WTF::HashMap&lt;WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash&lt;WebCore::OverlapTestRequestClient*&gt;, WTF::HashTraits&lt;WebCore::OverlapTestRequestClient*&gt;, WTF::HashTraits&lt;WebCore::IntRect&gt; &gt;*, unsigned int) + 0xdb9
  26 com.apple.WebCore              0x7fff91fc47dd WebCore::RenderLayer::paintLayer(WebCore::RenderLayer*, WebCore::GraphicsContext*, WebCore::IntRect const&amp;, unsigned int, WebCore::RenderObject*, WTF::HashMap&lt;WebCore::OverlapTestRequestClient*, WebCore::IntRect, WTF::PtrHash&lt;WebCore::OverlapTestRequestClient*&gt;, WTF::HashTraits&lt;WebCore::OverlapTestRequestClient*&gt;, WTF::HashTraits&lt;WebCore::IntRect&gt; &gt;*, unsigned int) + 0x1083
  27 com.apple.WebCore              0x7fff91770fcd WebCore::RenderLayer::paint(WebCore::GraphicsContext*, WebCore::IntRect const&amp;, unsigned int, WebCore::RenderObject*) + 0x47
  28 com.apple.WebCore              0x7fff91770e90 WebCore::FrameView::paintContents(WebCore::GraphicsContext*, WebCore::IntRect const&amp;) + 0x27a
  29 com.apple.WebKit               0x7fff948a42df -[WebFrame(WebInternal) _drawRect:contentsOnly:] + 0x10f
  30 com.apple.WebKit               0x7fff948a3ee0 -[WebHTMLView drawSingleRect:] + 0x1c0
  31 com.apple.WebKit               0x7fff948a3bd2 -[WebHTMLView drawRect:] + 0x2f2
  32 com.apple.AppKit               0x7fff92c2437b -[NSView _drawRect:clip:] + 0xeae
  33 com.apple.AppKit               0x7fff92c51a30 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0x62f
  34 com.apple.WebKit               0x7fff948a37c3 -[WebHTMLView(WebPrivate) _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0x103
  35 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  36 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  37 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  38 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  39 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  40 com.apple.AppKit               0x7fff92c51e5c -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 0xa5b
  41 com.apple.AppKit               0x7fff92c21959 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 0x408
  42 com.apple.AppKit               0x7fff92c22c0e -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 0x16bd
  43 com.apple.AppKit               0x7fff92c22c0e -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 0x16bd
  44 com.apple.AppKit               0x7fff92c20e4f -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 0x10e
  45 com.apple.AppKit               0x7fff92c1c267 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 0x1293
  46 com.apple.AppKit               0x7fff92c14d10 -[NSView displayIfNeeded] + 0x5b9
  47 com.apple.Safari.framework     0x7fff94004e12 -[BrowserWindow displayIfNeeded] + 0x2b
  48 com.apple.AppKit               0x7fff92c14522 _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints + 0x288
  49 com.apple.CoreFoundation       0x7fff8d41cfb7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 0x17
  50 com.apple.CoreFoundation       0x7fff8d41cf16 __CFRunLoopDoObservers + 0x176
  51 com.apple.CoreFoundation       0x7fff8d3f2059 __CFRunLoopRun + 0x339
  52 com.apple.CoreFoundation       0x7fff8d3f19e6 CFRunLoopRunSpecific + 0xe6
  53 com.apple.HIToolbox            0x7fff97aa9857 RunCurrentEventLoopInMode + 0x115
  54 com.apple.HIToolbox            0x7fff97ab0ff1 ReceiveNextEventCommon + 0x163
  55 com.apple.HIToolbox            0x7fff97ab0e7e BlockUntilNextEventMatchingListInMode + 0x3e
  56 com.apple.AppKit               0x7fff92bd93b1 _DPSNextEvent + 0x293
  57 com.apple.AppKit               0x7fff92bd8cb8 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 0x87
  58 com.apple.Safari.framework     0x7fff93fad821 -[BrowserApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 0xab
  59 com.apple.AppKit               0x7fff92bd565f -[NSApplication run] + 0x1c8
  60 com.apple.AppKit               0x7fff92e52f35 NSApplicationMain + 0x35c
  61 com.apple.Safari.framework     0x7fff9415db87 SafariMain + 0xc5
  62 com.apple.Safari               0x108cf9f24 start + 0x0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423749</commentid>
    <comment_count>1</comment_count>
      <attachid>97823</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-20 10:33:05 -0700</bug_when>
    <thetext>Created attachment 97823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423774</commentid>
    <comment_count>2</comment_count>
      <attachid>97823</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-20 11:00:27 -0700</bug_when>
    <thetext>Comment on attachment 97823
Patch

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

The fix is not correct, see comments below.

&gt; LayoutTests/svg/custom/invalid-gradient-with-xlink.svg:22
&gt; +&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&gt; +&lt;svg
&gt; +   xmlns=&quot;http://www.w3.org/2000/svg&quot;
&gt; +   xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;
&gt; +   version=&quot;1.0&quot;
&gt; +   width=&quot;200&quot;
&gt; +   height=&quot;200&quot;&gt;
&gt; +&lt;script&gt;&lt;![CDATA[
&gt; +      if (window.layoutTestController)
&gt; +        layoutTestController.dumpAsText();
&gt; +]]&gt;&lt;/script&gt;
&gt; +&lt;defs&gt;
&gt; +  &lt;linearGradient id=&quot;linearGradient1&quot; xlink:href=&quot;#linearGradient0&quot; /&gt;
&gt; +&lt;/defs&gt;
&gt; +&lt;path d=&quot;M 0,0 C 0,1 1,1 1,0 L 0,0 z &quot; style=&quot;fill:url(#linearGradient1);&quot;  id=&quot;path0&quot; /&gt;
&gt; +&lt;path id=&quot;path1&quot;&gt;
&gt; +  &lt;linearGradient id=&quot;linearGradient0&quot;&gt;
&gt; +    &lt;stop /&gt;
&gt; +  &lt;/linearGradient&gt;
&gt; +&lt;/path&gt;
&gt; +&lt;text y=&quot;20&quot; x=&quot;10&quot;&gt;PASS: The test did not crash.&lt;/text&gt;
&gt; +&lt;/svg&gt;

Given the fact that we should fill the rect with a gradient, a dumpAsText test is not enough. We need a pixel test. The style of the SVG does not make it self explaining. Use something more simple like that:

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;defs&gt;
  &lt;linearGradient id=&quot;gradient1&quot; xlink:href=&quot;#gradient2&quot; /&gt;
&lt;/defs&gt;
&lt;rect width=&quot;200&quot; height=&quot;200&quot; fill=&quot;url(#gradient1)&quot;&gt;
  &lt;linearGradient id=&quot;gradient2&quot;&gt;
    &lt;stop stop-color=&quot;green&quot;/&gt;
  &lt;/linearGradient&gt;
&lt;/rect&gt;
&lt;/svg&gt;

The green indicates that we should draw fill the rect with the gradient. On pass you&apos;d see a green rect.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Added check to ensure gradient stops have the correct properties before attempting to access them.

The patch is not correct. We should draw the gradient, independent where it is located. In a &lt;defs&gt; section or not does not matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423812</commentid>
    <comment_count>3</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-20 11:49:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&gt; &lt;defs&gt;
&gt;   &lt;linearGradient id=&quot;gradient1&quot; xlink:href=&quot;#gradient2&quot; /&gt;
&gt; &lt;/defs&gt;
&gt; &lt;rect width=&quot;200&quot; height=&quot;200&quot; fill=&quot;url(#gradient1)&quot;&gt;
&gt;   &lt;linearGradient id=&quot;gradient2&quot;&gt;
&gt;     &lt;stop stop-color=&quot;green&quot;/&gt;
&gt;   &lt;/linearGradient&gt;
&gt; &lt;/rect&gt;
&gt; &lt;/svg&gt;
&gt; 
&gt; The green indicates that we should draw fill the rect with the gradient. On pass you&apos;d see a green rect.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Added check to ensure gradient stops have the correct properties before attempting to access them.
&gt; 
&gt; The patch is not correct. We should draw the gradient, independent where it is located. In a &lt;defs&gt; section or not does not matter.

The real problem here is that &lt;linearGradient&gt; is not allowed to be inside of a &lt;rect&gt; or a &lt;path&gt; element (or any other shape element). Thus, the spec does not define the correct behavior. The reason it was crashing was that the color properties are stored in the renderer, but because the parent object of the linear gradient, a path, can&apos;t have children (as RenderSVGPath is not a subclass of RenderSVGContainer), it doesn&apos;t generate a rendering context for the gradient. However, the styles for the stops are stored in the context. Thus, to have a gradient work wherever it is encountered, it must always have a context, which means that its parent (in this case, a RenderSVGPath) must be able to have children (which it can&apos;t). Unless one of these behaviors (colors stored in the renderer, RenderSVGPath can&apos;t have children, etc) is changed, having a gradient defined anywhere in the file is not feasible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423817</commentid>
    <comment_count>4</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-20 11:52:33 -0700</bug_when>
    <thetext>For what it&apos;s worth, Firefox also chokes on this case and spits out something that is not a gradient (just pure black fill) when rendering the invalid SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424061</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-20 16:31:09 -0700</bug_when>
    <thetext>(In reply to comment #2)

&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Added check to ensure gradient stops have the correct properties before attempting to access them.
&gt; 
&gt; The patch is not correct. We should draw the gradient, independent where it is located. In a &lt;defs&gt; section or not does not matter.

I think you are right that the code will now misrender. But surely misrendering is better than crashing. Is there any case that would have worked without crashing under the old code that would get worse with this patch?

If not, I think we should land the simple crash fix for now, and file a follow-up bug on the rendering issue. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424063</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-20 16:32:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        Added check to ensure gradient stops have the correct properties before attempting to access them.
&gt; &gt; 
&gt; &gt; The patch is not correct. We should draw the gradient, independent where it is located. In a &lt;defs&gt; section or not does not matter.
&gt; 
&gt; I think you are right that the code will now misrender. But surely misrendering is better than crashing. Is there any case that would have worked without crashing under the old code that would get worse with this patch?
&gt; 
&gt; If not, I think we should land the simple crash fix for now, and file a follow-up bug on the rendering issue. What do you think?

Hmm, actually, based on Jeffrey&apos;s latest comment, the patch does not break gradients defined in &lt;defs&gt;, it only affects gradients defined in illegal places (such as inside a &lt;rect&gt; or &lt;path&gt;), where per the SVG spec they should *not* render.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424123</commentid>
    <comment_count>7</comment_count>
      <attachid>97896</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-20 17:41:37 -0700</bug_when>
    <thetext>Created attachment 97896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424272</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-20 22:52:28 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; Hmm, actually, based on Jeffrey&apos;s latest comment, the patch does not break gradients defined in &lt;defs&gt;, it only affects gradients defined in illegal places (such as inside a &lt;rect&gt; or &lt;path&gt;), where per the SVG spec they should *not* render.

I don&apos;t see a comment in the spec that adding resources like gradients, to styled elements like rect and path is forbidden. Please post a link if I&apos;m wrong. But I agree that RenderSVGPath can&apos;t have child renderers in WebKit (or at least it is not implemented yet). I tested  the example from https://bugs.webkit.org/show_bug.cgi?id=62914#c2 in Batik, Opera and Firefox. Opera and Batik show a green rect, while Firefox fills the rect white. If the rect references the gradient directly, Firefox fills the rect black (the fallback color), the others still green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424286</commentid>
    <comment_count>9</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-20 23:06:57 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I don&apos;t see a comment in the spec that adding resources like gradients, to styled elements like rect and path is forbidden. Please post a link if I&apos;m wrong. But I agree that RenderSVGPath can&apos;t have child renderers in WebKit (or at least it is not implemented yet). I tested  the example from https://bugs.webkit.org/show_bug.cgi?id=62914#c2 in Batik, Opera and Firefox. Opera and Batik show a green rect, while Firefox fills the rect white. If the rect references the gradient directly, Firefox fills the rect black (the fallback color), the others still green.

It&apos;s not so much that gradients in rects, etc, is explicitly disallowed, so much as gradients are not in the list of allowed elements within a rect (according to the DTD, etc). As such, it&apos;s not explicitly required that we support the gradient as being seen as valid in this context. While I agree that it would be a desirable behavior for it to be seen as valid, I don&apos;t see it as a necessary behavior, and this patch is at least a push in the right direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424475</commentid>
    <comment_count>10</comment_count>
      <attachid>97896</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-21 08:43:45 -0700</bug_when>
    <thetext>Comment on attachment 97896
Patch

Given the fact that firefox does not handle the case as well, we can land the fix. But please update the ChangeLog that we follow Firefox on handling such cases.

Can you please update your test to the style of https://bugs.webkit.org/show_bug.cgi?id=62914#c2 ? There is no need to add unnecessary elements and information. Make test cases as simple as possible. But it should still be a dumpAsText test of course.


r- because of the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424487</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-21 09:03:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; I don&apos;t see a comment in the spec that adding resources like gradients, to styled elements like rect and path is forbidden. Please post a link if I&apos;m wrong. But I agree that RenderSVGPath can&apos;t have child renderers in WebKit (or at least it is not implemented yet). I tested  the example from https://bugs.webkit.org/show_bug.cgi?id=62914#c2 in Batik, Opera and Firefox. Opera and Batik show a green rect, while Firefox fills the rect white. If the rect references the gradient directly, Firefox fills the rect black (the fallback color), the others still green.
&gt; 
&gt; It&apos;s not so much that gradients in rects, etc, is explicitly disallowed, so much as gradients are not in the list of allowed elements within a rect (according to the DTD, etc). As such, it&apos;s not explicitly required that we support the gradient as being seen as valid in this context. While I agree that it would be a desirable behavior for it to be seen as valid, I don&apos;t see it as a necessary behavior, and this patch is at least a push in the right direction.

I&apos;m sorry. Did not see this comment. You&apos;re right. The DTD disallows linearGradient as child. This means for my example, that we should never find #gradient2 at all. Now it is clear why Firefox fills the rect black (the fallback color) if you fill it with #gradient2. I guess we would still fill it with the gradient, have you checked this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424559</commentid>
    <comment_count>12</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-21 10:51:45 -0700</bug_when>
    <thetext>(In reply to comment #11) 
&gt; I&apos;m sorry. Did not see this comment. You&apos;re right. The DTD disallows linearGradient as child. This means for my example, that we should never find #gradient2 at all. Now it is clear why Firefox fills the rect black (the fallback color) if you fill it with #gradient2. I guess we would still fill it with the gradient, have you checked this?

It currently renders the entire region as transparent. I can change this behavior, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424640</commentid>
    <comment_count>13</comment_count>
      <attachid>98034</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-21 11:56:35 -0700</bug_when>
    <thetext>Created attachment 98034
Repro with visible rect

Here is a version of the repro that outputs a rect that, if filled, should be visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424675</commentid>
    <comment_count>14</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-06-21 12:43:08 -0700</bug_when>
    <thetext>I looked at this and it seems to me that the problem/crash is due to RenderSVGPath not allowing any render children at all. This is by itself correct, but it means the linear gradient+stop have no renderer associated, causing the crash. The patch fixes the problem, but I think you can look at detecting the problem earlier. How about testing somewhere between applyResource and buildStops that the referenced gradient has no renderer and bail out early? This has of course the added benefit of doing less work before detecting the problem. What do you think?
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424682</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-21 12:47:26 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I looked at this and it seems to me that the problem/crash is due to RenderSVGPath not allowing any render children at all. This is by itself correct, but it means the linear gradient+stop have no renderer associated, causing the crash. The patch fixes the problem, but I think you can look at detecting the problem earlier. How about testing somewhere between applyResource and buildStops that the referenced gradient has no renderer and bail out early? This has of course the added benefit of doing less work before detecting the problem. What do you think?
&gt; Cheers,

Yes, it has to be done earlier, everything else is a hack/work-around.
The SVGResourcesCycleSolver could be extended to handle checking whether a gradient has a renderer or not, and bail out (&quot;break the cycle&quot;) if needed. This seems a much safer place to that, than relying on a null check somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424780</commentid>
    <comment_count>16</comment_count>
      <attachid>98061</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-21 15:11:35 -0700</bug_when>
    <thetext>Created attachment 98061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424781</commentid>
    <comment_count>17</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-21 15:15:05 -0700</bug_when>
    <thetext>It looks like the first place that the gradient rendering routine checks anything about the gradient&apos;s linked gradient other than if it exists is during the collect loop, which is pretty far along. Anything before that is really just probing to see if the gradient exists, and doesn&apos;t continue down the chain to see if it&apos;s valid or if it has children, etc. I&apos;ve hijacked the loop a bit, but this should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425042</commentid>
    <comment_count>18</comment_count>
      <attachid>98061</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-21 23:08:30 -0700</bug_when>
    <thetext>Comment on attachment 98061
Patch

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

Almost perfect! I&apos;d like to see another testcase, then I&apos;ll r+ it.

&gt; LayoutTests/svg/custom/invalid-gradient-with-xlink.svg:10
&gt; +        layoutTestController.dumpAsText(true);

Great, dumpAsText + pixel test!

&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:160
&gt; -        collectGradientAttributes(gradientElement);
&gt; +        if (!collectGradientAttributes(gradientElement))
&gt; +            return false;
&gt; +

Ok I made up my mind, this place is just fine as well, no need to dig into SVGResourcesCycleSolver.

I&apos;d like to request another testcase:
&lt;defs&gt;
    &lt;linearGradient id=&quot;vallidGradient&quot;&gt;
         &lt;stop offset=....
    &lt;/linearGradient&gt;
 &lt;/defs&gt;

&lt;rect fill=&quot;url(#grad1) green&quot;&gt;
    &lt;linearGradient id=&quot;grad1&quot; xlink:href=&quot;#validGradient&quot;/&gt;
&lt;/rect&gt;

This should assure that invalidGradient -&gt; validGradient, indirections are also ignored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425064</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-22 00:21:56 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 98061 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98061&amp;action=review
&gt; 
&gt; Almost perfect! I&apos;d like to see another testcase, then I&apos;ll r+ it.
&gt; 
&gt; &gt; LayoutTests/svg/custom/invalid-gradient-with-xlink.svg:10
&gt; &gt; +        layoutTestController.dumpAsText(true);
&gt; 
&gt; Great, dumpAsText + pixel test!
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:160
&gt; &gt; -        collectGradientAttributes(gradientElement);
&gt; &gt; +        if (!collectGradientAttributes(gradientElement))
&gt; &gt; +            return false;
&gt; &gt; +
&gt; 
&gt; Ok I made up my mind, this place is just fine as well, no need to dig into SVGResourcesCycleSolver.
&gt; 
&gt; I&apos;d like to request another testcase:
&gt; &lt;defs&gt;
&gt;     &lt;linearGradient id=&quot;vallidGradient&quot;&gt;
&gt;          &lt;stop offset=....
&gt;     &lt;/linearGradient&gt;
&gt;  &lt;/defs&gt;
&gt; 
&gt; &lt;rect fill=&quot;url(#grad1) green&quot;&gt;
&gt;     &lt;linearGradient id=&quot;grad1&quot; xlink:href=&quot;#validGradient&quot;/&gt;
&gt; &lt;/rect&gt;
&gt; 
&gt; This should assure that invalidGradient -&gt; validGradient, indirections are also ignored.

I&apos;m not sure, but I think it is still strange that we do not support gradients nested in Shapes, but the following example works (shows a red rect):

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;rect width=&quot;100&quot; height=&quot;100&quot;&gt;
	&lt;g id=&quot;test&quot;&gt;
		&lt;rect width=&quot;100&quot; height=&quot;100&quot; fill=&quot;red&quot;/&gt;
	&lt;/g&gt;
&lt;/rect&gt;
&lt;use xlink:href=&quot;#test&quot;/&gt;
&lt;/svg&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425065</commentid>
    <comment_count>20</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-22 00:27:15 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 98061 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98061&amp;action=review
&gt; &gt; 
&gt; &gt; Almost perfect! I&apos;d like to see another testcase, then I&apos;ll r+ it.
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/svg/custom/invalid-gradient-with-xlink.svg:10
&gt; &gt; &gt; +        layoutTestController.dumpAsText(true);
&gt; &gt; 
&gt; &gt; Great, dumpAsText + pixel test!
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:160
&gt; &gt; &gt; -        collectGradientAttributes(gradientElement);
&gt; &gt; &gt; +        if (!collectGradientAttributes(gradientElement))
&gt; &gt; &gt; +            return false;
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Ok I made up my mind, this place is just fine as well, no need to dig into SVGResourcesCycleSolver.
&gt; &gt; 
&gt; &gt; I&apos;d like to request another testcase:
&gt; &gt; &lt;defs&gt;
&gt; &gt;     &lt;linearGradient id=&quot;vallidGradient&quot;&gt;
&gt; &gt;          &lt;stop offset=....
&gt; &gt;     &lt;/linearGradient&gt;
&gt; &gt;  &lt;/defs&gt;
&gt; &gt; 
&gt; &gt; &lt;rect fill=&quot;url(#grad1) green&quot;&gt;
&gt; &gt;     &lt;linearGradient id=&quot;grad1&quot; xlink:href=&quot;#validGradient&quot;/&gt;
&gt; &gt; &lt;/rect&gt;
&gt; &gt; 
&gt; &gt; This should assure that invalidGradient -&gt; validGradient, indirections are also ignored.
&gt; 
&gt; I&apos;m not sure, but I think it is still strange that we do not support gradients nested in Shapes, but the following example works (shows a red rect):
First of all, I want to assure with the testcase I requested, that we don&apos;t ignore the fact that &quot;grad1&quot; has no renderer. Before Jeffs patch, this would just work, as the indirection to &quot;grad1&quot; is ignored. It ends up using &quot;validGradient&quot; in trunk.

&gt; 
&gt; &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&gt; &lt;rect width=&quot;100&quot; height=&quot;100&quot;&gt;
&gt;     &lt;g id=&quot;test&quot;&gt;
&gt;         &lt;rect width=&quot;100&quot; height=&quot;100&quot; fill=&quot;red&quot;/&gt;
&gt;     &lt;/g&gt;
&gt; &lt;/rect&gt;
&gt; &lt;use xlink:href=&quot;#test&quot;/&gt;
&gt; &lt;/svg&gt;

You can not compare this in any way. You should know what happens if we &lt;use&gt; anything in the document. It just gets cloned, no matter in any way where it is. Argubly, this is wrong. Though just excluding nodes from &lt;use&gt; cloning, because they have no renderer is wrong. Anyhow, this is offtopic for this bug report, feel free to open another one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425069</commentid>
    <comment_count>21</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-22 00:36:11 -0700</bug_when>
    <thetext>(In reply to comment #20)

&gt; You can not compare this in any way. You should know what happens if we &lt;use&gt; anything in the document. It just gets cloned, no matter in any way where it is. Argubly, this is wrong. Though just excluding nodes from &lt;use&gt; cloning, because they have no renderer is wrong. Anyhow, this is offtopic for this bug report, feel free to open another one.

At first, I don&apos;t think it is off topic. Like Jeffrey wrote before, this is not allowed according to the DTD of SVG. So the SVG is invalid at this place. Second, why should webdevelopers care about how we handle use. Both are references by xlink. While it works with &lt;use&gt; it doesn&apos;t work with resources. Third, our plan for the future was to share renderers per node and don&apos;t clone nodes anymore. So it definitely will get relevant again later. Also, do we have tests with other resources? What about pattern, clipper and masker? Should they work? Do they work already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425070</commentid>
    <comment_count>22</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-22 00:40:55 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; 
&gt; &gt; You can not compare this in any way. You should know what happens if we &lt;use&gt; anything in the document. It just gets cloned, no matter in any way where it is. Argubly, this is wrong. Though just excluding nodes from &lt;use&gt; cloning, because they have no renderer is wrong. Anyhow, this is offtopic for this bug report, feel free to open another one.
&gt; 
&gt; At first, I don&apos;t think it is off topic. Like Jeffrey wrote before, this is not allowed according to the DTD of SVG. So the SVG is invalid at this place. Second, why should webdevelopers care about how we handle use. 
As I said before it&apos;s off topic: this bug report is about incorrect placed _gradients_.


&gt;Both are references by xlink. While it works with &lt;use&gt; it doesn&apos;t work with resources. Third, our plan for the future was to share renderers per node and don&apos;t clone nodes anymore. So it definitely will get relevant again later. Also, do we have tests with other resources? What about pattern, clipper and masker? Should they work? Do they work already?

&lt;mask&gt; / &lt;clip-path&gt; don&apos;t support xlink:href. &lt;pattern&gt; is affected as well.

To rephrase: that it currently works with &lt;use&gt; is a side-effect of our use implementation, and thus it&apos;s _irrelevant_ here.

Please let&apos;s focus on Jeffs patch here, and move the &lt;use&gt; discussion somewhere else.
Jeffrey, can you have a look at patterns as well? Dirk has a good point, they&apos;re affect in the same way as gradients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425085</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-22 01:20:47 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; 
&gt; &gt; &gt; You can not compare this in any way. You should know what happens if we &lt;use&gt; anything in the document. It just gets cloned, no matter in any way where it is. Argubly, this is wrong. Though just excluding nodes from &lt;use&gt; cloning, because they have no renderer is wrong. Anyhow, this is offtopic for this bug report, feel free to open another one.
&gt; &gt; 
&gt; &gt; At first, I don&apos;t think it is off topic. Like Jeffrey wrote before, this is not allowed according to the DTD of SVG. So the SVG is invalid at this place. Second, why should webdevelopers care about how we handle use. 
&gt; As I said before it&apos;s off topic: this bug report is about incorrect placed _gradients_.
Indeed, incorrect placed _gradients_ that should (according to the DTD) lead to a parsing error. Therefor we should render the SVG up to this point and give a parsing error back. At least if we follow the DTD. Thats what I was referring to.And it of course affects the &lt;use&gt; case as well.

If we take the document as valid, I agree that pattern and gradient are the only candidates that should/could be affected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425088</commentid>
    <comment_count>24</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-22 01:34:11 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; You can not compare this in any way. You should know what happens if we &lt;use&gt; anything in the document. It just gets cloned, no matter in any way where it is. Argubly, this is wrong. Though just excluding nodes from &lt;use&gt; cloning, because they have no renderer is wrong. Anyhow, this is offtopic for this bug report, feel free to open another one.
&gt; &gt; &gt; 
&gt; &gt; &gt; At first, I don&apos;t think it is off topic. Like Jeffrey wrote before, this is not allowed according to the DTD of SVG. So the SVG is invalid at this place. Second, why should webdevelopers care about how we handle use. 
&gt; &gt; As I said before it&apos;s off topic: this bug report is about incorrect placed _gradients_.
&gt; Indeed, incorrect placed _gradients_ that should (according to the DTD) lead to a parsing error. Therefor we should render the SVG up to this point and give a parsing error back. At least if we follow the DTD. Thats what I was referring to.And it of course affects the &lt;use&gt; case as well.
Okay, if you think about stopping the parsing, then you&apos;re right, and it&apos;s closely related as it affects all elements and such constructs.
Hm, I never saw any SVG viewer (except Batik) to report DTD violations and stop parsing.
Is that not the case anymore?
Another case: say the document is valid, and I&apos;m adding a &lt;linearGradient&gt; element as &lt;rect&gt; child, that&apos;s not allowed to be there according to the DTD. Do we disallow that? From a DOM perspective this insertion is fine. From a render tree perspective, we&apos;re already ignoring this and don&apos;t build a linearGradient renderer.

We have to think about this. Do you remember the crashes we had because arbitary children were allowed as &lt;text&gt; kids. That lead to wrong assumptions in the rendering code. We fixed this by specifically disallowing renderer creation for all text children but the allowed ones: altGlyph/tspan/tref/textPath/a.

&gt; If we take the document as valid, I agree that pattern and gradient are the only candidates that should/could be affected.
Okay great we reached consensus. I see it in exactly the same: if the doc is valid, pattern/gradients are the only candidates that we have to look into, otherwhise a whole broad range of new possibilities have to be considered regarding strict DTD correctness (if we want that -- I&apos;d say yes, we want this for the _render tree_, but I&apos;m not sure about the DOM tree).

This is gettin interssting :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425355</commentid>
    <comment_count>25</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-22 10:50:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Jeffrey, can you have a look at patterns as well? Dirk has a good point, they&apos;re affect in the same way as gradients.

Patterns don&apos;t crash, but they handle invalid cases somewhat oddly: xlink to a pattern in defs that has an xlink to an invalid pattern doesn&apos;t crash, it gives us transparent (but not the fallback color, if there is a fallback color). xlink to an invalid pattern gives us the fallback color or black if there is no fallback color. This sounds like it might be appropriate for a separate bug.

I&apos;ll add the requested test case soon, and then resubmit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425807</commentid>
    <comment_count>26</comment_count>
      <attachid>98278</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2011-06-22 18:06:54 -0700</bug_when>
    <thetext>Created attachment 98278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426052</commentid>
    <comment_count>27</comment_count>
      <attachid>98278</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-23 02:57:13 -0700</bug_when>
    <thetext>Comment on attachment 98278
Patch

r=me. Jeff, can you create the same testcases for pattern in a follow-up bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426068</commentid>
    <comment_count>28</comment_count>
      <attachid>98278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 03:44:13 -0700</bug_when>
    <thetext>Comment on attachment 98278
Patch

Clearing flags on attachment: 98278

Committed r89550: &lt;http://trac.webkit.org/changeset/89550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426069</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 03:44:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>97665</attachid>
            <date>2011-06-17 16:03:05 -0700</date>
            <delta_ts>2011-06-17 16:03:05 -0700</delta_ts>
            <desc>Repro</desc>
            <filename>reduce2.svg</filename>
            <type>image/svg+xml</type>
            <size>491</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8
c3ZnDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCiAgIHZlcnNpb249IjEuMCINCiAgIHdp
ZHRoPSIyMDAiDQogICBoZWlnaHQ9IjIwMCI+DQo8ZGVmcz4NCiAgPGxpbmVhckdyYWRpZW50IGlk
PSJsaW5lYXJHcmFkaWVudDEiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDAiIC8+DQo8L2Rl
ZnM+DQo8cGF0aCBkPSJNIDAsMCBDIDAsMSAxLDEgMSwwIEwgMCwwIHogIiBzdHlsZT0iZmlsbDp1
cmwoI2xpbmVhckdyYWRpZW50MSk7IiAgaWQ9InBhdGgwIiAvPg0KPHBhdGggaWQ9InBhdGgxIj4N
CiAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDAiPg0KICAgIDxzdG9wIC8+DQog
IDwvbGluZWFyR3JhZGllbnQ+DQo8L3BhdGg+DQo8L3N2Zz4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97823</attachid>
            <date>2011-06-20 10:33:05 -0700</date>
            <delta_ts>2011-06-20 17:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62914-20110620103304.patch</filename>
            <type>text/plain</type>
            <size>3669</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjA5YzAwOGJjNDU0YmRiNzI2Yzdi
ZGE4ZTlmMjU5MGZlM2U4MDZiLi44NWZjMWQ5MzU2ZGFhMGI1ODA1YWJlMDM1MTM1N2Q2NDgwYzcy
ZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMjAgIEplZmZyZXkgUGZhdSAgPGpw
ZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNvcnJlY3RseSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hl
cyB3aGVuIHJlZmVyZW5jZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyOTE0CisKKyAgICAgICAgQWRkIHRlc3QgdG8gZW5zdXJlIHRoYXQgbm8gY3Jh
c2ggb2NjdXJzLgorCisgICAgICAgICogc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgt
eGxpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2ludmFsaWQt
Z3JhZGllbnQtd2l0aC14bGluay5zdmc6IEFkZGVkLgorCiAyMDExLTA2LTE3ICBZdXRhIEtpdGFt
dXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSBD
aHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9uIGZvciBmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21l
dGVyLXdyaXRpbmctbW9kZS5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3Rv
bS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxpbmstZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY4ZWVmMDY0Yjg0OWE0Zjk0NmZkZDkxZWNiNjYwZWM1NzNhYzYwMDQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14
bGluay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUzogVGhlIHRlc3QgZGlkIG5vdCBj
cmFzaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVu
dC13aXRoLXhsaW5rLnN2ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVu
dC13aXRoLXhsaW5rLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzU1YzhkMjE1MTcxMDQxMzEzZDFhNzFjNzA1
NmUwYmI0NzI1ZmFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9p
bnZhbGlkLWdyYWRpZW50LXdpdGgteGxpbmsuc3ZnCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/Pg0KKzxzdmcNCisg
ICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQorICAgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiDQorICAgdmVyc2lvbj0iMS4wIg0KKyAgIHdpZHRo
PSIyMDAiDQorICAgaGVpZ2h0PSIyMDAiPg0KKzxzY3JpcHQ+PCFbQ0RBVEFbDQorICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCitdXT48L3NjcmlwdD4NCis8ZGVmcz4NCisgIDxsaW5lYXJHcmFk
aWVudCBpZD0ibGluZWFyR3JhZGllbnQxIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQwIiAv
Pg0KKzwvZGVmcz4NCis8cGF0aCBkPSJNIDAsMCBDIDAsMSAxLDEgMSwwIEwgMCwwIHogIiBzdHls
ZT0iZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50MSk7IiAgaWQ9InBhdGgwIiAvPg0KKzxwYXRoIGlk
PSJwYXRoMSI+DQorICA8bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhckdyYWRpZW50MCI+DQorICAg
IDxzdG9wIC8+DQorICA8L2xpbmVhckdyYWRpZW50Pg0KKzwvcGF0aD4NCis8dGV4dCB5PSIyMCIg
eD0iMTAiPlBBU1M6IFRoZSB0ZXN0IGRpZCBub3QgY3Jhc2guPC90ZXh0Pg0KKzwvc3ZnPg0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhYzIxMWJjNGVkZWY5NzhlZDc4MzVmNzU0YzU2MDMyYTM3YTNlNjc4Li4yNzJk
Nzk0NDI0Y2IzNWUzMDE2MzkyNjcyMzZlZDA5YjNjYTMwMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMDYtMjAgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmNvcnJlY3Rs
eSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hlcyB3aGVuIHJlZmVyZW5jZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTE0CisK
KyAgICAgICAgQWRkZWQgY2hlY2sgdG8gZW5zdXJlIGdyYWRpZW50IHN0b3BzIGhhdmUgdGhlIGNv
cnJlY3QgcHJvcGVydGllcyBiZWZvcmUgYXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlbS4KKworICAg
ICAgICBUZXN0OiBzdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay5zdmcKKwor
ICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHR3JhZGllbnRFbGVtZW50OjpidWlsZFN0b3BzKToKKwogMjAxMS0wNi0xNiAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZ
dXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAppbmRleCBlNzY2NzIzODZjMWE1NDRiYTdlYTA4MDJiNDEyMTI1YzgxZjVmYzM3Li5kOWJhODY3
NzQwY2VmNTk0YjRkNzk2NzI4N2UyZTQ0YzRmZGUzNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTk0LDYgKzE5NCw5IEBAIFZlY3RvcjxHcmFkaWVu
dDo6Q29sb3JTdG9wPiBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMoKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgU1ZHU3RvcEVsZW1lbnQqIHN0b3AgPSBzdGF0aWNfY2Fz
dDxTVkdTdG9wRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAoIXN0b3AtPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBDb2xvciBjb2xvciA9IHN0b3At
PnN0b3BDb2xvckluY2x1ZGluZ09wYWNpdHkoKTsKIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHJp
Z2h0IG1vbm90b25pYyBvZmZzZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97896</attachid>
            <date>2011-06-20 17:41:37 -0700</date>
            <delta_ts>2011-06-21 15:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62914-20110620174136.patch</filename>
            <type>text/plain</type>
            <size>3821</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjA5YzAwOGJjNDU0YmRiNzI2Yzdi
ZGE4ZTlmMjU5MGZlM2U4MDZiLi44ZTU1ZmY1OTkxNmQxNjYwN2MyOTk1NWM4ZTljYWM4OGY0YWFi
Y2E2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMjAgIEplZmZyZXkgUGZhdSAgPGpw
ZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNvcnJlY3RseSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hl
cyB3aGVuIHJlZmVyZW5jZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyOTE0CisKKyAgICAgICAgQWRkZWQgdGVzdCB0byBjaGVjayBmb3IgY3Jhc2hp
bmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0
aC14bGluay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20vaW52YWxp
ZC1ncmFkaWVudC13aXRoLXhsaW5rLnN2ZzogQWRkZWQuCisKIDIwMTEtMDYtMTcgIFl1dGEgS2l0
YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRl
IENocm9taXVtIHRlc3QgZXhwZWN0YXRpb24gZm9yIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQv
bWV0ZXItd3JpdGluZy1tb2RlLmh0bWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3Vz
dG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjhlZWYwNjRiODQ5YTRmOTQ2ZmRkOTFlY2I2NjBlYzU3M2FjNjAwNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRo
LXhsaW5rLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTOiBUaGUgdGVzdCBkaWQgbm90
IGNyYXNoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRp
ZW50LXdpdGgteGxpbmsuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRp
ZW50LXdpdGgteGxpbmsuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNTVjOGQyMTUxNzEwNDEzMTNkMWE3MWM3
MDU2ZTBiYjQ3MjVmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9t
L2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay5zdmcKQEAgLTAsMCArMSwyMiBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQorPHN2Zw0K
KyAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCisgICB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCisgICB2ZXJzaW9uPSIxLjAiDQorICAgd2lk
dGg9IjIwMCINCisgICBoZWlnaHQ9IjIwMCI+DQorPHNjcmlwdD48IVtDREFUQVsNCisgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOw0KK11dPjwvc2NyaXB0Pg0KKzxkZWZzPg0KKyAgPGxpbmVhckdy
YWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDEiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDAi
IC8+DQorPC9kZWZzPg0KKzxwYXRoIGQ9Ik0gMCwwIEMgMCwxIDEsMSAxLDAgTCAwLDAgeiAiIHN0
eWxlPSJmaWxsOnVybCgjbGluZWFyR3JhZGllbnQxKTsiICBpZD0icGF0aDAiIC8+DQorPHBhdGgg
aWQ9InBhdGgxIj4NCisgIDxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQwIj4NCisg
ICAgPHN0b3AgLz4NCisgIDwvbGluZWFyR3JhZGllbnQ+DQorPC9wYXRoPg0KKzx0ZXh0IHk9IjIw
IiB4PSIxMCI+UEFTUzogVGhlIHRlc3QgZGlkIG5vdCBjcmFzaC48L3RleHQ+DQorPC9zdmc+DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGFjMjExYmM0ZWRlZjk3OGVkNzgzNWY3NTRjNTYwMzJhMzdhM2U2NzguLjBj
NjVkYTE2OTAzNWIzMDllOWRhYWRlMzZiMGFlZWVjNzUxYWNiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMS0wNi0yMCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY29ycmVj
dGx5IHBsYWNlZCBTVkcgZ3JhZGllbnRzIGNhbiBjYXVzZSBjcmFzaGVzIHdoZW4gcmVmZXJlbmNl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5MTQK
KworICAgICAgICBBZGRlZCBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBncmFkaWVudCBzdG9w
cyBoYXZlIGEgcmVuZGVyaW5nIGNvbnRleHQuIFRoZSBvbmx5IHJlYXNvbiB0aGV5IHNob3VsZG4n
dCBoYXZlIHJlbmRlcmluZyBjb250ZXh0cyB3b3VsZCBiZSBpZiB0aGUgZ3JhZGllbnRzIGFyZSBk
ZWZpbmVkIGluIGEgbG9jYXRpb24gaW4gdGhlIFhNTCB3aGVyZSB0aGV5IGFyZSBkaXNhbGxvd2Vk
IChlLmcuIGluc2lkZSBhIHNoYXBlIGVsZW1lbnQpLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0
b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhsaW5rLnN2ZworCisgICAgICAgICogc3ZnL1NWR0dy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6
OmJ1aWxkU3RvcHMpOgorCiAyMDExLTA2LTE2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU3NjY3MjM4NmMx
YTU0NGJhN2VhMDgwMmI0MTIxMjVjODFmNWZjMzcuLmQ5YmE4Njc3NDBjZWY1OTRiNGQ3OTY3Mjg3
ZTJlNDRjNGZkZTM0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQu
Y3BwCkBAIC0xOTQsNiArMTk0LDkgQEAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IFNWR0dy
YWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcygpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBTVkdTdG9wRWxlbWVudCogc3RvcCA9IHN0YXRpY19jYXN0PFNWR1N0b3BFbGVtZW50Kj4o
ZWxlbWVudCk7CisgICAgICAgIGlmICghc3RvcC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCiAgICAgICAgIENvbG9yIGNvbG9yID0gc3RvcC0+c3RvcENvbG9ySW5jbHVkaW5n
T3BhY2l0eSgpOwogCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgcmlnaHQgbW9ub3RvbmljIG9mZnNl
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>98034</attachid>
            <date>2011-06-21 11:56:35 -0700</date>
            <delta_ts>2011-06-21 11:56:35 -0700</delta_ts>
            <desc>Repro with visible rect</desc>
            <filename>visible.svg</filename>
            <type>image/svg+xml</type>
            <size>555</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8
c3ZnDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczp4bGlu
az0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCiAgIHZlcnNpb249IjEuMCINCiAgIHdp
ZHRoPSIyMDAiDQogICBoZWlnaHQ9IjIwMCI+DQo8ZGVmcz4NCiAgPGxpbmVhckdyYWRpZW50IGlk
PSJsaW5lYXJHcmFkaWVudDEiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDAiIC8+DQo8L2Rl
ZnM+DQo8cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3R5bGU9ImZpbGw6dXJsKCNsaW5l
YXJHcmFkaWVudDEpOyIgIGlkPSJyZWN0MCIgLz4NCjxwYXRoIGlkPSJwYXRoMCI+DQogIDxsaW5l
YXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQwIj4NCiAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0
b3AtY29sb3I9IndoaXRlIi8+DQogICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJibGFj
ayIvPg0KICA8L2xpbmVhckdyYWRpZW50Pg0KPC9wYXRoPg0KPC9zdmc+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98061</attachid>
            <date>2011-06-21 15:11:35 -0700</date>
            <delta_ts>2011-06-22 18:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62914-20110621151133.patch</filename>
            <type>text/plain</type>
            <size>15910</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYjA5YzAwOGJjNDU0YmRiNzI2Yzdi
ZGE4ZTlmMjU5MGZlM2U4MDZiLi45ZWYxNDdhMTNlYmQzNTQ4M2JlNDQ2MmRjYzY5MmQ5YWU1ZTNl
NDlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDYtMjEgIEplZmZyZXkgUGZhdSAgPGpw
ZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNvcnJlY3RseSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hl
cyB3aGVuIHJlZmVyZW5jZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyOTE0CisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gbWFrZSBzdXJlIGZhbGxi
YWNrIGNvbG9yIGlzIHVzZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2ludmFs
aWQtZ3JhZGllbnQtd2l0aC14bGluay1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhsaW5rLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxpbmsuc3ZnOiBB
ZGRlZC4KKwogMjAxMS0wNi0xNyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGUgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbiBm
b3IgZmFzdC9kb20vSFRNTE1ldGVyRWxlbWVudC9tZXRlci13cml0aW5nLW1vZGUuaHRtbC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhs
aW5rLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVu
dC13aXRoLXhsaW5rLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODY3NmM5ZTY4MjU2NmE3ZjQ2
YmU2NzFiNzNkMGNkNmQ4NTY2ZGYzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTI3Ngp6Y21l
QVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VG
eGVVZ00KemlIMnMwMjlgIT9zWWEkSWhHdDB5IytKemAjO0opdzV5UkJQNiFZOEQ8QUEyZldqWj90
Y3NlXlAxUWd8YFcjKihaCnpGak8kTWhUUEEtOTNiLVZSX2ZkaDU0KXw+MXYlfDlDZyFDQ21wSVNh
bUwwejlZfTZ+Vz9UUXw9bSp2TEhJO1Fmcgp6WlVnKHg/dEg3RzxzYUdZZXpObzJZfGdLcSNDdUY2
QHlEN0RDNyo5Zm85RTNvQGxfOUktdVpwXntoI2tGKXReNiEKelRreHxtPmF2SkZ6ZXM0WHxJdEgj
anl3XiR8QXtlOSMjI0dNaEhyUDluM3RObjFPTWVzbUczdXk9OTQ+P1F9UW5WCnp7XzIwcFM3JU0t
NSZSJmR1eTJhIzV2N05iM28+Sl9sbjZoIyo3PCZ9cTNOTnNLRSlCc1N2Y2o+RSVLOGFBTktTcgp6
UGZJZn5iKHFDQGkyYk9PbUc9JEBpeTReQEtKKHI8KkNfSHRVMld3Z3k+NlM7dTBpQHdRKFFPa2VF
VDNALTI1cWkKeiEtXj57WFJtIU8oMz85OygoaHRUKkZBYTUrSmNeRTN8OX1AJDRsJlcrJWROeCF0
Qyo0KD5rWktEKGVLKl9DOX1DCnprfiFtVD5hNkxKbm5KMkZEdG5TYikqMHR5S0kzTllvYn5NVCti
O289SHExQktaKDx6emBTSUk7c1Z1SnprQUQ1Owp6P2U9Qlktc2BzflBHKX4+WVBWZVRURGAtK3oy
Q25VYnY+PHxeeF5kdXghJFdecTk8OH0tTTs8Zz5Ad3hVTjZHezMKem5MVjdFYGVhZng5IXp4Tk50
fjVAV1lySEpGLWF3X0M2X1d3TE1rXnxUKGoxZ0puZ05GZCZTOWt6OCFJNVUheW5lCnpgMWF1VXl0
fUhgYH1UO285XkpuOU0mUjQ2alcyZz81fXFZcFV6KWdkYW8kN29vbGo+PT1kUn1GMj5qUmViZlpV
SAp6Pk04JUchMFYtRSZuNSY8fDVNNistZX00QClpUis3bz9VQWAjUW82OTtxcUA0S1F3KitsQHNV
Z3RyYX1vUF5lP0sKemRTMzleVntjUzFgQ05MUHZTV1lPU0Vwa1ZLUE1QRU42cD0qO3liNnleMyR5
Vlpnc1p1cnF8Q04jcHF2V3BTU3g9Cno/ODlGPklvOWVHRGZiLWB8TFIoIV8rZyolS0QrcXNgNWxT
Tlp8fVJEQF9NbWgpYSVgc0MrPUZidjEmXkhaU2AtcQp6ZVhFMmVIKk1VdnVgWX41ZCZ7RWFFVShR
YXt0VjJqeHFqMD52cmN8NSp1cWBZdX0tKE1lfDF2JDFiPU89e0Z5dikKeih8SjdDZCkoQzlWQlA8
Z2QwWChjKmtfc1gjZz9ENzNTTFY4Sl5XaEZKZGBhP14xI0puSkBFeWByQjY2RilXcXEkCno3UUhR
UkdqRHN0TUM7cWhZaSlCQWNYaXVedC1mOE43Y0l4UW59N0F5YFI3KyV6NUQhMEokSj84S1dyPE54
dm17cgp6NztuVkRwdXBoaTt1dW9GYDFhO1Qtb3BrQSUjUE9HPmEoQHc0KUVAYG82NUEkKHQmbTE/
X2FVY2kjUC0tTEBuYWEKektOZFp2JUUtalJBKXclKHoqVW9edUkkamowT2RDdiZgREBHbGZuZCUx
cS1pZ1U8YFUlMCMqJUNjN309VmdwWm02CnpMZWx+KzM1OEhVX2ZiUGUhKD1wX2pPTHh1cUZ9VW05
SVl9JnRJXlJgIUR2Zn5Xd2lBOytNOyRDP0kzV1JWZnRRcQp6RWB9NC09WXNXPDFYJXR3dSRYWWRk
UzFYVG5DfTZHJXNlZm16RUBLTnF0RkV2cWBzRjRCbEQ3LUUwSWokVX1FIWQKem4yY29WMXMwd08m
ejMye1pFO1pHa1dnVXNiJU5SSShCTDMhOzRvYDs3cmV7SSg1UjN3Plg2WTg4QkhVanhkdUA+Cnpq
Z30qJENGXktpR2d8d093bnMpPVhyb088Y25GTChvPTNZQXFhQ2MjRjZVP2BkfntmMXVucDlGYEsr
cVR6YCY2Swp6U189VEd1dHJDWk0jc31lMmxocT5fQ15ReE1oRXNyMmxuNzBGZ2omSWx9ViVAJTt4
PyklViRoNnZqO0JrVyQ8K00KS2I2TXc8JjskVSozM18oYAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdp
dGgteGxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdy
YWRpZW50LXdpdGgteGxpbmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYWQw
MjcyNzEzYjcxZmRjODc5NDAxNmM4ZWYxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZh
bGlkLWdyYWRpZW50LXdpdGgteGxpbmsuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZh
bGlkLWdyYWRpZW50LXdpdGgteGxpbmsuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NDkyYzVjYzdjYjc4NTI3
MTkzOGNjNDU1MWYxODE5MTlmZmViM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay5zdmcKQEAgLTAsMCArMSwyMyBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+
DQorPHN2Zw0KKyAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCisgICB4bWxu
czp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayINCisgICB2ZXJzaW9uPSIxLjAi
DQorICAgd2lkdGg9IjIwMCINCisgICBoZWlnaHQ9IjIwMCI+DQorPHNjcmlwdD48IVtDREFUQVsN
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7DQorXV0+PC9zY3JpcHQ+DQorPGRlZnM+DQor
ICA8bGluZWFyR3JhZGllbnQgaWQ9ImxpbmVhckdyYWRpZW50MSIgeGxpbms6aHJlZj0iI2xpbmVh
ckdyYWRpZW50MCIgLz4NCis8L2RlZnM+DQorPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAi
IHN0eWxlPSJmaWxsOnVybCgjbGluZWFyR3JhZGllbnQxKSBncmVlbjsiIGlkPSJyZWN0MCIgLz4N
Cis8dGV4dCBpZD0idGV4dDAiIHg9IjEwIiB5PSIyMCIgc3R5bGU9ImZpbGw6Z3JlZW4iPg0KKyAg
UEFTUw0KKyAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDAiPg0KKyAgICA8c3Rv
cCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IndoaXRlIi8+DQorICAgIDxzdG9wIG9mZnNldD0iMSIg
c3RvcC1jb2xvcj0iYmxhY2siLz4NCisgIDwvbGluZWFyR3JhZGllbnQ+DQorPC90ZXh0Pg0KKzwv
c3ZnPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhYzIxMWJjNGVkZWY5NzhlZDc4MzVmNzU0YzU2MDMyYTM3YTNl
Njc4Li4zNjcxYzM4NzFkYTZjNmQ1ZGU3ZGI1NDUzZDFlZDI3NTRhOWNiNTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMjEgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bmNvcnJlY3RseSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hlcyB3aGVuIHJl
ZmVyZW5jZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYyOTE0CisKKyAgICAgICAgQWRkZWQgYSBjaGVjayBmb3IgZ3JhZGllbnQgcmVuZGVyaW5nIGNv
bnRleHRzLiBJZiB0aGUgY29udGV4dHMgY2FuJ3QgYmUgZm91bmQsIHRoZSBncmFkaWVudCBtdXN0
IGJlIGluIGFuIGludmFsaWQgbG9jYXRpb24sIHNvIHdlIHVzZSB0aGUgZmFsbGJhY2sgY29sb3Ig
aW5zdGVhZC4KKworICAgICAgICBUZXN0OiBzdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0
aC14bGluay5zdmcKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudDo6Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmNvbGxlY3RHcmFk
aWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpjb2xs
ZWN0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVu
dEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoK
KwogMjAxMS0wNi0xNiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHAKaW5kZXggYWE1Y2I0ZTI4NDM4YmJmOWQ2NGIzOTYyMTViZjBlYTU1NzNmNzlhNS4uNTllODhi
Y2FjYWUxMzVmMGYyNzk5OWU5ZWI5YTJiNWRhMDYwNzUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
CkBAIC0xNTUsNyArMTU1LDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBs
eVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSoKIAogICAgIGlmICht
X3Nob3VsZENvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMpIHsKICAgICAgICAgZ3JhZGllbnRFbGVt
ZW50LT51cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShhbnlRTmFtZSgpKTsKLSAgICAgICAgY29s
bGVjdEdyYWRpZW50QXR0cmlidXRlcyhncmFkaWVudEVsZW1lbnQpOworICAgICAgICBpZiAoIWNv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoZ3JhZGllbnRFbGVtZW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgICAgICBtX3Nob3VsZENvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMg
PSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKaW5kZXggYzU2MzVhYTkxZmMyOTMyNDFh
MmFiZjVkYjJhM2MyOWIyYjEwZjdkNS4uNmU4YzFmODM3MTA3ZWM0MWYzMjI3ZTY2YTc0ZWNiOGU5
ZWJkZTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCBib29sIGJvdW5kaW5nQm94TW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKFNWR0dyYWRpZW50
RWxlbWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRl
cyhTVkdHcmFkaWVudEVsZW1lbnQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGll
bnQoR3JhZGllbnREYXRhKiwgU1ZHR3JhZGllbnRFbGVtZW50KikgY29uc3QgPSAwOwogCiAgICAg
R3JhZGllbnRTcHJlYWRNZXRob2QgcGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShTVkdH
cmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5jcHAKaW5kZXggNTY5YTc1OWU4YWMwZDNjMTc2NTZjZTY1Y2JkYmFjMmEy
NGM2MWFhYS4uZTU4YmRkOWUxNjhiZGJmNWFiNTVhMzQ2OGI0OTUxZGM5MWUxYjk5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6flJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQo
KQogewogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KiBncmFkaWVudEVsZW1lbnQpCiti
b29sIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJp
YnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KiBncmFkaWVudEVsZW1lbnQpCiB7CiAgICAgbV9hdHRy
aWJ1dGVzID0gTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGljX2Nhc3Q8U1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50Kj4oZ3JhZGllbnRFbGVtZW50KS0+Y29sbGVjdEdyYWRpZW50
QXR0cmlidXRlcyhtX2F0dHJpYnV0ZXMpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQqPihncmFkaWVudEVsZW1lbnQpLT5jb2xsZWN0R3JhZGllbnRBdHRy
aWJ1dGVzKG1fYXR0cmlidXRlcyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJH
cmFkaWVudDo6YnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqIGdyYWRpZW50RGF0YSwgU1ZHR3Jh
ZGllbnRFbGVtZW50KiBncmFkaWVudEVsZW1lbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudC5oCmluZGV4IDJkMzU0MTg2ZmI0YmI1NmZhNDBlNDcxZDFmYmI5N2ZjYmQ0YzMwM2UuLjhj
OWJiMWQ2MWU5MTIyNDkxYWIyMDYzODM3MTZlOTkzZDhjNDNjODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5l
YXJHcmFkaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBib3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuYm91bmRpbmdC
b3hNb2RlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0o
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdy
YWRpZW50VHJhbnNmb3JtKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEdyYWRpZW50QXR0
cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdy
YWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
YnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqLCBTVkdHcmFkaWVudEVsZW1lbnQqKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCmluZGV4IGZkNTg2MWRh
ZTAyOGJlZDhkNWE1MmU3OTI4NzliZWIzNWRhMDJlNGIuLmVkZDQyOTNkMTI1OTBmNGQwMDg3Mjhi
ZTZiZTlmMTU1NmM2NmNlNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcApAQCAt
MzksMTAgKzM5LDEwIEBAIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6On5SZW5kZXJT
VkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCkKIHsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKFNWR0dyYWRpZW50RWxl
bWVudCogZ3JhZGllbnRFbGVtZW50KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKFNWR0dyYWRpZW50RWxlbWVudCogZ3JhZGll
bnRFbGVtZW50KQogewogICAgIG1fYXR0cmlidXRlcyA9IFJhZGlhbEdyYWRpZW50QXR0cmlidXRl
cygpOwotICAgIHN0YXRpY19jYXN0PFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCo+KGdyYWRpZW50
RWxlbWVudCktPmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMobV9hdHRyaWJ1dGVzKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Kj4oZ3JhZGllbnRFbGVt
ZW50KS0+Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhtX2F0dHJpYnV0ZXMpOwogfQogCiB2b2lk
IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQoR3JhZGllbnRE
YXRhKiBncmFkaWVudERhdGEsIFNWR0dyYWRpZW50RWxlbWVudCogZ3JhZGllbnRFbGVtZW50KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVJhZGlhbEdyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAppbmRleCA5ZDM3ZDExY2VkNzNkNzlhODcz
MjFhZGVhYTc4MjVkYjg5NDY2N2FiLi5kMzBlNGFhNWE5MmFhOGVjMzFhMzU5MGFjODg2Yjk1MTY5
NjUyM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9hdHRyaWJ1dGVzLmJvdW5kaW5nQm94TW9kZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSB7IHRy
YW5zZm9ybSA9IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50Kik7Cisg
ICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVt
ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoR3JhZGllbnREYXRhKiwgU1ZH
R3JhZGllbnRFbGVtZW50KikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGFlN2JmMzlkMzNiMDcwNThk
MTI4MzhjODU2ZmFmNmRhNWE2MGM5OWMuLjZkNzYxOWRjY2RmYzEyMDE1Yjc3YzQ4NDJlNTZiOGU5
MTAzYTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGUKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudCh0aGlz
KTsKIH0KIAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0
dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorYm9vbCBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewogICAgIEhhc2hTZXQ8U1ZHR3JhZGllbnRF
bGVtZW50Kj4gcHJvY2Vzc2VkR3JhZGllbnRzOwogCkBAIC0xODgsNiArMTg4LDkgQEAgdm9pZCBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFy
R3JhZGllbnRBdHRyaWJ1dGUKICAgICBTVkdHcmFkaWVudEVsZW1lbnQqIGN1cnJlbnQgPSB0aGlz
OwogCiAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50LT5yZW5kZXJl
cigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGlmICghYXR0cmlidXRl
cy5oYXNTcHJlYWRNZXRob2QoKSAmJiBjdXJyZW50LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnNw
cmVhZE1ldGhvZEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlcy5zZXRTcHJlYWRNZXRob2Qo
Y3VycmVudC0+c3ByZWFkTWV0aG9kKCkpOwogCkBAIC0yMzksNiArMjQyLDggQEAgdm9pZCBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGUKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjdXJyZW50ID0gMDsK
ICAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmNhbGN1bGF0ZVN0YXJ0RW5kUG9pbnRzKGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmli
dXRlcyYgYXR0cmlidXRlcywgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRmxvYXRQb2ludCYgZW5k
UG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgK
aW5kZXggYzllZjYzNGRkYjFiYjViNjcyZjkxZDNkNWViNjA4MjI4YzM5MjIyNS4uMTA4MzYwZWY2
MTM4OTcwODFmZjRlMDU3NTY5NjcwMGVjNTQ3YjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHR3JhZGllbnRFbGVtZW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgY29sbGVjdEdy
YWRpZW50QXR0cmlidXRlcyhMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIGNv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJik7CiAgICAg
dm9pZCBjYWxjdWxhdGVTdGFydEVuZFBvaW50cyhjb25zdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMmLCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGbG9hdFBvaW50JiBlbmRQb2ludCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
Y3BwCmluZGV4IGQyZWNkYzlkODQ4YTRmMTRmYzZjOTM1ZmEzMGJhMmVhOGI5NGI2NzguLmQ3NWRj
ZmNhOWUwY2M4NDhkYjIxYTcwNTFiMzIxN2UzZGQwY2E0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
UmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKIH0KIAotdm9pZCBTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzJiBhdHRyaWJ1dGVzKQorYm9vbCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQog
ewogICAgIEhhc2hTZXQ8U1ZHR3JhZGllbnRFbGVtZW50Kj4gcHJvY2Vzc2VkR3JhZGllbnRzOwog
CkBAIC0yMDUsNiArMjA1LDkgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxl
Y3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGUKICAgICBTVkdHcmFk
aWVudEVsZW1lbnQqIGN1cnJlbnQgPSB0aGlzOwogCiAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAg
ICAgICAgaWYgKCFjdXJyZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNTcHJlYWRNZXRob2QoKSAmJiBjdXJyZW50
LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpKQogICAgICAgICAgICAg
YXR0cmlidXRlcy5zZXRTcHJlYWRNZXRob2QoY3VycmVudC0+c3ByZWFkTWV0aG9kKCkpOwogCkBA
IC0yNjYsNiArMjY5LDggQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGUKIAogICAgIGlmICghYXR0
cmlidXRlcy5oYXNGeSgpKQogICAgICAgICBhdHRyaWJ1dGVzLnNldEZ5KGF0dHJpYnV0ZXMuY3ko
KSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OmNhbGN1bGF0ZUZvY2FsQ2VudGVyUG9pbnRzQW5kUmFkaXVzKGNvbnN0IFJhZGlhbEdyYWRp
ZW50QXR0cmlidXRlcyYgYXR0cmlidXRlcywgRmxvYXRQb2ludCYgZm9jYWxQb2ludCwgRmxvYXRQ
b2ludCYgY2VudGVyUG9pbnQsIGZsb2F0JiByYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKaW5kZXggN2M5Yzc1ZDUwNDAxYjA2YjRlMmU4NTE4
YTBiMmEwOThiMzg3ZmExZS4uZTZkMmYyYjJiN2QxMmMxOTk4MDYzMjcwNmIxY2ZjMTIwYTE5NDJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaApA
QCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMg
U1ZHR3JhZGllbnRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAotICAgIHZvaWQgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhSYWRpYWxHcmFkaWVu
dEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFs
R3JhZGllbnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBjYWxjdWxhdGVGb2NhbENlbnRlclBvaW50
c0FuZFJhZGl1cyhjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBm
b2NhbFBvaW50LCBGbG9hdFBvaW50JiBjZW50ZXJQb2ludCwgZmxvYXQmIHJhZGl1cyk7CiAKIHBy
aXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98278</attachid>
            <date>2011-06-22 18:06:54 -0700</date>
            <delta_ts>2011-06-23 03:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62914-20110622180652.patch</filename>
            <type>text/plain</type>
            <size>19582</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk1MDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMDlkNGJhM2NkMDUzYTlmOGVjNjJj
MmYzNGIyY2FlYTQzMTAzZGE5Li41OWJlYTgwMDQ5NDZjNmMwYTk2MjNlYTg4YTg3OWJhYjcwOWFm
NjM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMjIgIEplZmZyZXkgUGZhdSAgPGpw
ZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNvcnJlY3RseSBwbGFjZWQgU1ZHIGdyYWRpZW50cyBjYW4gY2F1c2UgY3Jhc2hl
cyB3aGVuIHJlZmVyZW5jZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyOTE0CisKKyAgICAgICAgQWRkZWQgdGVzdHMgdG8gbWFrZSBzdXJlIGZhbGxi
YWNrIGNvbG9yIGlzIHVzZWQgcHJvcGVybHkgd2l0aCBpbnZhbGlkIGdyYWRpZW50cy4KKworICAg
ICAgICAqIHN2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhsaW5rLWV4cGVjdGVkLnBu
ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxp
bmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2ludmFsaWQtZ3Jh
ZGllbnQtd2l0aC14bGluay5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jdXN0b20veGxpbmst
dG8taW52YWxpZC1ncmFkaWVudC1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9j
dXN0b20veGxpbmstdG8taW52YWxpZC1ncmFkaWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9jdXN0b20veGxpbmstdG8taW52YWxpZC1ncmFkaWVudC5zdmc6IEFkZGVkLgor
CiAyMDExLTA2LTIyICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYktpdDIgVGVzdHNdIHBsdWdpbnMvbnBydW50aW1lL2VtYmVkLXByb3BlcnR5LWVxdWFs
aXR5Lmh0bWwgZmFpbGluZyBzaW5jZSBpbnRyb2R1Y3Rpb24gaW4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhsaW5rLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vaW52YWxpZC1ncmFkaWVudC13aXRoLXhsaW5rLWV4
cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODY3NmM5ZTY4MjU2NmE3ZjQ2YmU2NzFiNzNkMGNkNmQ4
NTY2ZGYzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTI3Ngp6Y21lQVNATj8ob2xIeWB1VkJx
IWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVVZ00KemlIMnMwMjlg
IT9zWWEkSWhHdDB5IytKemAjO0opdzV5UkJQNiFZOEQ8QUEyZldqWj90Y3NlXlAxUWd8YFcjKiha
CnpGak8kTWhUUEEtOTNiLVZSX2ZkaDU0KXw+MXYlfDlDZyFDQ21wSVNhbUwwejlZfTZ+Vz9UUXw9
bSp2TEhJO1Fmcgp6WlVnKHg/dEg3RzxzYUdZZXpObzJZfGdLcSNDdUY2QHlEN0RDNyo5Zm85RTNv
QGxfOUktdVpwXntoI2tGKXReNiEKelRreHxtPmF2SkZ6ZXM0WHxJdEgjanl3XiR8QXtlOSMjI0dN
aEhyUDluM3RObjFPTWVzbUczdXk9OTQ+P1F9UW5WCnp7XzIwcFM3JU0tNSZSJmR1eTJhIzV2N05i
M28+Sl9sbjZoIyo3PCZ9cTNOTnNLRSlCc1N2Y2o+RSVLOGFBTktTcgp6UGZJZn5iKHFDQGkyYk9P
bUc9JEBpeTReQEtKKHI8KkNfSHRVMld3Z3k+NlM7dTBpQHdRKFFPa2VFVDNALTI1cWkKeiEtXj57
WFJtIU8oMz85OygoaHRUKkZBYTUrSmNeRTN8OX1AJDRsJlcrJWROeCF0Qyo0KD5rWktEKGVLKl9D
OX1DCnprfiFtVD5hNkxKbm5KMkZEdG5TYikqMHR5S0kzTllvYn5NVCtiO289SHExQktaKDx6emBT
SUk7c1Z1SnprQUQ1Owp6P2U9Qlktc2BzflBHKX4+WVBWZVRURGAtK3oyQ25VYnY+PHxeeF5kdXgh
JFdecTk8OH0tTTs8Zz5Ad3hVTjZHezMKem5MVjdFYGVhZng5IXp4Tk50fjVAV1lySEpGLWF3X0M2
X1d3TE1rXnxUKGoxZ0puZ05GZCZTOWt6OCFJNVUheW5lCnpgMWF1VXl0fUhgYH1UO285XkpuOU0m
UjQ2alcyZz81fXFZcFV6KWdkYW8kN29vbGo+PT1kUn1GMj5qUmViZlpVSAp6Pk04JUchMFYtRSZu
NSY8fDVNNistZX00QClpUis3bz9VQWAjUW82OTtxcUA0S1F3KitsQHNVZ3RyYX1vUF5lP0sKemRT
MzleVntjUzFgQ05MUHZTV1lPU0Vwa1ZLUE1QRU42cD0qO3liNnleMyR5Vlpnc1p1cnF8Q04jcHF2
V3BTU3g9Cno/ODlGPklvOWVHRGZiLWB8TFIoIV8rZyolS0QrcXNgNWxTTlp8fVJEQF9NbWgpYSVg
c0MrPUZidjEmXkhaU2AtcQp6ZVhFMmVIKk1VdnVgWX41ZCZ7RWFFVShRYXt0VjJqeHFqMD52cmN8
NSp1cWBZdX0tKE1lfDF2JDFiPU89e0Z5dikKeih8SjdDZCkoQzlWQlA8Z2QwWChjKmtfc1gjZz9E
NzNTTFY4Sl5XaEZKZGBhP14xI0puSkBFeWByQjY2RilXcXEkCno3UUhRUkdqRHN0TUM7cWhZaSlC
QWNYaXVedC1mOE43Y0l4UW59N0F5YFI3KyV6NUQhMEokSj84S1dyPE54dm17cgp6NztuVkRwdXBo
aTt1dW9GYDFhO1Qtb3BrQSUjUE9HPmEoQHc0KUVAYG82NUEkKHQmbTE/X2FVY2kjUC0tTEBuYWEK
ektOZFp2JUUtalJBKXclKHoqVW9edUkkamowT2RDdiZgREBHbGZuZCUxcS1pZ1U8YFUlMCMqJUNj
N309VmdwWm02CnpMZWx+KzM1OEhVX2ZiUGUhKD1wX2pPTHh1cUZ9VW05SVl9JnRJXlJgIUR2Zn5X
d2lBOytNOyRDP0kzV1JWZnRRcQp6RWB9NC09WXNXPDFYJXR3dSRYWWRkUzFYVG5DfTZHJXNlZm16
RUBLTnF0RkV2cWBzRjRCbEQ3LUUwSWokVX1FIWQKem4yY29WMXMwd08mejMye1pFO1pHa1dnVXNi
JU5SSShCTDMhOzRvYDs3cmV7SSg1UjN3Plg2WTg4QkhVanhkdUA+CnpqZ30qJENGXktpR2d8d093
bnMpPVhyb088Y25GTChvPTNZQXFhQ2MjRjZVP2BkfntmMXVucDlGYEsrcVR6YCY2Swp6U189VEd1
dHJDWk0jc31lMmxocT5fQ15ReE1oRXNyMmxuNzBGZ2omSWx9ViVAJTt4PyklViRoNnZqO0JrVyQ8
K00KS2I2TXc8JjskVSozM18oYAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxpbmstZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdpdGgteGxp
bmstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYWQwMjcyNzEzYjcxZmRjODc5
NDAxNmM4ZWYxMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2lu
dmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdp
dGgteGxpbmsuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9pbnZhbGlkLWdyYWRpZW50LXdp
dGgteGxpbmsuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZmNhYjk1ODAyZDIyMzVmMDU1NzZkYzA3MjA4MTU1
ZjJhYmY5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL2ludmFs
aWQtZ3JhZGllbnQtd2l0aC14bGluay5zdmcKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lv
bj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQorPHN2Zw0KKyAgIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCisgICB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayINCisgICB2ZXJzaW9uPSIxLjAiDQorICAgd2lkdGg9IjIw
MCINCisgICBoZWlnaHQ9IjIwMCI+DQorPHNjcmlwdD48IVtDREFUQVsNCisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQodHJ1ZSk7DQorXV0+PC9zY3JpcHQ+DQorPGRlZnM+DQorICA8bGluZWFyR3JhZGll
bnQgaWQ9ImxpbmVhckdyYWRpZW50MCI+DQorICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xv
cj0id2hpdGUiLz4NCisgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJibGFjayIvPg0K
KyAgPC9saW5lYXJHcmFkaWVudD4NCis8L2RlZnM+DQorPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0
PSIyMDAiIHN0eWxlPSJmaWxsOnVybCgjbGluZWFyR3JhZGllbnQxKSBncmVlbjsiIGlkPSJyZWN0
MCIgLz4NCis8dGV4dCBpZD0idGV4dDAiIHg9IjEwIiB5PSIyMCIgc3R5bGU9ImZpbGw6Z3JlZW4i
Pg0KKyAgUEFTUw0KKyAgPGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDEiIHhsaW5r
OmhyZWY9IiNsaW5lYXJHcmFkaWVudDAiIC8+DQorPC90ZXh0Pg0KKzwvc3ZnPg0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20veGxpbmstdG8taW52YWxpZC1ncmFkaWVudC1leHBl
Y3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3hsaW5rLXRvLWludmFsaWQtZ3JhZGll
bnQtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4Njc2YzllNjgyNTY2YTdmNDZiZTY3MWI3M2Qw
Y2Q2ZDg1NjZkZjMKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDExMjc2CnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5Z0NDTTQ3JD1TdUZ4ZVVnTQp6aUgy
czAyOWAhP3NZYSRJaEd0MHkjK0p6YCM7Sil3NXlSQlA2IVk4RDxBQTJmV2paP3Rjc2VeUDFRZ3xg
VyMqKFoKekZqTyRNaFRQQS05M2ItVlJfZmRoNTQpfD4xdiV8OUNnIUNDbXBJU2FtTDB6OVl9Nn5X
P1RRfD1tKnZMSEk7UWZyCnpaVWcoeD90SDdHPHNhR1llek5vMll8Z0txI0N1RjZAeUQ3REM3Kjlm
bzlFM29AbF85SS11WnBee2gja0YpdF42IQp6VGt4fG0+YXZKRnplczRYfEl0SCNqeXdeJHxBe2U5
IyMjR01oSHJQOW4zdE5uMU9NZXNtRzN1eT05ND4/UX1RblYKentfMjBwUzclTS01JlImZHV5MmEj
NXY3TmIzbz5KX2xuNmgjKjc8Jn1xM05Oc0tFKUJzU3Zjaj5FJUs4YUFOS1NyCnpQZklmfmIocUNA
aTJiT09tRz0kQGl5NF5AS0oocjwqQ19IdFUyV3dneT42Uzt1MGlAd1EoUU9rZUVUM0AtMjVxaQp6
IS1ePntYUm0hTygzPzk7KChodFQqRkFhNStKY15FM3w5fUAkNGwmVyslZE54IXRDKjQoPmtaS0Qo
ZUsqX0M5fUMKemt+IW1UPmE2TEpubkoyRkR0blNiKSowdHlLSTNOWW9ifk1UK2I7bz1IcTFCS1oo
PHp6YFNJSTtzVnVKemtBRDU7Cno/ZT1CWS1zYHN+UEcpfj5ZUFZlVFREYC0rejJDblVidj48fF54
XmR1eCEkV15xOTw4fS1NOzxnPkB3eFVONkd7Mwp6bkxWN0VgZWFmeDkhenhOTnR+NUBXWXJISkYt
YXdfQzZfV3dMTWtefFQoajFnSm5nTkZkJlM5a3o4IUk1VSF5bmUKemAxYXVVeXR9SGBgfVQ7bzle
Sm45TSZSNDZqVzJnPzV9cVlwVXopZ2RhbyQ3b29saj49PWRSfUYyPmpSZWJmWlVICno+TTglRyEw
Vi1FJm41Jjx8NU02Ky1lfTRAKWlSKzdvP1VBYCNRbzY5O3FxQDRLUXcqK2xAc1VndHJhfW9QXmU/
Swp6ZFMzOV5We2NTMWBDTkxQdlNXWU9TRXBrVktQTVBFTjZwPSo7eWI2eV4zJHlWWmdzWnVycXxD
TiNwcXZXcFNTeD0Kej84OUY+SW85ZUdEZmItYHxMUighXytnKiVLRCtxc2A1bFNOWnx9UkRAX01t
aClhJWBzQys9RmJ2MSZeSFpTYC1xCnplWEUyZUgqTVV2dWBZfjVkJntFYUVVKFFhe3RWMmp4cWow
PnZyY3w1KnVxYFl1fS0oTWV8MXYkMWI9Tz17Rnl2KQp6KHxKN0NkKShDOVZCUDxnZDBYKGMqa19z
WCNnP0Q3M1NMVjhKXldoRkpkYGE/XjEjSm5KQEV5YHJCNjZGKVdxcSQKejdRSFFSR2pEc3RNQztx
aFlpKUJBY1hpdV50LWY4TjdjSXhRbn03QXlgUjcrJXo1RCEwSiRKPzhLV3I8Tnh2bXtyCno3O25W
RHB1cGhpO3V1b0ZgMWE7VC1vcGtBJSNQT0c+YShAdzQpRUBgbzY1QSQodCZtMT9fYVVjaSNQLS1M
QG5hYQp6S05kWnYlRS1qUkEpdyUoeipVb151SSRqajBPZEN2JmBEQEdsZm5kJTFxLWlnVTxgVSUw
IyolQ2M3fT1WZ3BabTYKekxlbH4rMzU4SFVfZmJQZSEoPXBfak9MeHVxRn1VbTlJWX0mdEleUmAh
RHZmfld3aUE7K007JEM/STNXUlZmdFFxCnpFYH00LT1Zc1c8MVgldHd1JFhZZGRTMVhUbkN9Nkcl
c2VmbXpFQEtOcXRGRXZxYHNGNEJsRDctRTBJaiRVfUUhZAp6bjJjb1YxczB3TyZ6MzJ7WkU7Wkdr
V2dVc2IlTlJJKEJMMyE7NG9gOzdyZXtJKDVSM3c+WDZZODhCSFVqeGR1QD4KempnfSokQ0ZeS2lH
Z3x3T3ducyk9WHJvTzxjbkZMKG89M1lBcWFDYyNGNlU/YGR+e2YxdW5wOUZgSytxVHpgJjZLCnpT
Xz1UR3V0ckNaTSNzfWUybGhxPl9DXlF4TWhFc3IybG43MEZnaiZJbH1WJUAlO3g/KSVWJGg2dmo7
QmtXJDwrTQpLYjZNdzwmOyRVKjMzXyhgCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3hsaW5rLXRvLWludmFsaWQtZ3JhZGllbnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94bGluay10by1pbnZhbGlkLWdyYWRp
ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWYyMmU5YTQzMWFkMDI3MjcxM2I3MWZkYzg3
OTQwMTZjOGVmMTJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94
bGluay10by1pbnZhbGlkLWdyYWRpZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3hsaW5rLXRvLWludmFsaWQtZ3Jh
ZGllbnQuc3ZnIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94bGluay10by1pbnZhbGlkLWdyYWRp
ZW50LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NjQ5MmM1Y2M3Y2I3ODUyNzE5MzhjYzQ1NTFmMTgxOTE5ZmZl
YjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS94bGluay10by1p
bnZhbGlkLWdyYWRpZW50LnN2ZwpAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4NCis8c3ZnDQorICAgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIg0KKyAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hsaW5rIg0KKyAgIHZlcnNpb249IjEuMCINCisgICB3aWR0aD0iMjAwIg0KKyAg
IGhlaWdodD0iMjAwIj4NCis8c2NyaXB0PjwhW0NEQVRBWw0KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQ0KKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCh0cnVlKTsNCitdXT48L3NjcmlwdD4NCis8ZGVmcz4NCisgIDxsaW5lYXJHcmFkaWVudCBpZD0i
bGluZWFyR3JhZGllbnQxIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQwIiAvPg0KKzwvZGVm
cz4NCis8cmVjdCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgc3R5bGU9ImZpbGw6dXJsKCNsaW5l
YXJHcmFkaWVudDEpIGdyZWVuOyIgaWQ9InJlY3QwIiAvPg0KKzx0ZXh0IGlkPSJ0ZXh0MCIgeD0i
MTAiIHk9IjIwIiBzdHlsZT0iZmlsbDpncmVlbiI+DQorICBQQVNTDQorICA8bGluZWFyR3JhZGll
bnQgaWQ9ImxpbmVhckdyYWRpZW50MCI+DQorICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xv
cj0id2hpdGUiLz4NCisgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJibGFjayIvPg0K
KyAgPC9saW5lYXJHcmFkaWVudD4NCis8L3RleHQ+DQorPC9zdmc+DQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZh
MTU2ZmE3NzBkNTkwYjI2NzE5OGIwNDYzODc3NTgyYjMyMWUwYjEuLjkyYWE0OTg4OGFhOTUyOWY4
YzAzMTdiMDBmMWRjOTk2ZGVjNTM0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAx
MS0wNi0yMiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY29ycmVjdGx5IHBsYWNlZCBTVkcg
Z3JhZGllbnRzIGNhbiBjYXVzZSBjcmFzaGVzIHdoZW4gcmVmZXJlbmNlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5MTQKKworICAgICAgICBBZGRl
ZCBhIGNoZWNrIGZvciBncmFkaWVudCByZW5kZXJpbmcgY29udGV4dHMuIElmIHRoZSBjb250ZXh0
cyBjYW4ndCBiZSBmb3VuZCwgdGhlIGdyYWRpZW50IG11c3QgYmUgaW4gYW4gaW52YWxpZCBsb2Nh
dGlvbiwgc28gd2UgdXNlIHRoZSBmYWxsYmFjayBjb2xvciBpbnN0ZWFkLgorCisgICAgICAgIFRl
c3RzOiBzdmcvY3VzdG9tL2ludmFsaWQtZ3JhZGllbnQtd2l0aC14bGluay5zdmcKKyAgICAgICAg
ICAgICAgIHN2Zy9jdXN0b20veGxpbmstdG8taW52YWxpZC1ncmFkaWVudC5zdmcKKworICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6Y29sbGVj
dEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUxpbmVhckdyYWRpZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKwogMjAxMS0wNi0yMiAgQ2hyaXMg
Um9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggYWE1Y2I0ZTI4NDM4YmJmOWQ2NGIzOTYy
MTViZjBlYTU1NzNmNzlhNS4uNTllODhiY2FjYWUxMzVmMGYyNzk5OWU5ZWI5YTJiNWRhMDYwNzUx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xNTUsNyArMTU1LDkgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlck9iamVjdCogb2JqZWN0LCBS
ZW5kZXJTdHlsZSoKIAogICAgIGlmIChtX3Nob3VsZENvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMp
IHsKICAgICAgICAgZ3JhZGllbnRFbGVtZW50LT51cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShh
bnlRTmFtZSgpKTsKLSAgICAgICAgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhncmFkaWVudEVs
ZW1lbnQpOworICAgICAgICBpZiAoIWNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoZ3JhZGllbnRF
bGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBtX3Nob3VsZENv
bGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgK
aW5kZXggYzU2MzVhYTkxZmMyOTMyNDFhMmFiZjVkYjJhM2MyOWIyYjEwZjdkNS4uNmU4YzFmODM3
MTA3ZWM0MWYzMjI3ZTY2YTc0ZWNiOGU5ZWJkZTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIGJvdW5kaW5nQm94TW9k
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zv
cm0oQWZmaW5lVHJhbnNmb3JtJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R3JhZGll
bnRBdHRyaWJ1dGVzKFNWR0dyYWRpZW50RWxlbWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoR3JhZGllbnREYXRhKiwgU1ZHR3JhZGllbnRFbGVt
ZW50KikgY29uc3QgPSAwOwogCiAgICAgR3JhZGllbnRTcHJlYWRNZXRob2QgcGxhdGZvcm1TcHJl
YWRNZXRob2RGcm9tU1ZHVHlwZShTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5
cGUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAKaW5kZXggNTY5YTc1OWU4
YWMwZDNjMTc2NTZjZTY1Y2JkYmFjMmEyNGM2MWFhYS4uZTU4YmRkOWUxNjhiZGJmNWFiNTVhMzQ2
OGI0OTUxZGM5MWUxYjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCkBAIC0z
OSwxMCArMzksMTAgQEAgUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6flJlbmRlclNW
R1Jlc291cmNlTGluZWFyR3JhZGllbnQoKQogewogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNl
TGluZWFyR3JhZGllbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVt
ZW50KiBncmFkaWVudEVsZW1lbnQpCitib29sIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGll
bnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KiBncmFkaWVu
dEVsZW1lbnQpCiB7CiAgICAgbV9hdHRyaWJ1dGVzID0gTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
KCk7Ci0gICAgc3RhdGljX2Nhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Kj4oZ3JhZGllbnRF
bGVtZW50KS0+Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhtX2F0dHJpYnV0ZXMpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQqPihncmFkaWVudEVsZW1l
bnQpLT5jb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKG1fYXR0cmlidXRlcyk7CiB9CiAKIHZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudDo6YnVpbGRHcmFkaWVudChHcmFkaWVudERh
dGEqIGdyYWRpZW50RGF0YSwgU1ZHR3JhZGllbnRFbGVtZW50KiBncmFkaWVudEVsZW1lbnQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTGluZWFyR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCmluZGV4IDJkMzU0MTg2ZmI0YmI1NmZhNDBl
NDcxZDFmYmI5N2ZjYmQ0YzMwM2UuLjhjOWJiMWQ2MWU5MTIyNDkxYWIyMDYzODM3MTZlOTkzZDhj
NDNjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBib3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZXMuYm91bmRpbmdCb3hNb2RlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgdHJh
bnNmb3JtID0gbV9hdHRyaWJ1dGVzLmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1l
bnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudChHcmFkaWVudERhdGEqLCBTVkdH
cmFkaWVudEVsZW1lbnQqKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3Jh
ZGllbnQuY3BwCmluZGV4IGZkNTg2MWRhZTAyOGJlZDhkNWE1MmU3OTI4NzliZWIzNWRhMDJlNGIu
LmVkZDQyOTNkMTI1OTBmNGQwMDg3MjhiZTZiZTlmMTU1NmM2NmNlNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVJhZGlhbEdyYWRpZW50LmNwcApAQCAtMzksMTAgKzM5LDEwIEBAIFJlbmRlclNWR1Jlc291cmNl
UmFkaWFsR3JhZGllbnQ6On5SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCkKIHsKIH0K
IAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Ojpjb2xsZWN0R3JhZGllbnRB
dHRyaWJ1dGVzKFNWR0dyYWRpZW50RWxlbWVudCogZ3JhZGllbnRFbGVtZW50KQorYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Ojpjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKFNW
R0dyYWRpZW50RWxlbWVudCogZ3JhZGllbnRFbGVtZW50KQogewogICAgIG1fYXR0cmlidXRlcyA9
IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcygpOwotICAgIHN0YXRpY19jYXN0PFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCo+KGdyYWRpZW50RWxlbWVudCktPmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0
ZXMobV9hdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50Kj4oZ3JhZGllbnRFbGVtZW50KS0+Y29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyht
X2F0dHJpYnV0ZXMpOwogfQogCiB2b2lkIFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6
OmJ1aWxkR3JhZGllbnQoR3JhZGllbnREYXRhKiBncmFkaWVudERhdGEsIFNWR0dyYWRpZW50RWxl
bWVudCogZ3JhZGllbnRFbGVtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaApp
bmRleCA5ZDM3ZDExY2VkNzNkNzlhODczMjFhZGVhYTc4MjVkYjg5NDY2N2FiLi5kMzBlNGFhNWE5
MmFhOGVjMzFhMzU5MGFjODg2Yjk1MTY5NjUyM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgYm91bmRp
bmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmJvdW5kaW5nQm94TW9kZSgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtKSB7IHRyYW5zZm9ybSA9IG1fYXR0cmlidXRlcy5ncmFkaWVudFRy
YW5zZm9ybSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMo
U1ZHR3JhZGllbnRFbGVtZW50Kik7CisgICAgdmlydHVhbCBib29sIGNvbGxlY3RHcmFkaWVudEF0
dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3Jh
ZGllbnQoR3JhZGllbnREYXRhKiwgU1ZHR3JhZGllbnRFbGVtZW50KikgY29uc3Q7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
CmluZGV4IGFlN2JmMzlkMzNiMDcwNThkMTI4MzhjODU2ZmFmNmRhNWE2MGM5OWMuLjZkNzYxOWRj
Y2RmYzEyMDE1Yjc3YzQ4NDJlNTZiOGU5MTAzYTJiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgUmVu
ZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGUKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudCh0aGlzKTsKIH0KIAotdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
JiBhdHRyaWJ1dGVzKQorYm9vbCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFk
aWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewog
ICAgIEhhc2hTZXQ8U1ZHR3JhZGllbnRFbGVtZW50Kj4gcHJvY2Vzc2VkR3JhZGllbnRzOwogCkBA
IC0xODgsNiArMTg4LDkgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGUKICAgICBTVkdHcmFkaWVu
dEVsZW1lbnQqIGN1cnJlbnQgPSB0aGlzOwogCiAgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAg
ICAgaWYgKCFjdXJyZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNTcHJlYWRNZXRob2QoKSAmJiBjdXJyZW50LT5o
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpKQogICAgICAgICAgICAgYXR0
cmlidXRlcy5zZXRTcHJlYWRNZXRob2QoY3VycmVudC0+c3ByZWFkTWV0aG9kKCkpOwogCkBAIC0y
MzksNiArMjQyLDggQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFk
aWVudEF0dHJpYnV0ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGUKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBjdXJyZW50ID0gMDsKICAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNhbGN1bGF0ZVN0YXJ0RW5kUG9pbnRzKGNv
bnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYgYXR0cmlidXRlcywgRmxvYXRQb2ludCYgc3Rh
cnRQb2ludCwgRmxvYXRQb2ludCYgZW5kUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmgKaW5kZXggYzllZjYzNGRkYjFiYjViNjcyZjkxZDNkNWVi
NjA4MjI4YzM5MjIyNS4uMTA4MzYwZWY2MTM4OTcwODFmZjRlMDU3NTY5NjcwMGVjNTQ3YjkzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAt
MzMsNyArMzMsNyBAQCBjbGFzcyBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZH
R3JhZGllbnRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKIAotICAgIHZvaWQgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhMaW5lYXJHcmFkaWVudEF0
dHJpYnV0ZXMmKTsKKyAgICBib29sIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBjYWxjdWxhdGVTdGFydEVuZFBvaW50cyhjb25z
dCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGbG9h
dFBvaW50JiBlbmRQb2ludCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGQyZWNkYzlkODQ4YTRmMTRmYzZjOTM1
ZmEzMGJhMmVhOGI5NGI2NzguLmQ3NWRjZmNhOWUwY2M4NDhkYjIxYTcwNTFiMzIxN2UzZGQwY2E0
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
Y3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGUKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKIH0K
IAotdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0
ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorYm9vbCBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewogICAgIEhhc2hTZXQ8U1ZHR3JhZGllbnRFbGVtZW50
Kj4gcHJvY2Vzc2VkR3JhZGllbnRzOwogCkBAIC0yMDUsNiArMjA1LDkgQEAgdm9pZCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGUKICAgICBTVkdHcmFkaWVudEVsZW1lbnQqIGN1cnJlbnQgPSB0aGlzOwogCiAg
ICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgaWYgKCFjdXJyZW50LT5yZW5kZXJlcigpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNT
cHJlYWRNZXRob2QoKSAmJiBjdXJyZW50LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnNwcmVhZE1l
dGhvZEF0dHIpKQogICAgICAgICAgICAgYXR0cmlidXRlcy5zZXRTcHJlYWRNZXRob2QoY3VycmVu
dC0+c3ByZWFkTWV0aG9kKCkpOwogCkBAIC0yNjYsNiArMjY5LDggQEAgdm9pZCBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6OmNvbGxlY3RHcmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGUKIAogICAgIGlmICghYXR0cmlidXRlcy5oYXNGeSgpKQogICAgICAgICBhdHRyaWJ1
dGVzLnNldEZ5KGF0dHJpYnV0ZXMuY3koKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9p
ZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNhbGN1bGF0ZUZvY2FsQ2VudGVyUG9pbnRzQW5k
UmFkaXVzKGNvbnN0IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYgYXR0cmlidXRlcywgRmxvYXRQ
b2ludCYgZm9jYWxQb2ludCwgRmxvYXRQb2ludCYgY2VudGVyUG9pbnQsIGZsb2F0JiByYWRpdXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKaW5kZXgg
N2M5Yzc1ZDUwNDAxYjA2YjRlMmU4NTE4YTBiMmEwOThiMzg3ZmExZS4uZTZkMmYyYjJiN2QxMmMx
OTk4MDYzMjcwNmIxY2ZjMTIwYTE5NDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHR3JhZGllbnRFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgY29sbGVjdEdyYWRpZW50
QXR0cmlidXRlcyhSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmKTsKKyAgICBib29sIGNvbGxlY3RH
cmFkaWVudEF0dHJpYnV0ZXMoUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJik7CiAgICAgdm9pZCBj
YWxjdWxhdGVGb2NhbENlbnRlclBvaW50c0FuZFJhZGl1cyhjb25zdCBSYWRpYWxHcmFkaWVudEF0
dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBmb2NhbFBvaW50LCBGbG9hdFBvaW50JiBjZW50ZXJQb2lu
dCwgZmxvYXQmIHJhZGl1cyk7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>