<?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>70814</bug_id>
          
          <creation_ts>2011-10-25 05:33:49 -0700</creation_ts>
          <short_desc>[GTK] Add webkit_web_view_get_uri() to WebKit2 GTK+ API</short_desc>
          <delta_ts>2011-10-28 01:13:12 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>489980</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-25 05:33:49 -0700</bug_when>
    <thetext>It&apos;s currently missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489988</commentid>
    <comment_count>1</comment_count>
      <attachid>112326</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-25 06:09:17 -0700</bug_when>
    <thetext>Created attachment 112326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489990</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-25 06:12:14 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491803</commentid>
    <comment_count>3</comment_count>
      <attachid>112326</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-10-27 12:13:02 -0700</bug_when>
    <thetext>Comment on attachment 112326
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:307
&gt;      WKPageLoadURL(toAPI(page), url.get());
&gt; +    webkitWebViewUpdateURI(webView);

This made me a bit nervous, but notice I didn&apos;t read WKPageLoadURL&apos;s code yet. You are sure there isn&apos;t a race here, I assume? Other than that looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491824</commentid>
    <comment_count>4</comment_count>
      <attachid>112326</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-27 12:31:32 -0700</bug_when>
    <thetext>Comment on attachment 112326
Patch

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

Looks good to me too. I have a couple quick comments:

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:455
&gt; + * Returns the current active URI of @web_view. The active URI might change during
&gt; + * a load operation:

Nice doc.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:506
&gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);

NULL -&gt; 0 here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:88
&gt; +    g_assert(!webkit_web_view_get_uri(m_webView));

IMO when we want to test behavior we should try to keep the assertions in the test rather than in the fixture. Having them in the fixture means that other tests will break, making it harder to find the source of the failure. I don&apos;t think this should block the patch though.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:130
&gt; +    static void uriChanged(GObject*,  GParamSpec*, ViewURITrackingTest* test)

Extra space after GObject*,

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:143
&gt; +    void checkActiveURI(const char* uri)

I guess this should be private.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:145
&gt; +        // g_assert_cmpstr is a macro, so we need to cache the temporary string.

Might want to clarify this a bit. The issue isn&apos;t that g_assert_cmpstr is a macro, but that it&apos;s a macro that uses it&apos;s values across several expressions.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:150
&gt; +    virtual void provisionalLoadStarted(WebKitWebLoaderClient*)

These don&apos;t need to be virtual unless you expect someone to override them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492264</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-27 23:26:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 112326 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112326&amp;action=review
&gt; 
&gt; Looks good to me too. I have a couple quick comments:
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:455
&gt; &gt; + * Returns the current active URI of @web_view. The active URI might change during
&gt; &gt; + * a load operation:
&gt; 
&gt; Nice doc.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:506
&gt; &gt; +    g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
&gt; 
&gt; NULL -&gt; 0 here.

oops, I wonder why style bot didn&apos;t complain.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/LoadTrackingTest.cpp:88
&gt; &gt; +    g_assert(!webkit_web_view_get_uri(m_webView));
&gt; 
&gt; IMO when we want to test behavior we should try to keep the assertions in the test rather than in the fixture. Having them in the fixture means that other tests will break, making it harder to find the source of the failure. I don&apos;t think this should block the patch though.

As long as other tests use the new methods in WebViewTest it will work, I added it to the fixture on purpose. LoadTrackingTest inherits from WebViewTest so any test using LoadTRackingTest will have those methods available. Estimated progress is also checked in the fixture, for example. One advantage of testing global stuff in the fixture is that it will be checked for other tests that are not thought to test it. 

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:130
&gt; &gt; +    static void uriChanged(GObject*,  GParamSpec*, ViewURITrackingTest* test)
&gt; 
&gt; Extra space after GObject*,

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:143
&gt; &gt; +    void checkActiveURI(const char* uri)
&gt; 
&gt; I guess this should be private.

Ok, I&apos;ve made everything public in fixtures by default.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:145
&gt; &gt; +        // g_assert_cmpstr is a macro, so we need to cache the temporary string.
&gt; 
&gt; Might want to clarify this a bit. The issue isn&apos;t that g_assert_cmpstr is a macro, but that it&apos;s a macro that uses it&apos;s values across several expressions.

Well, that fact that it&apos;s a macro means that you can&apos;t expect it to be a single expression, even if current implementation is a single expression it might change, so it&apos;s safer to always cache the temp alue for macros.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:150
&gt; &gt; +    virtual void provisionalLoadStarted(WebKitWebLoaderClient*)
&gt; 
&gt; These don&apos;t need to be virtual unless you expect someone to override them.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492278</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-27 23:57:50 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; As long as other tests use the new methods in WebViewTest it will work, I added it to the fixture on purpose. LoadTrackingTest inherits from WebViewTest so any test using LoadTRackingTest will have those methods available. Estimated progress is also checked in the fixture, for example. One advantage of testing global stuff in the fixture is that it will be checked for other tests that are not thought to test it. 

There&apos;s an interesting tradeoff because maybe you cover some corner case that you didn&apos;t think of when you have the assertions in the fixture. On the other hand that becomes like a &quot;hidden&quot; test. You also have the issue where if it fails, every single test starts failing and you don&apos;t know where to start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492303</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-10-28 01:13:12 -0700</bug_when>
    <thetext>Committed r98707: &lt;http://trac.webkit.org/changeset/98707&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112326</attachid>
            <date>2011-10-25 06:09:17 -0700</date>
            <delta_ts>2011-10-27 12:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-view-uri.diff</filename>
            <type>text/plain</type>
            <size>31268</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZmY0NDkyLi45Y2JiZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzkg
QEAKIDIwMTEtMTAtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSgpIHRvIFdlYktp
dDIgR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6IFVwZGF0ZSBXZWJWaWV3IFVSSSB0
byBtYWtlIHN1cmUKKyAgICAgICAgaXQncyB1cGRhdGVkIHRvIHByb3Zpc2lvbmFsIFVSTC4KKyAg
ICAgICAgKGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KTogVXBkYXRlCisgICAgICAgIFdlYlZpZXcgVVJJIGlmIHRoZXJlJ3MgYSBzZXJ2ZXIgcmVkaXJl
Y3Rpb24uCisgICAgICAgIChkaWRDb21taXRMb2FkRm9yRnJhbWUpOiBVcGRhdGUgV2ViVmlldyBV
UkkgdG8gbWFrZSBzdXJlIGl0CisgICAgICAgIGNvbnRhaW5zIHRoZSBmaW5hbCBvbmUuCisgICAg
ICAgIChkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOiBVcGRhdGUgV2ViVmlldyBV
Ukkgd2hlbiBhCisgICAgICAgIG5hdmlnYXRpb24gYWN0aW9uIHdpdGhpbiB0aGUgc2FtZSBkb2N1
bWVudCBpcyBwZXJmb3JtZWQuCisgICAgICAgICh3ZWJraXRXZWJMb2FkZXJDbGllbnRBdHRhY2hM
b2FkZXJDbGllbnRUb1BhZ2UpOiBBZGQKKyAgICAgICAgaW1wbGVtZW50YXRpb24gZm9yIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSBjYWxsYmFjay4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19j
bGFzc19pbml0KTogQWRkIFVSSSBwcm9wZXJ0eS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdVcGRh
dGVVUkkpOiBDaGVjayB3aGV0aGVyIGN1cnJlbnQgYWN0aXZlIFVSSSBoYXMKKyAgICAgICAgY2hh
bmdlZCB0byB1cGRhdGVkIGl0IGFuZCBlbWl0IDo6bm90aWZ5IHNpZ25hbCBpZiBpdCBjaGFuZ2Vz
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKTogQ2FsbCB3ZWJraXRXZWJWaWV3
VXBkYXRlVVJJKCkgdG8gbWFrZQorICAgICAgICBzdXJlIHRoZSBhY3RpdmUgVVJJIGlzIHVwZGF0
ZWQgd2hlbiBsb2FkIG9wZXJhdGlvbiBpcyBzdGFydGVkLgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19yZWxvYWQpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNz
X2NhY2hlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayk6IERpdHRv
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQpOiBEaXR0by4KKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRlbSk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOiBBZGQKKyAgICAgICAgd2Via2l0V2ViVmlld1VwZGF0
ZVVSSSgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rl
c3QuY3BwOgorICAgICAgICAocHJvdmlzaW9uYWxMb2FkU3RhcnRlZENhbGxiYWNrKTogQ2hlY2sg
cHJvdmlzaW9uYWwgVVJMIGlzIHRoZQorICAgICAgICByZXF1ZXN0ZWQgVVJJLgorICAgICAgICAo
cHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdENhbGxiYWNrKTogQ2hlY2sgcHJv
dmlzaW9uYWwKKyAgICAgICAgVVJMIGFmdGVyIHNlcnZlciByZWRpcmVjdGlvbiBpcyB0aGUgZXhw
ZWN0ZWQgcmVkaXJlY3RlZCBVUkkuCisgICAgICAgIChwcm92aXNpb25hbExvYWRGYWlsZWRDYWxs
YmFjayk6IENoZWNrIGFjdGl2ZSBVUkkuCisgICAgICAgIChsb2FkQ29tbWl0dGVkQ2FsbGJhY2sp
OiBEaXR0by4KKyAgICAgICAgKGxvYWRGaW5pc2hlZENhbGxiYWNrKTogRGl0dG8uCisgICAgICAg
IChsb2FkRmFpbGVkQ2FsbGJhY2spOiBEaXR0bworICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6
TG9hZFRyYWNraW5nVGVzdCk6IENoZWNrIGFjdGl2ZSBVUkkgaXMgTlVMTAorICAgICAgICBiZWZv
cmUgYW55IGxvYWRpbmcgb3BlcmF0aW9uIGhhcyBzdGFydGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0xvYWRUcmFja2luZ1Rlc3QuaDoKKyAgICAgICAgKExvYWRUcmFja2lu
Z1Rlc3Q6OnNldFJlZGlyZWN0VVJJKTogU2V0IHRoZSByZWRpcmVjdCBVUkkgdG8gY2hlY2sKKyAg
ICAgICAgaXQgYWZ0ZXIgYSBzZXJ2ZXIgcmVkaXJlY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvdGVzdHMvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgICh0ZXN0QmFj
a0ZvcndhcmRMaXN0TmF2aWdhdGlvbik6IFVzZSBXZWJWaWV3VGVzdCBtZXRob2RzIGZvcgorICAg
ICAgICBuYXZpZ2F0aW9uIGFjdGlvbnMgaW5zdGVhZCBvZiB1c2luZyBXZWJLaXRXZWJWaWV3IEFQ
SSBkaXJlY3RseS4KKyAgICAgICAgKHRlc3RCYWNrRm9yd2FyZExpc3RMaW1pdEFuZENhY2hlKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYkxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TG9hZGluZ1N0YXR1cyk6IERpdHRvLgorICAg
ICAgICAodGVzdExvYWRpbmdFcnJvcik6IERpdHRvLgorICAgICAgICAodGVzdExvYWRBbHRlcm5h
dGVDb250ZW50KTogRGl0dG8uCisgICAgICAgICh0ZXN0TG9hZENhbmNlbGxlZCk6IERpdHRvLgor
ICAgICAgICAodGVzdFdlYlZpZXdSZWxvYWQpOiBEaXR0by4KKyAgICAgICAgKHRlc3RMb2FkUHJv
Z3Jlc3MpOiBEaXR0by4KKyAgICAgICAgKHRlc3RXZWJWaWV3QWN0aXZlVVJJKTogQWRkIGEgdGVz
dCB0byBjaGVjayB0aGF0IG5vdGlmeSBzaWduYWwgaXMKKyAgICAgICAgZW1pdHRlZCB3aGVuIGFj
dGl2ZSBVUkkgY2hhbmdlcyBhbmQgaXQncyBjb3JyZWN0bHkgdXBkYXRlZCB3aGVuCisgICAgICAg
IGxvYWRlciBjbGllbnQgc2lnbmFscyBhcmUgZW1pdHRlZC4KKyAgICAgICAgKGJlZm9yZUFsbCk6
IEFkZCBhY3RpdmUtdXJpIHRlc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
V2ViVmlld1Rlc3QuY3BwOiBBZGQgY3VzdG9tIGxvYWQgbWV0aG9kcworICAgICAgICB3cmFwcGlu
ZyB0aGUgV2ViS2l0V2ViVmlldyBvbmVzLCB0byBpbml0aWFsaXplIHRoZSBhY3RpdmUgVVJJIHRv
CisgICAgICAgIHRoZSByZXF1ZXN0ZWQgb25lLCBzbyB0aGF0IGl0IGNhbiBiZSBjaGVja2VkIGJ5
IHRoZSBsb2FkZXIgY2xpZW50CisgICAgICAgIHRlc3QuCisgICAgICAgIChXZWJWaWV3VGVzdDo6
bG9hZFVSSSk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViVmlld1Rlc3Q6OmdvQmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6Z29Gb3J3
YXJkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpnb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaDoKKworMjAxMS0x
MC0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAg
ICAgW0dUS10gQWRkIGdvX3RvX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0oKSB0byBXZWJLaXQyIEdU
SysgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
OTgyNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmOGIzYzg3Li41YzI1ZGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxv
YWRlckNsaWVudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0sK
IAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOworICAgIHdlYmtp
dFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CiAgICAgZ19zaWduYWxfZW1pdChXRUJLSVRfV0VC
X0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbUFJPVklTSU9OQUxfTE9BRF9TVEFS
VEVEXSwgMCwgd2ViVmlldywgJnJldHVyblZhbHVlKTsKIH0KIApAQCAtNjcsNiArNjgsNyBAQCBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgVwogCiAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZp
ZXdXaWRnZXQoKSk7CisgICAgd2Via2l0V2ViVmlld1VwZGF0ZVVSSSh3ZWJWaWV3KTsKICAgICBn
X3NpZ25hbF9lbWl0KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChjbGllbnRJbmZvKSwgc2lnbmFs
c1tQUk9WSVNJT05BTF9MT0FEX1JFQ0VJVkVEX1NFUlZFUl9SRURJUkVDVF0sIDAsIHdlYlZpZXcs
ICZyZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTkyLDYgKzk0LDcgQEAgc3RhdGljIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXMKIAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOworICAg
IHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CiAgICAgZ19zaWduYWxfZW1pdChXRUJL
SVRfV0VCX0xPQURFUl9DTElFTlQoY2xpZW50SW5mbyksIHNpZ25hbHNbTE9BRF9DT01NSVRURURd
LCAwLCB3ZWJWaWV3LCAgJnJldHVyblZhbHVlKTsKIH0KIApAQCAtMTIwLDYgKzEyMywxNCBAQCBz
dGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS0VycgogICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5m
YWlsaW5nVVJMKCkudXRmOCgpLmRhdGEoKSwgd2ViRXJyb3IuZ2V0KCksICZyZXR1cm5WYWx1ZSk7
CiB9CiAKK3N0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFt
ZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkko
V0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSk7Cit9CisKIHN0YXRp
YyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
dG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpOwpAQCAtMTQ0LDcgKzE1NSw3IEBAIHZvaWQgd2Vi
a2l0V2ViTG9hZGVyQ2xpZW50QXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKFdlYktpdFdlYkxvYWRl
ckNsaWVudCogbG9hZGVyCiAgICAgICAgIDAsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lCiAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFtZSwKICAgICAgICAgZGlkRmFpbExvYWRX
aXRoRXJyb3JGb3JGcmFtZSwKLSAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lCisgICAgICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSwKICAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmly
c3RMYXlvdXRGb3JGcmFtZQogICAgICAgICAwLCAvLyBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JGcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCAwMjJhYmE4Li5iZWI0NmE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNDIsMTMg
KzQyLDE1IEBAIGVudW0gewogICAgIFBST1BfMCwKIAogICAgIFBST1BfV0VCX0NPTlRFWFQsCi0g
ICAgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9HUkVTUworICAgIFBST1BfRVNUSU1BVEVEX0xPQURf
UFJPR1JFU1MsCisgICAgUFJPUF9VUkkKIH07CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZh
dGUgewogICAgIFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQ7CiAgICAgQ1N0cmluZyBjdXN0b21U
ZXh0RW5jb2Rpbmc7CiAgICAgZG91YmxlIGVzdGltYXRlZExvYWRQcm9ncmVzczsKKyAgICBDU3Ry
aW5nIGFjdGl2ZVVSSTsKIAogICAgIEdSZWZQdHI8V2ViS2l0V2ViTG9hZGVyQ2xpZW50PiBsb2Fk
ZXJDbGllbnQ7CiAgICAgR1JlZlB0cjxXZWJLaXRCYWNrRm9yd2FyZExpc3Q+IGJhY2tGb3J3YXJk
TGlzdDsKQEAgLTEwNSw2ICsxMDcsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNh
c2UgUFJPUF9FU1RJTUFURURfTE9BRF9QUk9HUkVTUzoKICAgICAgICAgZ192YWx1ZV9zZXRfZG91
YmxlKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VzdGltYXRlZF9sb2FkX3Byb2dyZXNzKHdl
YlZpZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1VSSToKKyAgICAgICAgZ192
YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7
CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0x
NjQsNiArMTY5LDE5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW4gZXN0aW1hdGUgb2YgdGhlIHBlcmNl
bnQgY29tcGxldGlvbiBmb3IgYSBkb2N1bWVudCBsb2FkIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wLCAxLjAsIDAuMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURBQkxFKSk7CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp1cmk6Cisg
ICAgICoKKyAgICAgKiBUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSAjV2ViS2l0V2ViVmll
dy4KKyAgICAgKiBTZWUgd2Via2l0X3dlYl92aWV3X2dldF91cmkoKSBmb3IgbW9yZSBkZXRhaWxz
LgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ09iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9VUkksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJ1cmki
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVVJJIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlRoZSBjdXJyZW50IGFjdGl2ZSBVUkkgb2YgdGhlIHZpZXciLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9h
ZFByb2dyZXNzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGRvdWJsZSBlc3RpbWF0ZWRMb2FkUHJv
Z3Jlc3MpCkBAIC0xNzQsNiArMTkyLDIxIEBAIHZvaWQgd2Via2l0V2ViVmlld1NldEVzdGltYXRl
ZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgZXN0aW1hCiAgICAg
Z19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYlZpZXcpLCAiZXN0aW1hdGVkLWxvYWQtcHJvZ3Jl
c3MiKTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQ
YWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gd2tVUkwoQWRvcHRXSywgV0tQYWdlQ29weUFjdGl2ZVVSTCh0b0FQSShwYWdlKSkpOwor
ICAgIENTdHJpbmcgYWN0aXZlVVJJOworICAgIGlmICh3a1VSTCkKKyAgICAgICAgYWN0aXZlVVJJ
ID0gdG9JbXBsKHdrVVJMLmdldCgpKS0+c3RyaW5nKCkudXRmOCgpOworCisgICAgaWYgKHdlYlZp
ZXctPnByaXYtPmFjdGl2ZVVSSSA9PSBhY3RpdmVVUkkpCisgICAgICAgIHJldHVybjsKKworICAg
IHdlYlZpZXctPnByaXYtPmFjdGl2ZVVSSSA9IGFjdGl2ZVVSSTsKKyAgICBnX29iamVjdF9ub3Rp
ZnkoR19PQkpFQ1Qod2ViVmlldyksICJ1cmkiKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3Zp
ZXdfbmV3OgogICoKQEAgLTI3MSw2ICszMDQsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3VyaShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogdXJpKQogICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmco
dXJpKSk7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKTsKICAgICBXS1BhZ2VMb2FkVVJMKHRvQVBJ
KHBhZ2UpLCB1cmwuZ2V0KCkpOworICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7
CiB9CiAKIC8qKgpAQCAtMjk5LDYgKzMzMyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2xvYWRf
YWx0ZXJuYXRlX2h0bWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGNvCiAg
ICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkkg
PyBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVucmVhY2hhYmxlVVJJKSkgOiAw
OwogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJL
SVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSk7CiAgICAgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxT
dHJpbmcodG9BUEkocGFnZSksIGh0bWxTdHJpbmcuZ2V0KCksIGJhc2VVUkwuZ2V0KCksIHVucmVh
Y2hhYmxlVVJMLmdldCgpKTsKKyAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwog
fQogCiAvKioKQEAgLTMxMyw2ICszNDgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWxvYWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAKICAgICBXS1BhZ2VSZWxvYWQodG9BUEkod2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSkpOworICAgIHdlYmtp
dFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CiB9CiAKIC8qKgpAQCAtMzI3LDYgKzM2Myw3IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7CiAKICAgICBXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpKTsKKyAgICB3ZWJraXRXZWJW
aWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQogCiAvKioKQEAgLTM2MSw2ICszOTgsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19nb19iYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCiAgICAgV0tQYWdl
R29CYWNrKHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFT
RSh3ZWJWaWV3KSkpKTsKKyAgICB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQog
CiAvKioKQEAgLTM5MSw2ICs0MjksNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldykpOwogCiAgICAgV0tQYWdlR29Gb3J3YXJkKHRvQVBJKHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpKTsKKyAgICB3
ZWJraXRXZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQogCiAvKioKQEAgLTQwOSw2ICs0NDgs
NjcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF91cmk6CisgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFj
dGl2ZSBVUkkgb2YgQHdlYl92aWV3LiBUaGUgYWN0aXZlIFVSSSBtaWdodCBjaGFuZ2UgZHVyaW5n
CisgKiBhIGxvYWQgb3BlcmF0aW9uOgorICoKKyAqIDxvcmRlcmVkbGlzdD4KKyAqIDxsaXN0aXRl
bT48cGFyYT4KKyAqICAgV2hlbiBub3RoaW5nIGhhcyBiZWVuIGxvYWRlZCB5ZXQgb24gQHdlYl92
aWV3IHRoZSBhY3RpdmUgVVJJIGlzICVOVUxMLgorICogPC9wYXJhPjwvbGlzdGl0ZW0+CisgKiA8
bGlzdGl0ZW0+PHBhcmE+CisgKiAgIFdoZW4gYSBuZXcgbG9hZCBvcGVyYXRpb24gc3RhcnRzIHRo
ZSBhY3RpdmUgVVJJIGlzIHRoZSByZXF1ZXN0ZWQgVVJJOgorICogICA8aXRlbWl6ZWRsaXN0Pgor
ICogICA8bGlzdGl0ZW0+PHBhcmE+CisgKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0aW9uIHdhcyBz
dGFydGVkIGJ5IHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSgpLAorICogICAgIHRoZSByZXF1ZXN0
ZWQgVVJJIGlzIHRoZSBnaXZlbiBvbmUuCisgKiAgIDwvcGFyYT48L2xpc3RpdGVtPgorICogICA8
bGlzdGl0ZW0+PHBhcmE+CisgKiAgICAgSWYgdGhlIGxvYWQgb3BlcmF0aW9uIHdhcyBzdGFydGVk
IGJ5IHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1sKCksCisgKiAgICAgdGhlIHJl
cXVlc3RlZCBVUkkgaXMgImFib3V0OmJsYW5rIi4KKyAqICAgPC9wYXJhPjwvbGlzdGl0ZW0+Cisg
KiAgIDxsaXN0aXRlbT48cGFyYT4KKyAqICAgICBJZiB0aGUgbG9hZCBvcGVyYXRpb24gd2FzIHN0
YXJ0ZWQgYnkgd2Via2l0X3dlYl92aWV3X2dvX2JhY2soKSBvcgorICogICAgIHdlYmtpdF93ZWJf
dmlld19nb19mb3J3YXJkKCksIHRoZSByZXF1ZXN0ZWQgVVJJIGlzIHRoZSBvcmlnaW5hbCBVUkkK
KyAqICAgICBvZiB0aGUgcHJldmlvdXMvbmV4dCBpdGVtIGluIHRoZSAjV2ViS2l0QmFja0Zvcndh
cmRMaXN0IG9mIEB3ZWJfdmlldy4KKyAqICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgKiAgIDxsaXN0
aXRlbT48cGFyYT4KKyAqICAgICBJZiB0aGUgbG9hZCBvcGVyYXRpb24gd2FzIHN0YXJ0ZWQgYnkK
KyAqICAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRlbSgpLCB0
aGUgcmVxdWVzdGVkIFVSSQorICogICAgIGlzIHRoZSBvcHJpZ2luYWwgVVJJIG9mIHRoZSBnaXZl
biAjV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS4KKyAqICAgPC9wYXJhPjwvbGlzdGl0ZW0+Cisg
KiAgIDwvaXRlbWl6ZWRsaXN0PgorICogPC9wYXJhPjwvbGlzdGl0ZW0+CisgKiA8bGlzdGl0ZW0+
PHBhcmE+CisgKiAgIElmIHRoZXJlIGlzIGEgc2VydmVyIHJlZGlyZWN0aW9uIGR1cmluZyB0aGUg
bG9hZCBvcGVyYXRpb24sCisgKiAgIHRoZSBhY3RpdmUgVVJJIGlzIHRoZSByZWRpcmVjdGVkIFVS
SS4gV2hlbiB0aGUgc2lnbmFsCisgKiAgICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OnByb3Zpc2lv
bmFsLWxvYWQtcmVjZWl2ZWQtc2VydmVyLXJlZGlyZWN0CisgKiAgIGlzIGVtaXR0ZWQsIHRoZSBh
Y3RpdmUgVVJJIGlzIGFscmVhZHkgdXBkYXRlZCB0byB0aGUgcmVkaXJlY3RlZCBVUkkuCisgKiA8
L3BhcmE+PC9saXN0aXRlbT4KKyAqIDxsaXN0aXRlbT48cGFyYT4KKyAqICAgV2hlbiB0aGUgc2ln
bmFsICNXZWJLaXRXZWJMb2FkZXJDbGllbnQ6OmxvYWQtY29tbWl0dGVkIGlzIGVtaXR0ZWQsCisg
KiAgIHRoZSBhY3RpdmUgVVJJIGlzIHRoZSBmaW5hbCBvbmUgYW5kIGl0IHdpbGwgbm90IGNoYW5n
ZSB1bmxlc3MKKyAqICAgYSBuZXcgbG9hZCBvcGVyYXRpb24gaXMgc3RhcnRlZCBvciBhIG5hdmln
YXRpb24gYWN0aW9uIHdpdGhpbiB0aGUKKyAqICAgc2FtZSBwYWdlIGlzIHBlcmZvcm1lZC4KKyAq
IDwvcGFyYT48L2xpc3RpdGVtPgorICogPC9vcmRlcmVkbGlzdD4KKyAqCisgKiBZb3UgY2FuIG1v
bml0b3IgdGhlIGFjdGl2ZSBVUkkgYnkgY29ubmVjdGluZyB0byB0aGUgbm90aWZ5Ojp1cmkKKyAq
IHNpZ25hbCBvZiBAd2ViX3ZpZXcuCisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQgYWN0aXZl
IFVSSSBvZiBAd2ViX3ZpZXcgb3IgJU5VTEwKKyAqICAgIGlmIG5vdGhpbmcgaGFzIGJlZW4gbG9h
ZGVkIHlldC4KKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5h
Y3RpdmVVUkkuZGF0YSgpOworfQorCisvKioKICAqIHdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9t
X2NoYXJzZXQ6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCkBAIC00OTksNCAr
NTk5LDUgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRl
bShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXQKIAogICAgIFdLUGFnZUdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtKHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3ZWJWaWV3KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdl
YmtpdEJhY2tGb3J3YXJkTGlzdEl0ZW1HZXRXS0l0ZW0obGlzdEl0ZW0pKTsKKyAgICB3ZWJraXRX
ZWJWaWV3VXBkYXRlVVJJKHdlYlZpZXcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDJmNTRmNDkuLmY4MzAxYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAg
LTEyNCw2ICsxMjQsOCBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0ICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZQogV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRlbSAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSAqbGlzdF9pdGVtKTsK
K1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgord2Via2l0X3dlYl92aWV3X2dldF91cmkgICAgICAg
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAog
V0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFy
c2V0ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmgKaW5kZXggODE2N2I0Yi4uZTYyZDUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zMCw1
ICszMCw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAKIHZvaWQgd2Via2l0V2Vi
Vmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGVzdGlt
YXRlZExvYWRQcm9ncmVzcyk7Cit2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0V2Vi
VmlldyopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdU
ZXN0LmNwcAppbmRleCAyNTQ0N2YyLi5hOGM1NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmNwcApA
QCAtMjQsMTggKzI0LDIzIEBACiAKIHN0YXRpYyBnYm9vbGVhbiBwcm92aXNpb25hbExvYWRTdGFy
dGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcq
LCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogeworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5t
X2FjdGl2ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dl
YlZpZXcpKTsKICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRTdGFydGVkKGNsaWVudCk7CiAgICAg
cmV0dXJuIFRSVUU7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBwcm92aXNpb25hbExvYWRSZWNlaXZl
ZFNlcnZlclJlZGlyZWN0Q2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdl
YktpdFdlYlZpZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogeworICAgIHRlc3QtPm1fYWN0
aXZlVVJJID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KTsKKyAgICBp
ZiAoIXRlc3QtPm1fcmVkaXJlY3RVUkkuaXNOdWxsKCkpCisgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXN0LT5tX3JlZGlyZWN0VVJJLmRhdGEoKSwgPT0sIHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEo
KSk7CiAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdChjbGll
bnQpOwogICAgIHJldHVybiBUUlVFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxM
b2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdl
YlZpZXcqLCBjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvciwgTG9hZFRyYWNr
aW5nVGVzdCogdGVzdCkKIHsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkku
ZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSk7CiAg
ICAgZ19hc3NlcnQoZXJyb3IpOwogICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZEZhaWxlZChjbGll
bnQsIGZhaWxpbmdVUkksIGVycm9yKTsKICAgICByZXR1cm4gVFJVRTsKQEAgLTQzLDE4ICs0OCwy
MSBAQCBzdGF0aWMgZ2Jvb2xlYW4gcHJvdmlzaW9uYWxMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0
V2ViTG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYgogCiBzdGF0aWMgZ2Jvb2xlYW4gbG9hZENvbW1p
dHRlZENhbGxiYWNrKFdlYktpdFdlYkxvYWRlckNsaWVudCogY2xpZW50LCBXZWJLaXRXZWJWaWV3
KiwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93
ZWJWaWV3KSk7CiAgICAgdGVzdC0+bG9hZENvbW1pdHRlZChjbGllbnQpOwogICAgIHJldHVybiBU
UlVFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gbG9hZEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KiBjbGllbnQsIFdlYktpdFdlYlZpZXcqLCBMb2FkVHJhY2tpbmdUZXN0KiB0
ZXN0KQogeworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09
LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKICAgICB0ZXN0LT5s
b2FkRmluaXNoZWQoY2xpZW50KTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAogc3RhdGljIGdib29s
ZWFuIGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJMb2FkZXJDbGllbnQqIGNsaWVudCwgV2Vi
S2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBMb2Fk
VHJhY2tpbmdUZXN0KiB0ZXN0KQogeworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2
ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcp
KTsKICAgICBnX2Fzc2VydChlcnJvcik7CiAgICAgdGVzdC0+bG9hZEZhaWxlZChjbGllbnQsIGZh
aWxpbmdVUkksIGVycm9yKTsKICAgICByZXR1cm4gVFJVRTsKQEAgLTc2LDYgKzg0LDggQEAgTG9h
ZFRyYWNraW5nVGVzdDo6TG9hZFRyYWNraW5nVGVzdCgpCiAgICAgZ19zaWduYWxfY29ubmVjdChj
bGllbnQsICJsb2FkLWZpbmlzaGVkIiwgR19DQUxMQkFDSyhsb2FkRmluaXNoZWRDYWxsYmFjayks
IHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoY2xpZW50LCAibG9hZC1mYWlsZWQiLCBHX0NB
TExCQUNLKGxvYWRGYWlsZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93ZWJWaWV3LCAibm90aWZ5Ojplc3RpbWF0ZWQtbG9hZC1wcm9ncmVzcyIsIEdfQ0FMTEJBQ0so
ZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKworICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpKTsKIH0KIAogTG9hZFRyYWNraW5n
VGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvTG9hZFRyYWNraW5nVGVzdC5oCmluZGV4IDk4ZmYyMTEu
LjVlYWJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL0xvYWRUcmFja2luZ1Rlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9Mb2FkVHJhY2tpbmdUZXN0LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCosIGNvbnN0
IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciopOwogICAgIHZpcnR1YWwgdm9pZCBlc3RpbWF0ZWRQ
cm9ncmVzc0NoYW5nZWQoKTsKIAorICAgIHZvaWQgc2V0UmVkaXJlY3RVUkkoY29uc3QgY2hhciog
dXJpKSB7IG1fcmVkaXJlY3RVUkkgPSB1cmk7IH0KKwogICAgIGVudW0gTG9hZEV2ZW50cyB7CiAg
ICAgICAgIFByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsCiAgICAgICAgIFByb3Zpc2lvbmFsTG9hZFJl
Y2VpdmVkU2VydmVyUmVkaXJlY3QsCkBAIC01MCw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBib29s
IG1fcnVuTG9hZFVudGlsQ29tcGxldGlvbjsKICAgICBWZWN0b3I8TG9hZEV2ZW50cz4gbV9sb2Fk
RXZlbnRzOwogICAgIGZsb2F0IG1fZXN0aW1hdGVkUHJvZ3Jlc3M7CisgICAgQ1N0cmluZyBtX3Jl
ZGlyZWN0VVJJOwogfTsKIAogI2VuZGlmIC8vIExvYWRUcmFja2luZ1Rlc3RfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdEJhY2tGb3J3YXJk
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0QmFj
a0ZvcndhcmRMaXN0LmNwcAppbmRleCA4NTk2NTIwLi5hYzJhNTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0QmFja0ZvcndhcmRMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0QmFja0Zv
cndhcmRMaXN0LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNrRm9y
d2FyZExpc3ROYXZpZ2F0aW9uKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
CiAKICAgICBDU3RyaW5nIHVyaVBhZ2UxID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2Ux
Iik7CiAgICAgdGVzdC0+bV9jaGFuZ2VkRmxhZ3MgPSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJy
ZW50SXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkFkZGVkSXRlbTsKLSAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkodGVzdC0+bV93ZWJWaWV3LCB1cmlQYWdlMS5kYXRhKCkpOworICAgIHRl
c3QtPmxvYWRVUkkodXJpUGFnZTEuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKIAogICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2sodGVz
dC0+bV93ZWJWaWV3KSk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgdGVzdEJhY2tG
b3J3YXJkTGlzdE5hdmlnYXRpb24oQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKIAogICAgIENTdHJpbmcgdXJpUGFnZTIgPSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvUGFn
ZTIiKTsKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkN1
cnJlbnRJdGVtIHwgQmFja0ZvcndhcmRMaXN0VGVzdDo6QWRkZWRJdGVtOwotICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcsIHVyaVBhZ2UyLmRhdGEoKSk7CisgICAg
dGVzdC0+bG9hZFVSSSh1cmlQYWdlMi5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogCiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRl
c3QtPm1fd2ViVmlldykpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNr
Rm9yd2FyZExpc3ROYXZpZ2F0aW9uKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9s
aXN0KHRlc3QtPm1fbGlzdCkpOwogCiAgICAgdGVzdC0+bV9jaGFuZ2VkRmxhZ3MgPSBCYWNrRm9y
d2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbTsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fYmFjayh0
ZXN0LT5tX3dlYlZpZXcpOworICAgIHRlc3QtPmdvQmFjaygpOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29f
YmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0QmFja0ZvcndhcmRMaXN0TmF2aWdhdGlvbihCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludAogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xp
c3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkZvcndhcmQsIGl0ZW1zLCAxKTsKIAogICAgIHRlc3Qt
Pm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW07Ci0gICAg
d2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KTsKKyAgICB0ZXN0LT5n
b0ZvcndhcmQoKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKQEAg
LTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0QmFja0ZvcndhcmRMaXN0TmF2aWdhdGlv
bihCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAgIGdfYXNzZXJ0KCF3
ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdCh0ZXN0LT5tX2xpc3QpKTsK
IAogICAgIHRlc3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVu
dEl0ZW07Ci0gICAgd2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0o
dGVzdC0+bV93ZWJWaWV3LCBpdGVtUGFnZTEpOworICAgIHRlc3QtPmdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtKGl0ZW1QYWdlMSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAK
ICAgICBnX2Fzc2VydChpdGVtUGFnZTEgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9j
dXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZv
aWQgdGVzdEJhY2tGb3J3YXJkTGlzdExpbWl0QW5kQ2FjaGUoQmFja0ZvcndhcmRMaXN0VGVzdCog
dGVzdCwgZ2NvbnN0cG8KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtCYWNrRm9yd2FyZExp
c3RMaW1pdDsgaSsrKSB7CiAgICAgICAgIEdPd25QdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9wcmlu
dGYoIi9QYWdlJWQiLCBpKSk7CiAgICAgICAgIHRlc3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0Zv
cndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW0gfCBCYWNrRm9yd2FyZExpc3RUZXN0OjpBZGRlZEl0
ZW07Ci0gICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcsIGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgocGF0aC5nZXQoKSkuZGF0YSgpKTsKKyAgICAgICAgdGVzdC0+
bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGguZ2V0KCkpLmRhdGEoKSk7CiAgICAg
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIH0KIApAQCAtMjUzLDcgKzI1
Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNrRm9yd2FyZExpc3RMaW1pdEFuZENhY2hlKEJhY2tG
b3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvCiAKICAgICBHT3duUHRyPGNoYXI+IHBhdGgo
Z19zdHJkdXBfcHJpbnRmKCIvUGFnZSVkIiwga0JhY2tGb3J3YXJkTGlzdExpbWl0KSk7CiAgICAg
dGVzdC0+bV9jaGFuZ2VkRmxhZ3MgPSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8
IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkFkZGVkSXRlbSB8IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OlJl
bW92ZWRJdGVtczsKLSAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkodGVzdC0+bV93ZWJWaWV3
LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGguZ2V0KCkpLmRhdGEoKSk7CisgICAgdGVzdC0+
bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKHBhdGguZ2V0KCkpLmRhdGEoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkQW5kQ2hlY2tSZW1vdmVkSXRlbXMocmVtb3ZlZEl0
ZW1zLmdldCgpKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9sZW5ndGgodGVzdC0+bV9saXN0KSwgPT0sIGtCYWNrRm9yd2FyZExpc3RMaW1pdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCmluZGV4IDc2YjNkZDEuLjQ1
ZmJkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCkBAIC0zMCw3
ICszMCw4IEBAIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCiBzdGF0aWMgdm9p
ZCB0ZXN0TG9hZGluZ1N0YXR1cyhMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
IGRhdGEpCiB7Ci0gICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywg
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikuZGF0YSgpKTsKKyAgICB0ZXN0LT5z
ZXRSZWRpcmVjdFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbm9ybWFsIikuZGF0YSgpKTsK
KyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9yZWRpcmVjdCIpLmRh
dGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICBWZWN0b3I8
TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50
czsKQEAgLTQzLDcgKzQ0LDcgQEAgc3RhdGljIHZvaWQgdGVzdExvYWRpbmdTdGF0dXMoTG9hZFRy
YWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlciBkYXRhKQogCiBzdGF0aWMgdm9pZCB0ZXN0
TG9hZGluZ0Vycm9yKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0g
ICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywga1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL2Vycm9yIikuZGF0YSgpKTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi9lcnJvciIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CiAKICAgICBWZWN0b3I8TG9hZFRyYWNraW5nVGVzdDo6TG9hZEV2ZW50cz4m
IGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKQEAgLTYzLDkgKzY0LDcgQEAgc3RhdGljIHZv
aWQgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkQW5kQ2xlYXJFdmVudHMoVmVjdG9yPExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWQKIAogc3RhdGljIHZvaWQgdGVzdExvYWRBbHRlcm5hdGVDb250ZW50KExv
YWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfYWx0ZXJuYXRlX2h0bWwodGVzdC0+bV93ZWJWaWV3LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI8aHRtbD48Ym9keT5BbHRlcm5hdGUgQ29udGVudDwv
Ym9keT48L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYWx0ZXJuYXRlIikuZGF0YSgpKTsKKyAgICB0ZXN0
LT5sb2FkQWx0ZXJuYXRlSFRNTCgiPGh0bWw+PGJvZHk+QWx0ZXJuYXRlIENvbnRlbnQ8L2JvZHk+
PC9odG1sPiIsIDAsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hbHRlcm5hdGUiKS5kYXRhKCkp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGFzc2VydE5vcm1hbExv
YWRIYXBwZW5lZEFuZENsZWFyRXZlbnRzKHRlc3QtPm1fbG9hZEV2ZW50cyk7CiB9CkBAIC05Miw3
ICs5MSw3IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdExvYWRDYW5jZWxsZWQoTG9hZFN0
b3BUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2Nh
bmNlbGxlZCIpLmRhdGEoKSk7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvY2FuY2VsbGVkIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKIAogICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRXZlbnRzPiYgZXZlbnRz
ID0gdGVzdC0+bV9sb2FkRXZlbnRzOwpAQCAtMTA4LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3UmVsb2FkKExvYWRUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZCh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIHRlc3QtPndh
aXQoMC4yNSk7IC8vIFdhaXQgZm9yIGEgcXVhcnRlciBvZiBhIHNlY29uZC4KIAotICAgIHdlYmtp
dF93ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcsIGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9ub3JtYWwiKS5kYXRhKCkpOworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL25vcm1hbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAgICAgYXNzZXJ0Tm9ybWFsTG9hZEhhcHBlbmVkQW5kQ2xlYXJFdmVudHModGVzdC0+
bV9sb2FkRXZlbnRzKTsKIApAQCAtMTE5LDExICsxMTgsNjUgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdSZWxvYWQoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogc3Rh
dGljIHZvaWQgdGVzdExvYWRQcm9ncmVzcyhMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewotICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh0ZXN0LT5tX3dlYlZpZXcs
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9ub3JtYWwiKS5kYXRhKCkpOworICAgIHRlc3QtPmxv
YWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL25vcm1hbCIpLmRhdGEoKSk7CiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQodGVzdC0+
bV9lc3RpbWF0ZWRQcm9ncmVzcywgPT0sIDEpOwogfQogCitjbGFzcyBWaWV3VVJJVHJhY2tpbmdU
ZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RF
U1RfRklYVFVSRShWaWV3VVJJVHJhY2tpbmdUZXN0KTsKKworICAgIHN0YXRpYyB2b2lkIHVyaUNo
YW5nZWQoR09iamVjdCosICBHUGFyYW1TcGVjKiwgVmlld1VSSVRyYWNraW5nVGVzdCogdGVzdCkK
KyAgICB7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCks
ICE9LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICAgICAg
dGVzdC0+bV9hY3RpdmVVUkkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh0ZXN0LT5tX3dlYlZp
ZXcpOworICAgIH0KKworICAgIFZpZXdVUklUcmFja2luZ1Rlc3QoKQorICAgICAgICA6IG1fYWN0
aXZlVVJJKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldykpCisgICAgeworICAgICAg
ICBnX2Fzc2VydChtX2FjdGl2ZVVSSS5pc051bGwoKSk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV93ZWJWaWV3LCAibm90aWZ5Ojp1cmkiLCBHX0NBTExCQUNLKHVyaUNoYW5nZWQpLCB0aGlz
KTsKKyAgICB9CisKKyAgICB2b2lkIGNoZWNrQWN0aXZlVVJJKGNvbnN0IGNoYXIqIHVyaSkKKyAg
ICB7CisgICAgICAgIC8vIGdfYXNzZXJ0X2NtcHN0ciBpcyBhIG1hY3JvLCBzbyB3ZSBuZWVkIHRv
IGNhY2hlIHRoZSB0ZW1wb3Jhcnkgc3RyaW5nLgorICAgICAgICBDU3RyaW5nIHNlcnZlclVSSSA9
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgodXJpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKG1f
YWN0aXZlVVJJLmRhdGEoKSwgPT0sIHNlcnZlclVSSS5kYXRhKCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKFdlYktpdFdlYkxvYWRlckNsaWVudCop
CisgICAgeworICAgICAgICBjaGVja0FjdGl2ZVVSSSgiL3JlZGlyZWN0Iik7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFJlY2VpdmVkU2VydmVyUmVkaXJlY3QoV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50KikKKyAgICB7CisgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvbm9y
bWFsIik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGxvYWRDb21taXR0ZWQoV2ViS2l0V2Vi
TG9hZGVyQ2xpZW50KikKKyAgICB7CisgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvbm9ybWFsIik7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChXZWJLaXRXZWJMb2FkZXJD
bGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGNoZWNrQWN0aXZlVVJJKCIvbm9ybWFsIik7
CisgICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGaW5pc2hlZChjbGllbnQpOworICAgIH0K
KworICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0FjdGl2ZVVSSShWaWV3VVJJVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorewor
ICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3JlZGlyZWN0IikuZGF0
YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKK30KKwogc3RhdGljIHZv
aWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2Fn
ZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3Bv
aW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3BvbnNlU3RyaW5nID0gIjxodG1s
Pjxib2R5PlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchIgpAQCAtMTcwLDYgKzIyMywxMCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgTG9hZFN0
b3BUcmFja2luZ1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdG9wLWxvYWRpbmciLCB0ZXN0
TG9hZENhbmNlbGxlZCk7CiAgICAgTG9hZFRyYWNraW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInByb2dyZXNzIiwgdGVzdExvYWRQcm9ncmVzcyk7CiAgICAgTG9hZFRyYWNraW5nVGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgInJlbG9hZCIsIHRlc3RXZWJWaWV3UmVsb2FkKTsKKworICAg
IC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3ZWIgdmlldyBub3RpZnk6OnVyaSBzaWduYWwgaXMg
Y29ycmVjdGx5IGVtaXR0ZWQKKyAgICAvLyBhbmQgdGhlIHVyaSBpcyBhbHJlYWR5IHVwZGF0ZWQg
d2hlbiBsb2FkZXIgY2xpZW50IHNpZ25hbHMgYXJlIGVtaXR0ZWQuCisgICAgVmlld1VSSVRyYWNr
aW5nVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImFjdGl2ZS11cmkiLCB0ZXN0V2ViVmlld0Fj
dGl2ZVVSSSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDUzNzhmNWYu
LmRmZTU4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKQEAgLTM5LDYgKzM5LDQ4IEBAIHN0YXRpYyBnYm9vbGVh
biB0ZXN0TG9hZFRpbWVvdXRGaW5pc2hMb29wKEdNYWluTG9vcCogbG9vcCkKICAgICByZXR1cm4g
RkFMU0U7CiB9CiAKK3ZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRVUkkoY29uc3QgY2hhciogdXJpKQor
eworICAgIG1fYWN0aXZlVVJJID0gdXJpOworICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSht
X3dlYlZpZXcsIHVyaSk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRBbHRlcm5hdGVIVE1M
KGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVUkksIGNvbnN0IGNoYXIqIHVucmVh
Y2hhYmxlVVJJKQoreworICAgIG1fYWN0aXZlVVJJID0gImFib3V0OmJsYW5rIjsKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChtX3dlYlZpZXcsIGh0bWwsIGJhc2VVUkks
IHVucmVhY2hhYmxlVVJJKTsKK30KKwordm9pZCBXZWJWaWV3VGVzdDo6Z29CYWNrKCkKK3sKKyAg
ICBpZiAod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKG1fd2ViVmlldykpIHsKKyAgICAgICAg
V2ViS2l0QmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2Zv
cndhcmRfbGlzdChtX3dlYlZpZXcpOworICAgICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVt
KiBpdGVtID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbShsaXN0LCAtMSk7
CisgICAgICAgIG1fYWN0aXZlVVJJID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fZ2V0
X29yaWdpbmFsX3VyaShpdGVtKTsKKyAgICB9CisKKyAgICAvLyBDYWxsIGdvX2JhY2sgZXZlbiB3
aGVuIGNhbl9nb19iYWNrIHJldHVybnMgRkFMU0UgdG8gY2hlY2sgbm90aGluZyBoYXBwZW5zLgor
ICAgIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViVmll
d1Rlc3Q6OmdvRm9yd2FyZCgpCit7CisgICAgaWYgKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9y
d2FyZChtX3dlYlZpZXcpKSB7CisgICAgICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdCogbGlzdCA9
IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3QobV93ZWJWaWV3KTsKKyAgICAg
ICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfbnRoX2l0ZW0obGlzdCwgMSk7CisgICAgICAgIG1fYWN0aXZlVVJJID0gd2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fZ2V0X29yaWdpbmFsX3VyaShpdGVtKTsKKyAgICB9CisK
KyAgICAvLyBDYWxsIGdvX2ZvcndhcmQgZXZlbiB3aGVuIGNhbl9nb19mb3J3YXJkIHJldHVybnMg
RkFMU0UgdG8gY2hlY2sgbm90aGluZyBoYXBwZW5zLgorICAgIHdlYmtpdF93ZWJfdmlld19nb19m
b3J3YXJkKG1fd2ViVmlldyk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCit7CisgICAgbV9hY3Rp
dmVVUkkgPSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKGl0
ZW0pOworICAgIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtKG1f
d2ViVmlldywgaXRlbSk7Cit9CisKIHZvaWQgV2ViVmlld1Rlc3Q6OndhaXQoZG91YmxlIHNlY29u
ZHMpCiB7CiAgICAgZ190aW1lb3V0X2FkZF9zZWNvbmRzKHNlY29uZHMsIHJlaW50ZXJwcmV0X2Nh
c3Q8R1NvdXJjZUZ1bmM+KHRlc3RMb2FkVGltZW91dEZpbmlzaExvb3ApLCBtX21haW5Mb29wKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZp
ZXdUZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJWaWV3
VGVzdC5oCmluZGV4IDFhMTZiMDAuLjVjYTAwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViVmlld1Rlc3QuaApAQCAtMjIsNiArMjIsNyBA
QAogCiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGNsYXNzIFdlYlZpZXdUZXN0OiBwdWJs
aWMgVGVzdCB7CiBwdWJsaWM6CkBAIC0yOSwxMCArMzAsMTcgQEAgcHVibGljOgogICAgIFdlYlZp
ZXdUZXN0KCk7CiAgICAgdmlydHVhbCB+V2ViVmlld1Rlc3QoKTsKIAorICAgIHZvaWQgbG9hZFVS
SShjb25zdCBjaGFyKiB1cmkpOworICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgY2hh
ciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVSSSwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVUkkp
OworICAgIHZvaWQgZ29CYWNrKCk7CisgICAgdm9pZCBnb0ZvcndhcmQoKTsKKyAgICB2b2lkIGdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKwogICAg
IHZvaWQgd2FpdChkb3VibGUgc2Vjb25kcyk7CiAKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZp
ZXc7CiAgICAgR01haW5Mb29wKiBtX21haW5Mb29wOworICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7
CiB9OwogCiAjZW5kaWYgLy8gV2ViVmlld1Rlc3RfaAo=
</data>
<flag name="review"
          id="110388"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>