<?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>122605</bug_id>
          
          <creation_ts>2013-10-10 09:47:33 -0700</creation_ts>
          <short_desc>Confusing CGImageRef memory management in ImageBuffer::copyImage</short_desc>
          <delta_ts>2013-10-11 11:49:22 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.8</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="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938390</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 09:47:33 -0700</bug_when>
    <thetext>REGRESSION (r113457): CGImageRef leaks inside ImageBuffer::copyImage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938392</commentid>
    <comment_count>1</comment_count>
      <attachid>213894</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 09:48:25 -0700</bug_when>
    <thetext>Created attachment 213894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938394</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 09:50:18 -0700</bug_when>
    <thetext>Attachment 213894 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:12:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938395</commentid>
    <comment_count>3</comment_count>
      <attachid>213896</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 09:51:55 -0700</bug_when>
    <thetext>Created attachment 213896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938396</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 09:55:48 -0700</bug_when>
    <thetext>Unsurprisingly, given that the regression was introduced 18 months ago, this leak occurs in the stock WebKit on OS X 10.8.5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938398</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-10 10:04:18 -0700</bug_when>
    <thetext>Adam, what content hits this code path to cause the leak? I would have expected us to notice an image leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938408</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 10:35:09 -0700</bug_when>
    <thetext>This seems to be sufficient to trigger the leak:

data:text/html,%3Cimg%20src=%22http://upload.wikimedia.org/wikipedia/commons/b/bd/Test.svg%22%3E

I.e., a simple SVG-as-image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938411</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-10 10:39:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/15198634&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938417</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 10:40:30 -0700</bug_when>
    <thetext>I just realized it&apos;s possible that the image is getting cached, which would explain why it&apos;s not being dealloced. So the image I&apos;m seeing in Instruments may not be getting leaked. But regardless the error fixed here *does* seem likely to cause a leak, even though we may not know how to trigger it. I&apos;ll keep digging to try to get to the bottom of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938429</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 11:15:42 -0700</bug_when>
    <thetext>FYI, the codepath I&apos;m seeing in Instruments (which I&apos;m still not 100% certain indicates a leak) is through SVGImageCache: http://trac.webkit.org/browser/branches/safari-536.30-branch/Source/WebCore/svg/graphics/SVGImageCache.cpp#L158

That code was removed in http://trac.webkit.org/changeset/142765 so it&apos;s possible that the leaky code in ImageBufferCG never gets hit in ToT.

