<?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>147848</bug_id>
          
          <creation_ts>2015-08-10 15:37:16 -0700</creation_ts>
          <short_desc>Invalid FrameView::m_viewportRenderer after layout is finished.</short_desc>
          <delta_ts>2016-06-13 18:10:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>davidkclark</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116360</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-10 15:37:16 -0700</bug_when>
    <thetext>0   WebCore                       	0x000000019680c128 WebCore::FrameView::contentsSizeRespectingOverflow() const + 128 (RenderStyle.h:306)
1   WebCore                       	0x000000019680c120 WebCore::FrameView::contentsSizeRespectingOverflow() const + 120 (FrameView.cpp:629)
2   WebKit                        	0x000000018acb73e0 WebKit::WebPage::mainFrameDidLayout() + 128 (WebPage.cpp:3522)
3   WebCore                       	0x00000001963bf3f0 WebCore::FrameView::performPostLayoutTasks() + 164 (FrameView.cpp:3045)
4   WebCore                       	0x00000001963ba964 WebCore::FrameView::layout(bool) + 496 (TemporaryChange.h:55)
5   WebCore                       	0x00000001966c32c8 WebCore::Document::updateLayoutIfDimensionsOutOfDate(WebCore::Element&amp;, WebCore::DimensionsCheck) + 1312 (Document.cpp:2036)
6   WebCore                       	0x0000000196475a50 WebCore::Element::clientWidth() + 40 (Node.h:395)
7   WebCore                       	0x0000000196a7d39c WebCore::jsElementClientWidth(JSC::ExecState*, JSC::JSObject*, long long, JSC::PropertyName) + 48 (JSCJSValueInlines.h:141)
8   JavaScriptCore                	0x000000018608d590 JSC::LLInt::getByVal(JSC::ExecState*, JSC::JSValue, JSC::JSValue) + 3284 (PropertySlot.h:257)
9   JavaScriptCore                	0x000000018606c110 llint_slow_path_get_by_val + 180 (LLIntSlowPaths.cpp:749)
10  JavaScriptCore                	0x00000001864b331c llint_entry + 12620
11  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
12  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
13  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
14  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
15  ???                           	0x000000014b09cbc0 0 + 5553900480
16  JavaScriptCore                	0x00000001864b5dd0 llint_entry + 23552
17  JavaScriptCore                	0x00000001864b6004 llint_entry + 24116
18  JavaScriptCore                	0x00000001864b5dd0 llint_entry + 23552
19  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
20  JavaScriptCore                	0x00000001864b6004 llint_entry + 24116
21  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
22  JavaScriptCore                	0x00000001864b6004 llint_entry + 24116
23  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
24  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
25  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
26  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
27  JavaScriptCore                	0x00000001864b5e34 llint_entry + 23652
28  JavaScriptCore                	0x00000001864affb8 vmEntryToJavaScript + 312
29  JavaScriptCore                	0x00000001863dcd04 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 180 (VM.h:384)
30  JavaScriptCore                	0x000000018605e39c JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) + 8204 (Interpreter.cpp:901)
31  JavaScriptCore                	0x00000001861b65e8 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 440 (Completion.cpp:82)
32  WebCore                       	0x0000000196f1ad28 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;) + 292 (JSMainThreadExecState.h:62)
33  WebCore                       	0x000000019636aa54 WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) + 340 (ScriptElement.cpp:309)
34  WebCore                       	0x00000001964a89bc WebCore::ScriptElement::execute(WebCore::CachedScript*) + 188 (StdLibExtras.h:374)
35  WebCore                       	0x0000000196f2134c WebCore::ScriptRunner::timerFired() + 468 (ScriptRunner.cpp:122)
36  WebCore                       	0x0000000196342ca8 WebCore::ThreadTimers::sharedTimerFiredInternal() + 148 (ThreadTimers.cpp:135)
37  WebCore                       	0x0000000196342be8 WebCore::timerFired(__CFRunLoopTimer*, void*) + 36 (SharedTimerCF.cpp:82)
38  CoreFoundation                	0x00000001849c97d4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28 (CFRunLoop.c:1630)
39  CoreFoundation                	0x00000001849c9478 __CFRunLoopDoTimer + 884 (CFRunLoop.c:2168)
40  CoreFoundation                	0x00000001849c6b8c __CFRunLoopRun + 1520 (CFRunLoop.c:2306)
41  CoreFoundation                	0x00000001848f58a0 CFRunLoopRunSpecific + 384 (CFRunLoop.c:2814)
42  Foundation                    	0x000000018586894c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308 (NSRunLoop.m:367)
43  Foundation                    	0x00000001858bdf74 -[NSRunLoop(NSRunLoop) run] + 88 (NSRunLoop.m:388)
44  libxpc.dylib                  	0x0000000199eccd4c _xpc_objc_main + 660 (main.m:177)
45  libxpc.dylib                  	0x0000000199ecea80 xpc_main + 200 (init.c:1395)
46  com.apple.WebKit.WebContent   	0x00000001000ab924 main + 56 (XPCServiceMain.mm:89)
47  libdyld.dylib                 	0x0000000199caa8b8 start + 4 (start_glue.s:80)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116361</commentid>
    <comment_count>1</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-10 15:37:33 -0700</bug_when>
    <thetext>rdar://problem/22205197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116362</commentid>
    <comment_count>2</comment_count>
      <attachid>258659</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-10 15:40:45 -0700</bug_when>
    <thetext>Created attachment 258659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116363</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-10 15:41:06 -0700</bug_when>
    <thetext>Need to construct a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116586</commentid>
    <comment_count>4</comment_count>
      <attachid>258726</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 10:53:43 -0700</bug_when>
    <thetext>Created attachment 258726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116606</commentid>
    <comment_count>5</comment_count>
      <attachid>258726</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-11 11:34:32 -0700</bug_when>
    <thetext>Comment on attachment 258726
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:624
&gt; +    if (!renderView || !viewportRenderer || !is&lt;RenderBox&gt;(viewportRenderer) || !frame().isMainFrame())

This:

    !viewportRenderer || !is&lt;RenderBox&gt;(viewportRenderer)

Is the same as this:

    !is&lt;RenderBox&gt;(viewportRenderer)

So I think we should remove the extra null check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116608</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 11:35:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 258726 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258726&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameView.cpp:624
&gt; &gt; +    if (!renderView || !viewportRenderer || !is&lt;RenderBox&gt;(viewportRenderer) || !frame().isMainFrame())
&gt; 
&gt; This:
&gt; 
&gt;     !viewportRenderer || !is&lt;RenderBox&gt;(viewportRenderer)
&gt; 
&gt; Is the same as this:
&gt; 
&gt;     !is&lt;RenderBox&gt;(viewportRenderer)
&gt; 
&gt; So I think we should remove the extra null check.
Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116658</commentid>
    <comment_count>7</comment_count>
      <attachid>258740</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 12:54:23 -0700</bug_when>
    <thetext>Created attachment 258740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116725</commentid>
    <comment_count>8</comment_count>
      <attachid>258740</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 14:50:53 -0700</bug_when>
    <thetext>Comment on attachment 258740
Patch

Clearing flags on attachment: 258740

Committed r188298: &lt;http://trac.webkit.org/changeset/188298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116726</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-11 14:50:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116836</commentid>
    <comment_count>10</comment_count>
      <attachid>258740</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-08-11 19:59:18 -0700</bug_when>
    <thetext>Comment on attachment 258740
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:758
&gt; +    auto documentElement = document-&gt;documentElement();

Shouldn&apos;t this be of type &quot;auto*&quot; as it is later in the patch?

    auto* documentElement = document-&gt;documentElement();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116837</commentid>
    <comment_count>11</comment_count>
      <attachid>258740</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 20:03:17 -0700</bug_when>
    <thetext>Comment on attachment 258740
Patch

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

&gt;&gt; Source/WebCore/page/FrameView.cpp:758
&gt;&gt; +    auto documentElement = document-&gt;documentElement();
&gt; 
&gt; Shouldn&apos;t this be of type &quot;auto*&quot; as it is later in the patch?
&gt; 
&gt;     auto* documentElement = document-&gt;documentElement();

It should! I&apos;ll fix it in one of my upcoming patches. (note: it does not change functionality)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202034</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-13 18:10:26 -0700</bug_when>
    <thetext>*** Bug 149495 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258659</attachid>
            <date>2015-08-10 15:40:45 -0700</date>
            <delta_ts>2015-08-11 10:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147848-20150810154030.patch</filename>
            <type>text/plain</type>
            <size>10857</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjExNWE2NjFlMjQ0Njg1
