<?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>92346</bug_id>
          
          <creation_ts>2012-07-26 01:03:08 -0700</creation_ts>
          <short_desc>[Chromium-Android] We should hueristically detect content intents on touch</short_desc>
          <delta_ts>2012-08-17 10:26:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91648</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>leandrogracia</cc>
    
    <cc>peter</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678979</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:03:08 -0700</bug_when>
    <thetext>[Chromium-Android] We should hueristically detect content intents on touch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678985</commentid>
    <comment_count>1</comment_count>
      <attachid>154569</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:06:33 -0700</bug_when>
    <thetext>Created attachment 154569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678992</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-26 01:10:33 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678993</commentid>
    <comment_count>3</comment_count>
      <attachid>154572</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:10:44 -0700</bug_when>
    <thetext>Created attachment 154572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678997</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:12:26 -0700</bug_when>
    <thetext>This patch is written assuming https://gerrit-int.chromium.org/#change,22392 is going to land in something like it&apos;s current shape.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678999</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:13:31 -0700</bug_when>
    <thetext>I&apos;m not sure whether the handle*Event functions in WebViewClient make sense.  This patch is mostly a starting point for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679002</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 01:14:58 -0700</bug_when>
    <thetext>*** Bug 90219 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679706</commentid>
    <comment_count>7</comment_count>
      <attachid>154572</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-07-26 13:33:47 -0700</bug_when>
    <thetext>Comment on attachment 154572
Patch

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

&gt; Source/WebKit/chromium/public/WebInputEvent.h:156
&gt; +        LinkPreviewTap   = 1 &lt;&lt; 20,

It seems unfortunate that we would need to have this flag on WebInputEvent.
I would think that the link preview popup should be its own instance of
WebWidget if we need to handle input events on it separately.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:231
&gt; +static WebColor tapHighlightColorForNode(const Node* node)

nit: recommend only using WebColor at the interface with the embedder.
return Color instead.

Shouldn&apos;t this be wrapped in a #if ENABLE(TOUCH_EVENTS) guard since
RenderStyle::initialTapHighlightColor is so guarded?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:723
&gt; +        m_client-&gt;handleTapDownEvent(event.x, event.y);

it seems pretty unfortunate to squirrel through WebKit like this and then
duck out immediately.  it seems like it would be helpful to understand what
handle{Tap,TapDown,LongPress}Event do.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:728
&gt; +            m_client-&gt;handleTapEvent(event.x, event.y, event.modifiers &amp; WebInputEvent::LinkPreviewTap);

