<?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>109712</bug_id>
          
          <creation_ts>2013-02-13 10:41:46 -0800</creation_ts>
          <short_desc>[Chromium] Compositor is applying scroll offset using &apos;programmatic&apos; API</short_desc>
          <delta_ts>2013-03-18 11:34:24 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112512</dependson>
          <blocked>107027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>tdanderson</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832049</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-02-13 10:41:46 -0800</bug_when>
    <thetext>Chromium&apos;s compositor invokes WebViewImpl::applyScrollAndScale where it calls mainFrameImpl()-&gt;frameView()-&gt;scrollBy(scrollDelta) and/or Page::setPageScaleFactor which calls into FrameView::setScrollPosition.

It looks like FrameView::setScrollPosition intended as the entry point for programmatic scrolls, given the code:

void FrameView::setScrollPosition(const IntPoint&amp; scrollPoint)
{
    TemporaryChange&lt;bool&gt; changeInProgrammaticScroll(m_inProgrammaticScroll, true);
...
}

The compositor normally represents user scrolls (e.g. scroll gestures / flings) so by calling into Frame::setScrollPosition, we allowing the m_inProgrammaticScroll to differentiate between user scrolls and programmatic scrolls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835587</commentid>
    <comment_count>1</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-02-18 09:59:30 -0800</bug_when>
    <thetext>If I change Page::setPageScaleFactor to use view-&gt;setScrollOffset instead of view-&gt;setScrollPosition, and WebViewImpl::applyScrollAndScale to use setScrollOffset instead of ScrollBy, we can avoid the compositor triggering the &apos;programmatic&apos; scroll FrameView::setScrollPosition.

setScrollPosition looks like it is updating scroll bars, before calling setScrollOffset. I tried it in Chrome on Android, and scroll bars seemed to be updated OK, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836356</commentid>
    <comment_count>2</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-02-19 07:03:20 -0800</bug_when>
    <thetext>Another effect of my proposal above is that it breaks webkit_unit_test WebViewTest.ResetScrollAndScaleState. The pageScaleFactor fails to be restored. This is because by not calling into FrameView::setScrollPosition, we don&apos;t set the m_inProgrammaticScroll flag. This flag controls whether m_wasScrolledByUser can be set -- if we&apos;re in not in a programmatic scroll, m_wasScrolledByUser will be set. Finally, when restoring the scroll position, if the page has been scrolled by the user (m_wasScrolledByUser), the scroll and scale state won&apos;t be restored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836431</commentid>
    <comment_count>3</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-02-19 08:38:52 -0800</bug_when>
    <thetext>So my understanding is as follows:

The FrameView::setScrollPosition API, is considered to be a programmatic scroll. The programmatic scroll flag stops the &apos;wasScrolledByUser&apos; flag from being set. 

The wasScrolledByUser flag controls whether the scroll position should be restored when the page loads. If the user has already scrolled the page, the scroll position should not be restored.

wasScrolledByUser can be set from EventHandler::setFrameWasScrolledByUser() in response to certain scroll events, for example EventHandler::scrollOverflow.

The question, then, is: should scroll updates from Chromium&apos;s compositor be considered to be programmatic scrolls or user scrolls?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836694</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-19 12:56:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; So my understanding is as follows:
&gt; The question, then, is: should scroll updates from Chromium&apos;s compositor be considered to be programmatic scrolls or user scrolls?

I believe the answer is user scrolls - more specifically, it should behave the same as if WebKit handled the gestures leading to scrolls which should go down the user-scrolled path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836697</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-19 13:01:28 -0800</bug_when>
    <thetext>Yes, scroll updates coming from CC should always be the result of gestures.  The only other situation that could cause them if content size changes and they are clamped, but generally speaking, WebKit should have pre-clamped things such that this doesn&apos;t happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850204</commentid>
    <comment_count>6</comment_count>
      <attachid>192032</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-07 10:05:20 -0800</bug_when>
    <thetext>Created attachment 192032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850208</commentid>
    <comment_count>7</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-07 10:08:10 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=192032) [details]
&gt; Patch

The patch is rather rough, but I&apos;d appreciate some feedback as I&apos;m out of time to work on it for today.

Specifically, is the idea of adding in the flag to the FrameView::setScrollPosition and FrameView::scrollBy good/bad?

Also, I&apos;m not yet sure of all the cases in WebViewImpl where a scroll should be considered programmatic and where it should be considered user. Up until now *all* of the scrolls from there have been treated as programmatic, so it&apos;s really a question of which ones should be treated as user.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850455</commentid>
    <comment_count>8</comment_count>
      <attachid>192032</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-07 13:47:06 -0800</bug_when>
    <thetext>Comment on attachment 192032
Patch

Attachment 192032 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17074117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850461</commentid>
    <comment_count>9</comment_count>
      <attachid>192032</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-07 13:54:11 -0800</bug_when>
    <thetext>Comment on attachment 192032
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:1812
&gt; +void FrameView::setScrollPosition(const IntPoint&amp; scrollPoint, bool isProgrammaticScroll)

The existing code that uses setScrollPosition has not needed this parameter.  I don&apos;t think you should add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850463</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-07 13:55:11 -0800</bug_when>
    <thetext>Today code uses a different set of APIs to handle user scrolls vs programmatic scrolls, for better or for worse.  Can you preserve this behavior in your patch (by calling the appropriate APIs) instead of adding more branches in existing codepaths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851278</commentid>
    <comment_count>11</comment_count>
      <attachid>192246</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-08 10:03:15 -0800</bug_when>
    <thetext>Created attachment 192246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851283</commentid>
    <comment_count>12</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-08 10:08:13 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Today code uses a different set of APIs to handle user scrolls vs programmatic scrolls, for better or for worse.  Can you preserve this behavior in your patch (by calling the appropriate APIs) instead of adding more branches in existing codepaths?

It seems that there are various ways of scrolling non-programmatically. I modelled WebViewImpl::updateMainFrameScrollPosition after ScrollingCoordinator::updateMainFrameScrollPosition. This amounts to calling ScrollableArea::notifyScrollPositionChanged.

The difficulty is WebViewImpl::setPageScaleFactor. This calls Page::setPageScaleFactor which calls FrameView::setScrollPosition which is always a programmatic scroll. 

This patch works around this problem by scrolling first with updateMainFrameScrollPosition so that Page::setPageScaleFactor will only set the scale factor and not also (programmatically) scroll.

Is this the sort of thing you had in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851333</commentid>
    <comment_count>13</comment_count>
      <attachid>192246</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 10:59:20 -0800</bug_when>
    <thetext>Comment on attachment 192246
Patch

Attachment 192246 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17014250

New failing tests:
html5lib/generated/run-tests16-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851405</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-08 12:06:06 -0800</bug_when>
    <thetext>I guess that test is flaky?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851454</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-08 13:05:32 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; Today code uses a different set of APIs to handle user scrolls vs programmatic scrolls, for better or for worse.  Can you preserve this behavior in your patch (by calling the appropriate APIs) instead of adding more branches in existing codepaths?
&gt; 
&gt; It seems that there are various ways of scrolling non-programmatically. I modelled WebViewImpl::updateMainFrameScrollPosition after ScrollingCoordinator::updateMainFrameScrollPosition. This amounts to calling ScrollableArea::notifyScrollPositionChanged.
&gt; 
&gt; The difficulty is WebViewImpl::setPageScaleFactor. This calls Page::setPageScaleFactor which calls FrameView::setScrollPosition which is always a programmatic scroll. 
&gt; 
&gt; This patch works around this problem by scrolling first with updateMainFrameScrollPosition so that Page::setPageScaleFactor will only set the scale factor and not also (programmatically) scroll.
&gt; 
&gt; Is this the sort of thing you had in mind?

Yes, this looks a lot more like what I had in mind.  I&apos;m gardening until the middle of next week so I may not be able to take a careful look at this patch until that&apos;s over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853520</commentid>
    <comment_count>16</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-12 09:00:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 192246 [details])
&gt; Attachment 192246 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17014250
&gt; 
&gt; New failing tests:
&gt; html5lib/generated/run-tests16-data.html

Yes, definitely flaky: http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=html5lib%2Fgenerated%2Frun-tests16-data.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853683</commentid>
    <comment_count>17</comment_count>
      <attachid>192781</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-12 12:03:15 -0700</bug_when>
    <thetext>Created attachment 192781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853690</commentid>
    <comment_count>18</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-12 12:10:06 -0700</bug_when>
    <thetext>- Removed the need for a separate test data file by using data:// URLs. 

- WebViewImpl::setPageScaleFactor is now performing a user scroll, which breaks  WebViewTest.ResetScrollAndScaleState test. Fixed the test by clearing the user scroll flag. 

- Added an additional test for short documents where the page must be zoomed in before the scroll can occur.

If you get any quiet times during your gardening (chance would be a fine thing!) would be great to get your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854200</commentid>
    <comment_count>19</comment_count>
      <attachid>192902</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-13 04:49:57 -0700</bug_when>
    <thetext>Created attachment 192902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854201</commentid>
    <comment_count>20</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-13 04:54:50 -0700</bug_when>
    <thetext>- Simplify updateMainFrameScrollPosition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854686</commentid>
    <comment_count>21</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-13 14:58:20 -0700</bug_when>
    <thetext>Could you explain why you need to call frameView-&gt;setConstrainsScrollingToContentEdge(false) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855189</commentid>
    <comment_count>22</comment_count>
      <attachid>193120</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-14 07:54:45 -0700</bug_when>
    <thetext>Created attachment 193120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855191</commentid>
    <comment_count>23</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-14 08:00:15 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Could you explain why you need to call frameView-&gt;setConstrainsScrollingToContentEdge(false) ?

Hmm, actually I don&apos;t need to do this. I had copied this from ScrollingCompositor::updateMainFrameScrollPosition and it helped work around a problem where although the page scale had changed, the scroll was being prevented because the content hadn&apos;t yet realised the new scroll dimensions.

I&apos;ve changed my patch to call Document::updateLayoutIgnorePendingStylesheets() if necessary in the same way as Page::setPageScaleFactor does. This updates the relevant constraints so that the subsequent scroll is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855337</commentid>
    <comment_count>24</comment_count>
      <attachid>193120</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-14 11:15:38 -0700</bug_when>
    <thetext>Comment on attachment 193120
Patch

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

LGTM

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3010
&gt; +        if (!page()-&gt;settings()-&gt;applyPageScaleFactorInCompositor())

This setting is always true in Chromium now anyway, so you can delete this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855352</commentid>
    <comment_count>25</comment_count>
      <attachid>193120</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-14 11:29:06 -0700</bug_when>
    <thetext>Comment on attachment 193120
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3010
&gt;&gt; +        if (!page()-&gt;settings()-&gt;applyPageScaleFactorInCompositor())
&gt; 
&gt; This setting is always true in Chromium now anyway, so you can delete this.

I would prefer to keep it for now, as many of our unit tests (e.g. WebViewTest.ResetScrollAndScaleState) are running without this flag. I think it would be better to do a single focused change on removing the setting entirely, when the time is right. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855357</commentid>
    <comment_count>26</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-03-14 11:31:41 -0700</bug_when>
    <thetext>The focused change is here, planning to land it soon: https://bugs.webkit.org/show_bug.cgi?id=111809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855370</commentid>
    <comment_count>27</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-14 11:43:02 -0700</bug_when>
    <thetext>Right, ok, will make this change.

It sounds like it makes sense to land my patch after yours? Otherwise, I will need to add a call to &quot;webViewImpl-&gt;settings()-&gt;setApplyPageScaleFactorInCompositor(true);&quot; in WebViewTest.ResetScrollAndScaleState, which you would need to then remove in your patch.