MDU4MDdiMWM2OWZkYTU4NjQxZTg0NmIwMS4uOTg1MWYxNGFjZDE1ZGIzYTkwOTQ2MmQ0ODE5YmVi
YWE5YWU4OGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTA4LTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW52YWxpZCBGcmFtZVZpZXc6
Om1fdmlld3BvcnRSZW5kZXJlciBhZnRlciBsYXlvdXQgaXMgZmluaXNoZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4NDgKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vMjIyMDUxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6Y29udGVudHNTaXplUmVzcGVjdGluZ092ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnZpZXdwb3J0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3Ojp1cGRhdGVPdmVyZmxvd1N0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OkZyYW1lVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
aDoKKwogMjAxNS0wOC0wNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhwYW5kIG5ldHdvcmsgY2FjaGUgdGVzdHMgdG8gY292ZXIgbWVtb3J5IGNhY2hlIGJl
aGF2aW9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWNmMTM4MDlhNTk5NjM2NzNi
NTNmMjYwMDgwNmVlNDAzN2MzOTU2MC4uZGZlNjliYWFlNTAwZWM0MDY5NTc1MWZhMzliYTZlOGYx
NzgyZjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTcyLDcgKzE3Miw2IEBA
IEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lJiBmcmFtZSkKICAgICAsIG1fYmFzZUJhY2tncm91
bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX21lZGlhVHlwZSgic2NyZWVuIikKICAgICAs
IG1fb3ZlcmZsb3dTdGF0dXNEaXJ0eSh0cnVlKQotICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKG51
bGxwdHIpCiAgICAgLCBtX3dhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dy
YW1tYXRpY1Njcm9sbChmYWxzZSkKICAgICAsIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJl
bnQodHJ1ZSkKQEAgLTYyMSwxOCArNjIwLDE5IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3
U2l6ZSgpCiBJbnRTaXplIEZyYW1lVmlldzo6Y29udGVudHNTaXplUmVzcGVjdGluZ092ZXJmbG93
KCkgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmll
dygpOwotICAgIGlmICghcmVuZGVyVmlldyB8fCAhbV92aWV3cG9ydFJlbmRlcmVyIHx8ICFpczxS
ZW5kZXJCb3g+KG1fdmlld3BvcnRSZW5kZXJlcikgfHwgIWZyYW1lKCkuaXNNYWluRnJhbWUoKSkK
KyAgICBhdXRvKiB2aWV3cG9ydFJlbmRlcmVyID0gdGhpcy0+dmlld3BvcnRSZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyVmlldyB8fCAhdmlld3BvcnRSZW5kZXJlciB8fCAhaXM8UmVuZGVyQm94
Pih2aWV3cG9ydFJlbmRlcmVyKSB8fCAhZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gY29udGVudHNTaXplKCk7CiAKICAgICBBU1NFUlQoZnJhbWUoKS52aWV3KCkgPT0gdGhp
cyk7CiAKICAgICBGbG9hdFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJWaWV3LT51bnNjYWxlZERv
Y3VtZW50UmVjdCgpOwotICAgIFJlbmRlckJveCYgdmlld3BvcnRSZW5kZXJlckJveCA9IGRvd25j
YXN0PFJlbmRlckJveD4oKm1fdmlld3BvcnRSZW5kZXJlcik7CisgICAgUmVuZGVyQm94JiB2aWV3
cG9ydFJlbmRlcmVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94Pigqdmlld3BvcnRSZW5kZXJlcik7
CiAKLSAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9I
SURERU4pCisgICAgaWYgKHZpZXdwb3J0UmVuZGVyZXJCb3guc3R5bGUoKS5vdmVyZmxvd1goKSA9
PSBPSElEREVOKQogICAgICAgICBjb250ZW50UmVjdC5zZXRXaWR0aChzdGQ6Om1pbjxmbG9hdD4o
Y29udGVudFJlY3Qud2lkdGgoKSwgdmlld3BvcnRSZW5kZXJlckJveC5mcmFtZVJlY3QoKS53aWR0
aCgpKSk7CiAKLSAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WSgp
ID09IE9ISURERU4pCisgICAgaWYgKHZpZXdwb3J0UmVuZGVyZXJCb3guc3R5bGUoKS5vdmVyZmxv
d1koKSA9PSBPSElEREVOKQogICAgICAgICBjb250ZW50UmVjdC5zZXRIZWlnaHQoc3RkOjptaW48
ZmxvYXQ+KGNvbnRlbnRSZWN0LmhlaWdodCgpLCB2aWV3cG9ydFJlbmRlcmVyQm94LmZyYW1lUmVj
dCgpLmhlaWdodCgpKSk7CiAKICAgICBpZiAocmVuZGVyVmlldy0+aGFzVHJhbnNmb3JtKCkpCkBA
IC02NDEsNyArNjQxLDcgQEAgSW50U2l6ZSBGcmFtZVZpZXc6OmNvbnRlbnRzU2l6ZVJlc3BlY3Rp
bmdPdmVyZmxvdygpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoY29udGVudFJlY3Quc2l6ZSgp
KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1v
ZGUpCit2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2
TW9kZSkKIHsKICAgICAvLyBIYW5kbGUgdGhlIG92ZXJmbG93OmhpZGRlbi9zY3JvbGwgY2FzZSBm
b3IgdGhlIGJvZHkvaHRtbCBlbGVtZW50cy4gIFdpbklFIHRyZWF0cwogICAgIC8vIG92ZXJmbG93
OmhpZGRlbiBhbmQgb3ZlcmZsb3c6c2Nyb2xsIG9uIDxib2R5PiBhcyBhcHBseWluZyB0byB0aGUg
ZG9jdW1lbnQncwpAQCAtNjU0LDEzICs2NTQsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3Zl
cmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBTY3JvbGxiYXJNb2RlJgog
CiAgICAgYm9vbCBvdmVycmlkZUhpZGRlbiA9IGZyYW1lKCkuaXNNYWluRnJhbWUoKSAmJiAoKGZy
YW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpID4gMSkgfHwgaGVhZGVySGVpZ2h0KCkgfHwgZm9vdGVy
SGVpZ2h0KCkpOwogCi0gICAgRU92ZXJmbG93IG92ZXJmbG93WCA9IHJlbmRlcmVyLT5zdHlsZSgp
Lm92ZXJmbG93WCgpOwotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1kgPSByZW5kZXJlci0+c3R5bGUo
KS5vdmVyZmxvd1koKTsKKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYID0gcmVuZGVyZXIuc3R5bGUo
KS5vdmVyZmxvd1goKTsKKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZID0gcmVuZGVyZXIuc3R5bGUo
KS5vdmVyZmxvd1koKTsKIAotICAgIGlmIChpczxSZW5kZXJTVkdSb290PigqcmVuZGVyZXIpKSB7
CisgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhN
RTogZXZhbHVhdGUgaWYgd2UgY2FuIGFsbG93IG92ZXJmbG93IGZvciB0aGVzZSBjYXNlcyB0b28u
CiAgICAgICAgIC8vIE92ZXJmbG93IGlzIGFsd2F5cyBoaWRkZW4gd2hlbiBzdGFuZC1hbG9uZSBT
VkcgZG9jdW1lbnRzIGFyZSBlbWJlZGRlZC4KLSAgICAgICAgaWYgKGRvd25jYXN0PFJlbmRlclNW
R1Jvb3Q+KCpyZW5kZXJlcikuaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1
bWVudCgpKSB7CisgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJTVkdSb290PihyZW5kZXJlciku
aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKSB7CiAgICAgICAg
ICAgICBvdmVyZmxvd1ggPSBPSElEREVOOwogICAgICAgICAgICAgb3ZlcmZsb3dZID0gT0hJRERF
TjsKICAgICAgICAgfQpAQCAtNzAxLDggKzcwMSw2IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseU92
ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgU2Nyb2xsYmFyTW9kZSYK
ICAgICAgICAgICAgIC8vIERvbid0IHNldCBpdCBhdCBhbGwuIFZhbHVlcyBvZiBPUEFHRURYIGFu
ZCBPUEFHRURZIGFyZSBoYW5kbGVkIGJ5IGFwcGx5UGFnaW5hdGlvblRvVmlld1BvcnQoKS4KICAg
ICAgICAgICAgIDsKICAgICB9Ci0KLSAgICBtX3ZpZXdwb3J0UmVuZGVyZXIgPSByZW5kZXJlcjsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5UGFnaW5hdGlvblRvVmlld3BvcnQoKQpAQCAtNzMz
LDcgKzczMSw3IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25Ub1ZpZXdwb3J0KCkK
IAogdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9s
bGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xsYmFyTW9kZXNDYWxj
dWxhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogewotICAgIG1fdmlld3BvcnRSZW5kZXJlciA9IG51
bGxwdHI7CisgICAgbV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9IFZpZXdwb3J0UmVuZGVyZXJUeXBl
OjpOb25lOwogCiAgICAgY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGZyYW1l
KCkub3duZXJFbGVtZW50KCk7CiAgICAgaWYgKG93bmVyICYmIChvd25lci0+c2Nyb2xsaW5nTW9k
ZSgpID09IFNjcm9sbGJhckFsd2F5c09mZikpIHsKQEAgLTc1MCwyNCArNzQ4LDQ3IEBAIHZvaWQg
RnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2Rl
JiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgICAgIHZNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwog
ICAgIH0KICAgICAKLSAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewotICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIGF1dG8gZG9jdW1lbnRFbGVt
ZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgICAgICBSZW5kZXJFbGVtZW50
KiByb290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRl
cmVyKCkgOiBudWxscHRyOwotICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQtPmJvZHlPckZy
YW1lc2V0KCk7Ci0gICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgIGlmIChpczxIVE1MRnJhbWVTZXRFbGVtZW50PigqYm9keSkgJiYgIWZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xsYmFyQWx3YXlz
T2ZmOwotICAgICAgICAgICAgICAgIGhNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChpczxIVE1MQm9keUVsZW1lbnQ+KCpib2R5KSkgewotICAgICAgICAg
ICAgICAgIC8vIEl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGNoZWNrIHRoZSBYIG92ZXJmbG93LAot
ICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3MgaWxsZWdhbCB0byBoYXZlIHZpc2libGUgaW4g
b25seSBvbmUgZGlyZWN0aW9uLgotICAgICAgICAgICAgICAgIFJlbmRlckVsZW1lbnQqIG8gPSBy
b290UmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgaXM8SFRNTEh0
bWxFbGVtZW50PigqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSA/IGJvZHktPnJlbmRlcmVy
KCkgOiByb290UmVuZGVyZXI7Ci0gICAgICAgICAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmlld3Bv
cnQobywgaE1vZGUsIHZNb2RlKTsKKyAgICBpZiAobV9sYXlvdXRSb290KQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkb2N1bWVudEVsZW1l
bnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudEVsZW1l
bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGJvZHlPckZyYW1lc2V0ID0gZG9jdW1l
bnQtPmJvZHlPckZyYW1lc2V0KCk7CisgICAgYXV0byogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnRF
bGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghYm9keU9yRnJhbWVzZXQgfHwgIWJvZHlPckZy
YW1lc2V0LT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChyb290UmVuZGVyZXIpIHsKKyAgICAg
ICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KCpyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9k
ZSk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0UmVuZGVyZXJUeXBlID0gVmlld3BvcnRSZW5kZXJl
clR5cGU6OkRvY3VtZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKGlzPEhUTUxGcmFtZVNldEVsZW1lbnQ+KCpib2R5T3JGcmFtZXNldCkgJiYgIWZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgeworICAgICAgICB2TW9kZSA9IFNjcm9sbGJhckFsd2F5
c09mZjsKKyAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoaXM8SFRNTEJvZHlFbGVtZW50PigqYm9keU9yRnJhbWVzZXQp
ICYmIHJvb3RSZW5kZXJlcikgeworICAgICAgICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBj
aGVjayB0aGUgWCBvdmVyZmxvdywKKyAgICAgICAgLy8gc2luY2UgaXQncyBpbGxlZ2FsIHRvIGhh
dmUgdmlzaWJsZSBpbiBvbmx5IG9uZSBkaXJlY3Rpb24uCisgICAgICAgIGlmIChyb290UmVuZGVy
ZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgaXM8SFRNTEh0bWxFbGVtZW50
Pihkb2N1bWVudEVsZW1lbnQpKSB7CisgICAgICAgICAgICBhdXRvKiBib2R5UmVuZGVyZXIgPSBi
b2R5T3JGcmFtZXNldC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmIChib2R5UmVuZGVyZXIp
IHsKKyAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydCgqYm9keVJlbmRlcmVy
LCBoTW9kZSwgdk1vZGUpOworICAgICAgICAgICAgICAgIG1fdmlld3BvcnRSZW5kZXJlclR5cGUg
PSBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6Qm9keTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChyb290UmVuZGVyZXIpCi0gICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9y
dChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7Ci0gICAgfSAgICAKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KCpyb290UmVuZGVyZXIsIGhN
b2RlLCB2TW9kZSk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0UmVuZGVyZXJUeXBlID0gVmlld3Bv
cnRSZW5kZXJlclR5cGU6OkRvY3VtZW50OworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEZy
YW1lVmlldzo6d2lsbFJlY2FsY1N0eWxlKCkKQEAgLTMyNjMsOSArMzI4NCwzNyBAQCB2b2lkIEZy
YW1lVmlldzo6c2V0QXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHQoaW50IGZpeGVkTWluaW11bUhl
aWdodCkKICAgICBzZXROZWVkc0xheW91dCgpOwogfQogCitSZW5kZXJFbGVtZW50KiBGcmFtZVZp
ZXc6OnZpZXdwb3J0UmVuZGVyZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZpZXdwb3J0UmVuZGVy
ZXJUeXBlID09IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpOb25lKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fdmlld3Bv
cnRSZW5kZXJlclR5cGUgPT0gVmlld3BvcnRSZW5kZXJlclR5cGU6OkRvY3VtZW50KSB7CisgICAg
ICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsK
KyAgICAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICB9CisK
KyAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9PSBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6
Qm9keSkgeworICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICAgICAg
aWYgKCFib2R5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBi
b2R5LT5yZW5kZXJlcigpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0
dXMoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdykKIHsKLSAg
ICBpZiAoIW1fdmlld3BvcnRSZW5kZXJlcikKKyAgICBhdXRvKiB2aWV3cG9ydFJlbmRlcmVyID0g
dGhpcy0+dmlld3BvcnRSZW5kZXJlcigpOworICAgIGlmICghdmlld3BvcnRSZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX292ZXJmbG93U3RhdHVzRGlydHkpIHsKQEAg
LTMyODQsNyArMzMzMyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVPdmVyZmxvd1N0YXR1cyhi
b29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJmCiAKICAgICAgICAgUmVm
UHRyPE92ZXJmbG93RXZlbnQ+IG92ZXJmbG93RXZlbnQgPSBPdmVyZmxvd0V2ZW50OjpjcmVhdGUo
aG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwgaG9yaXpvbnRhbE92ZXJmbG93LAogICAgICAgICAg
ICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIHZlcnRpY2FsT3ZlcmZsb3cpOwotICAgICAgICBv
dmVyZmxvd0V2ZW50LT5zZXRUYXJnZXQobV92aWV3cG9ydFJlbmRlcmVyLT5lbGVtZW50KCkpOwor
ICAgICAgICBvdmVyZmxvd0V2ZW50LT5zZXRUYXJnZXQodmlld3BvcnRSZW5kZXJlci0+ZWxlbWVu
dCgpKTsKIAogICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCktPmVucXVldWVPdmVyZmxvd0V2ZW50
KG92ZXJmbG93RXZlbnQucmVsZWFzZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApp
bmRleCBiYzRlYjY5NGM0ODExYWU3YTI0MTRiNWZhOWQzMDcxZjA1MjA4ZTA5Li5lMTY4ZDk5NDgz
NDRmZmRjZDhmZWM4MzI5OWZhODVhMzYwM2I4M2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
QEAgLTU5NCw3ICs1OTQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFBv
c2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBJbnRQb2ludCYgb2xkUG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBuZXdQb3NpdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqLCBTY3JvbGxiYXJNb2RlJiBo
TW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOworICAgIHZvaWQgYXBwbHlPdmVyZmxvd1RvVmll
d3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxi
YXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25Ub1ZpZXdwb3J0KCk7CiAK
ICAgICB2b2lkIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93LCBi
b29sIHZlcnRpY2FsT3ZlcmZsb3cpOwpAQCAtNjc1LDYgKzY3NSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVGcm9tQVhPYmplY3RDYWNoZSgpOwogICAgIHZvaWQgbm90aWZ5V2lkZ2V0cyhX
aWRnZXROb3RpZmljYXRpb24pOwogCisgICAgUmVuZGVyRWxlbWVudCogdmlld3BvcnRSZW5kZXJl
cigpIGNvbnN0OworCiAgICAgSGFzaFNldDxXaWRnZXQqPiBtX3dpZGdldHNJblJlbmRlclRyZWU7
CiAKICAgICBzdGF0aWMgZG91YmxlIHNDdXJyZW50UGFpbnRUaW1lU3RhbXA7IC8vIHVzZWQgZm9y
IGRldGVjdGluZyBkZWNvZGVkIHJlc291cmNlIHRocmFzaCBpbiB0aGUgY2FjaGUKQEAgLTcxOCw4
ICs3MjAsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX292ZXJmbG93U3RhdHVzRGlydHk7CiAg
ICAgYm9vbCBtX2hvcml6b250YWxPdmVyZmxvdzsKLSAgICBib29sIG1fdmVydGljYWxPdmVyZmxv
dzsgICAgCi0gICAgUmVuZGVyRWxlbWVudCogbV92aWV3cG9ydFJlbmRlcmVyOworICAgIGJvb2wg
bV92ZXJ0aWNhbE92ZXJmbG93OworICAgIGVudW0gY2xhc3MgVmlld3BvcnRSZW5kZXJlclR5cGUg
eyBOb25lLCBEb2N1bWVudCwgQm9keSB9OworICAgIFZpZXdwb3J0UmVuZGVyZXJUeXBlIG1fdmll
d3BvcnRSZW5kZXJlclR5cGUgeyBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6Tm9uZSB9OwogCiAgICAg
UGFnaW5hdGlvbiBtX3BhZ2luYXRpb247CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258726</attachid>
            <date>2015-08-11 10:53:43 -0700</date>
            <delta_ts>2015-08-11 12:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147848-20150811105331.patch</filename>
            <type>text/plain</type>
            <size>10873</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM0NTA5NmRiZjVlYzY1