Here&apos;s the full backtrace from Instruments:

   0 libsystem_c.dylib malloc_zone_malloc
   1 CoreFoundation _CFRuntimeCreateInstance
   2 CoreGraphics CGTypeCreateInstance
   3 CoreGraphics CGImageCreate
   4 CoreGraphics CGBitmapContextCreateImage
   5 WebCore WebCore::ImageBuffer::copyImage(WebCore::BackingStoreCopy, WebCore::ScaleBehavior) const
   6 WebCore WebCore::SVGImageCache::lookupOrCreateBitmapImageForRenderer(WebCore::RenderObject const*)
   7 WebCore WebCore::CachedImage::imageForRenderer(WebCore::RenderObject const*)
   8 WebCore WebCore::RenderImageResource::image(int, int) const
   9 WebCore WebCore::RenderImage::paintReplaced(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  10 WebCore WebCore::RenderReplaced::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  11 WebCore WebCore::RenderImage::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  12 WebCore WebCore::InlineBox::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;, int, int)
  13 WebCore WebCore::InlineFlowBox::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;, int, int)
  14 WebCore WebCore::RootInlineBox::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;, int, int)
  15 WebCore WebCore::RenderLineBoxList::paint(WebCore::RenderBoxModelObject*, WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;) const
  16 WebCore WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  17 WebCore WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  18 WebCore WebCore::RenderBlock::paintChildren(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  19 WebCore WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  20 WebCore WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::IntPoint const&amp;)
  21 WebCore WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
  22 WebCore WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
  23 WebCore WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
  24 WebCore WebCore::RenderLayer::paintLayer(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
  25 WebCore WebCore::RenderLayer::paint(WebCore::GraphicsContext*, WebCore::IntRect const&amp;, unsigned int, WebCore::RenderObject*, WebCore::RenderRegion*, unsigned int)
  26 WebCore WebCore::FrameView::paintContents(WebCore::GraphicsContext*, WebCore::IntRect const&amp;)
  27 WebKit -[WebFrame(WebInternal) _drawRect:contentsOnly:]
  28 WebKit -[WebHTMLView drawSingleRect:]
  29 WebKit -[WebHTMLView drawRect:]
  30 AppKit -[NSView _drawRect:clip:]
  31 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  32 WebKit -[WebHTMLView(WebPrivate) _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  33 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  34 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  35 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  36 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  37 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  38 AppKit -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]
  39 AppKit -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
  40 AppKit -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
  41 AppKit -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
  42 AppKit -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
  43 AppKit -[NSView displayIfNeeded]
  44 AppKit _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints
  45 Foundation __NSFireTimer
  46 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
  47 CoreFoundation __CFRunLoopDoTimer
  48 CoreFoundation __CFRunLoopRun
  49 CoreFoundation CFRunLoopRunSpecific
  50 HIToolbox RunCurrentEventLoopInMode
  51 HIToolbox ReceiveNextEventCommon
  52 HIToolbox BlockUntilNextEventMatchingListInMode
  53 AppKit _DPSNextEvent
  54 AppKit -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
  55 AppKit -[NSApplication run]
  56 AppKit NSApplicationMain
  57 libdyld.dylib start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938437</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 11:24:55 -0700</bug_when>
    <thetext>Based on the arguments being passed to ImageBuffer::copyImage in SVGImageCache, it seems the leak will be hit. Specifically, http://trac.webkit.org/browser/branches/safari-536.30-branch/Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp#L219 will execute.

I&apos;m not sure why Instruments doesn&apos;t count this as a leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938441</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 11:34:37 -0700</bug_when>
    <thetext>Of course, since every codepath in ImageBufferCG::copyImage results in a leak, this seems like it should be observable on ToT as well, though perhaps with a different testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938532</commentid>
    <comment_count>12</comment_count>
      <attachid>213896</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 13:52:32 -0700</bug_when>
    <thetext>Comment on attachment 213896
Patch

Rejecting attachment 213896 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 213896, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ubmit
    return self.open(self.click(*args, **kwds))
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_mechanize.py&quot;, line 255, in _mech_open
    raise response
webkitpy.thirdparty.autoinstalled.mechanize._response.httperror_seek_wrapper: HTTP Error 500: Internal Server Error

Full output: http://webkit-queues.appspot.com/results/3663121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938534</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-10 14:00:03 -0700</bug_when>
    <thetext>Hm, any ideas how to work around that commit-queue bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938694</commentid>
    <comment_count>14</comment_count>
      <attachid>213896</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-10 22:59:15 -0700</bug_when>
    <thetext>Comment on attachment 213896
Patch

Wait, EWS is all yellow - it fails to process the patch because it apparently introduced tons of flaky crashes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938767</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 03:54:28 -0700</bug_when>
    <thetext>Oh my. Thanks for spotting that, Alexey. I&apos;ll try to reproduce the crashes today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938778</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 05:58:47 -0700</bug_when>
    <thetext>It looks like at least one problem is that BitmapImage::BitmapImage adopts the CGImageRef passed into it rather than retaining it. How strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938779</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 06:01:12 -0700</bug_when>
    <thetext>WebKit2::ShareableBitmap::createImage() is aware of this: http://trac.webkit.org/browser/trunk/Source/WebKit2/Shared/cg/ShareableBitmapCG.cpp?rev=156688#L118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938781</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 06:19:30 -0700</bug_when>
    <thetext>Now that I know about BitmapImage::create&apos;s strange adoption semantics, and after staring at this code a while longer, I no longer think there was ever a leak here. (Really how could I have doubted mitzpettel?) The code in ImageBuffer::copyImage was carefully crafted not to cause a leak or over-release: sometimes it would seemingly over-retain the image, but it was in fact relying on BitmapImage::create to adopt the extra reference and thus balance things out.

So I&apos;ve retitled this bug to reflect the reality: ImageBuffer::copyImage contains some very confusing memory management. The patch I&apos;m about to upload changes BitmapImage::create to retain the passed-in CGImage, making the two callers (in ImageBuffer::copyImage and ShareableBitmap::createImage) much less confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938783</commentid>
    <comment_count>19</comment_count>
      <attachid>213983</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 06:30:23 -0700</bug_when>
    <thetext>Created attachment 213983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938839</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-11 10:05:47 -0700</bug_when>
    <thetext>I do recall this weird refcounting, but I forget if there was a reason for it. Maybe look at some SVN history?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938850</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 10:23:03 -0700</bug_when>
    <thetext>Looks like it&apos;s been this way since that BitmapImage constructor was added:

Constructor is added: http://trac.webkit.org/changeset/31830/trunk/WebCore/platform/graphics/cg/ImageCG.cpp#file0
First call to it: http://trac.webkit.org/changeset/31830/trunk/WebCore/platform/graphics/cg/ImageBufferCG.cpp#file0

I&apos;ll dig around a little more to see if I can find anyone else who&apos;s tried to change it and failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938857</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 10:35:53 -0700</bug_when>
    <thetext>The only memory-related change I can see to BitmapImage is http://trac.webkit.org/changeset/51313, which fixed a leak introduced by http://trac.webkit.org/changeset/51212. But it&apos;s not really related to this patch. The code to adopt the CGImageRef is unchanged since it was first added back in r31830.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938869</commentid>
    <comment_count>23</comment_count>
      <attachid>213983</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-11 10:59:07 -0700</bug_when>
    <thetext>Comment on attachment 213983
Patch

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

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:139
&gt; +        RetainPtr&lt;CGImageRef&gt; copyNativeImage(BackingStoreCopy = CopyBackingStore) const;

I don&apos;t think this should have &apos;copy&apos; in the name now that it returns a RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938878</commentid>
    <comment_count>24</comment_count>
      <attachid>213983</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2013-10-11 11:10:20 -0700</bug_when>
    <thetext>Comment on attachment 213983
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:139
&gt;&gt; +        RetainPtr&lt;CGImageRef&gt; copyNativeImage(BackingStoreCopy = CopyBackingStore) const;
&gt; 
&gt; I don&apos;t think this should have &apos;copy&apos; in the name now that it returns a RetainPtr.

In the CopyBackingStore and accelerated cases, this function copies potentially large amounts of data. It seems nice to make that explicit.

If we do rename this, should we rename ImageBuffer::copyImage too? It returns a PassRefPtr&lt;Image&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938889</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-10-11 11:25:58 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 213983 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213983&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:139
&gt; &gt;&gt; +        RetainPtr&lt;CGImageRef&gt; copyNativeImage(BackingStoreCopy = CopyBackingStore) const;
&gt; &gt; 
&gt; &gt; I don&apos;t think this should have &apos;copy&apos; in the name now that it returns a RetainPtr.
&gt; 
&gt; In the CopyBackingStore and accelerated cases, this function copies potentially large amounts of data. It seems nice to make that explicit.

OK, I&apos;ll buy that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938903</commentid>
    <comment_count>26</comment_count>
      <attachid>213983</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-11 11:49:19 -0700</bug_when>
    <thetext>Comment on attachment 213983
Patch

Clearing flags on attachment: 213983

Committed r157310: &lt;http://trac.webkit.org/changeset/157310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938904</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-11 11:49:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213894</attachid>
            <date>2013-10-10 09:48:25 -0700</date>
            <delta_ts>2013-10-10 09:51:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122605-20131010124825.patch</filename>
            <type>text/plain</type>
            <size>2122</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNmMGI3YjhkNDY0OGNl
NDJiZDJlNmY0MmYyMTllYjRmMTU4N2NhYi4uODdkYmVkNTFkMTU2M2MwYzdmOWNhMDJlNWQ2OWQx
YzVmZjk2YWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEwLTEwICBBZGFt
IFJvYmVuICA8YXJvYmVuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjExMzQ1
Nyk6IENHSW1hZ2VSZWYgbGVha3MgaW5zaWRlIEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIHRoaXMgaXMganVzdCBhIGxlYWsgZml4LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29weUltYWdlKTogQWRvcHQgdGhlIG5ld2x5LWNyZWF0ZWQgQ0dJbWFnZVJlZnMKKwlpbnRv
IHRoZSBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW5zdGVhZCBvZiByZXRhaW5pbmcgdGhlbSB5ZXQg
YWdhaW4uCisKIDIwMTMtMTAtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIENsZWFuIHVwIEpTRE9NV2luZG93U2hlbGwgYSBsaXR0bGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmlu
ZGV4IGU0ODBkN2JkNWI1MDIwMjlhZWE3YzM0YzdkYTNlNWU4Y2ViZDFmNzYuLjUxOGZhZjk0ZjMz
OTljZWRlZWEzOGM0ZTFmN2VlMzk5YTY2YzMzNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0yMjQsMTMgKzIy
NCwxMyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgY29weUJlaGF2aW9yLCBTY2FsZUJlaAogewogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZTsKICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBzY2FsZUJlaGF2
aW9yID09IFVuc2NhbGVkKQotICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVo
YXZpb3IpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weU5hdGl2ZUltYWdlKGNvcHlCZWhh
dmlvcikpOwogICAgIGVsc2UgewogICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSk7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2FsU2l6
ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZSgp
LndpZHRoKCksIGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSk7CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgp
LCBrQ0dCbGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgbG9naWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6
ZSgpLmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwotICAgICAgICBpbWFnZSA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOwogICAgIH0KIAogICAg
IGlmICghaW1hZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213896</attachid>
            <date>2013-10-10 09:51:55 -0700</date>
            <delta_ts>2013-10-11 06:30:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122605-20131010125154.patch</filename>
            <type>text/plain</type>
            <size>2129</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNmMGI3YjhkNDY0OGNl
NDJiZDJlNmY0MmYyMTllYjRmMTU4N2NhYi4uNmJhNGQwMWJkNDNjY2ZjMDVhYzNkMTdlOWFkMDI0
ZTM2ZThmYTI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTEwLTEwICBBZGFt
IFJvYmVuICA8YXJvYmVuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjExMzQ1
Nyk6IENHSW1hZ2VSZWYgbGVha3MgaW5zaWRlIEltYWdlQnVmZmVyOjpjb3B5SW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIHRoaXMgaXMganVzdCBhIGxlYWsgZml4LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y29weUltYWdlKTogQWRvcHQgdGhlIG5ld2x5LWNyZWF0ZWQgQ0dJbWFnZVJlZnMKKyAgICAg
ICAgaW50byB0aGUgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGluc3RlYWQgb2YgcmV0YWluaW5nIHRo
ZW0geWV0IGFnYWluLgorCiAyMDEzLTEwLTEwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBKU0RPTVdpbmRvd1NoZWxsIGEgbGl0dGxlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAppbmRleCBlNDgwZDdiZDViNTAyMDI5YWVhN2MzNGM3ZGEzZTVlOGNlYmQxZjc2Li41MThm
YWY5NGYzMzk5Y2VkZWVhMzhjNGUxZjdlZTM5OWE2NmMzMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjI0
LDEzICsyMjQsMTMgQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWgKIHsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKG1fcmVzb2x1dGlvblNjYWxlID09IDEgfHwgc2Nh
bGVCZWhhdmlvciA9PSBVbnNjYWxlZCkKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Y29weUJlaGF2aW9yKTsKKyAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlOYXRpdmVJbWFnZShj
b3B5QmVoYXZpb3IpKTsKICAgICBlbHNlIHsKICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9n
aWNhbFNpemUoKS53aWR0aCgpLCBsb2dpY2FsU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogbG9naWNh
bFNpemUoKS53aWR0aCgpLCBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4
dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShj
b250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgbG9n
aWNhbFNpemUoKS5oZWlnaHQoKSksIGltYWdlLmdldCgpKTsKLSAgICAgICAgaW1hZ2UgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKTsKKyAgICAgICAgaW1hZ2UgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKICAgICB9
CiAKICAgICBpZiAoIWltYWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213983</attachid>
            <date>2013-10-11 06:30:23 -0700</date>
            <delta_ts>2013-10-11 11:49:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122605-20131011093023.patch</filename>
            <type>text/plain</type>
            <size>10243</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2VhMmM2OGI5OTc0ZWYw
MmJkYmYyNGU1OTg4YzIyZmQ5Yjg5OGU5Zi4uZTViZDljZTQ5ZTAwNDFmYzc3ZGI2N2NkZDU2ZGEz
YzA5NTgyOGZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTEwLTExICBBZGFt
IFJvYmVuICA8YXJvYmVuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29uZnVzaW5nIENHSW1hZ2VS
ZWYgbWVtb3J5IG1hbmFnZW1lbnQgaW4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjA1CisKKyAgICAgICAg
Qml0bWFwSW1hZ2U6OmNyZWF0ZSB3YXMgYWRvcHRpbmcgdGhlIENHSW1hZ2UgcGFzc2VkIGludG8g
aXQsIHdoaWNoCisgICAgICAgIHJlc3VsdGVkIGluIHNvbWUgc3RyYW5nZSBjb250b3J0aW9ucyBp
biBJbWFnZUJ1ZmZlcjo6Y29weUltYWdlIHRoYXQKKyAgICAgICAgbWFkZSBpdCBsb29rIGxpa2Ug
aXQgd2FzIGxlYWtpbmcgQ0dJbWFnZXMsIHdoZW4gaW4gZmFjdCBpdCB3YXMganVzdAorICAgICAg
ICByZWx5aW5nIG9uIEJpdG1hcEltYWdlIHRvIGFkb3B0IHRoZSBleHRyYSByZWZlcmVuY2VzLgor
CisgICAgICAgIEJpdG1hcEltYWdlOjpjcmVhdGUgbm93IHJldGFpbnMgdGhlIHBhc3NlZC1pbiBD
R0ltYWdlLCBhbmQgSSB1cGRhdGVkCisgICAgICAgIHRoZSB0d28gY2FsbGVycyB0byBpdCB0byBl
eHBlY3QgdGhhdCAob25lIGhlcmUsIG9uZSBpbiBXZWJLaXQyKS4gSQorICAgICAgICBhbHNvIGNo
YW5nZWQgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSB0byByZXR1cm4gYSBSZXRhaW5QdHIg
dG8KKyAgICAgICAgcmVkdWNlIHRoZSBudW1iZXIgb2YgYWRvcHRDRigpcyBuZWVkZWQgYW5kIG1h
a2UgaXQgaGFyZGVyIHRvIG1ha2UKKyAgICAgICAgcHJvZ3JhbW1pbmcgbWlzdGFrZXMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhpcyBpcyBqdXN0IGEgY29kZSBjbGVhbnVwLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDogQ2hhbmdlZCBjb3B5TmF0aXZlSW1hZ2UgdG8gcmV0
dXJuIGEKKyAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWYuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZSk6IEFkb3B0IHRoZSBwYXNzZWQtaW4gQ0dJbWFnZSwKKyAgICAg
ICAgc2luY2Ugd2UncmUgdGFraW5nIG93bmVyc2hpcCBvZiBpdC4gKFdlIHJlbGVhc2UgaXQgaW4K
KyAgICAgICAgRnJhbWVEYXRhOjpjbGVhci4pCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpj
b3B5SW1hZ2UpOiBVcGRhdGVkIGZvciBjb3B5TmF0aXZlSW1hZ2UncyBuZXcKKyAgICAgICAgcmV0
dXJuIHR5cGUgYW5kIHRvIHRha2UgaW50byBhY2NvdW50IEJpdG1hcEltYWdlOjpjcmVhdGUncyBu
ZXcKKyAgICAgICAgcmV0YWluaW5nIHNlbWFudGljcy4gVGhpcyBtYWtlcyB0aGlzIGZ1bmN0aW9u
IG5vdCBoYXZlIHRvIGJlIHNvIGNsZXZlcgorICAgICAgICBhYm91dCByZXRhaW4gY291bnRzLgor
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weU5hdGl2ZUltYWdlKTogQ2hhbmdl
ZCB0byByZXR1cm4gYQorICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4uCisKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgIFVw
ZGF0ZWQgZm9yIGNoYW5nZXMgdG8gY29weU5hdGl2ZUltYWdlLgorCiAyMDEzLTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYWZ0ZXIgZnJlZSBpbiBX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQ6OmZpcmVEaXNwbGF5UmVmcmVzaElm
TmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjJmMDQ5N2YyN2NlYTJmNDk3MjZhODk4Njg4OWFiOTA5YzE3
ZTZlNS4uNWQyYjJjNjgwOTIyNDA3NTE0NTlmNmI1MTk2ODljNzk0YmE0M2NhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTEwLTExICBBZGFtIFJvYmVuICA8YXJvYmVuQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgQ29uZnVzaW5nIENHSW1hZ2VSZWYgbWVtb3J5IG1hbmFnZW1lbnQg
aW4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKTogQml0bWFwSW1hZ2U6
OmNyZWF0ZSBub3cKKyAgICAgICAgcmV0YWlucyB0aGUgcGFzc2VkLWluIENHSW1hZ2UsIHNvIHdl
IGRvbid0IG5lZWQgdG8gZGFuY2UgYXJvdW5kIGl0CisgICAgICAgIGFueW1vcmUuIEFsc28gY2hh
bmdlZCB0byB1c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAgd2hpbGUgSSB3YXMgaW4gaGVyZS4KKwog
MjAxMy0xMC0xMCAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF1bV0syXSBTZXBhcmF0ZSBkaXNwYXRjaCBjb250ZXh0IGZyb20gV29ya1F1ZXVlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXgg
NzRmZTJlMmUxOGMzNTdiMTRlNDJmYTU3ZDNmNDlmZDYxN2RkZjYxYy4uZjQ0Zjc0Yzc0YjhkODQ3
YmY5NjFmYTdjOWYxNWNlMjRhZDQ1OGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xMzYsNyArMTM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpCi0gICAgICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0OworICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdDsKICAgICAgICAgdm9p
ZCBmbHVzaENvbnRleHQoKSBjb25zdDsKICAgICAgICAgdm9pZCBmbHVzaENvbnRleHRJZk5lY2Vz
c2FyeSgpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDljZGM2ZmEzOGE4NTFmOTE3Njg0
MTkxNzBmZDI5OGFmNDU4MmNkMDcuLjZjNjljZTA4ODc4YTVlMDc5NGNiNTJiYjc1MDliM2RjY2Mw
ODRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Jp
dG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0JpdG1hcEltYWdlQ0cuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1f
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CiAKICAg
ICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBjZ0ltYWdlOwor
ICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWluKGNnSW1hZ2UpOwogICAgIG1f
ZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwogICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFk
YXRhID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBlNDgwZDdiZDViNTAyMDI5YWVhN2MzNGM3ZGEz
ZTVlOGNlYmQxZjc2Li42MWM3ZGQzODJkY2FjNjIwNjMwMmJlNmJhYzg1ZjE3N2Q0Mjk4ODI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtMjI2LDExICsyMjYsMTEgQEAgUGFzc1JlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWgK
ICAgICBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0gMSB8fCBzY2FsZUJlaGF2aW9yID09IFVuc2Nh
bGVkKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogICAg
IGVsc2UgewotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5
QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29udGV4dCA9
IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwg
bG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgoKSwgZGV2
aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsK
ICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9k
ZUNvcHkpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVpZ2h0KCkp
LCBpbWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1h
Z2UoY29udGV4dC5nZXQoKSk7CisgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZSkK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi1QYXNz
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZl
cjo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAog
ewogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSAwOwogICAgIGlmICghbV9jb250ZXh0LT5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpKSB7CkBAIC0yNzIsNyArMjcyLDcgQEAgUGFzc05hdGl2ZUltYWdlUHRy
IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZp
b3IpIGMKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBpbWFnZTsKKyAgICByZXR1cm4gYWRv
cHRDRihpbWFnZSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBkZXN0Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQpAQCAtMjgy
LDkgKzI4Miw5IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBkZXN0
Q29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCiAKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKGRlc3RDb250ZXh0ID09IG1fY29udGV4dCB8fCBkZXN0
Q29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENG
KGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKSk7IC8vIERyYXdpbmcgaW50byBvdXIg
b3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCisgICAgICAgIGltYWdlID0gY29weU5hdGl2
ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOyAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIs
IG5lZWQgdG8gZGVlcCBjb3B5LgogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpOworICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xpcCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSBjbwogewogICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHRU
b0NsaXAgPSBjb250ZXh0VG9DbGlwLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTog
VGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBt
YXNrIGhlcmUuCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihjb3B5
TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAg
IENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCBy
ZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKHBsYXRmb3Jt
Q29udGV4dFRvQ2xpcCwgMSwgLTEpOwogICAgIENHQ29udGV4dENsaXBUb01hc2socGxhdGZvcm1D
b250ZXh0VG9DbGlwLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSksIGltYWdl
LmdldCgpKTsKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJy
YXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAg
IC8vIERyYXcgdGhlIGltYWdlIGluIENHIGNvb3JkaW5hdGUgc3BhY2UKICAgICBJbnRQb2ludCBk
ZXN0UG9pbnRJbkNHQ29vcmRzKGRlc3RQb2ludC54KCkgKyBzb3VyY2VSZWN0LngoKSwgKGNvb3Jk
aW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0gPyBsb2dpY2FsU2l6ZSgpIDog
aW50ZXJuYWxTaXplKCkpLmhlaWdodCgpIC0gKGRlc3RQb2ludC55KCkgKyBzb3VyY2VSZWN0Lnko
KSkgLSBzb3VyY2VSZWN0LmhlaWdodCgpKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0SW5DR0Nvb3Jk
cyhkZXN0UG9pbnRJbkNHQ29vcmRzLCBzb3VyY2VDb3B5U2l6ZSk7Ci0gICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHNvdXJjZUNvcHlJbWFnZSA9IGFkb3B0Q0Yoc291cmNlQ29weS0+Y29weU5hdGl2
ZUltYWdlKCkpOworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzb3VyY2VDb3B5SW1hZ2UgPSBz
b3VyY2VDb3B5LT5jb3B5TmF0aXZlSW1hZ2UoKTsKICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZGVz
dENvbnRleHQsIGRlc3RSZWN0SW5DR0Nvb3Jkcywgc291cmNlQ29weUltYWdlLmdldCgpKTsKICAg
ICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGRlc3RDb250ZXh0KTsKICNlbmRpZgpAQCAtNDc2LDkg
KzQ3Niw5IEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSwgQ29vCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
ckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0gZWxzZSBpZiAobV9yZXNvbHV0aW9uU2NhbGUgPT0g
MSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNvcHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0
b3JlKSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUp
OwogICAgIGVsc2UgewotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSk7CisgICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKDAsIGxvZ2ljYWxTaXplKCkud2lk
dGgoKSwgbG9naWNhbFNpemUoKS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplKCkud2lkdGgo
KSwgZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExh
c3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0Js
ZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQoKSwg
Q0dSZWN0TWFrZSgwLCAwLCBsb2dpY2FsU2l6ZSgpLndpZHRoKCksIGxvZ2ljYWxTaXplKCkuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcAppbmRleCBiZDFjY2VhODkxN2RmMjcwYzhlODBhMTRkNDVjZWJjMmQw
YmY3ZDM3Li4zYzk1ODk2YmJjMDhhNThmYWNkNzZiNGNiODkwODhkZDZiZTcyNjBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTExMywx
MCArMTEzLDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVJbWFn
ZSgpCiB7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJ
bWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gQml0bWFwSW1hZ2U6OmNyZWF0ZSBhZG9wdHMg
dGhlIENHSW1hZ2VSZWYgdGhhdCdzIHBhc3NlZCBpbiwgd2hpY2ggaXMgd2h5IHdlIG5lZWQgdG8g
bGVha1JlZiBoZXJlLgotICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKHBsYXRmb3JtSW1h
Z2UubGVha1JlZigpKTsKKyAgICByZXR1cm4gQml0bWFwSW1hZ2U6OmNyZWF0ZShwbGF0Zm9ybUlt
YWdlLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>