(In reply to comment #26)
&gt; The focused change is here, planning to land it soon: https://bugs.webkit.org/show_bug.cgi?id=111809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855410</commentid>
    <comment_count>28</comment_count>
      <attachid>193120</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-14 12:22:13 -0700</bug_when>
    <thetext>Comment on attachment 193120
Patch

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

R=me

&gt;&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3010
&gt;&gt;&gt; +        if (!page()-&gt;settings()-&gt;applyPageScaleFactorInCompositor())
&gt;&gt; 
&gt;&gt; This setting is always true in Chromium now anyway, so you can delete this.
&gt; 
&gt; I would prefer to keep it for now, as many of our unit tests (e.g. WebViewTest.ResetScrollAndScaleState) are running without this flag. I think it would be better to do a single focused change on removing the setting entirely, when the time is right. What do you think?

I think you should delete it. This code otherwise will be DOA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855904</commentid>
    <comment_count>29</comment_count>
      <attachid>193284</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-15 05:02:47 -0700</bug_when>
    <thetext>Created attachment 193284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855910</commentid>
    <comment_count>30</comment_count>
      <attachid>193284</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 05:35:12 -0700</bug_when>
    <thetext>Comment on attachment 193284
Patch

Clearing flags on attachment: 193284

Committed r145898: &lt;http://trac.webkit.org/changeset/145898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855911</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 05:35:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856667</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-16 22:19:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857283</commentid>
    <comment_count>33</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-18 10:37:45 -0700</bug_when>
    <thetext>I discovered the reason for the flakiness. The tests use data: URLs to load in the HTML content to test with. On Desktop this is loaded synchronously, but on Android, the loads are asynchronous (See https://chromiumcodereview.appspot.com/10440068 ). 

Fix this problem by using the mocked URL loader that all the other tests are using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857290</commentid>
    <comment_count>34</comment_count>
      <attachid>193601</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2013-03-18 10:45:02 -0700</bug_when>
    <thetext>Created attachment 193601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857330</commentid>
    <comment_count>35</comment_count>
      <attachid>193601</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-18 11:10:03 -0700</bug_when>
    <thetext>Comment on attachment 193601
Patch

Nice find!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857354</commentid>
    <comment_count>36</comment_count>
      <attachid>193601</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 11:34:19 -0700</bug_when>
    <thetext>Comment on attachment 193601
Patch

Clearing flags on attachment: 193601

Committed r146091: &lt;http://trac.webkit.org/changeset/146091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857355</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 11:34:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192032</attachid>
            <date>2013-03-07 10:05:20 -0800</date>
            <delta_ts>2013-03-08 10:03:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130307180124.patch</filename>
            <type>text/plain</type>
            <size>15078</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q5YjQzYjMxZmJkOTM5
NDM1MzY3NjQxNzM2ZjQ3YTlkODE0MjE2Mi4uNGJhN2ZjMDdlZjdkOTk2YzlhN2FlNTY1OWY4Zjcw
NWFmNzAwN2UzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAzLTA3ICBKb2hu
IEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gQ29tcG9zaXRvciBpcyBhcHBseWluZyBzY3JvbGwgb2Zmc2V0IHVzaW5nICdwcm9ncmFtbWF0
aWMnIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5NzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWxsb3cgRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbiBhbmQgRnJhbWVWaWV3OjpzY3JvbGxC
eSB0byB0YWtlIGFuCisgICAgICAgIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gc3BlY2lmeSB3aGV0
aGVyIHRoZSBzY3JvbGwgc2hvdWxkIGJlIGNvbnNpZGVyZWQKKyAgICAgICAgYSB1c2VyIHNjcm9s
bCBvciBhIHByb2dyYW1hdGljIHNjcm9sbC4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbEJ5KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UGFnZVNjYWxl
RmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAoUGFnZSk6CisKIDIwMTMtMDMtMDcgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gSW1wbGVtZW50IFJ1bGVDb2xsZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2FjMzJhMTQ5MTg4NWE4YzAzODU1YTJkMDRi
MmU4ZmExMDQ5ZDM3ZC4uYzhmMjFkOTUwNWIwNzE1OWUzODhlNTA3OGM2ODRjNzk5YTQ0MDRiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMy0wMy0wNyAg
Sm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIENvbXBvc2l0b3IgaXMgYXBwbHlpbmcgc2Nyb2xsIG9mZnNldCB1c2luZyAncHJvZ3Jh
bW1hdGljJyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwOTcxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcm9sbGluZyBmcm9tIHRoZSBjb21wb3NpdG9yIGlzIGFsd2F5cyBhIHVzZXIgc2Nyb2xs
LCBzbyBjYWxsIHRoZQorICAgICAgICBuZXcgRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbiBh
bmQgRnJhbWVWaWV3OjpzY3JvbGxCeSB3aXRoCisgICAgICAgIGNvcnJlY3QgZmxhZyB0byBpbmRp
Y2F0ZSB1c2VyIHNjcm9sbC4KKworICAgICAgICBXZWJLaXQgVW5pdCBUZXN0OiBXZWJGcmFtZVRl
c3QuQ29tcG9zaXRvclNjcm9sbElzVXNlclNjcm9sbAorCisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2l6ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc3RvcmVTY3JvbGxBbmRTY2Fs
ZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisKIDIwMTMtMDMtMDcgIEpvY2hl
biBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBl
eHBvc2UgVXNlckdlc3R1cmVUb2tlbiB2aWEgV2ViS2l0IEFQSSBzbyBQUEFQSSBwbHVnaW5zIGNh
biBjb3JyZWN0bHkgY29uc3VtZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGE4
NGU1NmU4MTQ5N2Y0OGZmNjFiMDc4YjUxYzM5ODVkMDQ1MTA1M2YuLjJmZGRmYmI3NDg2YjJhMmQ1
NjkyMWY2MWM1NmY0YWEzZTc2ZTgxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTE4MDksOSArMTgwOSw5IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxFbGVtZW50VG9SZWN0KEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgc2V0U2Nyb2xsUG9zaXRp
b24oSW50UG9pbnQoYm91bmRzLngoKSAtIGNlbnRlcmluZ09mZnNldFggLSByZWN0LngoKSwgYm91
bmRzLnkoKSAtIGNlbnRlcmluZ09mZnNldFkgLSByZWN0LnkoKSkpOwogfQogCi12b2lkIEZyYW1l
Vmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQordm9p
ZCBGcmFtZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2lu
dCwgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCkKIHsKLSAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9v
bD4gY2hhbmdlSW5Qcm9ncmFtbWF0aWNTY3JvbGwobV9pblByb2dyYW1tYXRpY1Njcm9sbCwgdHJ1
ZSk7CisgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZUluUHJvZ3JhbW1hdGljU2Nyb2xs
KG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwsIGlzUHJvZ3JhbW1hdGljU2Nyb2xsKTsKICAgICBtX21h
aW50YWluU2Nyb2xsUG9zaXRpb25BbmNob3IgPSAwOwogCiAgICAgSW50UG9pbnQgbmV3U2Nyb2xs
UG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKHNjcm9sbFBvaW50KTsK
QEAgLTE4MjUsNiArMTgyNSwxNiBAQCB2b2lkIEZyYW1lVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbFBv
c2l0aW9uKG5ld1Njcm9sbFBvc2l0aW9uKTsKIH0KIAordm9pZCBGcmFtZVZpZXc6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb2ludCkKK3sKKyAgICBzZXRTY3JvbGxQ
b3NpdGlvbihzY3JvbGxQb2ludCwgdHJ1ZSk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxC
eShjb25zdCBJbnRTaXplJiBzLCBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsKQoreworICAgIHNl
dFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBzLCBpc1Byb2dyYW1tYXRpY1Njcm9s
bCk7Cit9CisKIHZvaWQgRnJhbWVWaWV3OjpkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKQog
ewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CmluZGV4IDlmY2Q4NzQyZjlkMWMzMzIwMDBhOTU5NTY3OWI5MGU4MzQ5ZWMyOGYuLmYxN2MwMDc3
MTk4N2EyNjNhNWUzY2YxYTAyMGY0MDUwY2EzMWE4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aApAQCAtMTg5LDYgKzE4OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JikgT1ZFUlJJREU7CisgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYsIGJvb2wgaXNQcm9ncmFtbWF0
aWNTY3JvbGwpIE9WRVJSSURFOworICAgIHVzaW5nIFNjcm9sbFZpZXc6OnNjcm9sbEJ5OworICAg
IHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYsIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwp
OwogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwYWludEZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZygpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGaXhlZEVsZW1lbnRzQWZ0ZXJTY3JvbGxpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IGVhYWRiMTg5MThiZGI3MWY1MTdlZWFmOTQ3NjEwYjIxMmEwYTY4NzQu
LmFlMzBjYTVkNGIxYTVjOTIxY2QyMjFkYzIxYWJhMTgwMzEyMDJkZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtNzE5LDYgKzcxOSwxMSBAQCB2b2lkIFBhZ2U6OnNldE1lZGlhVm9sdW1lKGZsb2F0
IHZvbHVtZSkKIAogdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNv
bnN0IEludFBvaW50JiBvcmlnaW4pCiB7CisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlLCBv
cmlnaW4sIHRydWUpOworfQorCit2b2lkIFBhZ2U6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBz
Y2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCkK
K3sKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1bWVudC0+dmlldygpOwogCkBAIC03MjYsNyArNzMxLDcg
QEAgdm9pZCBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBv
aW50JiBvcmlnaW4pCiAgICAgICAgIGlmICh2aWV3ICYmICh2aWV3LT5zY3JvbGxQb3NpdGlvbigp
ICE9IG9yaWdpbiB8fCB2aWV3LT5kZWxlZ2F0ZXNTY3JvbGxpbmcoKSkpIHsKICAgICAgICAgICAg
IGlmICghbV9zZXR0aW5ncy0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAg
ICAgICAgICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7Ci0gICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihvcmlnaW4pOworICAg
ICAgICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ob3JpZ2luLCBpc1Byb2dyYW1tYXRpY1Nj
cm9sbCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc1MywxMSArNzU4
LDEwIEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25zdCBJ
bnRQb2ludCYgb3JpZ2luKQogICAgIGlmICh2aWV3ICYmIHZpZXctPnNjcm9sbFBvc2l0aW9uKCkg
IT0gb3JpZ2luKSB7CiAgICAgICAgIGlmICghbV9zZXR0aW5ncy0+YXBwbHlQYWdlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IoKSAmJiBkb2N1bWVudC0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudC0+cmVu
ZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSAmJiB2aWV3LT5kaWRGaXJzdExheW91dCgpKQogICAgICAg
ICAgICAgdmlldy0+bGF5b3V0KCk7Ci0gICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKG9y
aWdpbik7CisgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKG9yaWdpbiwgaXNQcm9ncmFt
bWF0aWNTY3JvbGwpOwogICAgIH0KIH0KIAotCiB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFj
dG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogewogICAgIGlmIChtX2RldmljZVNjYWxlRmFjdG9yID09
IHNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmYWY2ZDk2YzFkM2Q1MDRlYzEyYmYzZDk5
NmEzOWJhZWMxYjdkODBkLi4yMzA0YjUwZjQ3ODU0MWFmYWVlM2Y4MDEwMzQ2MGNjOGYxMzZkOTdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtMjYzLDYgKzI2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE1lZGlhVm9sdW1lKGZsb2F0KTsKIAogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0
IHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKTsKKyAgICB2b2lkIHNldFBhZ2VTY2FsZUZh
Y3RvcihmbG9hdCBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbiwgYm9vbCBpc1Byb2dyYW1t
YXRpY1Njcm9sbCk7CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlU2NhbGVGYWN0b3I7IH0KIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGVkYzRjYTI3YzQxMzQ0MTg4YTllYTBhYWUzYzA5
NGNhNWMwMmI3ZGIuLjRjN2YwNWE1ZDI2ZTU0MDlkOGUyZjQzOTY2NWQ3MDdmMWIwYTIxZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTg2Nyw3ICs4
NjcsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJ
bnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdQogICAgIGlmICghdXNlQW5jaG9yKSB7CiAg
ICAgICAgIGNsYW1wZWRQb2ludCA9IGNsYW1wT2Zmc2V0QXRTY2FsZSh0YXJnZXRQb3NpdGlvbiwg
bmV3U2NhbGUpOwogICAgICAgICBpZiAoIWR1cmF0aW9uSW5TZWNvbmRzKSB7Ci0gICAgICAgICAg
ICBzZXRQYWdlU2NhbGVGYWN0b3IobmV3U2NhbGUsIGNsYW1wZWRQb2ludCk7CisgICAgICAgICAg
ICBzZXRQYWdlU2NhbGVGYWN0b3IobmV3U2NhbGUsIGNsYW1wZWRQb2ludCwgZmFsc2UpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTcyNSw3ICsxNzI1
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzaXplKGNvbnN0IFdlYlNpemUmIG5ld1NpemUpCiAg
ICAgICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldEF0TmV3U2NhbGUgPSBvbGRTY3JvbGxPZmZz
ZXQ7CiAgICAgICAgICAgICBpZiAoIXNldHRpbmdzSW1wbCgpLT5hcHBseVBhZ2VTY2FsZUZhY3Rv
ckluQ29tcG9zaXRvcigpKQogICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldEF0TmV3U2NhbGUu
c2NhbGUoc2NhbGVNdWx0aXBsaWVyKTsKLSAgICAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3Rvcihv
bGRQYWdlU2NhbGVGYWN0b3IgKiBzY2FsZU11bHRpcGxpZXIsIEludFBvaW50KHNjcm9sbE9mZnNl
dEF0TmV3U2NhbGUpKTsKKyAgICAgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihvbGRQYWdlU2Nh
bGVGYWN0b3IgKiBzY2FsZU11bHRpcGxpZXIsIEludFBvaW50KHNjcm9sbE9mZnNldEF0TmV3U2Nh
bGUpLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTI5OTEsNiArMjk5MSwx
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3JQcmVzZXJ2aW5nU2Nyb2xs
T2Zmc2V0KGZsb2F0IHNjYWxlRmFjdG9yKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2Nh
bGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCiB7Cisg
ICAgc2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBvcmlnaW4sIHRydWUpOworfQorCit2
b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYlBvaW50JiBvcmlnaW4sIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpCit7CiAgICAg
aWYgKCFwYWdlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzAwMSw3ICszMDA2LDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25z
dCBXZWJQb2ludCYgb3JpZ2luKQogICAgIHNjYWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0
b3JUb0xpbWl0cyhzY2FsZUZhY3Rvcik7CiAgICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRB
dFNjYWxlKHNjcm9sbE9mZnNldCwgc2NhbGVGYWN0b3IpOwogCi0gICAgcGFnZSgpLT5zZXRQYWdl
U2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHNjcm9sbE9mZnNldCkpOworICAgIHBh
Z2UoKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludChzY3JvbGxPZmZz
ZXQpLCBpc1Byb2dyYW1tYXRpY1Njcm9sbCk7CiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0
ID0gdHJ1ZTsKIApAQCAtMzE5Myw3ICszMTk4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVzdG9y
ZVNjcm9sbEFuZFNjYWxlU3RhdGUoKQogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKICAgICBz
dGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJbnRQb2ludChtX3NhdmVkU2Nyb2xsT2Zmc2V0KSwgZmFs
c2UsIG1fc2F2ZWRQYWdlU2NhbGVGYWN0b3IsIHNjcm9sbEFuZFNjYWxlQW5pbWF0aW9uRHVyYXRp
b25JblNlY29uZHMpOwogI2Vsc2UKLSAgICBzZXRQYWdlU2NhbGVGYWN0b3IobV9zYXZlZFBhZ2VT
Y2FsZUZhY3RvciwgV2ViUG9pbnQoKSk7CisgICAgc2V0UGFnZVNjYWxlRmFjdG9yKG1fc2F2ZWRQ
YWdlU2NhbGVGYWN0b3IsIFdlYlBvaW50KCksIGZhbHNlKTsKICAgICBtYWluRnJhbWUoKS0+c2V0
U2Nyb2xsT2Zmc2V0KG1fc2F2ZWRTY3JvbGxPZmZzZXQpOwogI2VuZGlmCiAKQEAgLTQxOTMsNyAr
NDE5OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2Vi
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAKICAgICBpZiAocGFnZVNjYWxlRGVs
dGEgPT0gMSkgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigid2Via2l0IiwgIldlYlZp
ZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlOjpzY3JvbGxCeSIsICJ4Iiwgc2Nyb2xsRGVsdGEu
d2lkdGgsICJ5Iiwgc2Nyb2xsRGVsdGEuaGVpZ2h0KTsKLSAgICAgICAgbWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworICAgICAgICBtYWluRnJhbWVJ
bXBsKCktPmZyYW1lVmlldygpLT5zY3JvbGxCeShzY3JvbGxEZWx0YSwgZmFsc2UpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIFRoZSBwYWdlIHNjYWxlIGNoYW5nZWQsIHNvIGFwcGx5IGEgc2Nh
bGUgYW5kIHNjcm9sbCBpbiBhIHNpbmdsZQogICAgICAgICAvLyBvcGVyYXRpb24uCkBAIC00MjEw
LDcgKzQyMTUsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbAogICAgICAgICAgICAgc2Nyb2xs
UG9pbnQueSA9IHNjcm9sbFBvaW50LnkgKiBwYWdlU2NhbGVEZWx0YTsKICAgICAgICAgfQogCi0g
ICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVGYWN0b3IoKSAqIHBhZ2VTY2FsZURl
bHRhLCBzY3JvbGxQb2ludCk7CisgICAgICAgIHNldFBhZ2VTY2FsZUZhY3RvcihwYWdlU2NhbGVG
YWN0b3IoKSAqIHBhZ2VTY2FsZURlbHRhLCBzY3JvbGxQb2ludCwgZmFsc2UpOwogICAgICAgICBt
X2RvdWJsZVRhcFpvb21QZW5kaW5nID0gZmFsc2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZjQ1NWY0NGFjM2Q3NDIyNzRlNzJlN2M1N2Yy
OWYyODY4YjY5ODgwOS4uOGJkYmFlOGM4OTUzNDE5MDEzYTc0MDI5ZTI0OTAyOWU4NTFlMjk5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC02MTAsNiArNjEw
LDcgQEAgcHVibGljOgogICAgIFdlYlNldHRpbmdzSW1wbCogc2V0dGluZ3NJbXBsKCk7CiAKIHBy
aXZhdGU6CisgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNv
bnN0IFdlYlBvaW50JiBvcmlnaW4sIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpOwogICAgIHZv
aWQgY29tcHV0ZVBhZ2VTY2FsZUZhY3RvckxpbWl0cygpOwogICAgIGZsb2F0IGNsYW1wUGFnZVNj
YWxlRmFjdG9yVG9MaW1pdHMoZmxvYXQgc2NhbGUpOwogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
YW1wT2Zmc2V0QXRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0LCBmbG9hdCBz
Y2FsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAKaW5kZXggZGY1YjZkYWJlYzhiMjU4NTEyNjEwZmM4ZGJmNDYyMDgxY2FiOTQ4OC4uNzg2
OWRmODU2NmU3ZDAxYmZmYTY1MTBkZDkzYWQwMjM4Y2I2YjY0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMjQ5Nyw0ICsyNDk3LDg5IEBA
IFRFU1RfRihXZWJGcmFtZVRlc3QsIERpZEFjY2Vzc0luaXRpYWxEb2N1bWVudE5hdmlnYXRvcikK
ICAgICBtX3dlYlZpZXcgPSAwOwogfQogCitjbGFzcyBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3Jh
bW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworcHVibGlj
OgorICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNTY3JvbGxGcmFtZUNsaWVudCgp
IHsgcmVzZXQoKTsgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9kaWRTY3Jv
bGxNYWluRnJhbWUgPSBmYWxzZTsKKyAgICAgICAgbV93YXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBm
YWxzZTsKKyAgICB9CisgICAgYm9vbCB3YXNVc2VyU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gbV9k
aWRTY3JvbGxNYWluRnJhbWUgJiYgIW1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CisgICAgYm9v
bCB3YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX2RpZFNjcm9sbE1haW5G
cmFtZSAmJiBtX3dhc1Byb2dyYW1tYXRpY1Njcm9sbDsgfQorCisgICAgLy8gV2ViRnJhbWVDbGll
bnQ6CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldChXZWJGcmFtZSogZnJh
bWUpIE9WRVJSSURFCisgICAgeworICAgICAgICBpZiAoZnJhbWUtPnBhcmVudCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBFWFBFQ1RfRkFMU0UobV9kaWRTY3JvbGxNYWluRnJhbWUp
OworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUltcGwqPihmcmFtZSktPmZyYW1lVmlldygpOworICAgICAgICAvLyBGcmFtZVZpZXcgY2FuIGJl
IHNjcm9sbGVkIGluIEZyYW1lVmlldzo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QKKyAgICAg
ICAgLy8gd2hpY2ggaXMgY2FsbGVkIGZyb20gRnJhbWU6OmNyZWF0ZVZpZXcgKGJlZm9yZSB0aGUg
ZnJhbWUgaXMgYXNzb2NpYXRlZAorICAgICAgICAvLyB3aXRoIHRoZSB0aGUgdmlldykuCisgICAg
ICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBtX2RpZFNjcm9sbE1haW5GcmFtZSA9IHRydWU7
CisgICAgICAgICAgICBtX3dhc1Byb2dyYW1tYXRpY1Njcm9sbCA9IHZpZXctPmluUHJvZ3JhbW1h
dGljU2Nyb2xsKCk7CisgICAgICAgIH0KKyAgICB9Citwcml2YXRlOgorICAgIGJvb2wgbV9kaWRT
Y3JvbGxNYWluRnJhbWU7CisgICAgYm9vbCBtX3dhc1Byb2dyYW1tYXRpY1Njcm9sbDsKK307CisK
K1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbXBvc2l0b3JTY3JvbGxJc1VzZXJTY3JvbGwpCit7Cisg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgidXNlcl9wcm9ncmFtbWF0aWNfc2Nyb2xsLmh0
bWwiKTsKKworICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNTY3JvbGxGcmFtZUNs
aWVudCBjbGllbnQ7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdGlhbGl6ZSB0byBtaW5pbXVt
IHNjYWxlLCBldmVuIGlmIHRoZSB3aW5kb3cgc2l6ZQorICAgIC8vIG9ubHkgYmVjb21lcyBhdmFp
bGFibGUgYWZ0ZXIgdGhlIGxvYWQgYmVnaW5zLgorICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhl
bHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJ1c2VyX3Byb2dyYW1tYXRp
Y19zY3JvbGwuaHRtbCIsIHRydWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dl
YlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRy
dWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIG1f
d2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0
aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1fd2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVu
dC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1h
dGljU2Nyb2xsKCkpOworCisgICAgLy8gRG8gYSBjb21wb3NpdG9yIHNjcm9sbCwgdmVyaWZ5IHRo
YXQgdGhpcyBpcyBjb3VudGVkIGFzIGEgdXNlciBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFw
cGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgwLCAxKSwgMS4xZik7CisgICAgRVhQRUNUX1RSVUUo
Y2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVu
dC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisKKyAgICAvLyBUaGUgcGFnZSBzY2FsZSAxLjBm
IHVzZXMgRnJhbWVWaWV3OjpzY3JvbGxCeSBpbnN0ZWFkIG9mIHNldFBhZ2VTY2FsZUZhY3Rvci4K
KyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDAsIDEpLCAxLjBm
KTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIE5vIHNjcm9sbCBldmVudCBpZiB0aGVyZSBpcyBubyBzY3JvbGwg
ZGVsdGEuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAx
LjBmKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBQcm9ncmFtbWF0aWMgc2Nyb2xsLgorICAgIFdlYkZyYW1lSW1wbCog
ZnJhbWVJbXBsID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKTsKKyAgICBmcmFtZUltcGwt
PmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIp
KTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAg
IGNsaWVudC5yZXNldCgpOworCisgICAgLy8gUHJvZ3JhbW1hdGljIHNjcm9sbCB0byBzYW1lIG9m
ZnNldC4gTm8gc2Nyb2xsIGV2ZW50IHNob3VsZCBiZSBnZW5lcmF0ZWQuCisgICAgZnJhbWVJbXBs
LT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIwKTsi
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNl
dCgpOworCisgICAgbV93ZWJWaWV3LT5jbG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7Cit9CisK
KwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS91c2VyX3Byb2dyYW1tYXRpY19zY3JvbGwuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS91c2VyX3Byb2dyYW1tYXRpY19zY3JvbGwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45Y2MzMTFkNDE1OTFiMjZkZDRlZTQ4Y2M4YmQ5ODljZGU1ZWZjOWI5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3VzZXJfcHJvZ3JhbW1hdGlj
X3Njcm9sbC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgc3R5bGU9
ImhlaWdodDoyMDAwcHgiPgorQSB2ZXJ5IGxvbmcgZGl2LgorPC9kaXY+CitTb21lIHRleHQgYXQg
dGhlIGJvdHRvbS4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192246</attachid>
            <date>2013-03-08 10:03:15 -0800</date>
            <delta_ts>2013-03-12 12:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130308175917.patch</filename>
            <type>text/plain</type>
            <size>8228</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGJmYmEwZjdkYjUwM2Y0NDIzZDA4Y2ViZmFmYzU1ODRiZmJjNjRkMDcuLjc5NzA4YjhiOWYxMzlm
Y2RlYzMxY2Q3MjJiY2Y5NzhhMDI3ZjAzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTMtMDMtMDggIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAg
ICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL2RhdGEvdXNl
cl9wcm9ncmFtbWF0aWNfc2Nyb2xsLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTA3ICBLZWlzaGkg
SGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjYWxlbmRhciBw
aWNrZXIgVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCBmNjVjNTljMWI2ZDkwYzNiZGNlZTEzMTdkZWEwNWFkYTgwM2IwNjQwLi4yZTE1M2I4NzdlOTk3
YjEyYWE3MjA5MjIxZmI5NzM5OWRjZTdiM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MTg2LDYgKzQxODYsMjIgQEAgV2ViSW5wdXRIYW5kbGVy
KiBXZWJWaWV3SW1wbDo6Y3JlYXRlSW5wdXRIYW5kbGVyKCkKICAgICByZXR1cm4gaGFuZGxlcjsK
IH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHByb2dyYW1tYXRpY1Njcm9sbCkKK3sK
KyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSA9PSBzY3JvbGxQ
b3NpdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBvbGRQcm9ncmFtbWF0aWNTY3Jv
bGwgPSBmcmFtZVZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgZnJhbWVWaWV3LT5z
ZXRJblByb2dyYW1tYXRpY1Njcm9sbChwcm9ncmFtbWF0aWNTY3JvbGwpOworICAgIGZyYW1lVmll
dy0+bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKHNjcm9sbFBvc2l0aW9uKTsKKyAgICBmcmFt
ZVZpZXctPnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKG9sZFByb2dyYW1tYXRpY1Njcm9sbCk7Cit9
CisKIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZURlbHRhKQogewogICAgIGlmICghbWFpbkZyYW1l
SW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQpAQCAtNDE5Myw3ICs0MjA5
LDkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXpl
JiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWwKIAogICAgIGlmIChwYWdlU2NhbGVEZWx0YSA9
PSAxKSB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJ3ZWJraXQiLCAiV2ViVmlld0lt
cGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGU6OnNjcm9sbEJ5IiwgIngiLCBzY3JvbGxEZWx0YS53aWR0
aCwgInkiLCBzY3JvbGxEZWx0YS5oZWlnaHQpOwotICAgICAgICBtYWluRnJhbWVJbXBsKCktPmZy
YW1lVmlldygpLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CisgICAgICAgIFdlYlNpemUgd2ViU2Ny
b2xsT2Zmc2V0ID0gbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpOworICAgICAgICBJbnRQb2lu
dCBzY3JvbGxPZmZzZXQod2ViU2Nyb2xsT2Zmc2V0LndpZHRoICsgc2Nyb2xsRGVsdGEud2lkdGgs
IHdlYlNjcm9sbE9mZnNldC5oZWlnaHQgKyBzY3JvbGxEZWx0YS5oZWlnaHQpOworICAgICAgICB1
cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxPZmZzZXQsIGZhbHNlKTsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBUaGUgcGFnZSBzY2FsZSBjaGFuZ2VkLCBzbyBhcHBseSBhIHNj
YWxlIGFuZCBzY3JvbGwgaW4gYSBzaW5nbGUKICAgICAgICAgLy8gb3BlcmF0aW9uLgpAQCAtNDIx
MCw2ICs0MjI4LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAgICAgICAgICAgICBzY3Jv
bGxQb2ludC55ID0gc2Nyb2xsUG9pbnQueSAqIHBhZ2VTY2FsZURlbHRhOwogICAgICAgICB9CiAK
KyAgICAgICAgLy8gVXNlciBzY3JvbGwgdG8gc2Nyb2xsUG9pbnQgYmVmb3JlIHNldHRpbmcgdGhl
IHBhZ2Ugc2NhbGUgZmFjdG9yCisgICAgICAgIC8vIHNvIHRoYXQgdGhlIHNjcm9sbCBjYW4gYmUg
aWRlbnRpZmllZCBhcyBhIHVzZXIgc2Nyb2xsIHJhdGhlciB0aGFuCisgICAgICAgIC8vIHByb2dy
YW1tYXRpYy4KKyAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9p
bnQsIGZhbHNlKTsKICAgICAgICAgc2V0UGFnZVNjYWxlRmFjdG9yKHBhZ2VTY2FsZUZhY3Rvcigp
ICogcGFnZVNjYWxlRGVsdGEsIHNjcm9sbFBvaW50KTsKICAgICAgICAgbV9kb3VibGVUYXBab29t
UGVuZGluZyA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCmluZGV4IGRlNDg4NTFiMjkxMTAyZTU0YTdhNzI3MmZkODY2MjY2YjE3M2NkMDQuLjU1
N2MyODA1NDdkNTFiNjIxYmZlMGQwNTYxZDg1NzE4NjRjOTBmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjE1LDYgKzYxNSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHVw
ZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpOworCiAgICAgZnJpZW5kIGNsYXNz
IFdlYlZpZXc7ICAvLyBTbyBXZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0cnVjdG9y
CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CiAgICAgZnJp
ZW5kIHZvaWQgc2V0Q3VycmVudElucHV0RXZlbnRGb3JUZXN0KGNvbnN0IFdlYklucHV0RXZlbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRl
eCBkZjViNmRhYmVjOGIyNTg1MTI2MTBmYzhkYmY0NjIwODFjYWI5NDg4Li43ODY5ZGY4NTY2ZTdk
MDFiZmZhNjUxMGRkOTNhZDAyMzhjYjZiNjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0yNDk3LDQgKzI0OTcsODkgQEAgVEVTVF9GKFdl
YkZyYW1lVGVzdCwgRGlkQWNjZXNzSW5pdGlhbERvY3VtZW50TmF2aWdhdG9yKQogICAgIG1fd2Vi
VmlldyA9IDA7CiB9CiAKK2NsYXNzIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNTY3Jv
bGxGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CitwdWJsaWM6CisgICAgVGVz
dE1haW5GcmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50KCkgeyByZXNldCgp
OyB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBtX2RpZFNjcm9sbE1haW5GcmFt
ZSA9IGZhbHNlOworICAgICAgICBtX3dhc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZhbHNlOworICAg
IH0KKyAgICBib29sIHdhc1VzZXJTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX2RpZFNjcm9sbE1h
aW5GcmFtZSAmJiAhbV93YXNQcm9ncmFtbWF0aWNTY3JvbGw7IH0KKyAgICBib29sIHdhc1Byb2dy
YW1tYXRpY1Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkU2Nyb2xsTWFpbkZyYW1lICYmIG1f
d2FzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CisKKyAgICAvLyBXZWJGcmFtZUNsaWVudDoKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KFdlYkZyYW1lKiBmcmFtZSkgT1ZFUlJJ
REUKKyAgICB7CisgICAgICAgIGlmIChmcmFtZS0+cGFyZW50KCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZFNjcm9sbE1haW5GcmFtZSk7CisgICAgICAg
IFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KGZy
YW1lKS0+ZnJhbWVWaWV3KCk7CisgICAgICAgIC8vIEZyYW1lVmlldyBjYW4gYmUgc2Nyb2xsZWQg
aW4gRnJhbWVWaWV3OjpzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdAorICAgICAgICAvLyB3aGlj
aCBpcyBjYWxsZWQgZnJvbSBGcmFtZTo6Y3JlYXRlVmlldyAoYmVmb3JlIHRoZSBmcmFtZSBpcyBh
c3NvY2lhdGVkCisgICAgICAgIC8vIHdpdGggdGhlIHRoZSB2aWV3KS4KKyAgICAgICAgaWYgKHZp
ZXcpIHsKKyAgICAgICAgICAgIG1fZGlkU2Nyb2xsTWFpbkZyYW1lID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsID0gdmlldy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwo
KTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgYm9vbCBtX2RpZFNjcm9sbE1haW5G
cmFtZTsKKyAgICBib29sIG1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsOworfTsKKworVEVTVF9GKFdl
YkZyYW1lVGVzdCwgQ29tcG9zaXRvclNjcm9sbElzVXNlclNjcm9sbCkKK3sKKyAgICByZWdpc3Rl
ck1vY2tlZEh0dHBVUkxMb2FkKCJ1c2VyX3Byb2dyYW1tYXRpY19zY3JvbGwuaHRtbCIpOworCisg
ICAgVGVzdE1haW5GcmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IGNsaWVu
dDsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRvIG1pbmltdW0gc2NhbGUsIGV2
ZW4gaWYgdGhlIHdpbmRvdyBzaXplCisgICAgLy8gb25seSBiZWNvbWVzIGF2YWlsYWJsZSBhZnRl
ciB0aGUgbG9hZCBiZWdpbnMuCisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInVzZXJfcHJvZ3JhbW1hdGljX3Njcm9sbC5o
dG1sIiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBs
eURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0
dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAg
bV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7CisgICAgbV93ZWJWaWV3LT5s
YXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdl
YlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1VzZXJT
Y3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwo
KSk7CisKKyAgICAvLyBEbyBhIGNvbXBvc2l0b3Igc2Nyb2xsLCB2ZXJpZnkgdGhhdCB0aGlzIGlz
IGNvdW50ZWQgYXMgYSB1c2VyIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxB
bmRTY2FsZShXZWJTaXplKDAsIDEpLCAxLjFmKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2Fz
VXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dy
YW1tYXRpY1Njcm9sbCgpKTsKKworICAgIC8vIFRoZSBwYWdlIHNjYWxlIDEuMGYgdXNlcyBGcmFt
ZVZpZXc6OnNjcm9sbEJ5IGluc3RlYWQgb2Ygc2V0UGFnZVNjYWxlRmFjdG9yLgorICAgIHdlYlZp
ZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoMCwgMSksIDEuMGYpOworICAgIEVY
UEVDVF9UUlVFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOwor
CisgICAgLy8gTm8gc2Nyb2xsIGV2ZW50IGlmIHRoZXJlIGlzIG5vIHNjcm9sbCBkZWx0YS4KKyAg
ICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCksIDEuMGYpOworICAg
IEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKwor
ICAgIC8vIFByb2dyYW1tYXRpYyBzY3JvbGwuCisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwg
PSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNj
cmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAgIEVY
UEVDVF9UUlVFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBQcm9ncmFtbWF0aWMgc2Nyb2xsIHRvIHNhbWUgb2Zmc2V0LiBObyBz
Y3JvbGwgZXZlbnQgc2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVT
Y3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAg
ICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworCiB9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3Vz
ZXJfcHJvZ3JhbW1hdGljX3Njcm9sbC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3VzZXJfcHJvZ3JhbW1hdGljX3Njcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYzMxMWQ0
MTU5MWIyNmRkNGVlNDhjYzhiZDk4OWNkZTVlZmM5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvdXNlcl9wcm9ncmFtbWF0aWNfc2Nyb2xsLmh0
bWwKQEAgLTAsMCArMSw4IEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBzdHlsZT0iaGVpZ2h0OjIw
MDBweCI+CitBIHZlcnkgbG9uZyBkaXYuCis8L2Rpdj4KK1NvbWUgdGV4dCBhdCB0aGUgYm90dG9t
LgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192781</attachid>
            <date>2013-03-12 12:03:15 -0700</date>
            <delta_ts>2013-03-13 04:49:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130312185913.patch</filename>
            <type>text/plain</type>
            <size>11010</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDdhYzMyYTE0OTE4ODVhOGMwMzg1NWEyZDA0YjJlOGZhMTA0OWQzN2QuLmU5MzM5OWY4OGI3MTdh
ZjMyOTY2MDM5NzJkYTkwMjcxOWI4OTg1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTMtMDMtMTIgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisKIDIwMTMtMDMtMDcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBleHBvc2UgVXNlckdlc3R1cmVUb2tlbiB2aWEgV2ViS2l0
IEFQSSBzbyBQUEFQSSBwbHVnaW5zIGNhbiBjb3JyZWN0bHkgY29uc3VtZSBpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGVkYzRjYTI3YzQxMzQ0MTg4
YTllYTBhYWUzYzA5NGNhNWMwMmI3ZGIuLmQ2YzdiZTBjZDZhYTkyMTU1YzZmYmY0OWI2ODI4NjRm
NzllOGE1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTMwMDEsNyArMzAwMSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgc2NhbGVG
YWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKICAgICBz
Y3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rv
cik7CiAKLSAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgSW50UG9p
bnQoc2Nyb2xsT2Zmc2V0KSk7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUo
KTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisKKyAgICAvLyBB
ZGp1c3QgdGhlIHBhZ2Ugc2NhbGUgaW4gdHdvIHN0ZXBzLiBGaXJzdCwgd2l0aG91dCBjaGFuZ2Ug
dG8gc2Nyb2xsCisgICAgLy8gcG9zaXRpb24sIGFuZCB0aGVuIHdpdGggYSB1c2VyIHNjcm9sbCB0
byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4gCisgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFBhZ2U6
OnNldFBhZ2VTY2FsZUZhY3RvciBjYWxscyAKKyAgICAvLyBGcmFtZVZpZXc6OnNldFNjcm9sbFBv
c2l0aW9uIHdoaWNoIGlzIGEgcHJvZ3JhbW1hdGljIHNjcm9sbC4KKyAgICBwYWdlKCktPnNldFBh
Z2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpKTsK
KyAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxPZmZzZXQsIGZhbHNlKTsK
IAogICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSB0cnVlOwogCkBAIC00MTg2LDYgKzQxOTQs
MzkgQEAgV2ViSW5wdXRIYW5kbGVyKiBXZWJWaWV3SW1wbDo6Y3JlYXRlSW5wdXRIYW5kbGVyKCkK
ICAgICByZXR1cm4gaGFuZGxlcjsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlTWFpbkZy
YW1lU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHBy
b2dyYW1tYXRpY1Njcm9sbCkKK3sKKyAgICAvLyBTbmlwcGVkIGZyb20gU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uCisgICAgRnJhbWUqIGZyYW1lID0g
bV9wYWdlLT5tYWluRnJhbWUoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52
aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChm
cmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgPT0gc2Nyb2xsUG9zaXRpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblBy
b2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3Jv
bGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKKworICAgIGZyYW1lVmlldy0+c2V0Q29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOworICAgIGZyYW1lVmlldy0+bm90aWZ5U2Nyb2xs
UG9zaXRpb25DaGFuZ2VkKHNjcm9sbFBvc2l0aW9uKTsKKyAgICBmcmFtZVZpZXctPnNldENvbnN0
cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOworCisgICAgZnJhbWVWaWV3LT5zZXRJ
blByb2dyYW1tYXRpY1Njcm9sbChvbGRQcm9ncmFtbWF0aWNTY3JvbGwpOworCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJWaWV3KQorICAgICAgICByZXR1
cm47CisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyID0gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLT5zY3JvbGxMYXllcigpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50
ZXJTY3JvbGxpbmdMYXllciA9IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS0+Zml4ZWRSb290QmFj
a2dyb3VuZExheWVyKCk7CisgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlvbigtZnJhbWVW
aWV3LT5zY3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgaWYgKGNvdW50ZXJTY3JvbGxpbmdMYXll
cikKKyAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oSW50UG9p
bnQoZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCkpKTsKKyAgICB9Cisj
ZW5kaWYKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBX
ZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlRGVsdGEpCiB7CiAgICAgaWYgKCFt
YWluRnJhbWVJbXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCkBAIC00MTkz
LDcgKzQyMzQsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbAogCiAgICAgaWYgKHBhZ2VTY2Fs
ZURlbHRhID09IDEpIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJX
ZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZTo6c2Nyb2xsQnkiLCAieCIsIHNjcm9sbERl
bHRhLndpZHRoLCAieSIsIHNjcm9sbERlbHRhLmhlaWdodCk7Ci0gICAgICAgIG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICAgICAgV2ViU2l6
ZSB3ZWJTY3JvbGxPZmZzZXQgPSBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAg
IEludFBvaW50IHNjcm9sbE9mZnNldCh3ZWJTY3JvbGxPZmZzZXQud2lkdGggKyBzY3JvbGxEZWx0
YS53aWR0aCwgd2ViU2Nyb2xsT2Zmc2V0LmhlaWdodCArIHNjcm9sbERlbHRhLmhlaWdodCk7Cisg
ICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCwgZmFsc2Up
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBwYWdlIHNjYWxlIGNoYW5nZWQsIHNvIGFw
cGx5IGEgc2NhbGUgYW5kIHNjcm9sbCBpbiBhIHNpbmdsZQogICAgICAgICAvLyBvcGVyYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBmNDU1ZjQ0YWMz
ZDc0MjI3NGU3MmU3YzU3ZjI5ZjI4NjhiNjk4ODA5Li5lMzlmNTg0YTBlMTIxZjM1YzUzODBkNTBm
MjI5YmUyMjIxN2IwMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTYxNyw2ICs2MTcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldFNhdmVkU2Ny
b2xsQW5kU2NhbGVTdGF0ZSgpOwogCisgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcHJvZ3Jh
bW1hdGljU2Nyb2xsKTsKKwogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmll
dzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6
OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwogICAgIGZyaWVuZCB2b2lkIHNldEN1cnJlbnRJbnB1
dEV2ZW50Rm9yVGVzdChjb25zdCBXZWJJbnB1dEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggZGY1YjZkYWJlYzhiMjU4NTEyNjEw
ZmM4ZGJmNDYyMDgxY2FiOTQ4OC4uM2RjNzQwMGVjYTEzMDgxMTA5ODE1MDcyN2ZkNzAzYWFmZWFl
NTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNw
cApAQCAtMjQ5Nyw0ICsyNDk3LDExOSBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaWRBY2Nlc3NJ
bml0aWFsRG9jdW1lbnROYXZpZ2F0b3IpCiAgICAgbV93ZWJWaWV3ID0gMDsKIH0KIAorY2xhc3Mg
VGVzdE1haW5GcmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IDogcHVibGlj
IFdlYkZyYW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3Jh
bW1hdGljU2Nyb2xsRnJhbWVDbGllbnQoKSB7IHJlc2V0KCk7IH0KKyAgICB2b2lkIHJlc2V0KCkK
KyAgICB7CisgICAgICAgIG1fZGlkU2Nyb2xsTWFpbkZyYW1lID0gZmFsc2U7CisgICAgICAgIG1f
d2FzUHJvZ3JhbW1hdGljU2Nyb2xsID0gZmFsc2U7CisgICAgfQorICAgIGJvb2wgd2FzVXNlclNj
cm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkU2Nyb2xsTWFpbkZyYW1lICYmICFtX3dhc1Byb2dy
YW1tYXRpY1Njcm9sbDsgfQorICAgIGJvb2wgd2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3Qg
eyByZXR1cm4gbV9kaWRTY3JvbGxNYWluRnJhbWUgJiYgbV93YXNQcm9ncmFtbWF0aWNTY3JvbGw7
IH0KKworICAgIC8vIFdlYkZyYW1lQ2xpZW50OgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxPZmZzZXQoV2ViRnJhbWUqIGZyYW1lKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5wYXJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG1fZGlkU2Nyb2xsTWFpbkZyYW1lKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2
aWV3ID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4oZnJhbWUpLT5mcmFtZVZpZXcoKTsKKyAg
ICAgICAgLy8gRnJhbWVWaWV3IGNhbiBiZSBzY3JvbGxlZCBpbiBGcmFtZVZpZXc6OnNldEZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0CisgICAgICAgIC8vIHdoaWNoIGlzIGNhbGxlZCBmcm9tIEZyYW1l
OjpjcmVhdGVWaWV3IChiZWZvcmUgdGhlIGZyYW1lIGlzIGFzc29jaWF0ZWQKKyAgICAgICAgLy8g
d2l0aCB0aGUgdGhlIHZpZXcpLgorICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgbV9k
aWRTY3JvbGxNYWluRnJhbWUgPSB0cnVlOworICAgICAgICAgICAgbV93YXNQcm9ncmFtbWF0aWNT
Y3JvbGwgPSB2aWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgICAgICB9CisgICAgfQor
cHJpdmF0ZToKKyAgICBib29sIG1fZGlkU2Nyb2xsTWFpbkZyYW1lOworICAgIGJvb2wgbV93YXNQ
cm9ncmFtbWF0aWNTY3JvbGw7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb21wb3NpdG9y
U2Nyb2xsSXNVc2VyU2Nyb2xsTG9uZ1BhZ2UpCit7CisgICAgVGVzdE1haW5GcmFtZVVzZXJPclBy
b2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IGNsaWVudDsKKworICAgIHN0ZDo6c3RyaW5nIHBh
Z2VEYXRhID0gImRhdGE6dGV4dC9odG1sLDxkaXYgc3R5bGU9XCJoZWlnaHQ6MjAwMHB4XCI+QSBs
b25nIGRpdjwvZGl2PiI7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdGlhbGl6ZSB0byBtaW5p
bXVtIHNjYWxlLCBldmVuIGlmIHRoZSB3aW5kb3cgc2l6ZQorICAgIC8vIG9ubHkgYmVjb21lcyBh
dmFpbGFibGUgYWZ0ZXIgdGhlIGxvYWQgYmVnaW5zLgorICAgIG1fd2ViVmlldyA9IEZyYW1lVGVz
dEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKHBhZ2VEYXRhLCB0cnVlLCAmY2xpZW50KTsK
KyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNv
bXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VT
Y2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnJlc2l6ZShXZWJT
aXplKDEwMDAsIDEwMDApKTsKKyAgICBtX3dlYlZpZXctPmxheW91dCgpOworCisgICAgV2ViVmll
d0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2ViVmlld0ltcGwqPihtX3dlYlZpZXcp
OworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKworICAgIC8vIERvIGEgY29t
cG9zaXRvciBzY3JvbGwsIHZlcmlmeSB0aGF0IHRoaXMgaXMgY291bnRlZCBhcyBhIHVzZXIgc2Ny
b2xsLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoMCwgMSks
IDEuMWYpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIGNs
aWVudC5yZXNldCgpOworCisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkp
OworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworCisg
ICAgLy8gVGhlIHBhZ2Ugc2NhbGUgMS4wZiBhbmQgc2Nyb2xsLgorICAgIHdlYlZpZXdJbXBsLT5h
cHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoMCwgMSksIDEuMGYpOworICAgIEVYUEVDVF9UUlVF
KGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8g
Tm8gc2Nyb2xsIGV2ZW50IGlmIHRoZXJlIGlzIG5vIHNjcm9sbCBkZWx0YS4KKyAgICB3ZWJWaWV3
SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKCksIDEuMGYpOworICAgIEVYUEVDVF9G
QUxTRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndh
c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIE5v
biB6ZXJvIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3Jv
bGxBbmRTY2FsZShXZWJTaXplKDksIDEzKSwgMC42Zik7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50
Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBQcm9ncmFt
bWF0aWMgc2Nyb2xsLgorICAgIFdlYkZyYW1lSW1wbCogZnJhbWVJbXBsID0gd2ViVmlld0ltcGwt
Pm1haW5GcmFtZUltcGwoKTsKKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0
U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBFWFBFQ1RfVFJVRShjbGll
bnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAg
Ly8gUHJvZ3JhbW1hdGljIHNjcm9sbCB0byBzYW1lIG9mZnNldC4gTm8gc2Nyb2xsIGV2ZW50IHNo
b3VsZCBiZSBnZW5lcmF0ZWQuCisgICAgZnJhbWVJbXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlw
dFNvdXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIwKTsiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNs
aWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53
YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgbV93ZWJWaWV3LT5j
bG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENv
bXBvc2l0b3JTY3JvbGxJc1VzZXJTY3JvbGxTaG9ydFBhZ2UpCit7CisgICAgVGVzdE1haW5GcmFt
ZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IGNsaWVudDsKKworICAgIC8vIFNo
b3J0IHBhZ2UgdGVzdHMuCisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQoImRhdGE6dGV4dC9odG1sLDxzcGFuPlZlcnkgc2hvcnQgcGFnZTwvc3Bh
bj4iLCB0cnVlLCAmY2xpZW50KTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0
aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBt
X3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICBtX3dlYlZpZXctPmxh
eW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0ltcGwqPihtX3dlYlZpZXcpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNj
cm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgp
KTsKKworICAgIC8vIE5vbiB6ZXJvIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3
SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDksIDEzKSwgMi4wZik7CisgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBt
X3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRl
eCA0NjA4OGU2NmIyOTVhM2Y5MGEwZjkzOWNhODVlZTJiOTQ3ZDg3MDc4Li4zN2QzZTgwMDNkZTVh
OTdjNDZjNWU5MTBiZTZkN2QxMTYyYmMyODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtNDk3LDYgKzQ5NywxMCBAQCBURVNUX0YoV2ViVmll
d1Rlc3QsIFJlc2V0U2Nyb2xsQW5kU2NhbGVTdGF0ZSkKICAgICBFWFBFQ1RfRVEoMS41Ziwgd2Vi
Vmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBFWFBFQ1RfRVEoMTYsIHdlYlZpZXdJ
bXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgpOwogICAgIEVYUEVDVF9FUSgy
NCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQpOworICAg
IC8vIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IgaXMgcGVyZm9ybWluZyB1c2VyIHNj
cm9sbHMsIHdoaWNoIHdpbGwgc2V0IHRoZQorICAgIC8vIHdhc1Njcm9sbGVkQnlVc2VyIGZsYWcg
b24gdGhlIG1haW4gZnJhbWUsIGFuZCBwcmV2ZW50IHJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZp
ZXdTdGF0ZQorICAgIC8vIGZyb20gcmVzdG9yaW5nIHRoZSBzY3JvbGxpbmcgcG9zaXRpb24uCisg
ICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0V2FzU2Nyb2xs
ZWRCeVVzZXIoZmFsc2UpOwogICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5s
b2FkZXIoKS0+aGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsK
ICAgICBFWFBFQ1RfRVEoMi4wZiwgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAg
ICBFWFBFQ1RfRVEoMTE2LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgp
LndpZHRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192902</attachid>
            <date>2013-03-13 04:49:57 -0700</date>
            <delta_ts>2013-03-14 07:54:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130313114555.patch</filename>
            <type>text/plain</type>
            <size>10372</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDdhYzMyYTE0OTE4ODVhOGMwMzg1NWEyZDA0YjJlOGZhMTA0OWQzN2QuLmU5MzM5OWY4OGI3MTdh
ZjMyOTY2MDM5NzJkYTkwMjcxOWI4OTg1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTMtMDMtMTIgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisKIDIwMTMtMDMtMDcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBleHBvc2UgVXNlckdlc3R1cmVUb2tlbiB2aWEgV2ViS2l0
IEFQSSBzbyBQUEFQSSBwbHVnaW5zIGNhbiBjb3JyZWN0bHkgY29uc3VtZSBpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGVkYzRjYTI3YzQxMzQ0MTg4
YTllYTBhYWUzYzA5NGNhNWMwMmI3ZGIuLjNhNTk3ODQ5ZTBlNDVlODUzNmU4ZDVhZjczY2U4NTI3
MTkzZDVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTMwMDEsNyArMzAwMSwxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdlYlBvaW50JiBvcmlnaW4pCiAgICAgc2NhbGVG
YWN0b3IgPSBjbGFtcFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKICAgICBz
Y3JvbGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rv
cik7CiAKLSAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgSW50UG9p
bnQoc2Nyb2xsT2Zmc2V0KSk7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUo
KTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisKKyAgICAvLyBB
ZGp1c3QgdGhlIHBhZ2Ugc2NhbGUgaW4gdHdvIHN0ZXBzLiBGaXJzdCwgd2l0aG91dCBjaGFuZ2Ug
dG8gc2Nyb2xsCisgICAgLy8gcG9zaXRpb24sIGFuZCB0aGVuIHdpdGggYSB1c2VyIHNjcm9sbCB0
byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgUGFnZTo6
c2V0UGFnZVNjYWxlRmFjdG9yIGNhbGxzCisgICAgLy8gRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3Np
dGlvbiB3aGljaCBpcyBhIHByb2dyYW1tYXRpYyBzY3JvbGwuCisgICAgcGFnZSgpLT5zZXRQYWdl
U2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7Cisg
ICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xsT2Zmc2V0LCBmYWxzZSk7CiAK
ICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gdHJ1ZTsKIApAQCAtNDE4Niw2ICs0MTk0LDIz
IEBAIFdlYklucHV0SGFuZGxlciogV2ViVmlld0ltcGw6OmNyZWF0ZUlucHV0SGFuZGxlcigpCiAg
ICAgcmV0dXJuIGhhbmRsZXI7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZU1haW5GcmFt
ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBwcm9n
cmFtbWF0aWNTY3JvbGwpCit7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBwYWdlKCktPm1h
aW5GcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkgPT0gc2Nyb2xsUG9zaXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJh
bWVWaWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9n
cmFtbWF0aWNTY3JvbGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKKyAgICBmcmFtZVZpZXctPnNldENv
bnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGZhbHNlKTsKKyAgICBmcmFtZVZpZXctPm5v
dGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChzY3JvbGxQb3NpdGlvbik7CisgICAgZnJhbWVWaWV3
LT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVlKTsKKyAgICBmcmFtZVZp
ZXctPnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKG9sZFByb2dyYW1tYXRpY1Njcm9sbCk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Ny
b2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZURlbHRhKQogewogICAgIGlmICghbWFpbkZyYW1lSW1w
bCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQpAQCAtNDE5Myw3ICs0MjE4LDkg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBz
Y3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWwKIAogICAgIGlmIChwYWdlU2NhbGVEZWx0YSA9PSAx
KSB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQyKCJ3ZWJraXQiLCAiV2ViVmlld0ltcGw6
OmFwcGx5U2Nyb2xsQW5kU2NhbGU6OnNjcm9sbEJ5IiwgIngiLCBzY3JvbGxEZWx0YS53aWR0aCwg
InkiLCBzY3JvbGxEZWx0YS5oZWlnaHQpOwotICAgICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1l
VmlldygpLT5zY3JvbGxCeShzY3JvbGxEZWx0YSk7CisgICAgICAgIFdlYlNpemUgd2ViU2Nyb2xs
T2Zmc2V0ID0gbWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpOworICAgICAgICBJbnRQb2ludCBz
Y3JvbGxPZmZzZXQod2ViU2Nyb2xsT2Zmc2V0LndpZHRoICsgc2Nyb2xsRGVsdGEud2lkdGgsIHdl
YlNjcm9sbE9mZnNldC5oZWlnaHQgKyBzY3JvbGxEZWx0YS5oZWlnaHQpOworICAgICAgICB1cGRh
dGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxPZmZzZXQsIGZhbHNlKTsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBUaGUgcGFnZSBzY2FsZSBjaGFuZ2VkLCBzbyBhcHBseSBhIHNjYWxl
IGFuZCBzY3JvbGwgaW4gYSBzaW5nbGUKICAgICAgICAgLy8gb3BlcmF0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZjQ1NWY0NGFjM2Q3NDIyNzRlNzJl
N2M1N2YyOWYyODY4YjY5ODgwOS4uZTM5ZjU4NGEwZTEyMWYzNWM1MzgwZDUwZjIyOWJlMjIyMTdi
MDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC02MTcs
NiArNjE3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzZXRTYXZlZFNjcm9sbEFuZFNjYWxl
U3RhdGUoKTsKIAorICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIHByb2dyYW1tYXRpY1Njcm9s
bCk7CisKICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBj
YW4gY2FsbCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVk
PFdlYlZpZXdJbXBsPjsKICAgICBmcmllbmQgdm9pZCBzZXRDdXJyZW50SW5wdXRFdmVudEZvclRl
c3QoY29uc3QgV2ViSW5wdXRFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IGRmNWI2ZGFiZWM4YjI1ODUxMjYxMGZjOGRiZjQ2MjA4
MWNhYjk0ODguLjNkYzc0MDBlY2ExMzA4MTEwOTgxNTA3MjdmZDcwM2FhZmVhZTU5MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTI0OTcs
NCArMjQ5NywxMTkgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgRGlkQWNjZXNzSW5pdGlhbERvY3Vt
ZW50TmF2aWdhdG9yKQogICAgIG1fd2ViVmlldyA9IDA7CiB9CiAKK2NsYXNzIFRlc3RNYWluRnJh
bWVVc2VyT3JQcm9ncmFtbWF0aWNTY3JvbGxGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNs
aWVudCB7CitwdWJsaWM6CisgICAgVGVzdE1haW5GcmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9s
bEZyYW1lQ2xpZW50KCkgeyByZXNldCgpOyB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAg
ICAgICBtX2RpZFNjcm9sbE1haW5GcmFtZSA9IGZhbHNlOworICAgICAgICBtX3dhc1Byb2dyYW1t
YXRpY1Njcm9sbCA9IGZhbHNlOworICAgIH0KKyAgICBib29sIHdhc1VzZXJTY3JvbGwoKSBjb25z
dCB7IHJldHVybiBtX2RpZFNjcm9sbE1haW5GcmFtZSAmJiAhbV93YXNQcm9ncmFtbWF0aWNTY3Jv
bGw7IH0KKyAgICBib29sIHdhc1Byb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlkU2Nyb2xsTWFpbkZyYW1lICYmIG1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CisKKyAgICAv
LyBXZWJGcmFtZUNsaWVudDoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0
KFdlYkZyYW1lKiBmcmFtZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGlmIChmcmFtZS0+cGFy
ZW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZFNj
cm9sbE1haW5GcmFtZSk7CisgICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHN0YXRp
Y19jYXN0PFdlYkZyYW1lSW1wbCo+KGZyYW1lKS0+ZnJhbWVWaWV3KCk7CisgICAgICAgIC8vIEZy
YW1lVmlldyBjYW4gYmUgc2Nyb2xsZWQgaW4gRnJhbWVWaWV3OjpzZXRGaXhlZFZpc2libGVDb250
ZW50UmVjdAorICAgICAgICAvLyB3aGljaCBpcyBjYWxsZWQgZnJvbSBGcmFtZTo6Y3JlYXRlVmll
dyAoYmVmb3JlIHRoZSBmcmFtZSBpcyBhc3NvY2lhdGVkCisgICAgICAgIC8vIHdpdGggdGhlIHRo
ZSB2aWV3KS4KKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIG1fZGlkU2Nyb2xsTWFp
bkZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsID0gdmll
dy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKKyAgICAgICAgfQorICAgIH0KK3ByaXZhdGU6Cisg
ICAgYm9vbCBtX2RpZFNjcm9sbE1haW5GcmFtZTsKKyAgICBib29sIG1fd2FzUHJvZ3JhbW1hdGlj
U2Nyb2xsOworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29tcG9zaXRvclNjcm9sbElzVXNl
clNjcm9sbExvbmdQYWdlKQoreworICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNT
Y3JvbGxGcmFtZUNsaWVudCBjbGllbnQ7CisKKyAgICBzdGQ6OnN0cmluZyBwYWdlRGF0YSA9ICJk
YXRhOnRleHQvaHRtbCw8ZGl2IHN0eWxlPVwiaGVpZ2h0OjIwMDBweFwiPkEgbG9uZyBkaXY8L2Rp
dj4iOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGluaXRpYWxpemUgdG8gbWluaW11bSBzY2FsZSwg
ZXZlbiBpZiB0aGUgd2luZG93IHNpemUKKyAgICAvLyBvbmx5IGJlY29tZXMgYXZhaWxhYmxlIGFm
dGVyIHRoZSBsb2FkIGJlZ2lucy4KKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpj
cmVhdGVXZWJWaWV3QW5kTG9hZChwYWdlRGF0YSwgdHJ1ZSwgJmNsaWVudCk7CisgICAgbV93ZWJW
aWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRy
dWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAx
MDAwKSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJW
aWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVu
dC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisKKyAgICAvLyBEbyBhIGNvbXBvc2l0b3Igc2Ny
b2xsLCB2ZXJpZnkgdGhhdCB0aGlzIGlzIGNvdW50ZWQgYXMgYSB1c2VyIHNjcm9sbC4KKyAgICB3
ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDAsIDEpLCAxLjFmKTsKKyAg
ICBFWFBFQ1RfVFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQo
KTsKKworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKworICAgIC8vIFRoZSBw
YWdlIHNjYWxlIDEuMGYgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxB
bmRTY2FsZShXZWJTaXplKDAsIDEpLCAxLjBmKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2Fz
VXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIE5vIHNjcm9sbCBl
dmVudCBpZiB0aGVyZSBpcyBubyBzY3JvbGwgZGVsdGEuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5
U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgpLCAxLjBmKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0
aWNTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb24gemVybyBwYWdl
IHNjYWxlIGFuZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUo
V2ViU2l6ZSg5LCAxMyksIDAuNmYpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC53YXNVc2VyU2Ny
b2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gUHJvZ3JhbW1hdGljIHNjcm9s
bC4KKyAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJ
bXBsKCk7CisgICAgZnJhbWVJbXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2lu
ZG93LnNjcm9sbFRvKDAsIDIwKTsiKSk7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50Lndhc1Byb2dy
YW1tYXRpY1Njcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFByb2dyYW1t
YXRpYyBzY3JvbGwgdG8gc2FtZSBvZmZzZXQuIE5vIHNjcm9sbCBldmVudCBzaG91bGQgYmUgZ2Vu
ZXJhdGVkLgorICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndp
bmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJv
Z3JhbW1hdGljU2Nyb2xsKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNjcm9s
bCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAg
ICBtX3dlYlZpZXcgPSAwOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb21wb3NpdG9yU2Ny
b2xsSXNVc2VyU2Nyb2xsU2hvcnRQYWdlKQoreworICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9n
cmFtbWF0aWNTY3JvbGxGcmFtZUNsaWVudCBjbGllbnQ7CisKKyAgICAvLyBTaG9ydCBwYWdlIHRl
c3RzLgorICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRM
b2FkKCJkYXRhOnRleHQvaHRtbCw8c3Bhbj5WZXJ5IHNob3J0IHBhZ2U8L3NwYW4+IiwgdHJ1ZSwg
JmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRBcHBseURldmljZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0
QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5y
ZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7CisgICAgbV93ZWJWaWV3LT5sYXlvdXQoKTsKKwor
ICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4o
bV93ZWJWaWV3KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisKKyAgICAv
LyBOb24gemVybyBwYWdlIHNjYWxlIGFuZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5
U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSg5LCAxMyksIDIuMGYpOworICAgIEVYUEVDVF9GQUxTRShj
bGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC53
YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgbV93ZWJWaWV3LT5j
bG9zZSgpOworICAgIG1fd2ViVmlldyA9IDA7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKaW5kZXggNDYwODhlNjZi
Mjk1YTNmOTBhMGY5MzljYTg1ZWUyYjk0N2Q4NzA3OC4uMzdkM2U4MDAzZGU1YTk3YzQ2YzVlOTEw
YmU2ZDdkMTE2MmJjMjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJWaWV3VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJW
aWV3VGVzdC5jcHAKQEAgLTQ5Nyw2ICs0OTcsMTAgQEAgVEVTVF9GKFdlYlZpZXdUZXN0LCBSZXNl
dFNjcm9sbEFuZFNjYWxlU3RhdGUpCiAgICAgRVhQRUNUX0VRKDEuNWYsIHdlYlZpZXdJbXBsLT5w
YWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgRVhQRUNUX0VRKDE2LCB3ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoKTsKICAgICBFWFBFQ1RfRVEoMjQsIHdlYlZpZXdJ
bXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKKyAgICAvLyBXZWJWaWV3
SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yIGlzIHBlcmZvcm1pbmcgdXNlciBzY3JvbGxzLCB3aGlj
aCB3aWxsIHNldCB0aGUKKyAgICAvLyB3YXNTY3JvbGxlZEJ5VXNlciBmbGFnIG9uIHRoZSBtYWlu
IGZyYW1lLCBhbmQgcHJldmVudCByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUKKyAg
ICAvLyBmcm9tIHJlc3RvcmluZyB0aGUgc2Nyb2xsaW5nIHBvc2l0aW9uLgorICAgIHdlYlZpZXdJ
bXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZh
bHNlKTsKICAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmhp
c3RvcnkoKS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CiAgICAgRVhQRUNU
X0VRKDIuMGYsIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgRVhQRUNUX0VR
KDExNiwgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53aWR0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193120</attachid>
            <date>2013-03-14 07:54:45 -0700</date>
            <delta_ts>2013-03-15 05:02:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130314145041.patch</filename>
            <type>text/plain</type>
            <size>10727</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU2N2VkY2E0MzE0MmQ1OTNkYWU5NTQ1MzkxMjQ0NDllYzIyZjU2NmMuLjIyNWM3MGE4YjA3NzM5
MjZlMDZjMzA2OWJiODE5OGJjMTE2NTA5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTMtMDMtMTIgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisKIDIwMTMtMDMtMTQgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtWOF0gU3RvcmUgbWFpbiB3b3JsZCBhbmQgbm9uLW1haW4gd29ybGQgdGVtcGxh
dGVzIHNlcGFyYXRlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggNDg2MWYwYTUyMGFiODIzODM1MmUwN2JkOTIxZTY0NGJlODAyNzljNy4uYjQyNmFl
YWIwNGZjY2VjNzU0MmUyNzY4NDBmMmI4NDNlMmU0NjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjk5MiwxMSArMjk5MiwyNSBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IFdl
YlBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFzY2FsZUZhY3RvcikKICAgICAgICAgc2NhbGVGYWN0
b3IgPSAxOwogCi0gICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gb3JpZ2luOworICAgIEludFBv
aW50IG5ld1Njcm9sbE9mZnNldCA9IG9yaWdpbjsKICAgICBzY2FsZUZhY3RvciA9IGNsYW1wUGFn
ZVNjYWxlRmFjdG9yVG9MaW1pdHMoc2NhbGVGYWN0b3IpOwotICAgIHNjcm9sbE9mZnNldCA9IGNs
YW1wT2Zmc2V0QXRTY2FsZShzY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKKyAgICBuZXdTY3Jv
bGxPZmZzZXQgPSBjbGFtcE9mZnNldEF0U2NhbGUobmV3U2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rv
cik7CiAKLSAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgSW50UG9p
bnQoc2Nyb2xsT2Zmc2V0KSk7CisgICAgRnJhbWUqIGZyYW1lID0gcGFnZSgpLT5tYWluRnJhbWUo
KTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOworICAgIEludFBvaW50IG9s
ZFNjcm9sbE9mZnNldCA9IHZpZXctPnNjcm9sbFBvc2l0aW9uKCk7CisKKyAgICAvLyBBZGp1c3Qg
dGhlIHBhZ2Ugc2NhbGUgaW4gdHdvIHN0ZXBzLiBGaXJzdCwgd2l0aG91dCBjaGFuZ2UgdG8gc2Ny
b2xsCisgICAgLy8gcG9zaXRpb24sIGFuZCB0aGVuIHdpdGggYSB1c2VyIHNjcm9sbCB0byB0aGUg
ZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2UgUGFnZTo6c2V0UGFn
ZVNjYWxlRmFjdG9yIGNhbGxzCisgICAgLy8gRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbiB3
aGljaCBpcyBhIHByb2dyYW1tYXRpYyBzY3JvbGwKKyAgICAvLyBhbmQgd2UgbmVlZCB0aGlzIG1l
dGhvZCB0byBwZXJmb3JtIG9ubHkgdXNlciBzY3JvbGxzLgorICAgIHBhZ2UoKS0+c2V0UGFnZVNj
YWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBvbGRTY3JvbGxPZmZzZXQpOworICAgIGlmIChuZXdTY3Jv
bGxPZmZzZXQgIT0gb2xkU2Nyb2xsT2Zmc2V0KSB7CisgICAgICAgIGlmICghcGFnZSgpLT5zZXR0
aW5ncygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKQorICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OworICAgICAgICB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihuZXdTY3JvbGxPZmZzZXQs
IGZhbHNlKTsKKyAgICB9CiAKICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gdHJ1ZTsKIApA
QCAtNDE2Niw2ICs0MTgwLDIxIEBAIFdlYklucHV0SGFuZGxlciogV2ViVmlld0ltcGw6OmNyZWF0
ZUlucHV0SGFuZGxlcigpCiAgICAgcmV0dXJuIGhhbmRsZXI7CiB9CiAKK3ZvaWQgV2ViVmlld0lt
cGw6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpCit7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkg
PT0gc2Nyb2xsUG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgb2xkUHJvZ3Jh
bW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGZy
YW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKKyAg
ICBmcmFtZVZpZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChzY3JvbGxQb3NpdGlvbik7
CisgICAgZnJhbWVWaWV3LT5zZXRJblByb2dyYW1tYXRpY1Njcm9sbChvbGRQcm9ncmFtbWF0aWNT
Y3JvbGwpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGVEZWx0YSkKIHsKICAgICBpZiAo
IW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKQEAgLTQx
NzMsNyArNDIwMiw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAKICAgICBpZiAocGFnZVNj
YWxlRGVsdGEgPT0gMSkgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMigid2Via2l0Iiwg
IldlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlOjpzY3JvbGxCeSIsICJ4Iiwgc2Nyb2xs
RGVsdGEud2lkdGgsICJ5Iiwgc2Nyb2xsRGVsdGEuaGVpZ2h0KTsKLSAgICAgICAgbWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEpOworICAgICAgICBXZWJT
aXplIHdlYlNjcm9sbE9mZnNldCA9IG1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAg
ICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0KHdlYlNjcm9sbE9mZnNldC53aWR0aCArIHNjcm9sbERl
bHRhLndpZHRoLCB3ZWJTY3JvbGxPZmZzZXQuaGVpZ2h0ICsgc2Nyb2xsRGVsdGEuaGVpZ2h0KTsK
KyAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xsT2Zmc2V0LCBmYWxz
ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBhZ2Ugc2NhbGUgY2hhbmdlZCwgc28g
YXBwbHkgYSBzY2FsZSBhbmQgc2Nyb2xsIGluIGEgc2luZ2xlCiAgICAgICAgIC8vIG9wZXJhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGUxNzA2ZDky
NDhjZjBmZDJmYzUyNTE2NDlhMzAzMzQ1MTJmNzJhM2UuLjI4M2Q0Y2Y5MmZjMDdjYjMyY2RhZWU5
NjQ5YjE0YTA3ZDVlOTRmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtNjExLDYgKzYxMSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc2V0U2F2ZWRT
Y3JvbGxBbmRTY2FsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBwcm9n
cmFtbWF0aWNTY3JvbGwpOworCiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZXc7ICAvLyBTbyBXZWJW
aWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0cnVjdG9yCiAgICAgZnJpZW5kIGNsYXNzIFdU
Rjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CiAgICAgZnJpZW5kIHZvaWQgc2V0Q3VycmVudElu
cHV0RXZlbnRGb3JUZXN0KGNvbnN0IFdlYklucHV0RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCBkZjViNmRhYmVjOGIyNTg1MTI2
MTBmYzhkYmY0NjIwODFjYWI5NDg4Li4zZGM3NDAwZWNhMTMwODExMDk4MTUwNzI3ZmQ3MDNhYWZl
YWU1OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3Qu
Y3BwCkBAIC0yNDk3LDQgKzI0OTcsMTE5IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpZEFjY2Vz
c0luaXRpYWxEb2N1bWVudE5hdmlnYXRvcikKICAgICBtX3dlYlZpZXcgPSAwOwogfQogCitjbGFz
cyBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3JhbW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgOiBwdWJs
aWMgV2ViRnJhbWVDbGllbnQgeworcHVibGljOgorICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9n
cmFtbWF0aWNTY3JvbGxGcmFtZUNsaWVudCgpIHsgcmVzZXQoKTsgfQorICAgIHZvaWQgcmVzZXQo
KQorICAgIHsKKyAgICAgICAgbV9kaWRTY3JvbGxNYWluRnJhbWUgPSBmYWxzZTsKKyAgICAgICAg
bV93YXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmYWxzZTsKKyAgICB9CisgICAgYm9vbCB3YXNVc2Vy
U2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gbV9kaWRTY3JvbGxNYWluRnJhbWUgJiYgIW1fd2FzUHJv
Z3JhbW1hdGljU2Nyb2xsOyB9CisgICAgYm9vbCB3YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25z
dCB7IHJldHVybiBtX2RpZFNjcm9sbE1haW5GcmFtZSAmJiBtX3dhc1Byb2dyYW1tYXRpY1Njcm9s
bDsgfQorCisgICAgLy8gV2ViRnJhbWVDbGllbnQ6CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNjcm9sbE9mZnNldChXZWJGcmFtZSogZnJhbWUpIE9WRVJSSURFCisgICAgeworICAgICAgICBp
ZiAoZnJhbWUtPnBhcmVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBFWFBFQ1Rf
RkFMU0UobV9kaWRTY3JvbGxNYWluRnJhbWUpOworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXcq
IHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihmcmFtZSktPmZyYW1lVmlldygpOwor
ICAgICAgICAvLyBGcmFtZVZpZXcgY2FuIGJlIHNjcm9sbGVkIGluIEZyYW1lVmlldzo6c2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QKKyAgICAgICAgLy8gd2hpY2ggaXMgY2FsbGVkIGZyb20gRnJh
bWU6OmNyZWF0ZVZpZXcgKGJlZm9yZSB0aGUgZnJhbWUgaXMgYXNzb2NpYXRlZAorICAgICAgICAv
LyB3aXRoIHRoZSB0aGUgdmlldykuCisgICAgICAgIGlmICh2aWV3KSB7CisgICAgICAgICAgICBt
X2RpZFNjcm9sbE1haW5GcmFtZSA9IHRydWU7CisgICAgICAgICAgICBtX3dhc1Byb2dyYW1tYXRp
Y1Njcm9sbCA9IHZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgICAgIH0KKyAgICB9
Citwcml2YXRlOgorICAgIGJvb2wgbV9kaWRTY3JvbGxNYWluRnJhbWU7CisgICAgYm9vbCBtX3dh
c1Byb2dyYW1tYXRpY1Njcm9sbDsKK307CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbXBvc2l0
b3JTY3JvbGxJc1VzZXJTY3JvbGxMb25nUGFnZSkKK3sKKyAgICBUZXN0TWFpbkZyYW1lVXNlck9y
UHJvZ3JhbW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgY2xpZW50OworCisgICAgc3RkOjpzdHJpbmcg
cGFnZURhdGEgPSAiZGF0YTp0ZXh0L2h0bWwsPGRpdiBzdHlsZT1cImhlaWdodDoyMDAwcHhcIj5B
IGxvbmcgZGl2PC9kaXY+IjsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIHRvIG1p
bmltdW0gc2NhbGUsIGV2ZW4gaWYgdGhlIHdpbmRvdyBzaXplCisgICAgLy8gb25seSBiZWNvbWVz
IGF2YWlsYWJsZSBhZnRlciB0aGUgbG9hZCBiZWdpbnMuCisgICAgbV93ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQocGFnZURhdGEsIHRydWUsICZjbGllbnQp
OworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcklu
Q29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFn
ZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdl
YlNpemUoMTAwMCwgMTAwMCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJW
aWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1fd2ViVmll
dyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVYUEVD
VF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworCisgICAgLy8gRG8gYSBj
b21wb3NpdG9yIHNjcm9sbCwgdmVyaWZ5IHRoYXQgdGhpcyBpcyBjb3VudGVkIGFzIGEgdXNlciBz
Y3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgwLCAx
KSwgMS4xZik7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisK
KyAgICAvLyBUaGUgcGFnZSBzY2FsZSAxLjBmIGFuZCBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwt
PmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgwLCAxKSwgMS4wZik7CisgICAgRVhQRUNUX1RS
VUUoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAv
LyBObyBzY3JvbGwgZXZlbnQgaWYgdGhlcmUgaXMgbm8gc2Nyb2xsIGRlbHRhLgorICAgIHdlYlZp
ZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4wZik7CisgICAgRVhQRUNU
X0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQu
d2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8g
Tm9uIHplcm8gcGFnZSBzY2FsZSBhbmQgc2Nyb2xsLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNj
cm9sbEFuZFNjYWxlKFdlYlNpemUoOSwgMTMpLCAwLjZmKTsKKyAgICBFWFBFQ1RfVFJVRShjbGll
bnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFByb2dy
YW1tYXRpYyBzY3JvbGwuCisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSB3ZWJWaWV3SW1w
bC0+bWFpbkZyYW1lSW1wbCgpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0ZVNjcmlwdChXZWJTY3Jp
cHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAgIEVYUEVDVF9UUlVFKGNs
aWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAg
ICAvLyBQcm9ncmFtbWF0aWMgc2Nyb2xsIHRvIHNhbWUgb2Zmc2V0LiBObyBzY3JvbGwgZXZlbnQg
c2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVTY3JpcHQoV2ViU2Ny
aXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBtX3dlYlZpZXct
PmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwg
Q29tcG9zaXRvclNjcm9sbElzVXNlclNjcm9sbFNob3J0UGFnZSkKK3sKKyAgICBUZXN0TWFpbkZy
YW1lVXNlck9yUHJvZ3JhbW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgY2xpZW50OworCisgICAgLy8g
U2hvcnQgcGFnZSB0ZXN0cy4KKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZCgiZGF0YTp0ZXh0L2h0bWwsPHNwYW4+VmVyeSBzaG9ydCBwYWdlPC9z
cGFuPiIsIHRydWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBw
bHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNl
dHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAg
IG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIG1fd2ViVmlldy0+
bGF5b3V0KCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxX
ZWJWaWV3SW1wbCo+KG1fd2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2Vy
U2Nyb2xsKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xs
KCkpOworCisgICAgLy8gTm9uIHplcm8gcGFnZSBzY2FsZSBhbmQgc2Nyb2xsLgorICAgIHdlYlZp
ZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoOSwgMTMpLCAyLjBmKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAg
IG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOworfQorCisKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmlu
ZGV4IDQ2MDg4ZTY2YjI5NWEzZjkwYTBmOTM5Y2E4NWVlMmI5NDdkODcwNzguLjM3ZDNlODAwM2Rl
NWE5N2M0NmM1ZTkxMGJlNmQ3ZDExNjJiYzI4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC00OTcsNiArNDk3LDEwIEBAIFRFU1RfRihXZWJW
aWV3VGVzdCwgUmVzZXRTY3JvbGxBbmRTY2FsZVN0YXRlKQogICAgIEVYUEVDVF9FUSgxLjVmLCB3
ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIEVYUEVDVF9FUSgxNiwgd2ViVmll
d0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53aWR0aCk7CiAgICAgRVhQRUNUX0VR
KDI0LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLmhlaWdodCk7Cisg
ICAgLy8gV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3RvciBpcyBwZXJmb3JtaW5nIHVzZXIg
c2Nyb2xscywgd2hpY2ggd2lsbCBzZXQgdGhlCisgICAgLy8gd2FzU2Nyb2xsZWRCeVVzZXIgZmxh
ZyBvbiB0aGUgbWFpbiBmcmFtZSwgYW5kIHByZXZlbnQgcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5k
Vmlld1N0YXRlCisgICAgLy8gZnJvbSByZXN0b3JpbmcgdGhlIHNjcm9sbGluZyBwb3NpdGlvbi4K
KyAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXRXYXNTY3Jv
bGxlZEJ5VXNlcihmYWxzZSk7CiAgICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpLT5oaXN0b3J5KCktPnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSgp
OwogICAgIEVYUEVDVF9FUSgyLjBmLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwog
ICAgIEVYUEVDVF9FUSgxMTYsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0
KCkud2lkdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193284</attachid>
            <date>2013-03-15 05:02:47 -0700</date>
            <delta_ts>2013-03-18 10:44:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130315115842.patch</filename>
            <type>text/plain</type>
            <size>11364</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDk1ZTFkYzIzM2UyY2YzMjIzM2IwNjVkMWU2NjU4OGZjNGI2NDYyZWYuLjM5ZWQ2NmQ5YmI2MzNh
MWMxMzBmYzYxNDg1MmY4NGM1MjYzODU5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTMtMDMtMTIgIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisKIDIwMTMtMDMtMTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBNYWtlIHpvb20gZmlsdGVyIGluZGVwZW5kZW50IG9mIHRoZSBs
YXllciBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDY0MGFhNmI4NWUwY2U1NWM5Y2Q4NTNjMGZkNmRjNDNjMjYwMTkyMGMuLjQyMTIwOTA4ZDQ5
ZjU1NTI0OTAwYTBhODU3ZTI2MjVkMzAwOThmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI5OTIsMTEgKzI5OTIsMjIgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBXZWJQb2lu
dCYgb3JpZ2luKQogICAgIGlmICghc2NhbGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9yID0g
MTsKIAotICAgIEludFBvaW50IHNjcm9sbE9mZnNldCA9IG9yaWdpbjsKKyAgICBJbnRQb2ludCBu
ZXdTY3JvbGxPZmZzZXQgPSBvcmlnaW47CiAgICAgc2NhbGVGYWN0b3IgPSBjbGFtcFBhZ2VTY2Fs
ZUZhY3RvclRvTGltaXRzKHNjYWxlRmFjdG9yKTsKLSAgICBzY3JvbGxPZmZzZXQgPSBjbGFtcE9m
ZnNldEF0U2NhbGUoc2Nyb2xsT2Zmc2V0LCBzY2FsZUZhY3Rvcik7CisgICAgbmV3U2Nyb2xsT2Zm
c2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKG5ld1Njcm9sbE9mZnNldCwgc2NhbGVGYWN0b3IpOwog
Ci0gICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIEludFBvaW50KHNj
cm9sbE9mZnNldCkpOworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UoKS0+bWFpbkZyYW1lKCk7Cisg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBJbnRQb2ludCBvbGRTY3Jv
bGxPZmZzZXQgPSB2aWV3LT5zY3JvbGxQb3NpdGlvbigpOworCisgICAgLy8gQWRqdXN0IHRoZSBw
YWdlIHNjYWxlIGluIHR3byBzdGVwcy4gRmlyc3QsIHdpdGhvdXQgY2hhbmdlIHRvIHNjcm9sbAor
ICAgIC8vIHBvc2l0aW9uLCBhbmQgdGhlbiB3aXRoIGEgdXNlciBzY3JvbGwgdG8gdGhlIGRlc2ly
ZWQgcG9zaXRpb24uCisgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIFBhZ2U6OnNldFBhZ2VTY2Fs
ZUZhY3RvciBjYWxscworICAgIC8vIEZyYW1lVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24gd2hpY2gg
aXMgYSBwcm9ncmFtbWF0aWMgc2Nyb2xsCisgICAgLy8gYW5kIHdlIG5lZWQgdGhpcyBtZXRob2Qg
dG8gcGVyZm9ybSBvbmx5IHVzZXIgc2Nyb2xscy4KKyAgICBwYWdlKCktPnNldFBhZ2VTY2FsZUZh
Y3RvcihzY2FsZUZhY3Rvciwgb2xkU2Nyb2xsT2Zmc2V0KTsKKyAgICBpZiAobmV3U2Nyb2xsT2Zm
c2V0ICE9IG9sZFNjcm9sbE9mZnNldCkKKyAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9z
aXRpb24obmV3U2Nyb2xsT2Zmc2V0LCBmYWxzZSk7CiAKICAgICBtX3BhZ2VTY2FsZUZhY3Rvcklz
U2V0ID0gdHJ1ZTsKIApAQCAtNDE2Niw2ICs0MTc3LDIxIEBAIFdlYklucHV0SGFuZGxlciogV2Vi
Vmlld0ltcGw6OmNyZWF0ZUlucHV0SGFuZGxlcigpCiAgICAgcmV0dXJuIGhhbmRsZXI7CiB9CiAK
K3ZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IElu
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpCit7CisgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAg
aWYgKCFmcmFtZVZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChmcmFtZVZpZXctPnNj
cm9sbFBvc2l0aW9uKCkgPT0gc2Nyb2xsUG9zaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblByb2dyYW1tYXRpY1Nj
cm9sbCgpOworICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwocHJvZ3JhbW1h
dGljU2Nyb2xsKTsKKyAgICBmcmFtZVZpZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChz
Y3JvbGxQb3NpdGlvbik7CisgICAgZnJhbWVWaWV3LT5zZXRJblByb2dyYW1tYXRpY1Njcm9sbChv
bGRQcm9ncmFtbWF0aWNTY3JvbGwpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGVEZWx0
YSkKIHsKICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZVZpZXcoKSkKQEAgLTQxNzMsNyArNDE5OSw5IEBAIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgV2ViU2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsCiAK
ICAgICBpZiAocGFnZVNjYWxlRGVsdGEgPT0gMSkgewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNU
QU5UMigid2Via2l0IiwgIldlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlOjpzY3JvbGxC
eSIsICJ4Iiwgc2Nyb2xsRGVsdGEud2lkdGgsICJ5Iiwgc2Nyb2xsRGVsdGEuaGVpZ2h0KTsKLSAg
ICAgICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+c2Nyb2xsQnkoc2Nyb2xsRGVsdGEp
OworICAgICAgICBXZWJTaXplIHdlYlNjcm9sbE9mZnNldCA9IG1haW5GcmFtZSgpLT5zY3JvbGxP
ZmZzZXQoKTsKKyAgICAgICAgSW50UG9pbnQgc2Nyb2xsT2Zmc2V0KHdlYlNjcm9sbE9mZnNldC53
aWR0aCArIHNjcm9sbERlbHRhLndpZHRoLCB3ZWJTY3JvbGxPZmZzZXQuaGVpZ2h0ICsgc2Nyb2xs
RGVsdGEuaGVpZ2h0KTsKKyAgICAgICAgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Ny
b2xsT2Zmc2V0LCBmYWxzZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBhZ2Ugc2Nh
bGUgY2hhbmdlZCwgc28gYXBwbHkgYSBzY2FsZSBhbmQgc2Nyb2xsIGluIGEgc2luZ2xlCiAgICAg
ICAgIC8vIG9wZXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CmluZGV4IGUxNzA2ZDkyNDhjZjBmZDJmYzUyNTE2NDlhMzAzMzQ1MTJmNzJhM2UuLjI4M2Q0Y2Y5
MmZjMDdjYjMyY2RhZWU5NjQ5YjE0YTA3ZDVlOTRmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjExLDYgKzYxMSw4IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHJlc2V0U2F2ZWRTY3JvbGxBbmRTY2FsZVN0YXRlKCk7CiAKKyAgICB2b2lkIHVwZGF0ZU1h
aW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxQb3Np
dGlvbiwgYm9vbCBwcm9ncmFtbWF0aWNTY3JvbGwpOworCiAgICAgZnJpZW5kIGNsYXNzIFdlYlZp
ZXc7ICAvLyBTbyBXZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0cnVjdG9yCiAgICAg
ZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CiAgICAgZnJpZW5kIHZv
aWQgc2V0Q3VycmVudElucHV0RXZlbnRGb3JUZXN0KGNvbnN0IFdlYklucHV0RXZlbnQqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAppbmRleCBkZjVi
NmRhYmVjOGIyNTg1MTI2MTBmYzhkYmY0NjIwODFjYWI5NDg4Li4zZGM3NDAwZWNhMTMwODExMDk4
MTUwNzI3ZmQ3MDNhYWZlYWU1OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC0yNDk3LDQgKzI0OTcsMTE5IEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIERpZEFjY2Vzc0luaXRpYWxEb2N1bWVudE5hdmlnYXRvcikKICAgICBtX3dlYlZpZXcg
PSAwOwogfQogCitjbGFzcyBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3JhbW1hdGljU2Nyb2xsRnJh
bWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworcHVibGljOgorICAgIFRlc3RNYWlu
RnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNTY3JvbGxGcmFtZUNsaWVudCgpIHsgcmVzZXQoKTsgfQor
ICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9kaWRTY3JvbGxNYWluRnJhbWUgPSBm
YWxzZTsKKyAgICAgICAgbV93YXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmYWxzZTsKKyAgICB9Cisg
ICAgYm9vbCB3YXNVc2VyU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4gbV9kaWRTY3JvbGxNYWluRnJh
bWUgJiYgIW1fd2FzUHJvZ3JhbW1hdGljU2Nyb2xsOyB9CisgICAgYm9vbCB3YXNQcm9ncmFtbWF0
aWNTY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX2RpZFNjcm9sbE1haW5GcmFtZSAmJiBtX3dhc1By
b2dyYW1tYXRpY1Njcm9sbDsgfQorCisgICAgLy8gV2ViRnJhbWVDbGllbnQ6CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldChXZWJGcmFtZSogZnJhbWUpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBpZiAoZnJhbWUtPnBhcmVudCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UobV9kaWRTY3JvbGxNYWluRnJhbWUpOworICAgICAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihmcmFtZSkt
PmZyYW1lVmlldygpOworICAgICAgICAvLyBGcmFtZVZpZXcgY2FuIGJlIHNjcm9sbGVkIGluIEZy
YW1lVmlldzo6c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QKKyAgICAgICAgLy8gd2hpY2ggaXMg
Y2FsbGVkIGZyb20gRnJhbWU6OmNyZWF0ZVZpZXcgKGJlZm9yZSB0aGUgZnJhbWUgaXMgYXNzb2Np
YXRlZAorICAgICAgICAvLyB3aXRoIHRoZSB0aGUgdmlldykuCisgICAgICAgIGlmICh2aWV3KSB7
CisgICAgICAgICAgICBtX2RpZFNjcm9sbE1haW5GcmFtZSA9IHRydWU7CisgICAgICAgICAgICBt
X3dhc1Byb2dyYW1tYXRpY1Njcm9sbCA9IHZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7Cisg
ICAgICAgIH0KKyAgICB9Citwcml2YXRlOgorICAgIGJvb2wgbV9kaWRTY3JvbGxNYWluRnJhbWU7
CisgICAgYm9vbCBtX3dhc1Byb2dyYW1tYXRpY1Njcm9sbDsKK307CisKK1RFU1RfRihXZWJGcmFt
ZVRlc3QsIENvbXBvc2l0b3JTY3JvbGxJc1VzZXJTY3JvbGxMb25nUGFnZSkKK3sKKyAgICBUZXN0
TWFpbkZyYW1lVXNlck9yUHJvZ3JhbW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgY2xpZW50OworCisg
ICAgc3RkOjpzdHJpbmcgcGFnZURhdGEgPSAiZGF0YTp0ZXh0L2h0bWwsPGRpdiBzdHlsZT1cImhl
aWdodDoyMDAwcHhcIj5BIGxvbmcgZGl2PC9kaXY+IjsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBp
bml0aWFsaXplIHRvIG1pbmltdW0gc2NhbGUsIGV2ZW4gaWYgdGhlIHdpbmRvdyBzaXplCisgICAg
Ly8gb25seSBiZWNvbWVzIGF2YWlsYWJsZSBhZnRlciB0aGUgbG9hZCBiZWdpbnMuCisgICAgbV93
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQocGFnZURhdGEs
IHRydWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdz
KCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2Vi
Vmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOworICAgIG1fd2ViVmlldy0+bGF5b3V0
KCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3
SW1wbCo+KG1fd2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xs
KCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOwor
CisgICAgLy8gRG8gYSBjb21wb3NpdG9yIHNjcm9sbCwgdmVyaWZ5IHRoYXQgdGhpcyBpcyBjb3Vu
dGVkIGFzIGEgdXNlciBzY3JvbGwuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2Nh
bGUoV2ViU2l6ZSgwLCAxKSwgMS4xZik7CisgICAgRVhQRUNUX1RSVUUoY2xpZW50Lndhc1VzZXJT
Y3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50
Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0
aWNTY3JvbGwoKSk7CisKKyAgICAvLyBUaGUgcGFnZSBzY2FsZSAxLjBmIGFuZCBzY3JvbGwuCisg
ICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSgwLCAxKSwgMS4wZik7
CisgICAgRVhQRUNUX1RSVUUoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBObyBzY3JvbGwgZXZlbnQgaWYgdGhlcmUgaXMgbm8gc2Nyb2xsIGRl
bHRhLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoKSwgMS4w
Zik7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVYUEVD
VF9GQUxTRShjbGllbnQud2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgIGNsaWVudC5yZXNl
dCgpOworCisgICAgLy8gTm9uIHplcm8gcGFnZSBzY2FsZSBhbmQgc2Nyb2xsLgorICAgIHdlYlZp
ZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoOSwgMTMpLCAwLjZmKTsKKyAgICBF
WFBFQ1RfVFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
KworICAgIC8vIFByb2dyYW1tYXRpYyBzY3JvbGwuCisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUlt
cGwgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpOworICAgIGZyYW1lSW1wbC0+ZXhlY3V0
ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoIndpbmRvdy5zY3JvbGxUbygwLCAyMCk7IikpOworICAg
IEVYUEVDVF9UUlVFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgY2xpZW50
LnJlc2V0KCk7CisKKyAgICAvLyBQcm9ncmFtbWF0aWMgc2Nyb2xsIHRvIHNhbWUgb2Zmc2V0LiBO
byBzY3JvbGwgZXZlbnQgc2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICBmcmFtZUltcGwtPmV4ZWN1
dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisK
KyAgICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworVEVTVF9G
KFdlYkZyYW1lVGVzdCwgQ29tcG9zaXRvclNjcm9sbElzVXNlclNjcm9sbFNob3J0UGFnZSkKK3sK
KyAgICBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3JhbW1hdGljU2Nyb2xsRnJhbWVDbGllbnQgY2xp
ZW50OworCisgICAgLy8gU2hvcnQgcGFnZSB0ZXN0cy4KKyAgICBtX3dlYlZpZXcgPSBGcmFtZVRl
c3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiZGF0YTp0ZXh0L2h0bWwsPHNwYW4+VmVy
eSBzaG9ydCBwYWdlPC9zcGFuPiIsIHRydWUsICZjbGllbnQpOworICAgIG1fd2ViVmlldy0+c2V0
dGluZ3MoKS0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAg
ICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3Np
dG9yKHRydWUpOworICAgIG1fd2ViVmlldy0+cmVzaXplKFdlYlNpemUoMTAwMCwgMTAwMCkpOwor
ICAgIG1fd2ViVmlldy0+bGF5b3V0KCk7CisKKyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwg
PSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KG1fd2ViVmlldyk7CisgICAgRVhQRUNUX0ZBTFNF
KGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzUHJv
Z3JhbW1hdGljU2Nyb2xsKCkpOworCisgICAgLy8gTm9uIHplcm8gcGFnZSBzY2FsZSBhbmQgc2Ny
b2xsLgorICAgIHdlYlZpZXdJbXBsLT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoOSwgMTMp
LCAyLjBmKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKKyAgICBtX3dlYlZpZXcgPSAwOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Vmlld1Rlc3QuY3BwCmluZGV4IDQ2MDg4ZTY2YjI5NWEzZjkwYTBmOTM5Y2E4NWVlMmI5NDdkODcw
NzguLjYzYjhmMTJiYmEzNmYzN2MyNWI1ZGFkMDMxN2Y2ZTc3Y2ZkZTljZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIK
ICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtNDgxLDYgKzQ4Miw3IEBAIFRFU1RfRihXZWJWaWV3VGVz
dCwgUmVzZXRTY3JvbGxBbmRTY2FsZVN0YXRlKQogewogICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdp
c3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNf
c3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJoZWxsb193b3JsZC5odG1sIikpOwogICAgIFdl
YlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgImhlbGxvX3dvcmxk
Lmh0bWwiKSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxl
RmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwogICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6
ZSg2NDAsIDQ4MCkpOwogICAgIEVYUEVDVF9FUSgwLCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCkt
PnNjcm9sbE9mZnNldCgpLndpZHRoKTsKICAgICBFWFBFQ1RfRVEoMCwgd2ViVmlld0ltcGwtPm1h
aW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5oZWlnaHQpOwpAQCAtNDk3LDYgKzQ5OSwxMCBAQCBU
RVNUX0YoV2ViVmlld1Rlc3QsIFJlc2V0U2Nyb2xsQW5kU2NhbGVTdGF0ZSkKICAgICBFWFBFQ1Rf
RVEoMS41Ziwgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBFWFBFQ1RfRVEo
MTYsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgpOwogICAg
IEVYUEVDVF9FUSgyNCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS5o
ZWlnaHQpOworICAgIC8vIFdlYlZpZXdJbXBsOjpzZXRQYWdlU2NhbGVGYWN0b3IgaXMgcGVyZm9y
bWluZyB1c2VyIHNjcm9sbHMsIHdoaWNoIHdpbGwgc2V0IHRoZQorICAgIC8vIHdhc1Njcm9sbGVk
QnlVc2VyIGZsYWcgb24gdGhlIG1haW4gZnJhbWUsIGFuZCBwcmV2ZW50IHJlc3RvcmVTY3JvbGxQ
b3NpdGlvbkFuZFZpZXdTdGF0ZQorICAgIC8vIGZyb20gcmVzdG9yaW5nIHRoZSBzY3JvbGxpbmcg
cG9zaXRpb24uCisgICAgd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogICAgIHdlYlZpZXdJbXBsLT5wYWdlKCktPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5yZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRW
aWV3U3RhdGUoKTsKICAgICBFWFBFQ1RfRVEoMi4wZiwgd2ViVmlld0ltcGwtPnBhZ2VTY2FsZUZh
Y3RvcigpKTsKICAgICBFWFBFQ1RfRVEoMTE2LCB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lKCktPnNj
cm9sbE9mZnNldCgpLndpZHRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193601</attachid>
            <date>2013-03-18 10:45:02 -0700</date>
            <delta_ts>2013-03-18 11:34:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109712-20130318174054.patch</filename>
            <type>text/plain</type>
            <size>12220</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhjYWJkMGM0ZGEzYzlkZWU2Yzg0Y2I1ZTgwNjJiZDAwZTNmNzM4NDUuLmU0M2JmNDdkYTBjZWYy
MDEzMTZlZjY4MzZmNTk0YjU2M2ExYmY4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTMtMDMtMTggIEpvaG4gS25vdHRlbmJlbHQgIDxqa25vdHRlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBDb21wb3NpdG9yIGlzIGFwcGx5aW5n
IHNjcm9sbCBvZmZzZXQgdXNpbmcgJ3Byb2dyYW1tYXRpYycgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3MTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBFbnN1cmUgdGhhdCB0aGUgY29tcG9zaXRv
ciB1c2VzIG5vbi1wcm9ncmFtbWF0aWMgQVBJcyB0byBzY3JvbGwgYW5kCisgICAgICAgIHNjYWxl
LgorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAg
ICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvZGF0YS9sb25nX3Njcm9sbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9kYXRhL3Nob3J0X3Njcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xNyAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVt
b3ZlIHVudXNlZCBXZWJOb2RlOjpoYXNFdmVudExpc3RlbmVycyBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2NDBhYTZiODVlMGNlNTVjOWNkODUz
YzBmZDZkYzQzYzI2MDE5MjBjLi40MjEyMDkwOGQ0OWY1NTUyNDkwMGEwYTg1N2UyNjI1ZDMwMDk4
ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0y
OTkyLDExICsyOTkyLDIyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFBhZ2VTY2FsZUZhY3Rvcihm
bG9hdCBzY2FsZUZhY3RvciwgY29uc3QgV2ViUG9pbnQmIG9yaWdpbikKICAgICBpZiAoIXNjYWxl
RmFjdG9yKQogICAgICAgICBzY2FsZUZhY3RvciA9IDE7CiAKLSAgICBJbnRQb2ludCBzY3JvbGxP
ZmZzZXQgPSBvcmlnaW47CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsT2Zmc2V0ID0gb3JpZ2luOwog
ICAgIHNjYWxlRmFjdG9yID0gY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhzY2FsZUZhY3Rv
cik7Ci0gICAgc2Nyb2xsT2Zmc2V0ID0gY2xhbXBPZmZzZXRBdFNjYWxlKHNjcm9sbE9mZnNldCwg
c2NhbGVGYWN0b3IpOworICAgIG5ld1Njcm9sbE9mZnNldCA9IGNsYW1wT2Zmc2V0QXRTY2FsZShu
ZXdTY3JvbGxPZmZzZXQsIHNjYWxlRmFjdG9yKTsKIAotICAgIHBhZ2UoKS0+c2V0UGFnZVNjYWxl
RmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludChzY3JvbGxPZmZzZXQpKTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBwYWdlKCktPm1haW5GcmFtZSgpOworICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1l
LT52aWV3KCk7CisgICAgSW50UG9pbnQgb2xkU2Nyb2xsT2Zmc2V0ID0gdmlldy0+c2Nyb2xsUG9z
aXRpb24oKTsKKworICAgIC8vIEFkanVzdCB0aGUgcGFnZSBzY2FsZSBpbiB0d28gc3RlcHMuIEZp
cnN0LCB3aXRob3V0IGNoYW5nZSB0byBzY3JvbGwKKyAgICAvLyBwb3NpdGlvbiwgYW5kIHRoZW4g
d2l0aCBhIHVzZXIgc2Nyb2xsIHRvIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgIC8vIFdlIGRv
IHRoaXMgYmVjYXVzZSBQYWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IgY2FsbHMKKyAgICAvLyBGcmFt
ZVZpZXc6OnNldFNjcm9sbFBvc2l0aW9uIHdoaWNoIGlzIGEgcHJvZ3JhbW1hdGljIHNjcm9sbAor
ICAgIC8vIGFuZCB3ZSBuZWVkIHRoaXMgbWV0aG9kIHRvIHBlcmZvcm0gb25seSB1c2VyIHNjcm9s
bHMuCisgICAgcGFnZSgpLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGVGYWN0b3IsIG9sZFNjcm9s
bE9mZnNldCk7CisgICAgaWYgKG5ld1Njcm9sbE9mZnNldCAhPSBvbGRTY3JvbGxPZmZzZXQpCisg
ICAgICAgIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKG5ld1Njcm9sbE9mZnNldCwgZmFs
c2UpOwogCiAgICAgbV9wYWdlU2NhbGVGYWN0b3JJc1NldCA9IHRydWU7CiAKQEAgLTQxNjYsNiAr
NDE3NywyMSBAQCBXZWJJbnB1dEhhbmRsZXIqIFdlYlZpZXdJbXBsOjpjcmVhdGVJbnB1dEhhbmRs
ZXIoKQogICAgIHJldHVybiBoYW5kbGVyOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVN
YWluRnJhbWVTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJv
b2wgcHJvZ3JhbW1hdGljU2Nyb2xsKQoreworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gcGFn
ZSgpLT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpID09IHNjcm9sbFBv
c2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIG9sZFByb2dyYW1tYXRpY1Njcm9s
bCA9IGZyYW1lVmlldy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKKyAgICBmcmFtZVZpZXctPnNl
dEluUHJvZ3JhbW1hdGljU2Nyb2xsKHByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgZnJhbWVWaWV3
LT5ub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5nZWQoc2Nyb2xsUG9zaXRpb24pOworICAgIGZyYW1l
Vmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xkUHJvZ3JhbW1hdGljU2Nyb2xsKTsKK30K
Kwogdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJTaXplJiBz
Y3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlRGVsdGEpCiB7CiAgICAgaWYgKCFtYWluRnJhbWVJ
bXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCkBAIC00MTczLDcgKzQxOTks
OSBAQCB2b2lkIFdlYlZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYlNpemUm
IHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbAogCiAgICAgaWYgKHBhZ2VTY2FsZURlbHRhID09
IDEpIHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6YXBwbHlTY3JvbGxBbmRTY2FsZTo6c2Nyb2xsQnkiLCAieCIsIHNjcm9sbERlbHRhLndpZHRo
LCAieSIsIHNjcm9sbERlbHRhLmhlaWdodCk7Ci0gICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJh
bWVWaWV3KCktPnNjcm9sbEJ5KHNjcm9sbERlbHRhKTsKKyAgICAgICAgV2ViU2l6ZSB3ZWJTY3Jv
bGxPZmZzZXQgPSBtYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIEludFBvaW50
IHNjcm9sbE9mZnNldCh3ZWJTY3JvbGxPZmZzZXQud2lkdGggKyBzY3JvbGxEZWx0YS53aWR0aCwg
d2ViU2Nyb2xsT2Zmc2V0LmhlaWdodCArIHNjcm9sbERlbHRhLmhlaWdodCk7CisgICAgICAgIHVw
ZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKHNjcm9sbE9mZnNldCwgZmFsc2UpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIFRoZSBwYWdlIHNjYWxlIGNoYW5nZWQsIHNvIGFwcGx5IGEgc2Nh
bGUgYW5kIHNjcm9sbCBpbiBhIHNpbmdsZQogICAgICAgICAvLyBvcGVyYXRpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBlMTcwNmQ5MjQ4Y2YwZmQyZmM1
MjUxNjQ5YTMwMzM0NTEyZjcyYTNlLi4yODNkNGNmOTJmYzA3Y2IzMmNkYWVlOTY0OWIxNGEwN2Q1
ZTk0ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTYx
MSw2ICs2MTEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldFNhdmVkU2Nyb2xsQW5kU2Nh
bGVTdGF0ZSgpOwogCisgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcHJvZ3JhbW1hdGljU2Ny
b2xsKTsKKwogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRl
IGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50
ZWQ8V2ViVmlld0ltcGw+OwogICAgIGZyaWVuZCB2b2lkIHNldEN1cnJlbnRJbnB1dEV2ZW50Rm9y
VGVzdChjb25zdCBXZWJJbnB1dEV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYkZyYW1lVGVzdC5jcHAKaW5kZXggZGY1YjZkYWJlYzhiMjU4NTEyNjEwZmM4ZGJmNDYy
MDgxY2FiOTQ4OC4uZjA4NDkzMjAzZTc0MmJjYjE1MjFlOTEyMDg4YzMwNTcxYTQ3OTdhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMjQ5
Nyw0ICsyNDk3LDEyMiBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaWRBY2Nlc3NJbml0aWFsRG9j
dW1lbnROYXZpZ2F0b3IpCiAgICAgbV93ZWJWaWV3ID0gMDsKIH0KIAorY2xhc3MgVGVzdE1haW5G
cmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1l
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBUZXN0TWFpbkZyYW1lVXNlck9yUHJvZ3JhbW1hdGljU2Ny
b2xsRnJhbWVDbGllbnQoKSB7IHJlc2V0KCk7IH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7Cisg
ICAgICAgIG1fZGlkU2Nyb2xsTWFpbkZyYW1lID0gZmFsc2U7CisgICAgICAgIG1fd2FzUHJvZ3Jh
bW1hdGljU2Nyb2xsID0gZmFsc2U7CisgICAgfQorICAgIGJvb2wgd2FzVXNlclNjcm9sbCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlkU2Nyb2xsTWFpbkZyYW1lICYmICFtX3dhc1Byb2dyYW1tYXRpY1Nj
cm9sbDsgfQorICAgIGJvb2wgd2FzUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29uc3QgeyByZXR1cm4g
bV9kaWRTY3JvbGxNYWluRnJhbWUgJiYgbV93YXNQcm9ncmFtbWF0aWNTY3JvbGw7IH0KKworICAg
IC8vIFdlYkZyYW1lQ2xpZW50OgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZz
ZXQoV2ViRnJhbWUqIGZyYW1lKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgaWYgKGZyYW1lLT5w
YXJlbnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fZGlk
U2Nyb2xsTWFpbkZyYW1lKTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gc3Rh
dGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4oZnJhbWUpLT5mcmFtZVZpZXcoKTsKKyAgICAgICAgLy8g
RnJhbWVWaWV3IGNhbiBiZSBzY3JvbGxlZCBpbiBGcmFtZVZpZXc6OnNldEZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0CisgICAgICAgIC8vIHdoaWNoIGlzIGNhbGxlZCBmcm9tIEZyYW1lOjpjcmVhdGVW
aWV3IChiZWZvcmUgdGhlIGZyYW1lIGlzIGFzc29jaWF0ZWQKKyAgICAgICAgLy8gd2l0aCB0aGUg
dGhlIHZpZXcpLgorICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAgbV9kaWRTY3JvbGxN
YWluRnJhbWUgPSB0cnVlOworICAgICAgICAgICAgbV93YXNQcm9ncmFtbWF0aWNTY3JvbGwgPSB2
aWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgICAgICB9CisgICAgfQorcHJpdmF0ZToK
KyAgICBib29sIG1fZGlkU2Nyb2xsTWFpbkZyYW1lOworICAgIGJvb2wgbV93YXNQcm9ncmFtbWF0
aWNTY3JvbGw7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb21wb3NpdG9yU2Nyb2xsSXNV
c2VyU2Nyb2xsTG9uZ1BhZ2UpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgibG9u
Z19zY3JvbGwuaHRtbCIpOworICAgIFRlc3RNYWluRnJhbWVVc2VyT3JQcm9ncmFtbWF0aWNTY3Jv
bGxGcmFtZUNsaWVudCBjbGllbnQ7CisKKyAgICAvLyBNYWtlIHN1cmUgd2UgaW5pdGlhbGl6ZSB0
byBtaW5pbXVtIHNjYWxlLCBldmVuIGlmIHRoZSB3aW5kb3cgc2l6ZQorICAgIC8vIG9ubHkgYmVj
b21lcyBhdmFpbGFibGUgYWZ0ZXIgdGhlIGxvYWQgYmVnaW5zLgorICAgIG1fd2ViVmlldyA9IEZy
YW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJsb25nX3Nj
cm9sbC5odG1sIiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5z
ZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOworICAgIG1fd2ViVmll
dy0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7
CisgICAgbV93ZWJWaWV3LT5yZXNpemUoV2ViU2l6ZSgxMDAwLCAxMDAwKSk7CisgICAgbV93ZWJW
aWV3LT5sYXlvdXQoKTsKKworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IHN0YXRpY19j
YXN0PFdlYlZpZXdJbXBsKj4obV93ZWJWaWV3KTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndh
c1VzZXJTY3JvbGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNT
Y3JvbGwoKSk7CisKKyAgICAvLyBEbyBhIGNvbXBvc2l0b3Igc2Nyb2xsLCB2ZXJpZnkgdGhhdCB0
aGlzIGlzIGNvdW50ZWQgYXMgYSB1c2VyIHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlT
Y3JvbGxBbmRTY2FsZShXZWJTaXplKDAsIDEpLCAxLjFmKTsKKyAgICBFWFBFQ1RfVFJVRShjbGll
bnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIEVYUEVDVF9G
QUxTRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndh
c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKworICAgIC8vIFRoZSBwYWdlIHNjYWxlIDEuMGYgYW5k
IHNjcm9sbC4KKyAgICB3ZWJWaWV3SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDAs
IDEpLCAxLjBmKTsKKyAgICBFWFBFQ1RfVFJVRShjbGllbnQud2FzVXNlclNjcm9sbCgpKTsKKyAg
ICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIE5vIHNjcm9sbCBldmVudCBpZiB0aGVyZSBpcyBu
byBzY3JvbGwgZGVsdGEuCisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2Vi
U2l6ZSgpLCAxLjBmKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAg
Y2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb24gemVybyBwYWdlIHNjYWxlIGFuZCBzY3JvbGwu
CisgICAgd2ViVmlld0ltcGwtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZSg5LCAxMyksIDAu
NmYpOworICAgIEVYUEVDVF9UUlVFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIGNsaWVu
dC5yZXNldCgpOworCisgICAgLy8gUHJvZ3JhbW1hdGljIHNjcm9sbC4KKyAgICBXZWJGcmFtZUlt
cGwqIGZyYW1lSW1wbCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCk7CisgICAgZnJhbWVJ
bXBsLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgid2luZG93LnNjcm9sbFRvKDAsIDIw
KTsiKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNsaWVudC53YXNVc2VyU2Nyb2xsKCkpOworICAgIEVY
UEVDVF9UUlVFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBQcm9ncmFtbWF0aWMgc2Nyb2xsIHRvIHNhbWUgb2Zmc2V0LiBObyBz
Y3JvbGwgZXZlbnQgc2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICBmcmFtZUltcGwtPmV4ZWN1dGVT
Y3JpcHQoV2ViU2NyaXB0U291cmNlKCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjApOyIpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAg
ICBtX3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworVEVTVF9GKFdl
YkZyYW1lVGVzdCwgQ29tcG9zaXRvclNjcm9sbElzVXNlclNjcm9sbFNob3J0UGFnZSkKK3sKKyAg
ICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJzaG9ydF9zY3JvbGwuaHRtbCIpOworCisgICAg
VGVzdE1haW5GcmFtZVVzZXJPclByb2dyYW1tYXRpY1Njcm9sbEZyYW1lQ2xpZW50IGNsaWVudDsK
KworICAgIC8vIFNob3J0IHBhZ2UgdGVzdHMuCisgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVs
cGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInNob3J0X3Njcm9sbC5odG1s
IiwgdHJ1ZSwgJmNsaWVudCk7CisKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldEFwcGx5
RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CisgICAgbV93ZWJWaWV3LT5zZXR0
aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICBt
X3dlYlZpZXctPnJlc2l6ZShXZWJTaXplKDEwMDAsIDEwMDApKTsKKyAgICBtX3dlYlZpZXctPmxh
eW91dCgpOworCisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0ltcGwqPihtX3dlYlZpZXcpOworICAgIEVYUEVDVF9GQUxTRShjbGllbnQud2FzVXNlclNj
cm9sbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY2xpZW50Lndhc1Byb2dyYW1tYXRpY1Njcm9sbCgp
KTsKKworICAgIC8vIE5vbiB6ZXJvIHBhZ2Ugc2NhbGUgYW5kIHNjcm9sbC4KKyAgICB3ZWJWaWV3
SW1wbC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKDksIDEzKSwgMi4wZik7CisgICAgRVhQ
RUNUX0ZBTFNFKGNsaWVudC53YXNQcm9ncmFtbWF0aWNTY3JvbGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoY2xpZW50Lndhc1VzZXJTY3JvbGwoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICBt
X3dlYlZpZXctPmNsb3NlKCk7CisgICAgbV93ZWJWaWV3ID0gMDsKK30KKworCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRl
eCA0NjA4OGU2NmIyOTVhM2Y5MGEwZjkzOWNhODVlZTJiOTQ3ZDg3MDc4Li42M2I4ZjEyYmJhMzZm
MzdjMjViNWRhZDAzMTdmNmU3N2NmZGU5Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYkZy
YW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5w
dXRFdmVudC5oIgorI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KQEAgLTQ4MSw2ICs0ODIsNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIFJlc2V0U2Nyb2xsQW5k
U2NhbGVTdGF0ZSkKIHsKICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9t
QmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgiaGVsbG9fd29ybGQuaHRtbCIpKTsKICAgICBXZWJWaWV3SW1wbCogd2ViVmll
d0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJoZWxsb193b3JsZC5odG1sIikpOworICAgIHdl
YlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRv
cih0cnVlKTsKICAgICB3ZWJWaWV3SW1wbC0+cmVzaXplKFdlYlNpemUoNjQwLCA0ODApKTsKICAg
ICBFWFBFQ1RfRVEoMCwgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53
aWR0aCk7CiAgICAgRVhQRUNUX0VRKDAsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xs
T2Zmc2V0KCkuaGVpZ2h0KTsKQEAgLTQ5Nyw2ICs0OTksMTAgQEAgVEVTVF9GKFdlYlZpZXdUZXN0
LCBSZXNldFNjcm9sbEFuZFNjYWxlU3RhdGUpCiAgICAgRVhQRUNUX0VRKDEuNWYsIHdlYlZpZXdJ
bXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgRVhQRUNUX0VRKDE2LCB3ZWJWaWV3SW1wbC0+
bWFpbkZyYW1lKCktPnNjcm9sbE9mZnNldCgpLndpZHRoKTsKICAgICBFWFBFQ1RfRVEoMjQsIHdl
YlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KTsKKyAgICAvLyBX
ZWJWaWV3SW1wbDo6c2V0UGFnZVNjYWxlRmFjdG9yIGlzIHBlcmZvcm1pbmcgdXNlciBzY3JvbGxz
LCB3aGljaCB3aWxsIHNldCB0aGUKKyAgICAvLyB3YXNTY3JvbGxlZEJ5VXNlciBmbGFnIG9uIHRo
ZSBtYWluIGZyYW1lLCBhbmQgcHJldmVudCByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3Rh
dGUKKyAgICAvLyBmcm9tIHJlc3RvcmluZyB0aGUgc2Nyb2xsaW5nIHBvc2l0aW9uLgorICAgIHdl
YlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNldFdhc1Njcm9sbGVkQnlV
c2VyKGZhbHNlKTsKICAgICB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVy
KCktPmhpc3RvcnkoKS0+cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCk7CiAgICAg
RVhQRUNUX0VRKDIuMGYsIHdlYlZpZXdJbXBsLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgRVhQ
RUNUX0VRKDExNiwgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5zY3JvbGxPZmZzZXQoKS53aWR0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbG9uZ19z
Y3JvbGwuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9sb25nX3Njcm9s
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwZjNjMWY3ZjVjNDRiNDEzMTNmZjc0MzQyMjQwYjM5YjhhOGFj
NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEv
bG9uZ19zY3JvbGwuaHRtbApAQCAtMCwwICsxIEBACis8ZGl2IHN0eWxlPSJoZWlnaHQ6MjAwMHB4
Ij5BIGxvbmcgZGl2PC9kaXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvc2hvcnRfc2Nyb2xsLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvc2hvcnRfc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc0ZWJhYjE5OTMwZTdjOThkNjNh
ZDcxMDRjYzg5MDVhOTE4YTY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9zaG9ydF9zY3JvbGwuaHRtbApAQCAtMCwwICsxIEBACis8c3Bhbj5W
ZXJ5IHNob3J0IHBhZ2U8L3NwYW4+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>