ZjJmYTQyNGFkNzg3YzI3NDU0NjI4ODk0Ni4uYTVhZmMxZmUxMzM0MzMxYWNlNDhhMzUwZThhYTZm
M2M1ZWM5ZjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTExICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW52YWxpZCBGcmFtZVZpZXc6
Om1fdmlld3BvcnRSZW5kZXJlciBhZnRlciBsYXlvdXQgaXMgZmluaXNoZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4NDgKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vMjIyMDUxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBjYWNoZSB0aGUgY3VycmVudCB2aWV3cG9ydCByZW5kZXJlciAoRnJh
bWVWaWV3OjptX3ZpZXdwb3J0UmVuZGVyZXIpIHJpZ2h0IGJlZm9yZSBsYXlvdXQuCisgICAgICAg
IEl0IGdldHMgZGVyZWZlcmVuY2VkIGxhdGVyIHdoZW4gbGF5b3V0IGlzIGZpbmlzaGVkIHRvIHVw
ZGF0ZSB0aGUgb3ZlcmZsb3cgc3RhdHVzLgorICAgICAgICBJZiB0aGUgdmlld3BvcnQgcmVuZGVy
ZXIgZ2V0cyBkZXN0cm95ZWQgZHVyaW5nIGxheW91dCwgd2UgZW5kIHVwIHdpdGggYSBkYW5nbGlu
ZyBwb2ludGVyLgorICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBwb2ludGVyIGNhY2hp
bmcgd2l0aCB0eXBlIGNhY2hpbmcgKG5vbmUsIGJvZHksIGRvY3VtZW50KS4KKworICAgICAgICBV
bmFibGUgdG8gY29uc3RydWN0IGEgdGVzdCBjYXNlLgorCiAyMDE1LTA4LTExICBUaW5nLVdlaSBM
YW4gIDxsYW50dzQ0QGdtYWlsLmNvbT4KIAogICAgICAgICBGaXggZGVidWcgYnVpbGQgd2hlbiBv
cHRpbWl6YXRpb24gaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGFj
ZjEzODA5YTU5OTYzNjczYjUzZjI2MDA4MDZlZTQwMzdjMzk1NjAuLmRmZTY5YmFhZTUwMGVjNDA2
OTU3NTFmYTM5YmE2ZThmMTc4MmYyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTE3Miw3ICsxNzIsNiBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAg
LCBtX2Jhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tZWRpYVR5cGUo
InNjcmVlbiIpCiAgICAgLCBtX292ZXJmbG93U3RhdHVzRGlydHkodHJ1ZSkKLSAgICAsIG1fdmll
d3BvcnRSZW5kZXJlcihudWxscHRyKQogICAgICwgbV93YXNTY3JvbGxlZEJ5VXNlcihmYWxzZSkK
ICAgICAsIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2UpCiAgICAgLCBtX3NhZmVUb1Byb3Bh
Z2F0ZVNjcm9sbFRvUGFyZW50KHRydWUpCkBAIC02MjEsMTggKzYyMCwxOSBAQCB2b2lkIEZyYW1l
Vmlldzo6YWRqdXN0Vmlld1NpemUoKQogSW50U2l6ZSBGcmFtZVZpZXc6OmNvbnRlbnRzU2l6ZVJl
c3BlY3RpbmdPdmVyZmxvdygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKLSAgICBpZiAoIXJlbmRlclZpZXcgfHwgIW1fdmlld3BvcnRS
ZW5kZXJlciB8fCAhaXM8UmVuZGVyQm94PihtX3ZpZXdwb3J0UmVuZGVyZXIpIHx8ICFmcmFtZSgp
LmlzTWFpbkZyYW1lKCkpCisgICAgYXV0byogdmlld3BvcnRSZW5kZXJlciA9IHRoaXMtPnZpZXdw
b3J0UmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlclZpZXcgfHwgIXZpZXdwb3J0UmVuZGVyZXIg
fHwgIWlzPFJlbmRlckJveD4odmlld3BvcnRSZW5kZXJlcikgfHwgIWZyYW1lKCkuaXNNYWluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpOwogCiAgICAgQVNTRVJUKGZyYW1l
KCkudmlldygpID09IHRoaXMpOwogCiAgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0ID0gcmVuZGVy
Vmlldy0+dW5zY2FsZWREb2N1bWVudFJlY3QoKTsKLSAgICBSZW5kZXJCb3gmIHZpZXdwb3J0UmVu
ZGVyZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCptX3ZpZXdwb3J0UmVuZGVyZXIpOworICAg
IFJlbmRlckJveCYgdmlld3BvcnRSZW5kZXJlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnZp
ZXdwb3J0UmVuZGVyZXIpOwogCi0gICAgaWYgKG1fdmlld3BvcnRSZW5kZXJlci0+c3R5bGUoKS5v
dmVyZmxvd1goKSA9PSBPSElEREVOKQorICAgIGlmICh2aWV3cG9ydFJlbmRlcmVyQm94LnN0eWxl
KCkub3ZlcmZsb3dYKCkgPT0gT0hJRERFTikKICAgICAgICAgY29udGVudFJlY3Quc2V0V2lkdGgo
c3RkOjptaW48ZmxvYXQ+KGNvbnRlbnRSZWN0LndpZHRoKCksIHZpZXdwb3J0UmVuZGVyZXJCb3gu
ZnJhbWVSZWN0KCkud2lkdGgoKSkpOwogCi0gICAgaWYgKG1fdmlld3BvcnRSZW5kZXJlci0+c3R5
bGUoKS5vdmVyZmxvd1koKSA9PSBPSElEREVOKQorICAgIGlmICh2aWV3cG9ydFJlbmRlcmVyQm94
LnN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT0hJRERFTikKICAgICAgICAgY29udGVudFJlY3Quc2V0
SGVpZ2h0KHN0ZDo6bWluPGZsb2F0Pihjb250ZW50UmVjdC5oZWlnaHQoKSwgdmlld3BvcnRSZW5k
ZXJlckJveC5mcmFtZVJlY3QoKS5oZWlnaHQoKSkpOwogCiAgICAgaWYgKHJlbmRlclZpZXctPmhh
c1RyYW5zZm9ybSgpKQpAQCAtNjQxLDcgKzY0MSw3IEBAIEludFNpemUgRnJhbWVWaWV3Ojpjb250
ZW50c1NpemVSZXNwZWN0aW5nT3ZlcmZsb3coKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKGNv
bnRlbnRSZWN0LnNpemUoKSk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9W
aWV3cG9ydChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNj
cm9sbGJhck1vZGUmIHZNb2RlKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdw
b3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwg
U2Nyb2xsYmFyTW9kZSYgdk1vZGUpCiB7CiAgICAgLy8gSGFuZGxlIHRoZSBvdmVyZmxvdzpoaWRk
ZW4vc2Nyb2xsIGNhc2UgZm9yIHRoZSBib2R5L2h0bWwgZWxlbWVudHMuICBXaW5JRSB0cmVhdHMK
ICAgICAvLyBvdmVyZmxvdzpoaWRkZW4gYW5kIG92ZXJmbG93OnNjcm9sbCBvbiA8Ym9keT4gYXMg
YXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50J3MKQEAgLTY1NCwxMyArNjU0LDEzIEBAIHZvaWQgRnJh
bWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
U2Nyb2xsYmFyTW9kZSYKIAogICAgIGJvb2wgb3ZlcnJpZGVIaWRkZW4gPSBmcmFtZSgpLmlzTWFp
bkZyYW1lKCkgJiYgKChmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSA+IDEpIHx8IGhlYWRlckhl
aWdodCgpIHx8IGZvb3RlckhlaWdodCgpKTsKIAotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1ggPSBy
ZW5kZXJlci0+c3R5bGUoKS5vdmVyZmxvd1goKTsKLSAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZID0g
cmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dZKCk7CisgICAgRU92ZXJmbG93IG92ZXJmbG93WCA9
IHJlbmRlcmVyLnN0eWxlKCkub3ZlcmZsb3dYKCk7CisgICAgRU92ZXJmbG93IG92ZXJmbG93WSA9
IHJlbmRlcmVyLnN0eWxlKCkub3ZlcmZsb3dZKCk7CiAKLSAgICBpZiAoaXM8UmVuZGVyU1ZHUm9v
dD4oKnJlbmRlcmVyKSkgeworICAgIGlmIChpczxSZW5kZXJTVkdSb290PihyZW5kZXJlcikpIHsK
ICAgICAgICAgLy8gRklYTUU6IGV2YWx1YXRlIGlmIHdlIGNhbiBhbGxvdyBvdmVyZmxvdyBmb3Ig
dGhlc2UgY2FzZXMgdG9vLgogICAgICAgICAvLyBPdmVyZmxvdyBpcyBhbHdheXMgaGlkZGVuIHdo
ZW4gc3RhbmQtYWxvbmUgU1ZHIGRvY3VtZW50cyBhcmUgZW1iZWRkZWQuCi0gICAgICAgIGlmIChk
b3duY2FzdDxSZW5kZXJTVkdSb290PigqcmVuZGVyZXIpLmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVD
b250YWluaW5nU1ZHRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZH
Um9vdD4ocmVuZGVyZXIpLmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1l
bnQoKSkgewogICAgICAgICAgICAgb3ZlcmZsb3dYID0gT0hJRERFTjsKICAgICAgICAgICAgIG92
ZXJmbG93WSA9IE9ISURERU47CiAgICAgICAgIH0KQEAgLTcwMSw4ICs3MDEsNiBAQCB2b2lkIEZy
YW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IFNjcm9sbGJhck1vZGUmCiAgICAgICAgICAgICAvLyBEb24ndCBzZXQgaXQgYXQgYWxsLiBWYWx1
ZXMgb2YgT1BBR0VEWCBhbmQgT1BBR0VEWSBhcmUgaGFuZGxlZCBieSBhcHBseVBhZ2luYXRpb25U
b1ZpZXdQb3J0KCkuCiAgICAgICAgICAgICA7CiAgICAgfQotCi0gICAgbV92aWV3cG9ydFJlbmRl
cmVyID0gcmVuZGVyZXI7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25Ub1Zp
ZXdwb3J0KCkKQEAgLTczMyw3ICs3MzEsNyBAQCB2b2lkIEZyYW1lVmlldzo6YXBwbHlQYWdpbmF0
aW9uVG9WaWV3cG9ydCgpCiAKIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rl
c0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNj
cm9sbGJhck1vZGVzQ2FsY3VsYXRpb25TdHJhdGVneSBzdHJhdGVneSkKIHsKLSAgICBtX3ZpZXdw
b3J0UmVuZGVyZXIgPSBudWxscHRyOworICAgIG1fdmlld3BvcnRSZW5kZXJlclR5cGUgPSBWaWV3
cG9ydFJlbmRlcmVyVHlwZTo6Tm9uZTsKIAogICAgIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXIgPSBmcmFtZSgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmIChvd25lciAmJiAob3du
ZXItPnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJBbHdheXNPZmYpKSB7CkBAIC03NTAsMjQg
Kzc0OCw0NyBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlv
dXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICB2TW9kZSA9IFNjcm9s
bGJhckFsd2F5c09mZjsKICAgICB9CiAgICAgCi0gICAgaWYgKCFtX2xheW91dFJvb3QpIHsKLSAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwotICAgICAgICBh
dXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAg
ICAgUmVuZGVyRWxlbWVudCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKLSAgICAgICAgYXV0byogYm9keSA9IGRv
Y3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOwotICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkp
ICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICB2TW9kZSA9
IFNjcm9sbGJhckFsd2F5c09mZjsKLSAgICAgICAgICAgICAgICBoTW9kZSA9IFNjcm9sbGJhckFs
d2F5c09mZjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTEJvZHlFbGVtZW50PigqYm9k
eSkpIHsKLSAgICAgICAgICAgICAgICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayB0
aGUgWCBvdmVyZmxvdywKLSAgICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGlsbGVnYWwgdG8g
aGF2ZSB2aXNpYmxlIGluIG9ubHkgb25lIGRpcmVjdGlvbi4KLSAgICAgICAgICAgICAgICBSZW5k
ZXJFbGVtZW50KiBvID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJ
QkxFICYmIGlzPEhUTUxIdG1sRWxlbWVudD4oKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkg
PyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOwotICAgICAgICAgICAgICAgIGFwcGx5
T3ZlcmZsb3dUb1ZpZXdwb3J0KG8sIGhNb2RlLCB2TW9kZSk7CisgICAgaWYgKG1fbGF5b3V0Um9v
dCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5k
b2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlm
ICghZG9jdW1lbnRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBib2R5T3JG
cmFtZXNldCA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOworICAgIGF1dG8qIHJvb3RSZW5k
ZXJlciA9IGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIWJvZHlPckZyYW1l
c2V0IHx8ICFib2R5T3JGcmFtZXNldC0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAocm9vdFJl
bmRlcmVyKSB7CisgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydCgqcm9vdFJlbmRl
cmVyLCBoTW9kZSwgdk1vZGUpOworICAgICAgICAgICAgbV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9
IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpEb2N1bWVudDsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChpczxIVE1MRnJhbWVTZXRFbGVtZW50PigqYm9keU9y
RnJhbWVzZXQpICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpIHsKKyAgICAgICAgdk1vZGUg
PSBTY3JvbGxiYXJBbHdheXNPZmY7CisgICAgICAgIGhNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2Zm
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGlzPEhUTUxCb2R5RWxlbWVudD4o
KmJvZHlPckZyYW1lc2V0KSAmJiByb290UmVuZGVyZXIpIHsKKyAgICAgICAgLy8gSXQncyBzdWZm
aWNpZW50IHRvIGp1c3QgY2hlY2sgdGhlIFggb3ZlcmZsb3csCisgICAgICAgIC8vIHNpbmNlIGl0
J3MgaWxsZWdhbCB0byBoYXZlIHZpc2libGUgaW4gb25seSBvbmUgZGlyZWN0aW9uLgorICAgICAg
ICBpZiAocm9vdFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGlz
PEhUTUxIdG1sRWxlbWVudD4oZG9jdW1lbnRFbGVtZW50KSkgeworICAgICAgICAgICAgYXV0byog
Ym9keVJlbmRlcmVyID0gYm9keU9yRnJhbWVzZXQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBp
ZiAoYm9keVJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmlld3Bv
cnQoKmJvZHlSZW5kZXJlciwgaE1vZGUsIHZNb2RlKTsKKyAgICAgICAgICAgICAgICBtX3ZpZXdw
b3J0UmVuZGVyZXJUeXBlID0gVmlld3BvcnRSZW5kZXJlclR5cGU6OkJvZHk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocm9vdFJlbmRlcmVyKQotICAgICAgICAgICAgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQocm9vdFJlbmRlcmVyLCBoTW9kZSwgdk1vZGUpOwotICAgIH0gICAg
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydCgq
cm9vdFJlbmRlcmVyLCBoTW9kZSwgdk1vZGUpOworICAgICAgICAgICAgbV92aWV3cG9ydFJlbmRl
cmVyVHlwZSA9IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpEb2N1bWVudDsKKyAgICAgICAgfQorICAg
IH0KIH0KIAogdm9pZCBGcmFtZVZpZXc6OndpbGxSZWNhbGNTdHlsZSgpCkBAIC0zMjYzLDkgKzMy
ODQsMzcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldEF1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0KGlu
dCBmaXhlZE1pbmltdW1IZWlnaHQpCiAgICAgc2V0TmVlZHNMYXlvdXQoKTsKIH0KIAorUmVuZGVy
RWxlbWVudCogRnJhbWVWaWV3Ojp2aWV3cG9ydFJlbmRlcmVyKCkgY29uc3QKK3sKKyAgICBpZiAo
bV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9PSBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6Tm9uZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lKCkuZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmIChtX3ZpZXdwb3J0UmVuZGVyZXJUeXBlID09IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpE
b2N1bWVudCkgeworICAgICAgICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCk7CisgICAgICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQtPnJlbmRl
cmVyKCk7CisgICAgfQorCisgICAgaWYgKG1fdmlld3BvcnRSZW5kZXJlclR5cGUgPT0gVmlld3Bv
cnRSZW5kZXJlclR5cGU6OkJvZHkpIHsKKyAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LT5i
b2R5KCk7CisgICAgICAgIGlmICghYm9keSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gYm9keS0+cmVuZGVyZXIoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93LCBib29sIHZlcnRpY2Fs
T3ZlcmZsb3cpCiB7Ci0gICAgaWYgKCFtX3ZpZXdwb3J0UmVuZGVyZXIpCisgICAgYXV0byogdmll
d3BvcnRSZW5kZXJlciA9IHRoaXMtPnZpZXdwb3J0UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXdw
b3J0UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAobV9vdmVyZmxvd1N0
YXR1c0RpcnR5KSB7CkBAIC0zMjg0LDcgKzMzMzMsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRl
T3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVy
ZgogCiAgICAgICAgIFJlZlB0cjxPdmVyZmxvd0V2ZW50PiBvdmVyZmxvd0V2ZW50ID0gT3ZlcmZs
b3dFdmVudDo6Y3JlYXRlKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQsIGhvcml6b250YWxPdmVy
ZmxvdywKICAgICAgICAgICAgIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCB2ZXJ0aWNhbE92ZXJm
bG93KTsKLSAgICAgICAgb3ZlcmZsb3dFdmVudC0+c2V0VGFyZ2V0KG1fdmlld3BvcnRSZW5kZXJl
ci0+ZWxlbWVudCgpKTsKKyAgICAgICAgb3ZlcmZsb3dFdmVudC0+c2V0VGFyZ2V0KHZpZXdwb3J0
UmVuZGVyZXItPmVsZW1lbnQoKSk7CiAKICAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5lbnF1
ZXVlT3ZlcmZsb3dFdmVudChvdmVyZmxvd0V2ZW50LnJlbGVhc2UoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKaW5kZXggYmM0ZWI2OTRjNDgxMWFlN2EyNDE0YjVmYTlkMzA3MWYwNTIw
OGUwOS4uZTE2OGQ5OTQ4MzQ0ZmZkY2Q4ZmVjODMyOTlmYTg1YTM2MDNiODNmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oCkBAIC01OTQsNyArNTk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEltcGwoY29uc3Qg
SW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgbmV3UG9zaXRpb24pIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50Kiwg
U2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKKyAgICB2b2lkIGFw
cGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBTY3JvbGxiYXJNb2Rl
JiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOwogICAgIHZvaWQgYXBwbHlQYWdpbmF0aW9u
VG9WaWV3cG9ydCgpOwogCiAgICAgdm9pZCB1cGRhdGVPdmVyZmxvd1N0YXR1cyhib29sIGhvcml6
b250YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJmbG93KTsKQEAgLTY3NSw2ICs2NzUsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRnJvbUFYT2JqZWN0Q2FjaGUoKTsKICAgICB2b2lk
IG5vdGlmeVdpZGdldHMoV2lkZ2V0Tm90aWZpY2F0aW9uKTsKIAorICAgIFJlbmRlckVsZW1lbnQq
IHZpZXdwb3J0UmVuZGVyZXIoKSBjb25zdDsKKwogICAgIEhhc2hTZXQ8V2lkZ2V0Kj4gbV93aWRn
ZXRzSW5SZW5kZXJUcmVlOwogCiAgICAgc3RhdGljIGRvdWJsZSBzQ3VycmVudFBhaW50VGltZVN0
YW1wOyAvLyB1c2VkIGZvciBkZXRlY3RpbmcgZGVjb2RlZCByZXNvdXJjZSB0aHJhc2ggaW4gdGhl
IGNhY2hlCkBAIC03MTgsOCArNzIwLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9vdmVyZmxv
d1N0YXR1c0RpcnR5OwogICAgIGJvb2wgbV9ob3Jpem9udGFsT3ZlcmZsb3c7Ci0gICAgYm9vbCBt
X3ZlcnRpY2FsT3ZlcmZsb3c7ICAgIAotICAgIFJlbmRlckVsZW1lbnQqIG1fdmlld3BvcnRSZW5k
ZXJlcjsKKyAgICBib29sIG1fdmVydGljYWxPdmVyZmxvdzsKKyAgICBlbnVtIGNsYXNzIFZpZXdw
b3J0UmVuZGVyZXJUeXBlIHsgTm9uZSwgRG9jdW1lbnQsIEJvZHkgfTsKKyAgICBWaWV3cG9ydFJl
bmRlcmVyVHlwZSBtX3ZpZXdwb3J0UmVuZGVyZXJUeXBlIHsgVmlld3BvcnRSZW5kZXJlclR5cGU6
Ok5vbmUgfTsKIAogICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258740</attachid>
            <date>2015-08-11 12:54:23 -0700</date>
            <delta_ts>2015-08-11 14:50:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147848-20150811125407.patch</filename>
            <type>text/plain</type>
            <size>10872</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U1MDZkMWZlNDUzNzkz