is this the only case where LinkPreviewTap is OR&apos;d into the event modifiers?  maybe it
could just be a separate parameter to handleTapEvent or handleTapEvent could always
know that a link preview window was hit?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3859
&gt; +    for (; node &amp;&amp; !node-&gt;hasTagName(HTMLNames::bodyTag); node = node-&gt;parentNode()) {

it feels like much of this is being done instead of leveraging EventHandler
for gesture event dispatch.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3871
&gt; +    WebContentDetectionResult content = m_client-&gt;detectContentAround(touchHit);

it seems odd to delegate to the embedder to perform this function.
it seems like we could have the detection algorithm live in webkit.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3875
&gt; +    if (touchType == WebInputEvent::GestureLongPress) {

shouldn&apos;t this be a default action for the DOM element that was long-pressed?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3886
&gt; +    m_client-&gt;scheduleContentIntent(content.intent());

how is this intent related to WebIntent?  i&apos;m guessing this is an 
android intent, which suggests that we are going to have possible
confusion between android intents and web intents, especially if we
refer to each as intents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679722</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-26 13:45:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 154572 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154572&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:728
&gt; &gt; +            m_client-&gt;handleTapEvent(event.x, event.y, event.modifiers &amp; WebInputEvent::LinkPreviewTap);
&gt; 
&gt; is this the only case where LinkPreviewTap is OR&apos;d into the event modifiers?  maybe it
&gt; could just be a separate parameter to handleTapEvent or handleTapEvent could always
&gt; know that a link preview window was hit?

This is the only use of LinkPreviewTap in WebKit.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3859
&gt; &gt; +    for (; node &amp;&amp; !node-&gt;hasTagName(HTMLNames::bodyTag); node = node-&gt;parentNode()) {
&gt; 
&gt; it feels like much of this is being done instead of leveraging EventHandler
&gt; for gesture event dispatch.

Yes.  What&apos;s happening here is that we&apos;re hacking into the beginning of event dispatching rather than catching the event at the end in a default event handler.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3871
&gt; &gt; +    WebContentDetectionResult content = m_client-&gt;detectContentAround(touchHit);
&gt; 
&gt; it seems odd to delegate to the embedder to perform this function.
&gt; it seems like we could have the detection algorithm live in webkit.

My understanding is that detecting content involves interacting with the rest of the system because installed apps can register new intents on Android.  That means it needs to happen outside the sandbox.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3875
&gt; &gt; +    if (touchType == WebInputEvent::GestureLongPress) {
&gt; 
&gt; shouldn&apos;t this be a default action for the DOM element that was long-pressed?

Yeah, another approach to implementing this feature is via default event handlers.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3886
&gt; &gt; +    m_client-&gt;scheduleContentIntent(content.intent());
&gt; 
&gt; how is this intent related to WebIntent? i&apos;m guessing this is an 
&gt; android intent, which suggests that we are going to have possible
&gt; confusion between android intents and web intents, especially if we
&gt; refer to each as intents.

Yes, this is an Android intent.  We can use the term AndroidIntent rather than ContentIntent if that&apos;s clearer.  The official name of intents on Android is android.content.intent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679773</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-07-26 14:34:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 154572 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154572&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebInputEvent.h:156
&gt; &gt; +        LinkPreviewTap   = 1 &lt;&lt; 20,
&gt; 
&gt; It seems unfortunate that we would need to have this flag on WebInputEvent.
&gt; I would think that the link preview popup should be its own instance of
&gt; WebWidget if we need to handle input events on it separately.

The flag approach also strikes me as questionable, but I don&apos;t think we want to introduce a new WebWidget either.  The tap event on the link disambiguation popup is almost entirely treated as a normal tap.  The only reason for the flag is that we need to avoid trying to generate another link disambiguation popup in the case where the tap appears ambiguous again.  Another way to tackle this would be to have the renderer remember that it requested a link disambiguation popup.

&gt; it seems odd to delegate to the embedder to perform this function.
&gt; it seems like we could have the detection algorithm live in webkit.

I earlier also asked Leandro to move this to WebKit, but he listed some hairy requirements preventing it.  I&apos;ll let Leandro explain them himself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680002</commentid>
    <comment_count>10</comment_count>
      <attachid>154572</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-07-26 18:52:39 -0700</bug_when>
    <thetext>Comment on attachment 154572
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3871
&gt;&gt;&gt; +    WebContentDetectionResult content = m_client-&gt;detectContentAround(touchHit);
&gt;&gt; 
&gt;&gt; it seems odd to delegate to the embedder to perform this function.
&gt;&gt; it seems like we could have the detection algorithm live in webkit.
&gt; 
&gt; My understanding is that detecting content involves interacting with the rest of the system because installed apps can register new intents on Android.  That means it needs to happen outside the sandbox.

There are a few reasons why we do need to delegate to the client.

First, as Adam said we need to get out of the sandbox and reach the browser and the Java side in order to be able to launch new Android intents in the system.
Besides that we have reasons concerning the detectors themselves. For example, in the case of address detection the parser is not trivial at all and we need it also to implement this API: http://developer.android.com/reference/android/webkit/WebView.html#findAddress(java.lang.String) . Unfortunately for various reasons the implementation cannot use directly any renderer code, not to mention WebKit, which forces us to have the parser in Chromium&apos;s content common code.
Phone number detection is also in a more or less similar situation. It uses the third party library libphonenumber in order to properly detect international and per-country phone number formats, which enforces again having detection outside WebKit.

As you see there are good reasons to delegate to the embedder. Please feel free to ask me any further questions you might have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682281</commentid>
    <comment_count>11</comment_count>
      <attachid>155338</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-30 12:26:02 -0700</bug_when>
    <thetext>Created attachment 155338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682282</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-30 12:26:51 -0700</bug_when>
    <thetext>This patch strips out the controversial parts of the patch.  Hopefully we can make progress incrementally by landing this patch and tackling the event integration issues in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682492</commentid>
    <comment_count>13</comment_count>
      <attachid>155338</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-07-30 16:09:43 -0700</bug_when>
    <thetext>Comment on attachment 155338
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:153
&gt; +#include &quot;platform/WebFloatQuad.h&quot;

Nit: this is already included in the .h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683360</commentid>
    <comment_count>14</comment_count>
      <attachid>155603</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-31 12:09:11 -0700</bug_when>
    <thetext>Created attachment 155603
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683393</commentid>
    <comment_count>15</comment_count>
      <attachid>155603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 12:45:12 -0700</bug_when>
    <thetext>Comment on attachment 155603
Patch for landing

Rejecting attachment 155603 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
n &quot;[&apos;Tools/Scripts/build-webkit&apos;, &apos;--debug&apos;, &apos;--chromium&apos;, &apos;--update-chromium&apos;]&quot; exit_code: 2
rce/WebCore/WebCore.gyp/libwebcore_test_support.a
Source/WebKit/chromium/src/WebViewImpl.cpp: In member function &apos;bool WebKit::WebViewImpl::detectContentIntentOnTouch(const WebKit::WebPoint&amp;, WebKit::WebInputEvent::Type)&apos;:
Source/WebKit/chromium/src/WebViewImpl.cpp:3826: error: &apos;type&apos; was not declared in this scope
make: *** [out/Debug/obj.target/webkit/Source/WebKit/chromium/src/WebViewImpl.o] Error 1

Full output: http://queues.webkit.org/results/13386952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683411</commentid>
    <comment_count>16</comment_count>
      <attachid>155613</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-31 13:05:02 -0700</bug_when>
    <thetext>Created attachment 155613
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683479</commentid>
    <comment_count>17</comment_count>
      <attachid>155613</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 14:29:50 -0700</bug_when>
    <thetext>Comment on attachment 155613
Patch for landing

Clearing flags on attachment: 155613

Committed r124252: &lt;http://trac.webkit.org/changeset/124252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683480</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-31 14:29:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698337</commentid>
    <comment_count>19</comment_count>
      <attachid>155613</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2012-08-17 07:57:30 -0700</bug_when>
    <thetext>Comment on attachment 155613
Patch for landing

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

&gt; Source/WebKit/chromium/public/WebViewClient.h:374
&gt;      // content detectors (e.g., from the Android intent system) to analyze the

There&apos;s no such a thing as &quot;content detectors from the Android intent system&quot;. The content detectors live in Chromium, and their only relation with Android is that they fire Android intents if appropriate.

&gt; Source/WebKit/chromium/public/WebViewClient.h:376
&gt; +    virtual WebContentDetectionResult detectContentIntentAround(const WebHitTestResult&amp;) { return WebContentDetectionResult(); }

Why was this method renamed to detectContentIntentAround? I think the name is plainly wrong: we don&apos;t detect content intents, but generate Android intents based on the content we detect around where the user taps. I&apos;ll be renaming this if you don&apos;t mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698464</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-17 10:26:46 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 155613 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155613&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebViewClient.h:374
&gt; &gt;      // content detectors (e.g., from the Android intent system) to analyze the
&gt; 
&gt; There&apos;s no such a thing as &quot;content detectors from the Android intent system&quot;. The content detectors live in Chromium, and their only relation with Android is that they fire Android intents if appropriate.

Ah, that was my misunderstanding.  I had assumed that Android provided library functions for detecting addresses and the like so that it would be consistent across the operating system.

&gt; &gt; Source/WebKit/chromium/public/WebViewClient.h:376
&gt; &gt; +    virtual WebContentDetectionResult detectContentIntentAround(const WebHitTestResult&amp;) { return WebContentDetectionResult(); }
&gt; 
&gt; Why was this method renamed to detectContentIntentAround? I think the name is plainly wrong: we don&apos;t detect content intents, but generate Android intents based on the content we detect around where the user taps. I&apos;ll be renaming this if you don&apos;t mind.

Please do.  The issue here is that we&apos;re trying to draw a distinction between the intents from the Android system and Web Intents.  I looked at the documentation for the Intents in Android and learned that the full name was &quot;android.content.intent&quot; hence the name &quot;content intent&quot; as opposed to &quot;web intent&quot;.  If that&apos;s a misnomer, we should fix it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154569</attachid>
            <date>2012-07-26 01:06:33 -0700</date>
            <delta_ts>2012-07-26 01:10:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92346-20120726010622.patch</filename>
            <type>text/plain</type>
            <size>11059</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYxYjQzZmUyYjI3YjQzMDAyYWEwZmVmNDhhMzAyNDk3NjVlMjkyY2MuLmI4MTUyOGVhMzA2YzZh
ZDdiODdjNmIyMzVjMzNkNWRhNTg0ZDBjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gV2Ugc2hvdWxkIGh1ZXJpc3RpY2FsbHkg
ZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBvbiB0b3VjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPbiBBbmRyb2lkLCB3aGVuIHRoZSB1c2VyIHRvdWNoZXMg
YSBibG9jayBvZiB0ZXh0LCB3ZSBydW4gYSBidW5jaCBvZgorICAgICAgICBPUy1wcm92aWRlZCBo
dWVyaXN0aWNzIHRvIGRldGVjdCBjb250ZW50IGludGVudHMsIHN1Y2ggYXMgdGVsZXBob25lCisg
ICAgICAgIG51bWJlcnMgYW5kIG1haWxpbmcgYWRkcmVzc2VzLiBUaGlzIHBhdGNoIHdpcmVzIHVw
IHRoZSB0YXAgYW5kIGxvbmcKKyAgICAgICAgcHJlc3MgZ2VzdHVyZXMgdG8gdGhvc2UgaHVlcmlz
dGljcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYlZpZXdDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpzY2hlZHVsZUNvbnRlbnRJbnRlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cyk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGFwSGlnaGxp
Z2h0Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2gpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA3LTI1ICBBZHJpZW5uZSBXYWxrZXIg
IDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBjb21wb3NpdG9y
IHF1YWRUcmFuc2Zvcm0vZHJhd1RyYW5zZm9ybS9vcmlnaW5UcmFuc2Zvcm0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCA0MGE2ZmRiM2UyNmNl
Y2FjODg3OGY2OTVlMTYwNGFiOTFjYWVlMWZmLi5lZWZjMzc2Y2RmYTY5MDI0NmFlYmNlYmVjYTk3
OWM4ZGRlZjcwNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCkBAIC0xNTEsNiArMTUxLDkgQEAgcHVibGljOgogICAgICAgICAvLyBldmVudCBh
bmQgYmFjayB3aWxsIG5vdCBwcmVzZXJ2ZSB0aGVzZSBmbGFncy4KICAgICAgICAgQ2Fwc0xvY2tP
biAgICAgICA9IDEgPDwgOSwKICAgICAgICAgTnVtTG9ja09uICAgICAgICA9IDEgPDwgMTAsCisK
KyAgICAgICAgLy8gVGhpcyB0YXAgd2FzIGFnYWluc3QgYSAibGluayBwcmV2aWV3IiBkaXNhbWJp
Z3VhdGlvbiBwb3B1cC4KKyAgICAgICAgTGlua1ByZXZpZXdUYXAgICA9IDEgPDwgMjAsCiAgICAg
fTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgSW5wdXRNb2RpZmllcnMgPSBTaGlmdEtleSB8IENv
bnRyb2xLZXkgfCBBbHRLZXkgfCBNZXRhS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDY1OTY0YTEyOGNkMzM3MjA2M2JkZmIyNDJkNTYw
N2NlNzEzNGUxYWIuLjg1ZjQyM2IzYWQ3ZmU5OTI5M2E5ZmZhMTRkZjkzYjk3ZDg2MWE4MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTM3
NSw2ICszNzUsMTIgQEAgcHVibGljOgogICAgIC8vIHJlZ2lvbiBhcm91bmQgdGhlIGhpdCB0ZXN0
IHJlc3VsdC4KICAgICB2aXJ0dWFsIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQgZGV0ZWN0Q29u
dGVudEFyb3VuZChjb25zdCBXZWJIaXRUZXN0UmVzdWx0JikgeyByZXR1cm4gV2ViQ29udGVudERl
dGVjdGlvblJlc3VsdCgpOyB9CiAKKyAgICAvLyBTY2hlZHVsZXMgYSBuZXcgY29udGVudCBpbnRl
bnQgd2l0aCB0aGUgcHJvdmlkZWQgdXJsLgorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbnRl
bnRJbnRlbnQoY29uc3QgV2ViVVJMJikgeyB9CisKKyAgICAvLyBDYW5jZWxzIGFueSBwcmV2aW91
c2x5IHNjaGVkdWxlZCBjb250ZW50IGludGVudHMgdGhhdCBoYXZlIG5vdCB5ZXQgbGF1bmNoZWQu
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCkgeyB9CisK
IHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA3YzZkYTYwZDkzYWJmNmYxMzBiMGIy
MTc5N2UwYTMzMzYyODM3MDc4Li5lZWVmYzE5NTUzMDE1MTg1ZjdlOWZlYjliZjZjZTEwZDQwOTlk
Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
NTAsNiArMTUwLDcgQEAKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKQEAgLTIyNyw2ICsyMjgsMTQgQEAgc3Rh
dGljIFZlY3RvcjxQYWdlR3JvdXBMb2FkRGVmZXJyZXIqPiYgcGFnZUdyb3VwTG9hZERlZmVycmVy
U3RhY2soKQogICAgIHJldHVybiBkZWZlcnJlclN0YWNrOwogfQogCitzdGF0aWMgV2ViQ29sb3Ig
dGFwSGlnaGxpZ2h0Q29sb3JGb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgV2ViQ29s
b3IgdGFwSGlnaGxpZ2h0Q29sb3IgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENv
bG9yKCkucmdiKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAg
dGFwSGlnaGxpZ2h0Q29sb3IgPSBub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT50YXBIaWdobGln
aHRDb2xvcigpLnJnYigpOworICAgIHJldHVybiB0YXBIaWdobGlnaHRDb2xvcjsKK30KKwogLy8g
RW5zdXJlIHRoYXQgdGhlIFdlYkRyYWdPcGVyYXRpb24gZW51bSB2YWx1ZXMgc3RheSBpbiBzeW5j
IHdpdGggdGhlIG9yaWdpbmFsCiAvLyBEcmFnT3BlcmF0aW9uIGNvbnN0YW50cy4KICNkZWZpbmUg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShjb3JlTmFtZSkgXApAQCAtNzA0LDYgKzcxMywy
NyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVy
ZUV2ZW50JiBldmVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNpZiBPUyhBTkRST0lEKQorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxlZENv
bnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGFuaW1hdGVab29tQXJvdW5kUG9pbnQoV2ViUG9pbnQo
ZXZlbnQueCwgZXZlbnQueSksIERvdWJsZVRhcCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246CisgICAgICAgIG1fY2xpZW50LT5j
YW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBtX2NsaWVudC0+aGFuZGxl
VGFwRG93bkV2ZW50KGV2ZW50LngsIGV2ZW50LnkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CisgICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hl
ZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBpZiAoIWRldGVjdENvbnRlbnRPblRvdWNo
KFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpLCBldmVudC50eXBlKSkKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5oYW5kbGVUYXBFdmVudChldmVudC54LCBldmVudC55LCBldmVudC5tb2RpZmllcnMg
JiBXZWJJbnB1dEV2ZW50OjpMaW5rUHJldmlld1RhcCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzczoKKyAgICAgICAgbV9jbGll
bnQtPmNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGlmICghZGV0ZWN0
Q29udGVudE9uVG91Y2goV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSksIGV2ZW50LnR5cGUpKQor
ICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZUxvbmdQcmVzc0V2ZW50KGV2ZW50LngsIGV2ZW50
LnksIGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6OkxpbmtQcmV2aWV3VGFwKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVHdvRmlu
Z2VyVGFwOgorI2Vsc2UKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6IHsKICAg
ICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZyYW1l
SW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UG9w
dXBDb250YWluZXI+IHNlbGVjdFBvcHVwOwpAQCAtNzMyLDExICs3NjIsMTIgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQp
CiAgICAgICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBo
YW5kbGVkOwogICAgIH0KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyNlbmRpZgogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVT
Y3JvbGxVcGRhdGU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKLSAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTog
ewpAQCAtMzc5OCwxMiArMzgyOSw2NCBAQCBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViVmlld0lt
cGw6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250
ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2hvd1RvdWNoSGln
aGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwgV2Vi
Q29sb3IgaGlnaGxpZ2h0Q29sb3IpCit7CisgICAgLy8gRklYTUU6IFVwc3RyZWFtIHRoaXMgZnVu
Y3Rpb24gZnJvbSB0aGUgY2hyb21pdW0tYW5kcm9pZCBicmFuY2guCisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uQXRJ
bmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7CiAgICAgaWYgKG1fYXV0b2ZpbGxQb3B1cENsaWVu
dCAmJiBsaXN0SW5kZXggPCBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmdldFN1Z2dlc3Rpb25zQ291
bnQoKSkKICAgICAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQobGlzdElu
ZGV4KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2goY29uc3Qg
V2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjpUeXBlIHRvdWNoVHlwZSkKK3sKKyAg
ICBBU1NFUlQodHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwIHx8IHR5cGUgPT0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CisgICAgSGl0VGVzdFJlc3VsdCB0b3VjaEhp
dCA9IGhpdFRlc3RSZXN1bHRGb3JXaW5kb3dQb3MocG9zaXRpb24pOworCisgICAgaWYgKHRvdWNo
SGl0LmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5v
ZGUqIG5vZGUgPSB0b3VjaEhpdC5pbm5lck5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUt
PmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWdub3JlIHdo
ZW4gdGFwcGluZyBvbiBsaW5rcyBvciBub2RlcyBsaXN0ZW5pbmcgdG8gY2xpY2sgZXZlbnRzLCB1
bmxlc3MgdGhlCisgICAgLy8gY2xpY2sgZXZlbnQgaXMgb24gdGhlIGJvZHkgZWxlbWVudCBpbiB3
aGljaCBjYXNlIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUKKyAgICAvLyBvcmlnaW5hbCBub2RlIGl0
c2VsZiB3YXMgaW50ZW5kZWQgdG8gYmUgY2xpY2thYmxlLgorICAgIGZvciAoOyBub2RlICYmICFu
b2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZyk7IG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzTGluaygpCisgICAgICAgICAgICB8fCAodG91
Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAKKyAgICAgICAgICAgICAgICAmJiAo
bm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpCisgICAgICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3Vj
aHN0YXJ0RXZlbnQpCisgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KQorICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpCisgICAg
ICAgICAgICAgICAgICAgIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQpKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQgY29udGVudCA9IG1fY2xpZW50
LT5kZXRlY3RDb250ZW50QXJvdW5kKHRvdWNoSGl0KTsKKyAgICBpZiAoIWNvbnRlbnQuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodG91Y2hUeXBlID09IFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpIHsKKyAgICAgICAgLy8gU2VsZWN0IHRoZSBkZXRl
Y3RlZCBjb250ZW50IGFzIGEgYmxvY2suCisgICAgICAgIGZvY3VzZWRGcmFtZSgpLT5zZWxlY3RS
YW5nZShjb250ZW50LnJhbmdlKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBUZW1wb3JhcmlseSBoaWdobGlnaHQgdGhlIGNvbnRlbnQgYXMgd2UgZG8gd2l0aCBsaW5r
cy4KKyAgICBXZWJDb2xvciB0YXBIaWdobGlnaHRDb2xvciA9IHRhcEhpZ2hsaWdodENvbG9yRm9y
Tm9kZSh0b3VjaEhpdC5pbm5lck5vZGUoKSk7CisgICAgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4g
cXVhZHMgPSBjb250ZW50LnJhbmdlKCkudGV4dFF1YWRzKCk7CisgICAgc2hvd1RvdWNoSGlnaGxp
Z2h0UXVhZHMocXVhZHMsIHRhcEhpZ2hsaWdodENvbG9yKTsKKworICAgIG1fY2xpZW50LT5zY2hl
ZHVsZUNvbnRlbnRJbnRlbnQoY29udGVudC5pbnRlbnQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0
eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA2MzlkNWU2MWFkOWQwYjNkMmY1ZDJm
ZDc2NWIyYWJmNGMwZTZhOTI4Li40NDA5YzBiNjRhOWYzZGMxNDNkMTQ4MmU0M2ZlMjM4ZGJlOWE0
MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTMxLDE2
ICszMSw2IEBACiAjaWZuZGVmIFdlYlZpZXdJbXBsX2gKICNkZWZpbmUgV2ViVmlld0ltcGxfaAog
Ci0jaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgotI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQb2ludC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTaXplLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5j
bHVkZSAiV2ViVmlldy5oIgotCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRJbXBsLmgi
CkBAIC01Niw3ICs0NiwxOCBAQAogI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlh
Q2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJO
YXZpZ2F0aW9uUG9saWN5LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZp
ZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UXVh
ZC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViTGF5ZXJUcmVlVmlldy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdD
bGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTI4NCw2ICsyODUsOCBAQCBwdWJsaWM6CiAgICAgICAg
IGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAgICBpbnQgc2VwYXJhdG9ySW5k
ZXgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBzKCk7CisgICAgLy8gRklYTUU6IEV4cG9z
ZSBzaG93VG91Y2hIaWdobGlnaHRRdWFkcyBpbiB0aGUgcHVibGljIFdlYlZpZXcgQVBJIHdoZW4g
aXQgZG9lcyBzb21ldGhpbmcuCisgICAgdmlydHVhbCB2b2lkIHNob3dUb3VjaEhpZ2hsaWdodFF1
YWRzKGNvbnN0IFdlYlZlY3RvcjxXZWJGbG9hdFF1YWQ+JiBoaWdobGlnaHQsIFdlYkNvbG9yIGhp
Z2hsaWdodENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9u
QXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxi
YXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLApAQCAtMzgyLDYgKzM4NSw4IEBAIHB1
YmxpYzoKICAgICAvLyBFdmVudCByZWxhdGVkIG1ldGhvZHM6CiAgICAgdm9pZCBtb3VzZUNvbnRl
eHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2so
Y29uc3QgV2ViTW91c2VFdmVudCYpOworCisgICAgYm9vbCBkZXRlY3RDb250ZW50T25Ub3VjaChj
b25zdCBXZWJQb2ludCYsIFdlYklucHV0RXZlbnQ6OlR5cGUpOwogICAgIHZvaWQgc3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcyk7
CiAKICAgICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154572</attachid>
            <date>2012-07-26 01:10:44 -0700</date>
            <delta_ts>2012-07-30 12:25:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92346-20120726011033.patch</filename>
            <type>text/plain</type>
            <size>11818</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGYxYjQzZmUyYjI3YjQzMDAyYWEwZmVmNDhhMzAyNDk3NjVlMjkyY2MuLmI4MTUyOGVhMzA2YzZh
ZDdiODdjNmIyMzVjMzNkNWRhNTg0ZDBjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gV2Ugc2hvdWxkIGh1ZXJpc3RpY2FsbHkg
ZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBvbiB0b3VjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPbiBBbmRyb2lkLCB3aGVuIHRoZSB1c2VyIHRvdWNoZXMg
YSBibG9jayBvZiB0ZXh0LCB3ZSBydW4gYSBidW5jaCBvZgorICAgICAgICBPUy1wcm92aWRlZCBo
dWVyaXN0aWNzIHRvIGRldGVjdCBjb250ZW50IGludGVudHMsIHN1Y2ggYXMgdGVsZXBob25lCisg
ICAgICAgIG51bWJlcnMgYW5kIG1haWxpbmcgYWRkcmVzc2VzLiBUaGlzIHBhdGNoIHdpcmVzIHVw
IHRoZSB0YXAgYW5kIGxvbmcKKyAgICAgICAgcHJlc3MgZ2VzdHVyZXMgdG8gdGhvc2UgaHVlcmlz
dGljcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYlZpZXdDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpzY2hlZHVsZUNvbnRlbnRJbnRlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cyk6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGFwSGlnaGxp
Z2h0Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6ZGV0ZWN0Q29udGVudE9uVG91Y2gpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEyLTA3LTI1ICBBZHJpZW5uZSBXYWxrZXIg
IDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBjb21wb3NpdG9y
IHF1YWRUcmFuc2Zvcm0vZHJhd1RyYW5zZm9ybS9vcmlnaW5UcmFuc2Zvcm0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCA0MGE2ZmRiM2UyNmNl
Y2FjODg3OGY2OTVlMTYwNGFiOTFjYWVlMWZmLi5lZWZjMzc2Y2RmYTY5MDI0NmFlYmNlYmVjYTk3
OWM4ZGRlZjcwNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCkBAIC0xNTEsNiArMTUxLDkgQEAgcHVibGljOgogICAgICAgICAvLyBldmVudCBh
bmQgYmFjayB3aWxsIG5vdCBwcmVzZXJ2ZSB0aGVzZSBmbGFncy4KICAgICAgICAgQ2Fwc0xvY2tP
biAgICAgICA9IDEgPDwgOSwKICAgICAgICAgTnVtTG9ja09uICAgICAgICA9IDEgPDwgMTAsCisK
KyAgICAgICAgLy8gVGhpcyB0YXAgd2FzIGFnYWluc3QgYSAibGluayBwcmV2aWV3IiBkaXNhbWJp
Z3VhdGlvbiBwb3B1cC4KKyAgICAgICAgTGlua1ByZXZpZXdUYXAgICA9IDEgPDwgMjAsCiAgICAg
fTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgSW5wdXRNb2RpZmllcnMgPSBTaGlmdEtleSB8IENv
bnRyb2xLZXkgfCBBbHRLZXkgfCBNZXRhS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDY1OTY0YTEyOGNkMzM3MjA2M2JkZmIyNDJkNTYw
N2NlNzEzNGUxYWIuLmI3ZWFjYTJkYzkxOTNkN2VmZmE5MzhiODhkYTgxMTZhOTU2M2IyOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTEz
Nyw2ICsxMzcsMTQgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB0byByZXRyaWV2ZSB0aGUgcHJv
dmlkZXIgb2YgZGVza3RvcCBub3RpZmljYXRpb25zLgogICAgIHZpcnR1YWwgV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSB7IHJldHVybiAwOyB9CiAKKyNp
ZiBkZWZpbmVkKEFORFJPSUQpCisgICAgLy8gT24gQW5kcm9pZCwgdGFwIGV2ZW50cyBhcmUgaGFu
ZGxlZCBpbiB0aGUgZW1iZWRkZXIuCisgICAgLy8gRklYTUU6IElzIHRoaXMgaG93IHdlIHdhbnQg
dGhpcyB0byB3b3JrPworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUYXBEb3duRXZlbnQoaW50IHgs
IGludCB5KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlVGFwRXZlbnQoaW50IHgsIGludCB5
LCBib29sIGlzTGlua1ByZXZpZXdUYXApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb25n
UHJlc3NFdmVudChpbnQgeCwgaW50IHksIGJvb2wgaXNMaW5rUHJldmlld1RhcCkgeyB9CisjZW5k
aWYKKwogICAgIC8vIENhbGxlZCB0byByZXF1ZXN0IGFuIGljb24gZm9yIHRoZSBzcGVjaWZpZWQg
ZmlsZW5hbWVzLgogICAgIC8vIFRoZSBpY29uIGlzIHNob3duIGluIGEgZmlsZSB1cGxvYWQgY29u
dHJvbC4KICAgICB2aXJ0dWFsIGJvb2wgcXVlcnlJY29uRm9yRmlsZXMoY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIGZpbGVuYW1lcywgV2ViSWNvbkxvYWRpbmdDb21wbGV0aW9uKikgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTM3NSw2ICszODMsMTIgQEAgcHVibGljOgogICAgIC8vIHJlZ2lvbiBh
cm91bmQgdGhlIGhpdCB0ZXN0IHJlc3VsdC4KICAgICB2aXJ0dWFsIFdlYkNvbnRlbnREZXRlY3Rp
b25SZXN1bHQgZGV0ZWN0Q29udGVudEFyb3VuZChjb25zdCBXZWJIaXRUZXN0UmVzdWx0JikgeyBy
ZXR1cm4gV2ViQ29udGVudERldGVjdGlvblJlc3VsdCgpOyB9CiAKKyAgICAvLyBTY2hlZHVsZXMg
YSBuZXcgY29udGVudCBpbnRlbnQgd2l0aCB0aGUgcHJvdmlkZWQgdXJsLgorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29uc3QgV2ViVVJMJikgeyB9CisKKyAgICAvLyBD
YW5jZWxzIGFueSBwcmV2aW91c2x5IHNjaGVkdWxlZCBjb250ZW50IGludGVudHMgdGhhdCBoYXZl
IG5vdCB5ZXQgbGF1bmNoZWQuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFNjaGVkdWxlZENvbnRl
bnRJbnRlbnRzKCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA3YzZk
YTYwZDkzYWJmNmYxMzBiMGIyMTc5N2UwYTMzMzYyODM3MDc4Li5lZWVmYzE5NTUzMDE1MTg1Zjdl
OWZlYjliZjZjZTEwZDQwOTlkY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0xNTAsNiArMTUwLDcgQEAKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNz
Q29udGV4dEJ1aWxkZXIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGbG9hdFF1YWQuaCIKICNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKQEAgLTIy
Nyw2ICsyMjgsMTQgQEAgc3RhdGljIFZlY3RvcjxQYWdlR3JvdXBMb2FkRGVmZXJyZXIqPiYgcGFn
ZUdyb3VwTG9hZERlZmVycmVyU3RhY2soKQogICAgIHJldHVybiBkZWZlcnJlclN0YWNrOwogfQog
CitzdGF0aWMgV2ViQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3JGb3JOb2RlKGNvbnN0IE5vZGUqIG5v
ZGUpCit7CisgICAgV2ViQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFRhcEhpZ2hsaWdodENvbG9yKCkucmdiKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgdGFwSGlnaGxpZ2h0Q29sb3IgPSBub2RlLT5yZW5kZXJlcigpLT5z
dHlsZSgpLT50YXBIaWdobGlnaHRDb2xvcigpLnJnYigpOworICAgIHJldHVybiB0YXBIaWdobGln
aHRDb2xvcjsKK30KKwogLy8gRW5zdXJlIHRoYXQgdGhlIFdlYkRyYWdPcGVyYXRpb24gZW51bSB2
YWx1ZXMgc3RheSBpbiBzeW5jIHdpdGggdGhlIG9yaWdpbmFsCiAvLyBEcmFnT3BlcmF0aW9uIGNv
bnN0YW50cy4KICNkZWZpbmUgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShjb3JlTmFtZSkg
XApAQCAtNzA0LDYgKzcxMywyNyBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBPUyhBTkRST0lEKQorICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICAgICAgbV9jbGllbnQt
PmNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCk7CisgICAgICAgIGFuaW1hdGVab29tQXJv
dW5kUG9pbnQoV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSksIERvdWJsZVRhcCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246Cisg
ICAgICAgIG1fY2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAg
ICBtX2NsaWVudC0+aGFuZGxlVGFwRG93bkV2ZW50KGV2ZW50LngsIGV2ZW50LnkpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CisgICAgICAgIG1f
Y2xpZW50LT5jYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cygpOworICAgICAgICBpZiAoIWRl
dGVjdENvbnRlbnRPblRvdWNoKFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpLCBldmVudC50eXBl
KSkKKyAgICAgICAgICAgIG1fY2xpZW50LT5oYW5kbGVUYXBFdmVudChldmVudC54LCBldmVudC55
LCBldmVudC5tb2RpZmllcnMgJiBXZWJJbnB1dEV2ZW50OjpMaW5rUHJldmlld1RhcCk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVz
czoKKyAgICAgICAgbV9jbGllbnQtPmNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRlbnRzKCk7Cisg
ICAgICAgIGlmICghZGV0ZWN0Q29udGVudE9uVG91Y2goV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQu
eSksIGV2ZW50LnR5cGUpKQorICAgICAgICAgICAgbV9jbGllbnQtPmhhbmRsZUxvbmdQcmVzc0V2
ZW50KGV2ZW50LngsIGV2ZW50LnksIGV2ZW50Lm1vZGlmaWVycyAmIFdlYklucHV0RXZlbnQ6Okxp
bmtQcmV2aWV3VGFwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgorI2Vsc2UKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVUYXA6IHsKICAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRm
b3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6UG9wdXBDb250YWluZXI+IHNlbGVjdFBvcHVwOwpAQCAtNzMyLDExICs3
NjIsMTIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdl
c3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gZmFsc2U7
CiAgICAgICAgIHJldHVybiBoYW5kbGVkOwogICAgIH0KKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRh
cDoKKyNlbmRpZgogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgog
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlVGFwRG93bjoKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVQaW5jaFVwZGF0ZTogewpAQCAtMzc5OCwxMiArMzgyOSw2NCBAQCBXZWJHcmFwaGljc0Nv
bnRleHQzRCogV2ViVmlld0ltcGw6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkKICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAordm9pZCBXZWJWaWV3
SW1wbDo6c2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdlYkZsb2F0UXVh
ZD4mIGhpZ2hsaWdodCwgV2ViQ29sb3IgaGlnaGxpZ2h0Q29sb3IpCit7CisgICAgLy8gRklYTUU6
IFVwc3RyZWFtIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgY2hyb21pdW0tYW5kcm9pZCBicmFuY2gu
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0QXV0
b2ZpbGxTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7CiAgICAgaWYgKG1f
YXV0b2ZpbGxQb3B1cENsaWVudCAmJiBsaXN0SW5kZXggPCBtX2F1dG9maWxsUG9wdXBDbGllbnQt
PmdldFN1Z2dlc3Rpb25zQ291bnQoKSkKICAgICAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT52
YWx1ZUNoYW5nZWQobGlzdEluZGV4KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29u
dGVudE9uVG91Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjpUeXBl
IHRvdWNoVHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
VGFwIHx8IHR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CisgICAgSGl0
VGVzdFJlc3VsdCB0b3VjaEhpdCA9IGhpdFRlc3RSZXN1bHRGb3JXaW5kb3dQb3MocG9zaXRpb24p
OworCisgICAgaWYgKHRvdWNoSGl0LmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSB0b3VjaEhpdC5pbm5lck5vZGUoKTsKKyAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gSWdub3JlIHdoZW4gdGFwcGluZyBvbiBsaW5rcyBvciBub2RlcyBsaXN0ZW5pbmcg
dG8gY2xpY2sgZXZlbnRzLCB1bmxlc3MgdGhlCisgICAgLy8gY2xpY2sgZXZlbnQgaXMgb24gdGhl
IGJvZHkgZWxlbWVudCBpbiB3aGljaCBjYXNlIGl0J3MgdW5saWtlbHkgdGhhdCB0aGUKKyAgICAv
LyBvcmlnaW5hbCBub2RlIGl0c2VsZiB3YXMgaW50ZW5kZWQgdG8gYmUgY2xpY2thYmxlLgorICAg
IGZvciAoOyBub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZyk7IG5v
ZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzTGluaygpCisg
ICAgICAgICAgICB8fCAodG91Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAKKyAg
ICAgICAgICAgICAgICAmJiAobm9kZS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpCisgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQpCisgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50KQorICAgICAg
ICAgICAgICAgICAgICB8fCBub2RlLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91
c2Vkb3duRXZlbnQpCisgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPmhhc0V2ZW50TGlzdGVu
ZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1bHQg
Y29udGVudCA9IG1fY2xpZW50LT5kZXRlY3RDb250ZW50QXJvdW5kKHRvdWNoSGl0KTsKKyAgICBp
ZiAoIWNvbnRlbnQuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
dG91Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpIHsKKyAgICAgICAg
Ly8gU2VsZWN0IHRoZSBkZXRlY3RlZCBjb250ZW50IGFzIGEgYmxvY2suCisgICAgICAgIGZvY3Vz
ZWRGcmFtZSgpLT5zZWxlY3RSYW5nZShjb250ZW50LnJhbmdlKCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUZW1wb3JhcmlseSBoaWdobGlnaHQgdGhlIGNvbnRlbnQg
YXMgd2UgZG8gd2l0aCBsaW5rcy4KKyAgICBXZWJDb2xvciB0YXBIaWdobGlnaHRDb2xvciA9IHRh
cEhpZ2hsaWdodENvbG9yRm9yTm9kZSh0b3VjaEhpdC5pbm5lck5vZGUoKSk7CisgICAgV2ViVmVj
dG9yPFdlYkZsb2F0UXVhZD4gcXVhZHMgPSBjb250ZW50LnJhbmdlKCkudGV4dFF1YWRzKCk7Cisg
ICAgc2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMocXVhZHMsIHRhcEhpZ2hsaWdodENvbG9yKTsKKwor
ICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29udGVudC5pbnRlbnQoKSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0
ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0YXRlKSB7CiAgICAgaWYgKCFw
YWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA2Mzlk
NWU2MWFkOWQwYjNkMmY1ZDJmZDc2NWIyYWJmNGMwZTZhOTI4Li40NDA5YzBiNjRhOWYzZGMxNDNk
MTQ4MmU0M2ZlMjM4ZGJlOWE0MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKQEAgLTMxLDE2ICszMSw2IEBACiAjaWZuZGVmIFdlYlZpZXdJbXBsX2gKICNkZWZp
bmUgV2ViVmlld0ltcGxfaAogCi0jaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJU
cmVlVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIK
LSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJl
Y3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50SW1wbC5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUg
IkRyYWdDbGllbnRJbXBsLmgiCkBAIC01Niw3ICs0NiwxOCBAQAogI2luY2x1ZGUgIlBhZ2VXaWRn
ZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAj
aW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQu
aCIKKyNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCisjaW5jbHVkZSAiV2ViVmlldy5o
IgogI2luY2x1ZGUgIldlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYkZsb2F0UXVhZC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJT
aXplLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTI4NCw2ICsyODUsOCBA
QCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAg
ICBpbnQgc2VwYXJhdG9ySW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlUG9wdXBzKCk7Cisg
ICAgLy8gRklYTUU6IEV4cG9zZSBzaG93VG91Y2hIaWdobGlnaHRRdWFkcyBpbiB0aGUgcHVibGlj
IFdlYlZpZXcgQVBJIHdoZW4gaXQgZG9lcyBzb21ldGhpbmcuCisgICAgdmlydHVhbCB2b2lkIHNo
b3dUb3VjaEhpZ2hsaWdodFF1YWRzKGNvbnN0IFdlYlZlY3RvcjxXZWJGbG9hdFF1YWQ+JiBoaWdo
bGlnaHQsIFdlYkNvbG9yIGhpZ2hsaWdodENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0
QXV0b2ZpbGxTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLApAQCAt
MzgyLDYgKzM4NSw4IEBAIHB1YmxpYzoKICAgICAvLyBFdmVudCByZWxhdGVkIG1ldGhvZHM6CiAg
ICAgdm9pZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOworCisgICAgYm9vbCBkZXRl
Y3RDb250ZW50T25Ub3VjaChjb25zdCBXZWJQb2ludCYsIFdlYklucHV0RXZlbnQ6OlR5cGUpOwog
ICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBk
dXJhdGlvbkluU2Vjb25kcyk7CiAKICAgICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJz
Q2hhbmdlZCh1bnNpZ25lZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155338</attachid>
            <date>2012-07-30 12:26:02 -0700</date>
            <delta_ts>2012-07-31 12:09:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92346-20120730122547.patch</filename>
            <type>text/plain</type>
            <size>8208</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDczYmYyYmQwMzc2OTA5M2NiNDczZjBhYzRhMDNiNWYxZWE0ZmE5MjcuLjA3YzAwMWExYTdiYzhl
NzJmNThjNGU2Yjk5ODE0ZWI2MDE4NmI3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTItMDctMzAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gV2Ugc2hvdWxkIGh1ZXJpc3RpY2FsbHkg
ZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBvbiB0b3VjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIzNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBPbiBBbmRyb2lkLCB3aGVuIHRoZSB1c2VyIHRvdWNoZXMg
YSBibG9jayBvZiB0ZXh0LCB3ZSBydW4gYSBidW5jaCBvZgorICAgICAgICBPUy1wcm92aWRlZCBo
dWVyaXN0aWNzIHRvIGRldGVjdCBjb250ZW50IGludGVudHMsIHN1Y2ggYXMgdGVsZXBob25lCisg
ICAgICAgIG51bWJlcnMgYW5kIG1haWxpbmcgYWRkcmVzc2VzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaW50cm9kdWNlcyB0aGUgV2ViVmlld0NsaWVudCBmdW5jdGlvbnMgYW5kIHRoZQorICAgICAg
ICBkZXRlY3RDb250ZW50SW50ZW50T25Ub3VjaCBmdW5jdGlvbiwgYnV0IGRvZXMgbm90IHdpcmUg
dGhlIGNvZGUgaW50bworICAgICAgICB0aGUgZXZlbnQgc3lzdGVtLiBUaGVyZSBhcmUgc29tZSBk
ZWNpc2lvbnMgdG8gbWFrZSBhYm91dCBob3cgdG8gd2lyZSBpdAorICAgICAgICBpbnRvIHRoZSBl
dmVudCBzeXN0ZW0sIHdlJ2xsIHRhY2tsZSBpbiB0aGUgbmV4dCBwYXRjaC4KKworICAgICAgICAq
IHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6
OmRldGVjdENvbnRlbnRJbnRlbnRBcm91bmQpOgorICAgICAgICAoV2ViVmlld0NsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnNjaGVkdWxlQ29udGVudEludGVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmNhbmNlbFNjaGVkdWxlZENvbnRlbnRJbnRl
bnRzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6dGFwSGlnaGxpZ2h0Q29sb3JGb3JOb2RlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNob3dUb3VjaEhpZ2hsaWdodFF1YWRzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmRldGVjdENvbnRlbnRJbnRlbnRPblRvdWNoKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0wNy0z
MCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1l
bnQgZGF0YWxpc3QgVUkgZm9yIGlucHV0IHR5cGUgY29sb3IgZm9yIENocm9taXVtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNjU5NjRhMTI4
Y2QzMzcyMDYzYmRmYjI0MmQ1NjA3Y2U3MTM0ZTFhYi4uYzU0MTFkOTE3YjE3ODhlMDAzNTM1ZWQy
YWNhNWIzNWU2Zjg4NTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXdDbGllbnQuaApAQCAtMzczLDcgKzM3MywxMyBAQCBwdWJsaWM6CiAgICAgLy8gYXJvdW5k
IGEgaGl0IHRlc3QgcmVzdWx0LiBUaGUgZW1iZWRkZXIgc2hvdWxkIHVzZSBwbGF0Zm9ybS1zcGVj
aWZpYwogICAgIC8vIGNvbnRlbnQgZGV0ZWN0b3JzIChlLmcuLCBmcm9tIHRoZSBBbmRyb2lkIGlu
dGVudCBzeXN0ZW0pIHRvIGFuYWx5emUgdGhlCiAgICAgLy8gcmVnaW9uIGFyb3VuZCB0aGUgaGl0
IHRlc3QgcmVzdWx0LgotICAgIHZpcnR1YWwgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCBkZXRl
Y3RDb250ZW50QXJvdW5kKGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQmKSB7IHJldHVybiBXZWJDb250
ZW50RGV0ZWN0aW9uUmVzdWx0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYkNvbnRlbnREZXRlY3Rpb25S
ZXN1bHQgZGV0ZWN0Q29udGVudEludGVudEFyb3VuZChjb25zdCBXZWJIaXRUZXN0UmVzdWx0Jikg
eyByZXR1cm4gV2ViQ29udGVudERldGVjdGlvblJlc3VsdCgpOyB9CisKKyAgICAvLyBTY2hlZHVs
ZXMgYSBuZXcgY29udGVudCBpbnRlbnQgd2l0aCB0aGUgcHJvdmlkZWQgdXJsLgorICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29uc3QgV2ViVVJMJikgeyB9CisKKyAgICAv
LyBDYW5jZWxzIGFueSBwcmV2aW91c2x5IHNjaGVkdWxlZCBjb250ZW50IGludGVudHMgdGhhdCBo
YXZlIG5vdCB5ZXQgbGF1bmNoZWQuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFNjaGVkdWxlZENv
bnRlbnRJbnRlbnRzKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDdjNmRh
NjBkOTNhYmY2ZjEzMGIwYjIxNzk3ZTBhMzMzNjI4MzcwNzguLmE0OTNhZWMzMTdlOGUzZjQyYjll
ZTA1ZWJmN2M2N2E5MWEwNmY1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTE1MCw2ICsxNTAsNyBAQAogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1NldHRpbmdzLmgiCiAjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3ND
b250ZXh0QnVpbGRlci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UXVhZC5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgpAQCAtMjI3
LDYgKzIyOCwxNiBAQCBzdGF0aWMgVmVjdG9yPFBhZ2VHcm91cExvYWREZWZlcnJlcio+JiBwYWdl
R3JvdXBMb2FkRGVmZXJyZXJTdGFjaygpCiAgICAgcmV0dXJuIGRlZmVycmVyU3RhY2s7CiB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorc3RhdGljIENvbG9yIHRhcEhpZ2hsaWdodENvbG9y
Rm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQoreworICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9y
ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpLnJnYigpOworICAgIGlm
IChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIHRhcEhpZ2hsaWdodENvbG9yID0g
bm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dGFwSGlnaGxpZ2h0Q29sb3IoKS5yZ2IoKTsKKyAg
ICByZXR1cm4gdGFwSGlnaGxpZ2h0Q29sb3I7Cit9CisjZW5kaWYKKwogLy8gRW5zdXJlIHRoYXQg
dGhlIFdlYkRyYWdPcGVyYXRpb24gZW51bSB2YWx1ZXMgc3RheSBpbiBzeW5jIHdpdGggdGhlIG9y
aWdpbmFsCiAvLyBEcmFnT3BlcmF0aW9uIGNvbnN0YW50cy4KICNkZWZpbmUgQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShjb3JlTmFtZSkgXApAQCAtMzc5OCwxMiArMzgwOSw1MSBAQCBXZWJH
cmFwaGljc0NvbnRleHQzRCogV2ViVmlld0ltcGw6OnNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKCkK
ICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3ND
b250ZXh0M0QoU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAordm9p
ZCBXZWJWaWV3SW1wbDo6c2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdl
YkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwgV2ViQ29sb3IgaGlnaGxpZ2h0Q29sb3IpCit7CisgICAg
Ly8gRklYTUU6IFVwc3RyZWFtIHRoaXMgZnVuY3Rpb24gZnJvbSB0aGUgY2hyb21pdW0tYW5kcm9p
ZCBicmFuY2guCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6
c2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uQXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7CiAg
ICAgaWYgKG1fYXV0b2ZpbGxQb3B1cENsaWVudCAmJiBsaXN0SW5kZXggPCBtX2F1dG9maWxsUG9w
dXBDbGllbnQtPmdldFN1Z2dlc3Rpb25zQ291bnQoKSkKICAgICAgICAgbV9hdXRvZmlsbFBvcHVw
Q2xpZW50LT52YWx1ZUNoYW5nZWQobGlzdEluZGV4KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6
ZGV0ZWN0Q29udGVudEludGVudE9uVG91Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJ
bnB1dEV2ZW50OjpUeXBlIHRvdWNoVHlwZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlVGFwIHx8IHR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQ
cmVzcyk7CisgICAgSGl0VGVzdFJlc3VsdCB0b3VjaEhpdCA9IGhpdFRlc3RSZXN1bHRGb3JXaW5k
b3dQb3MocG9zaXRpb24pOworCisgICAgaWYgKHRvdWNoSGl0LmlzQ29udGVudEVkaXRhYmxlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE5vZGUqIG5vZGUgPSB0b3VjaEhpdC5pbm5l
ck5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBub3QgZGV0ZWN0IGNvbnRl
bnQgaW50ZW50cyBpbiBub2RlcyB0aGF0IGhhdmUgZXZlbnQgbGlzdGVuZXJzPworCisgICAgV2Vi
Q29udGVudERldGVjdGlvblJlc3VsdCBjb250ZW50ID0gbV9jbGllbnQtPmRldGVjdENvbnRlbnRJ
bnRlbnRBcm91bmQodG91Y2hIaXQpOworICAgIGlmICghY29udGVudC5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh0b3VjaFR5cGUgPT0gV2ViSW5wdXRFdmVudDo6
R2VzdHVyZUxvbmdQcmVzcykgeworICAgICAgICAvLyBTZWxlY3QgdGhlIGRldGVjdGVkIGNvbnRl
bnQgYXMgYSBibG9jay4KKyAgICAgICAgZm9jdXNlZEZyYW1lKCktPnNlbGVjdFJhbmdlKGNvbnRl
bnQucmFuZ2UoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRlbXBv
cmFyaWx5IGhpZ2hsaWdodCB0aGUgY29udGVudCBhcyB3ZSBkbyB3aXRoIGxpbmtzLgorICAgIENv
bG9yIHRhcEhpZ2hsaWdodENvbG9yID0gdGFwSGlnaGxpZ2h0Q29sb3JGb3JOb2RlKHRvdWNoSGl0
LmlubmVyTm9kZSgpKTsKKyAgICBXZWJWZWN0b3I8V2ViRmxvYXRRdWFkPiBxdWFkcyA9IGNvbnRl
bnQucmFuZ2UoKS50ZXh0UXVhZHMoKTsKKyAgICBzaG93VG91Y2hIaWdobGlnaHRRdWFkcyhxdWFk
cywgdGFwSGlnaGxpZ2h0Q29sb3IucmdiKCkpOworCisgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29u
dGVudEludGVudChjb250ZW50LmludGVudCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUg
dmlzaWJpbGl0eVN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaXNJbml0aWFsU3RhdGUpIHsKICAgICBpZiAoIXBhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDYzOWQ1ZTYxYWQ5ZDBiM2QyZjVkMmZkNzY1YjJh
YmY0YzBlNmE5MjguLjBiMWRhMmEyN2Q1NjkxM2JlNjIwMDFhZWZiMDIwNTlhZmZjZDA4MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMzEsMTYgKzMxLDYg
QEAKICNpZm5kZWYgV2ViVmlld0ltcGxfaAogI2RlZmluZSBXZWJWaWV3SW1wbF9oCiAKLSNpbmNs
dWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBv
aW50LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlNpemUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJX
ZWJWaWV3LmgiCi0KICNpbmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEltcGwuaCIKQEAgLTU2
LDcgKzQ2LDE4IEBACiAjaW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJ
bXBsLmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYk5hdmlnYXRp
b25Qb2xpY3kuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViVmlld0JlbmNo
bWFya1N1cHBvcnRJbXBsLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
UmVjdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIApAQCAtMjg0LDYgKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3Qg
V2ViVmVjdG9yPGludD4mIGl0ZW1JRHMsCiAgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCk7CiAg
ICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cHMoKTsKKyAgICAvLyBGSVhNRTogRXhwb3NlIHNob3dU
b3VjaEhpZ2hsaWdodFF1YWRzIGluIHRoZSBwdWJsaWMgV2ViVmlldyBBUEkgd2hlbiBpdCBkb2Vz
IHNvbWV0aGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMoY29u
c3QgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwgV2ViQ29sb3IgaGlnaGxpZ2h0
Q29sb3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb25BdEluZGV4
KHVuc2lnbmVkIGxpc3RJbmRleCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNvbG9y
cyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgYWN0aXZlQ29sb3IsCkBAIC0zODIsNiArMzg1LDggQEAgcHVibGljOgog
ICAgIC8vIEV2ZW50IHJlbGF0ZWQgbWV0aG9kczoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUo
Y29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBX
ZWJNb3VzZUV2ZW50Jik7CisKKyAgICBib29sIGRldGVjdENvbnRlbnRJbnRlbnRPblRvdWNoKGNv
bnN0IFdlYlBvaW50JiwgV2ViSW5wdXRFdmVudDo6VHlwZSk7CiAgICAgdm9pZCBzdGFydFBhZ2VT
Y2FsZUFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJv
b2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzKTsK
IAogICAgIHZvaWQgbnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155603</attachid>
            <date>2012-07-31 12:09:11 -0700</date>
            <delta_ts>2012-07-31 13:04:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92346-20120731120854.patch</filename>
            <type>text/plain</type>
            <size>7680</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQyMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTA3LTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtLUFuZHJvaWRdIFdlIHNob3VsZCBodWVyaXN0aWNhbGx5IGRldGVjdCBjb250
ZW50IGludGVudHMgb24gdG91Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyMzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCisK
KyAgICAgICAgT24gQW5kcm9pZCwgd2hlbiB0aGUgdXNlciB0b3VjaGVzIGEgYmxvY2sgb2YgdGV4
dCwgd2UgcnVuIGEgYnVuY2ggb2YKKyAgICAgICAgT1MtcHJvdmlkZWQgaHVlcmlzdGljcyB0byBk
ZXRlY3QgY29udGVudCBpbnRlbnRzLCBzdWNoIGFzIHRlbGVwaG9uZQorICAgICAgICBudW1iZXJz
IGFuZCBtYWlsaW5nIGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMg
dGhlIFdlYlZpZXdDbGllbnQgZnVuY3Rpb25zIGFuZCB0aGUKKyAgICAgICAgZGV0ZWN0Q29udGVu
dEludGVudE9uVG91Y2ggZnVuY3Rpb24sIGJ1dCBkb2VzIG5vdCB3aXJlIHRoZSBjb2RlIGludG8K
KyAgICAgICAgdGhlIGV2ZW50IHN5c3RlbS4gVGhlcmUgYXJlIHNvbWUgZGVjaXNpb25zIHRvIG1h
a2UgYWJvdXQgaG93IHRvIHdpcmUgaXQKKyAgICAgICAgaW50byB0aGUgZXZlbnQgc3lzdGVtLCB3
ZSdsbCB0YWNrbGUgaW4gdGhlIG5leHQgcGF0Y2guCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
d0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkZXRlY3RDb250ZW50
SW50ZW50QXJvdW5kKToKKyAgICAgICAgKFdlYlZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpzY2hlZHVsZUNvbnRlbnRJbnRlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpjYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cyk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OnRhcEhpZ2hsaWdodENvbG9yRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzaG93VG91Y2hIaWdobGlnaHRRdWFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkZXRlY3RDb250ZW50SW50ZW50T25Ub3VjaCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDctMzAgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBUeXBvOiBkb3VibGVUYSpiKlpvb21Bbmlt
YXRpb25EdXJhdGlvbkluU2Vjb25kcyBpbiBXZWJWaWV3SW1wbC5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDEyNDIz
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzczLDcgKzM3MywxMyBAQCBwdWJsaWM6CiAgICAgLy8gYXJvdW5kIGEg
aGl0IHRlc3QgcmVzdWx0LiBUaGUgZW1iZWRkZXIgc2hvdWxkIHVzZSBwbGF0Zm9ybS1zcGVjaWZp
YwogICAgIC8vIGNvbnRlbnQgZGV0ZWN0b3JzIChlLmcuLCBmcm9tIHRoZSBBbmRyb2lkIGludGVu
dCBzeXN0ZW0pIHRvIGFuYWx5emUgdGhlCiAgICAgLy8gcmVnaW9uIGFyb3VuZCB0aGUgaGl0IHRl
c3QgcmVzdWx0LgotICAgIHZpcnR1YWwgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCBkZXRlY3RD
b250ZW50QXJvdW5kKGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQmKSB7IHJldHVybiBXZWJDb250ZW50
RGV0ZWN0aW9uUmVzdWx0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1
bHQgZGV0ZWN0Q29udGVudEludGVudEFyb3VuZChjb25zdCBXZWJIaXRUZXN0UmVzdWx0JikgeyBy
ZXR1cm4gV2ViQ29udGVudERldGVjdGlvblJlc3VsdCgpOyB9CisKKyAgICAvLyBTY2hlZHVsZXMg
YSBuZXcgY29udGVudCBpbnRlbnQgd2l0aCB0aGUgcHJvdmlkZWQgdXJsLgorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29uc3QgV2ViVVJMJikgeyB9CisKKyAgICAvLyBD
YW5jZWxzIGFueSBwcmV2aW91c2x5IHNjaGVkdWxlZCBjb250ZW50IGludGVudHMgdGhhdCBoYXZl
IG5vdCB5ZXQgbGF1bmNoZWQuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFNjaGVkdWxlZENvbnRl
bnRJbnRlbnRzKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNp
b24gMTI0MjMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDE2IEBAIHN0YXRpYyBWZWN0b3I8UGFnZUdy
b3VwTG9hZERlZmVycmVyKj4mIHAKICAgICByZXR1cm4gZGVmZXJyZXJTdGFjazsKIH0KIAorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCitzdGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3JGb3JO
b2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IgPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkucmdiKCk7CisgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgdGFwSGlnaGxpZ2h0Q29sb3IgPSBub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT50YXBIaWdobGlnaHRDb2xvcigpLnJnYigpOworICAgIHJl
dHVybiB0YXBIaWdobGlnaHRDb2xvcjsKK30KKyNlbmRpZgorCiAvLyBFbnN1cmUgdGhhdCB0aGUg
V2ViRHJhZ09wZXJhdGlvbiBlbnVtIHZhbHVlcyBzdGF5IGluIHN5bmMgd2l0aCB0aGUgb3JpZ2lu
YWwKIC8vIERyYWdPcGVyYXRpb24gY29uc3RhbnRzLgogI2RlZmluZSBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKGNvcmVOYW1lKSBcCkBAIC0zNzk5LDEyICszODA5LDUxIEBAIFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6c2hhcmUKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2hvd1RvdWNo
SGlnaGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwg
V2ViQ29sb3IgaGlnaGxpZ2h0Q29sb3IpCit7CisgICAgLy8gRklYTUU6IFVwc3RyZWFtIHRoaXMg
ZnVuY3Rpb24gZnJvbSB0aGUgY2hyb21pdW0tYW5kcm9pZCBicmFuY2guCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9u
QXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7CiAgICAgaWYgKG1fYXV0b2ZpbGxQb3B1cENs
aWVudCAmJiBsaXN0SW5kZXggPCBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmdldFN1Z2dlc3Rpb25z
Q291bnQoKSkKICAgICAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQobGlz
dEluZGV4KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudEludGVudE9uVG91
Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjpUeXBlIHRvdWNoVHlw
ZSkKK3sKKyAgICBBU1NFUlQodHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwIHx8IHR5
cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcyk7CisgICAgSGl0VGVzdFJlc3Vs
dCB0b3VjaEhpdCA9IGhpdFRlc3RSZXN1bHRGb3JXaW5kb3dQb3MocG9zaXRpb24pOworCisgICAg
aWYgKHRvdWNoSGl0LmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIE5vZGUqIG5vZGUgPSB0b3VjaEhpdC5pbm5lck5vZGUoKTsKKyAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
RklYTUU6IFNob3VsZCB3ZSBub3QgZGV0ZWN0IGNvbnRlbnQgaW50ZW50cyBpbiBub2RlcyB0aGF0
IGhhdmUgZXZlbnQgbGlzdGVuZXJzPworCisgICAgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCBj
b250ZW50ID0gbV9jbGllbnQtPmRldGVjdENvbnRlbnRJbnRlbnRBcm91bmQodG91Y2hIaXQpOwor
ICAgIGlmICghY29udGVudC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICh0b3VjaFR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUxvbmdQcmVzcykgeworICAg
ICAgICAvLyBTZWxlY3QgdGhlIGRldGVjdGVkIGNvbnRlbnQgYXMgYSBibG9jay4KKyAgICAgICAg
Zm9jdXNlZEZyYW1lKCktPnNlbGVjdFJhbmdlKGNvbnRlbnQucmFuZ2UoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFRlbXBvcmFyaWx5IGhpZ2hsaWdodCB0aGUgY29u
dGVudCBhcyB3ZSBkbyB3aXRoIGxpbmtzLgorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yID0g
dGFwSGlnaGxpZ2h0Q29sb3JGb3JOb2RlKHRvdWNoSGl0LmlubmVyTm9kZSgpKTsKKyAgICBXZWJW
ZWN0b3I8V2ViRmxvYXRRdWFkPiBxdWFkcyA9IGNvbnRlbnQucmFuZ2UoKS50ZXh0UXVhZHMoKTsK
KyAgICBzaG93VG91Y2hIaWdobGlnaHRRdWFkcyhxdWFkcywgdGFwSGlnaGxpZ2h0Q29sb3Iucmdi
KCkpOworCisgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29udGVudEludGVudChjb250ZW50LmludGVu
dCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJp
bGl0eVN0YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNJbml0aWFsU3RhdGUpIHsKICAg
ICBpZiAoIXBhZ2UoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAkocmV2aXNpb24gMTI0MjMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDYgQEAKICNpZm5kZWYgV2Vi
Vmlld0ltcGxfaAogI2RlZmluZSBXZWJWaWV3SW1wbF9oCiAKLSNpbmNsdWRlICJXZWJOYXZpZ2F0
aW9uUG9saWN5LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJU
cmVlVmlld0NsaWVudC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUmVjdC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJWaWV3LmgiCi0KICNp
bmNsdWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEltcGwuaCIKQEAgLTU2LDcgKzQ2LDE4IEBACiAj
aW5jbHVkZSAiUGFnZVdpZGdldERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJbXBsLmgiCisjaW5jbHVk
ZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKKyNp
bmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBs
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTGF5ZXIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3LmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlBvaW50LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApA
QCAtMjg0LDYgKzI4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgV2ViVmVjdG9yPGludD4m
IGl0ZW1JRHMsCiAgICAgICAgIGludCBzZXBhcmF0b3JJbmRleCk7CiAgICAgdmlydHVhbCB2b2lk
IGhpZGVQb3B1cHMoKTsKKyAgICAvLyBGSVhNRTogRXhwb3NlIHNob3dUb3VjaEhpZ2hsaWdodFF1
YWRzIGluIHRoZSBwdWJsaWMgV2ViVmlldyBBUEkgd2hlbiBpdCBkb2VzIHNvbWV0aGluZy4KKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdl
YkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwgV2ViQ29sb3IgaGlnaGxpZ2h0Q29sb3IpOwogICAgIHZp
cnR1YWwgdm9pZCBzZWxlY3RBdXRvZmlsbFN1Z2dlc3Rpb25BdEluZGV4KHVuc2lnbmVkIGxpc3RJ
bmRleCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFj
dGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
YWN0aXZlQ29sb3IsCkBAIC0zODIsNiArMzg1LDggQEAgcHVibGljOgogICAgIC8vIEV2ZW50IHJl
bGF0ZWQgbWV0aG9kczoKICAgICB2b2lkIG1vdXNlQ29udGV4dE1lbnUoY29uc3QgV2ViTW91c2VF
dmVudCYpOwogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7
CisKKyAgICBib29sIGRldGVjdENvbnRlbnRJbnRlbnRPblRvdWNoKGNvbnN0IFdlYlBvaW50Jiwg
V2ViSW5wdXRFdmVudDo6VHlwZSk7CiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBuZXdTY2FsZSwgZG91YmxlIGR1cmF0aW9uSW5TZWNvbmRzKTsKIAogICAgIHZvaWQgbnVt
YmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155613</attachid>
            <date>2012-07-31 13:05:02 -0700</date>
            <delta_ts>2012-08-17 07:57:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92346-20120731130445.patch</filename>
            <type>text/plain</type>
            <size>7690</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQyMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTA3LTMxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW0Nocm9taXVtLUFuZHJvaWRdIFdlIHNob3VsZCBodWVyaXN0aWNhbGx5IGRldGVjdCBjb250
ZW50IGludGVudHMgb24gdG91Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyMzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCisK
KyAgICAgICAgT24gQW5kcm9pZCwgd2hlbiB0aGUgdXNlciB0b3VjaGVzIGEgYmxvY2sgb2YgdGV4
dCwgd2UgcnVuIGEgYnVuY2ggb2YKKyAgICAgICAgT1MtcHJvdmlkZWQgaHVlcmlzdGljcyB0byBk
ZXRlY3QgY29udGVudCBpbnRlbnRzLCBzdWNoIGFzIHRlbGVwaG9uZQorICAgICAgICBudW1iZXJz
IGFuZCBtYWlsaW5nIGFkZHJlc3Nlcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMg
dGhlIFdlYlZpZXdDbGllbnQgZnVuY3Rpb25zIGFuZCB0aGUKKyAgICAgICAgZGV0ZWN0Q29udGVu
dEludGVudE9uVG91Y2ggZnVuY3Rpb24sIGJ1dCBkb2VzIG5vdCB3aXJlIHRoZSBjb2RlIGludG8K
KyAgICAgICAgdGhlIGV2ZW50IHN5c3RlbS4gVGhlcmUgYXJlIHNvbWUgZGVjaXNpb25zIHRvIG1h
a2UgYWJvdXQgaG93IHRvIHdpcmUgaXQKKyAgICAgICAgaW50byB0aGUgZXZlbnQgc3lzdGVtLCB3
ZSdsbCB0YWNrbGUgaW4gdGhlIG5leHQgcGF0Y2guCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmll
d0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkZXRlY3RDb250ZW50
SW50ZW50QXJvdW5kKToKKyAgICAgICAgKFdlYlZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpzY2hlZHVsZUNvbnRlbnRJbnRlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3Q2xpZW50OjpjYW5jZWxTY2hlZHVsZWRDb250ZW50SW50ZW50cyk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OnRhcEhpZ2hsaWdodENvbG9yRm9yTm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzaG93VG91Y2hIaWdobGlnaHRRdWFkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkZXRlY3RDb250ZW50SW50ZW50T25Ub3VjaCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMDctMzAgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBUeXBvOiBkb3VibGVUYSpiKlpvb21Bbmlt
YXRpb25EdXJhdGlvbkluU2Vjb25kcyBpbiBXZWJWaWV3SW1wbC5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJKHJldmlzaW9uIDEyNDIz
MykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzczLDcgKzM3MywxMyBAQCBwdWJsaWM6CiAgICAgLy8gYXJvdW5kIGEg
aGl0IHRlc3QgcmVzdWx0LiBUaGUgZW1iZWRkZXIgc2hvdWxkIHVzZSBwbGF0Zm9ybS1zcGVjaWZp
YwogICAgIC8vIGNvbnRlbnQgZGV0ZWN0b3JzIChlLmcuLCBmcm9tIHRoZSBBbmRyb2lkIGludGVu
dCBzeXN0ZW0pIHRvIGFuYWx5emUgdGhlCiAgICAgLy8gcmVnaW9uIGFyb3VuZCB0aGUgaGl0IHRl
c3QgcmVzdWx0LgotICAgIHZpcnR1YWwgV2ViQ29udGVudERldGVjdGlvblJlc3VsdCBkZXRlY3RD
b250ZW50QXJvdW5kKGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQmKSB7IHJldHVybiBXZWJDb250ZW50
RGV0ZWN0aW9uUmVzdWx0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYkNvbnRlbnREZXRlY3Rpb25SZXN1
bHQgZGV0ZWN0Q29udGVudEludGVudEFyb3VuZChjb25zdCBXZWJIaXRUZXN0UmVzdWx0JikgeyBy
ZXR1cm4gV2ViQ29udGVudERldGVjdGlvblJlc3VsdCgpOyB9CisKKyAgICAvLyBTY2hlZHVsZXMg
YSBuZXcgY29udGVudCBpbnRlbnQgd2l0aCB0aGUgcHJvdmlkZWQgdXJsLgorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29uc3QgV2ViVVJMJikgeyB9CisKKyAgICAvLyBD
YW5jZWxzIGFueSBwcmV2aW91c2x5IHNjaGVkdWxlZCBjb250ZW50IGludGVudHMgdGhhdCBoYXZl
IG5vdCB5ZXQgbGF1bmNoZWQuCisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFNjaGVkdWxlZENvbnRl
bnRJbnRlbnRzKCkgeyB9CiAKIHByb3RlY3RlZDoKICAgICB+V2ViVmlld0NsaWVudCgpIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNp
b24gMTI0MjMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDE2IEBAIHN0YXRpYyBWZWN0b3I8UGFnZUdy
b3VwTG9hZERlZmVycmVyKj4mIHAKICAgICByZXR1cm4gZGVmZXJyZXJTdGFjazsKIH0KIAorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCitzdGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3JGb3JO
b2RlKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IgPSBS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkucmdiKCk7CisgICAgaWYgKG5v
ZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgdGFwSGlnaGxpZ2h0Q29sb3IgPSBub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT50YXBIaWdobGlnaHRDb2xvcigpLnJnYigpOworICAgIHJl
dHVybiB0YXBIaWdobGlnaHRDb2xvcjsKK30KKyNlbmRpZgorCiAvLyBFbnN1cmUgdGhhdCB0aGUg
V2ViRHJhZ09wZXJhdGlvbiBlbnVtIHZhbHVlcyBzdGF5IGluIHN5bmMgd2l0aCB0aGUgb3JpZ2lu
YWwKIC8vIERyYWdPcGVyYXRpb24gY29uc3RhbnRzLgogI2RlZmluZSBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKGNvcmVOYW1lKSBcCkBAIC0zNzk5LDEyICszODA5LDUxIEBAIFdlYkdyYXBo
aWNzQ29udGV4dDNEKiBXZWJWaWV3SW1wbDo6c2hhcmUKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoU2hhcmVkR3JhcGhpY3ND
b250ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2hvd1RvdWNo
SGlnaGxpZ2h0UXVhZHMoY29uc3QgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4mIGhpZ2hsaWdodCwg
V2ViQ29sb3IgaGlnaGxpZ2h0Q29sb3IpCit7CisgICAgLy8gRklYTUU6IFVwc3RyZWFtIHRoaXMg
ZnVuY3Rpb24gZnJvbSB0aGUgY2hyb21pdW0tYW5kcm9pZCBicmFuY2guCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwogdm9pZCBXZWJWaWV3SW1wbDo6c2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9u
QXRJbmRleCh1bnNpZ25lZCBsaXN0SW5kZXgpCiB7CiAgICAgaWYgKG1fYXV0b2ZpbGxQb3B1cENs
aWVudCAmJiBsaXN0SW5kZXggPCBtX2F1dG9maWxsUG9wdXBDbGllbnQtPmdldFN1Z2dlc3Rpb25z
Q291bnQoKSkKICAgICAgICAgbV9hdXRvZmlsbFBvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQobGlz
dEluZGV4KTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6ZGV0ZWN0Q29udGVudEludGVudE9uVG91
Y2goY29uc3QgV2ViUG9pbnQmIHBvc2l0aW9uLCBXZWJJbnB1dEV2ZW50OjpUeXBlIHRvdWNoVHlw
ZSkKK3sKKyAgICBBU1NFUlQodG91Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXAg
fHwgdG91Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3MpOworICAgIEhp
dFRlc3RSZXN1bHQgdG91Y2hIaXQgPSBoaXRUZXN0UmVzdWx0Rm9yV2luZG93UG9zKHBvc2l0aW9u
KTsKKworICAgIGlmICh0b3VjaEhpdC5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBOb2RlKiBub2RlID0gdG91Y2hIaXQuaW5uZXJOb2RlKCk7CisgICAg
aWYgKCFub2RlIHx8ICFub2RlLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugbm90IGRldGVjdCBjb250ZW50IGludGVudHMgaW4g
bm9kZXMgdGhhdCBoYXZlIGV2ZW50IGxpc3RlbmVycz8KKworICAgIFdlYkNvbnRlbnREZXRlY3Rp
b25SZXN1bHQgY29udGVudCA9IG1fY2xpZW50LT5kZXRlY3RDb250ZW50SW50ZW50QXJvdW5kKHRv
dWNoSGl0KTsKKyAgICBpZiAoIWNvbnRlbnQuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAodG91Y2hUeXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJl
c3MpIHsKKyAgICAgICAgLy8gU2VsZWN0IHRoZSBkZXRlY3RlZCBjb250ZW50IGFzIGEgYmxvY2su
CisgICAgICAgIGZvY3VzZWRGcmFtZSgpLT5zZWxlY3RSYW5nZShjb250ZW50LnJhbmdlKCkpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBUZW1wb3JhcmlseSBoaWdobGln
aHQgdGhlIGNvbnRlbnQgYXMgd2UgZG8gd2l0aCBsaW5rcy4KKyAgICBDb2xvciB0YXBIaWdobGln
aHRDb2xvciA9IHRhcEhpZ2hsaWdodENvbG9yRm9yTm9kZSh0b3VjaEhpdC5pbm5lck5vZGUoKSk7
CisgICAgV2ViVmVjdG9yPFdlYkZsb2F0UXVhZD4gcXVhZHMgPSBjb250ZW50LnJhbmdlKCkudGV4
dFF1YWRzKCk7CisgICAgc2hvd1RvdWNoSGlnaGxpZ2h0UXVhZHMocXVhZHMsIHRhcEhpZ2hsaWdo
dENvbG9yLnJnYigpKTsKKworICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbnRlbnRJbnRlbnQoY29u
dGVudC5pbnRlbnQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6
OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzSW5pdGlhbFN0
YXRlKSB7CiAgICAgaWYgKCFwYWdlKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDEyNDIzMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE2ICszMSw2IEBACiAj
aWZuZGVmIFdlYlZpZXdJbXBsX2gKICNkZWZpbmUgV2ViVmlld0ltcGxfaAogCi0jaW5jbHVkZSAi
V2ViTmF2aWdhdGlvblBvbGljeS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCi0j
aW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmlldy5oIgotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5o
IgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJT
aXplLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVmll
dy5oIgotCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkNvbnRleHRN
ZW51Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRJbXBsLmgiCkBAIC01Niw3ICs0
NiwxOCBAQAogI2luY2x1ZGUgIlBhZ2VXaWRnZXREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5o
IgorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9s
aWN5LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdCZW5jaG1hcmtT
dXBwb3J0SW1wbC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UXVhZC5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTGF5ZXJUcmVl
Vmlldy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlJlY3Qu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTI4NCw2ICsyODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFdlYlZl
Y3RvcjxpbnQ+JiBpdGVtSURzLAogICAgICAgICBpbnQgc2VwYXJhdG9ySW5kZXgpOwogICAgIHZp
cnR1YWwgdm9pZCBoaWRlUG9wdXBzKCk7CisgICAgLy8gRklYTUU6IEV4cG9zZSBzaG93VG91Y2hI
aWdobGlnaHRRdWFkcyBpbiB0aGUgcHVibGljIFdlYlZpZXcgQVBJIHdoZW4gaXQgZG9lcyBzb21l
dGhpbmcuCisgICAgdmlydHVhbCB2b2lkIHNob3dUb3VjaEhpZ2hsaWdodFF1YWRzKGNvbnN0IFdl
YlZlY3RvcjxXZWJGbG9hdFF1YWQ+JiBoaWdobGlnaHQsIFdlYkNvbG9yIGhpZ2hsaWdodENvbG9y
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXV0b2ZpbGxTdWdnZXN0aW9uQXRJbmRleCh1bnNp
Z25lZCBsaXN0SW5kZXgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnModW5z
aWduZWQgaW5hY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFjdGl2ZUNvbG9yLApAQCAtMzgyLDYgKzM4NSw4IEBAIHB1YmxpYzoKICAgICAv
LyBFdmVudCByZWxhdGVkIG1ldGhvZHM6CiAgICAgdm9pZCBtb3VzZUNvbnRleHRNZW51KGNvbnN0
IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIG1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91
c2VFdmVudCYpOworCisgICAgYm9vbCBkZXRlY3RDb250ZW50SW50ZW50T25Ub3VjaChjb25zdCBX
ZWJQb2ludCYsIFdlYklucHV0RXZlbnQ6OlR5cGUpOwogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvbkluU2Vjb25kcyk7CiAKICAg
ICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>