YjM0M2I1NDE1NGU4Nzk3NjU3MjBlZWJkMy4uNjI2ZTJhNDgwN2I2MDYwN2Y5NDU5ODFjYTM1Mjkw
ZTUxM2Y0NzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA4LTExICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW52YWxpZCBGcmFtZVZpZXc6
Om1fdmlld3BvcnRSZW5kZXJlciBhZnRlciBsYXlvdXQgaXMgZmluaXNoZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4NDgKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vMjIyMDUxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIu
CisKKyAgICAgICAgV2UgY2FjaGUgdGhlIGN1cnJlbnQgdmlld3BvcnQgcmVuZGVyZXIgKEZyYW1l
Vmlldzo6bV92aWV3cG9ydFJlbmRlcmVyKSByaWdodCBiZWZvcmUgbGF5b3V0LgorICAgICAgICBJ
dCBnZXRzIGRlcmVmZXJlbmNlZCBsYXRlciB3aGVuIGxheW91dCBpcyBmaW5pc2hlZCB0byB1cGRh
dGUgdGhlIG92ZXJmbG93IHN0YXR1cy4KKyAgICAgICAgSWYgdGhlIHZpZXdwb3J0IHJlbmRlcmVy
IGdldHMgZGVzdHJveWVkIGR1cmluZyBsYXlvdXQsIHdlIGVuZCB1cCB3aXRoIGEgZGFuZ2xpbmcg
cG9pbnRlci4KKyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgcG9pbnRlciBjYWNoaW5n
IHdpdGggdHlwZSBjYWNoaW5nIChub25lLCBib2R5LCBkb2N1bWVudCkuCisKKyAgICAgICAgVW5h
YmxlIHRvIGNvbnN0cnVjdCBhIHRlc3QgY2FzZS4KKwogMjAxNS0wOC0xMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIGZlTW9ycGhvbG9neSBp
cyBub3QgcmVuZGVyZWQgY29ycmVjdGx5IG9uIFJldGluYSBkaXNwbGF5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggYWNmMTM4MDlhNTk5NjM2NzNiNTNmMjYwMDgwNmVlNDAzN2MzOTU2
MC4uNmEzMjFlNjhmNmJhYzE0OGE4YThiYmUzN2Y0NDcwMzczMDg0ZTM3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMTcyLDcgKzE3Miw2IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3
KEZyYW1lJiBmcmFtZSkKICAgICAsIG1fYmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUp
CiAgICAgLCBtX21lZGlhVHlwZSgic2NyZWVuIikKICAgICAsIG1fb3ZlcmZsb3dTdGF0dXNEaXJ0
eSh0cnVlKQotICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKG51bGxwdHIpCiAgICAgLCBtX3dhc1Nj
cm9sbGVkQnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkK
ICAgICAsIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQodHJ1ZSkKQEAgLTYyMSwxOCAr
NjIwLDE5IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSgpCiBJbnRTaXplIEZyYW1l
Vmlldzo6Y29udGVudHNTaXplUmVzcGVjdGluZ092ZXJmbG93KCkgY29uc3QKIHsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwotICAgIGlmICghcmVuZGVy
VmlldyB8fCAhbV92aWV3cG9ydFJlbmRlcmVyIHx8ICFpczxSZW5kZXJCb3g+KG1fdmlld3BvcnRS
ZW5kZXJlcikgfHwgIWZyYW1lKCkuaXNNYWluRnJhbWUoKSkKKyAgICBhdXRvKiB2aWV3cG9ydFJl
bmRlcmVyID0gdGhpcy0+dmlld3BvcnRSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyVmlldyB8
fCAhaXM8UmVuZGVyQm94Pih2aWV3cG9ydFJlbmRlcmVyKSB8fCAhZnJhbWUoKS5pc01haW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm4gY29udGVudHNTaXplKCk7CiAKICAgICBBU1NFUlQoZnJhbWUo
KS52aWV3KCkgPT0gdGhpcyk7CiAKICAgICBGbG9hdFJlY3QgY29udGVudFJlY3QgPSByZW5kZXJW
aWV3LT51bnNjYWxlZERvY3VtZW50UmVjdCgpOwotICAgIFJlbmRlckJveCYgdmlld3BvcnRSZW5k
ZXJlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKm1fdmlld3BvcnRSZW5kZXJlcik7CisgICAg
UmVuZGVyQm94JiB2aWV3cG9ydFJlbmRlcmVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94Pigqdmll
d3BvcnRSZW5kZXJlcik7CiAKLSAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyLT5zdHlsZSgpLm92
ZXJmbG93WCgpID09IE9ISURERU4pCisgICAgaWYgKHZpZXdwb3J0UmVuZGVyZXJCb3guc3R5bGUo
KS5vdmVyZmxvd1goKSA9PSBPSElEREVOKQogICAgICAgICBjb250ZW50UmVjdC5zZXRXaWR0aChz
dGQ6Om1pbjxmbG9hdD4oY29udGVudFJlY3Qud2lkdGgoKSwgdmlld3BvcnRSZW5kZXJlckJveC5m
cmFtZVJlY3QoKS53aWR0aCgpKSk7CiAKLSAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyLT5zdHls
ZSgpLm92ZXJmbG93WSgpID09IE9ISURERU4pCisgICAgaWYgKHZpZXdwb3J0UmVuZGVyZXJCb3gu
c3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPSElEREVOKQogICAgICAgICBjb250ZW50UmVjdC5zZXRI
ZWlnaHQoc3RkOjptaW48ZmxvYXQ+KGNvbnRlbnRSZWN0LmhlaWdodCgpLCB2aWV3cG9ydFJlbmRl
cmVyQm94LmZyYW1lUmVjdCgpLmhlaWdodCgpKSk7CiAKICAgICBpZiAocmVuZGVyVmlldy0+aGFz
VHJhbnNmb3JtKCkpCkBAIC02NDEsNyArNjQxLDcgQEAgSW50U2l6ZSBGcmFtZVZpZXc6OmNvbnRl
bnRzU2l6ZVJlc3BlY3RpbmdPdmVyZmxvdygpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoY29u
dGVudFJlY3Quc2l6ZSgpKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1Zp
ZXdwb3J0KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Ny
b2xsYmFyTW9kZSYgdk1vZGUpCit2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3Bv
cnQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBT
Y3JvbGxiYXJNb2RlJiB2TW9kZSkKIHsKICAgICAvLyBIYW5kbGUgdGhlIG92ZXJmbG93OmhpZGRl
bi9zY3JvbGwgY2FzZSBmb3IgdGhlIGJvZHkvaHRtbCBlbGVtZW50cy4gIFdpbklFIHRyZWF0cwog
ICAgIC8vIG92ZXJmbG93OmhpZGRlbiBhbmQgb3ZlcmZsb3c6c2Nyb2xsIG9uIDxib2R5PiBhcyBh
cHBseWluZyB0byB0aGUgZG9jdW1lbnQncwpAQCAtNjU0LDEzICs2NTQsMTMgQEAgdm9pZCBGcmFt
ZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBT
Y3JvbGxiYXJNb2RlJgogCiAgICAgYm9vbCBvdmVycmlkZUhpZGRlbiA9IGZyYW1lKCkuaXNNYWlu
RnJhbWUoKSAmJiAoKGZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpID4gMSkgfHwgaGVhZGVySGVp
Z2h0KCkgfHwgZm9vdGVySGVpZ2h0KCkpOwogCi0gICAgRU92ZXJmbG93IG92ZXJmbG93WCA9IHJl
bmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpOwotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1kgPSBy
ZW5kZXJlci0+c3R5bGUoKS5vdmVyZmxvd1koKTsKKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dYID0g
cmVuZGVyZXIuc3R5bGUoKS5vdmVyZmxvd1goKTsKKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZID0g
cmVuZGVyZXIuc3R5bGUoKS5vdmVyZmxvd1koKTsKIAotICAgIGlmIChpczxSZW5kZXJTVkdSb290
PigqcmVuZGVyZXIpKSB7CisgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKSkgewog
ICAgICAgICAvLyBGSVhNRTogZXZhbHVhdGUgaWYgd2UgY2FuIGFsbG93IG92ZXJmbG93IGZvciB0
aGVzZSBjYXNlcyB0b28uCiAgICAgICAgIC8vIE92ZXJmbG93IGlzIGFsd2F5cyBoaWRkZW4gd2hl
biBzdGFuZC1hbG9uZSBTVkcgZG9jdW1lbnRzIGFyZSBlbWJlZGRlZC4KLSAgICAgICAgaWYgKGRv
d25jYXN0PFJlbmRlclNWR1Jvb3Q+KCpyZW5kZXJlcikuaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNv
bnRhaW5pbmdTVkdEb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJTVkdS
b290PihyZW5kZXJlcikuaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVu
dCgpKSB7CiAgICAgICAgICAgICBvdmVyZmxvd1ggPSBPSElEREVOOwogICAgICAgICAgICAgb3Zl
cmZsb3dZID0gT0hJRERFTjsKICAgICAgICAgfQpAQCAtNzAxLDggKzcwMSw2IEBAIHZvaWQgRnJh
bWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
U2Nyb2xsYmFyTW9kZSYKICAgICAgICAgICAgIC8vIERvbid0IHNldCBpdCBhdCBhbGwuIFZhbHVl
cyBvZiBPUEFHRURYIGFuZCBPUEFHRURZIGFyZSBoYW5kbGVkIGJ5IGFwcGx5UGFnaW5hdGlvblRv
Vmlld1BvcnQoKS4KICAgICAgICAgICAgIDsKICAgICB9Ci0KLSAgICBtX3ZpZXdwb3J0UmVuZGVy
ZXIgPSByZW5kZXJlcjsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5UGFnaW5hdGlvblRvVmll
d3BvcnQoKQpAQCAtNzMzLDcgKzczMSw3IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRp
b25Ub1ZpZXdwb3J0KCkKIAogdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVz
Rm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Ny
b2xsYmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogewotICAgIG1fdmlld3Bv
cnRSZW5kZXJlciA9IG51bGxwdHI7CisgICAgbV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9IFZpZXdw
b3J0UmVuZGVyZXJUeXBlOjpOb25lOwogCiAgICAgY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lciA9IGZyYW1lKCkub3duZXJFbGVtZW50KCk7CiAgICAgaWYgKG93bmVyICYmIChvd25l
ci0+c2Nyb2xsaW5nTW9kZSgpID09IFNjcm9sbGJhckFsd2F5c09mZikpIHsKQEAgLTc1MCwyNCAr
NzQ4LDQ3IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91
dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgICAgIHZNb2RlID0gU2Nyb2xs
YmFyQWx3YXlzT2ZmOwogICAgIH0KICAgICAKLSAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewotICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIGF1
dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgICAg
ICBSZW5kZXJFbGVtZW50KiByb290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVu
dEVsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwotICAgICAgICBhdXRvKiBib2R5ID0gZG9j
dW1lbnQtPmJvZHlPckZyYW1lc2V0KCk7Ci0gICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxIVE1MRnJhbWVTZXRFbGVtZW50PigqYm9keSkg
JiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgIHZNb2RlID0g
U2Nyb2xsYmFyQWx3YXlzT2ZmOwotICAgICAgICAgICAgICAgIGhNb2RlID0gU2Nyb2xsYmFyQWx3
YXlzT2ZmOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MQm9keUVsZW1lbnQ+KCpib2R5
KSkgewotICAgICAgICAgICAgICAgIC8vIEl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGNoZWNrIHRo
ZSBYIG92ZXJmbG93LAotICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3MgaWxsZWdhbCB0byBo
YXZlIHZpc2libGUgaW4gb25seSBvbmUgZGlyZWN0aW9uLgotICAgICAgICAgICAgICAgIFJlbmRl
ckVsZW1lbnQqIG8gPSByb290UmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lC
TEUgJiYgaXM8SFRNTEh0bWxFbGVtZW50PigqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpKSA/
IGJvZHktPnJlbmRlcmVyKCkgOiByb290UmVuZGVyZXI7Ci0gICAgICAgICAgICAgICAgYXBwbHlP
dmVyZmxvd1RvVmlld3BvcnQobywgaE1vZGUsIHZNb2RlKTsKKyAgICBpZiAobV9sYXlvdXRSb290
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZSgpLmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGJvZHlPckZy
YW1lc2V0ID0gZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCk7CisgICAgYXV0byogcm9vdFJlbmRl
cmVyID0gZG9jdW1lbnRFbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghYm9keU9yRnJhbWVz
ZXQgfHwgIWJvZHlPckZyYW1lc2V0LT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChyb290UmVu
ZGVyZXIpIHsKKyAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KCpyb290UmVuZGVy
ZXIsIGhNb2RlLCB2TW9kZSk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0UmVuZGVyZXJUeXBlID0g
Vmlld3BvcnRSZW5kZXJlclR5cGU6OkRvY3VtZW50OworICAgICAgICB9CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKGlzPEhUTUxGcmFtZVNldEVsZW1lbnQ+KCpib2R5T3JG
cmFtZXNldCkgJiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgeworICAgICAgICB2TW9kZSA9
IFNjcm9sbGJhckFsd2F5c09mZjsKKyAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaXM8SFRNTEJvZHlFbGVtZW50Pigq
Ym9keU9yRnJhbWVzZXQpICYmIHJvb3RSZW5kZXJlcikgeworICAgICAgICAvLyBJdCdzIHN1ZmZp
Y2llbnQgdG8ganVzdCBjaGVjayB0aGUgWCBvdmVyZmxvdywKKyAgICAgICAgLy8gc2luY2UgaXQn
cyBpbGxlZ2FsIHRvIGhhdmUgdmlzaWJsZSBpbiBvbmx5IG9uZSBkaXJlY3Rpb24uCisgICAgICAg
IGlmIChyb290UmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgaXM8
SFRNTEh0bWxFbGVtZW50Pihkb2N1bWVudEVsZW1lbnQpKSB7CisgICAgICAgICAgICBhdXRvKiBi
b2R5UmVuZGVyZXIgPSBib2R5T3JGcmFtZXNldC0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlm
IChib2R5UmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9y
dCgqYm9keVJlbmRlcmVyLCBoTW9kZSwgdk1vZGUpOworICAgICAgICAgICAgICAgIG1fdmlld3Bv
cnRSZW5kZXJlclR5cGUgPSBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6Qm9keTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlIGlmIChyb290UmVuZGVyZXIpCi0gICAgICAgICAgICBhcHBseU92
ZXJmbG93VG9WaWV3cG9ydChyb290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7Ci0gICAgfSAgICAK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KCpy
b290UmVuZGVyZXIsIGhNb2RlLCB2TW9kZSk7CisgICAgICAgICAgICBtX3ZpZXdwb3J0UmVuZGVy
ZXJUeXBlID0gVmlld3BvcnRSZW5kZXJlclR5cGU6OkRvY3VtZW50OworICAgICAgICB9CisgICAg
fQogfQogCiB2b2lkIEZyYW1lVmlldzo6d2lsbFJlY2FsY1N0eWxlKCkKQEAgLTMyNjMsOSArMzI4
NCwzNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0QXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHQoaW50
IGZpeGVkTWluaW11bUhlaWdodCkKICAgICBzZXROZWVkc0xheW91dCgpOwogfQogCitSZW5kZXJF
bGVtZW50KiBGcmFtZVZpZXc6OnZpZXdwb3J0UmVuZGVyZXIoKSBjb25zdAoreworICAgIGlmICht
X3ZpZXdwb3J0UmVuZGVyZXJUeXBlID09IFZpZXdwb3J0UmVuZGVyZXJUeXBlOjpOb25lKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1
bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKG1fdmlld3BvcnRSZW5kZXJlclR5cGUgPT0gVmlld3BvcnRSZW5kZXJlclR5cGU6OkRv
Y3VtZW50KSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudC0+cmVuZGVy
ZXIoKTsKKyAgICB9CisKKyAgICBpZiAobV92aWV3cG9ydFJlbmRlcmVyVHlwZSA9PSBWaWV3cG9y
dFJlbmRlcmVyVHlwZTo6Qm9keSkgeworICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQtPmJv
ZHkoKTsKKyAgICAgICAgaWYgKCFib2R5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBib2R5LT5yZW5kZXJlcigpOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIEZyYW1lVmlldzo6dXBk
YXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxP
dmVyZmxvdykKIHsKLSAgICBpZiAoIW1fdmlld3BvcnRSZW5kZXJlcikKKyAgICBhdXRvKiB2aWV3
cG9ydFJlbmRlcmVyID0gdGhpcy0+dmlld3BvcnRSZW5kZXJlcigpOworICAgIGlmICghdmlld3Bv
cnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX292ZXJmbG93U3Rh
dHVzRGlydHkpIHsKQEAgLTMyODQsNyArMzMzMyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVP
dmVyZmxvd1N0YXR1cyhib29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJm
CiAKICAgICAgICAgUmVmUHRyPE92ZXJmbG93RXZlbnQ+IG92ZXJmbG93RXZlbnQgPSBPdmVyZmxv
d0V2ZW50OjpjcmVhdGUoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwgaG9yaXpvbnRhbE92ZXJm
bG93LAogICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIHZlcnRpY2FsT3ZlcmZs
b3cpOwotICAgICAgICBvdmVyZmxvd0V2ZW50LT5zZXRUYXJnZXQobV92aWV3cG9ydFJlbmRlcmVy
LT5lbGVtZW50KCkpOworICAgICAgICBvdmVyZmxvd0V2ZW50LT5zZXRUYXJnZXQodmlld3BvcnRS
ZW5kZXJlci0+ZWxlbWVudCgpKTsKIAogICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCktPmVucXVl
dWVPdmVyZmxvd0V2ZW50KG92ZXJmbG93RXZlbnQucmVsZWFzZSgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAppbmRleCBiYzRlYjY5NGM0ODExYWU3YTI0MTRiNWZhOWQzMDcxZjA1MjA4
ZTA5Li5lMTY4ZDk5NDgzNDRmZmRjZDhmZWM4MzI5OWZhODVhMzYwM2I4M2YwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKQEAgLTU5NCw3ICs1OTQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChjb25zdCBJ
bnRQb2ludCYgb2xkUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBuZXdQb3NpdGlvbikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqLCBT
Y3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOworICAgIHZvaWQgYXBw
bHlPdmVyZmxvd1RvVmlld3BvcnQoY29uc3QgUmVuZGVyRWxlbWVudCYsIFNjcm9sbGJhck1vZGUm
IGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25U
b1ZpZXdwb3J0KCk7CiAKICAgICB2b2lkIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9yaXpv
bnRhbE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmZsb3cpOwpAQCAtNjc1LDYgKzY3NSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVGcm9tQVhPYmplY3RDYWNoZSgpOwogICAgIHZvaWQg
bm90aWZ5V2lkZ2V0cyhXaWRnZXROb3RpZmljYXRpb24pOwogCisgICAgUmVuZGVyRWxlbWVudCog
dmlld3BvcnRSZW5kZXJlcigpIGNvbnN0OworCiAgICAgSGFzaFNldDxXaWRnZXQqPiBtX3dpZGdl
dHNJblJlbmRlclRyZWU7CiAKICAgICBzdGF0aWMgZG91YmxlIHNDdXJyZW50UGFpbnRUaW1lU3Rh
bXA7IC8vIHVzZWQgZm9yIGRldGVjdGluZyBkZWNvZGVkIHJlc291cmNlIHRocmFzaCBpbiB0aGUg
Y2FjaGUKQEAgLTcxOCw4ICs3MjAsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX292ZXJmbG93
U3RhdHVzRGlydHk7CiAgICAgYm9vbCBtX2hvcml6b250YWxPdmVyZmxvdzsKLSAgICBib29sIG1f
dmVydGljYWxPdmVyZmxvdzsgICAgCi0gICAgUmVuZGVyRWxlbWVudCogbV92aWV3cG9ydFJlbmRl
cmVyOworICAgIGJvb2wgbV92ZXJ0aWNhbE92ZXJmbG93OworICAgIGVudW0gY2xhc3MgVmlld3Bv
cnRSZW5kZXJlclR5cGUgeyBOb25lLCBEb2N1bWVudCwgQm9keSB9OworICAgIFZpZXdwb3J0UmVu
ZGVyZXJUeXBlIG1fdmlld3BvcnRSZW5kZXJlclR5cGUgeyBWaWV3cG9ydFJlbmRlcmVyVHlwZTo6
Tm9uZSB9OwogCiAgICAgUGFnaW5hdGlvbiBtX3BhZ2luYXRpb247CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>