<?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>161274</bug_id>
          
          <creation_ts>2016-08-26 15:49:28 -0700</creation_ts>
          <short_desc>Web Inspector: Add View layout tests, make views more testable</short_desc>
          <delta_ts>2017-10-03 09:12:31 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1223761</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-08-26 15:49:28 -0700</bug_when>
    <thetext>View should be made more testable by dispatching events for view tree traversal stages:

WebInspector.Notification.ViewTreeWillLayout
WebInspector.Notification.ViewTreeDidLayout

Since View underpins so much of the Inspector UI, any changes carry potentially high-risk so we need some tests!

Basic tests:
- A default constructed view should be backed by a &lt;div&gt;.
- View.rootView() should return a view backed by document.body.
- After construction, layoutPending should be false.
- After construction, isDescendentOf(View.rootView()) should be false.

Hierarchy:
- After adding(removing) a child to(from) a parent, child.isDescendentOf(parent) should be true(false).
    - Adding a child to a parent causes child.didMoveToParent to be called with parentView === parent.
    - Removing a child from a parent causes child.didMoveToParent to be called with parentView === null.
    - Removing a child from a parent causes child.didMoveToWindow to be called with isAttachedToRoot === false.
- When a view first becomes a descendent of the root, didMoveToWindow is called with isAttachedToRoot === true.
    - Should happen when view is added directly to root, when view&apos;s detached parent is added to root, and when view is added to parent already attached to root.

Layouts:
- initialLayout should happen  exactly once, the first time the view does a layout but before its layout method is called.
- Calling view.needsLayout should schedule an async layout.
- Calling view.cancelLayout should cancel an async layout.
- Calling view.updateLayout should call layout immediately.
- Calling view.updateLayout when an async layout has been scheduled for the view should cancel the async layout.
- Calling view.updateLayoutIfNeeded should do nothing is an async layout hasn&apos;t been schedulde.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223762</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-26 15:49:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/28038615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354927</commentid>
    <comment_count>2</comment_count>
      <attachid>322303</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-30 15:14:14 -0700</bug_when>
    <thetext>Created attachment 322303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354955</commentid>
    <comment_count>3</comment_count>
      <attachid>322303</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-30 19:58:03 -0700</bug_when>
    <thetext>Comment on attachment 322303
Patch

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

It&apos;s awesome we can now test some of our UI management =D

As of now, the only caveat for a r+ is the failing assertion in inspector/view/basics.html.  Once that is all PASS, I&apos;ll review again.

&gt; Source/WebInspectorUI/UserInterface/Test/FrontendTestHarness.js:149
&gt; +        this._originalRequestAnimationFrame = window.requestAnimationFrame;

Since you override `cancelAnimationFrame` as well, is it also worth saving to a variable?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:48
&gt; +            let rootView = new WI.View(document.body);

You could just assign this directly:

    WI.View._rootView = new WI.View(document.body);
    WI.View._rootView._isAttachedToRoot = true;

&gt; LayoutTests/inspector/view/asynchronous-layout.html:92
&gt; +            let view = new WI.TestView;
&gt; +            WI.View.rootView().addSubview(view);
&gt; +            InspectorTest.log(&quot;Cancel automatic layout.&quot;);
&gt; +            view.cancelLayout();
&gt; +            InspectorTest.expectFalse(view.layoutPending, &quot;View should not have a pending layout.&quot;);
&gt; +            view.needsLayout();
&gt; +            InspectorTest.log(&quot;Cancel scheduled layout.&quot;);
&gt; +            view.cancelLayout();
&gt; +            InspectorTest.expectFalse(view.layoutPending, &quot;View should not have a pending layout.&quot;);

Style: I&apos;d personally space these out more, so it&apos;s clearer what each &quot;phase&quot; of the test involves.

    let view = new WI.TestView;
    WI.View.rootView().addSubview(view);

    InspectorTest.log(&quot;Cancel automatic layout.&quot;);
    view.cancelLayout();
    InspectorTest.expectFalse(view.layoutPending, &quot;View should not have a pending layout.&quot;);

    view.needsLayout();
    InspectorTest.log(&quot;Cancel scheduled layout.&quot;);

    view.cancelLayout();
    InspectorTest.expectFalse(view.layoutPending, &quot;View should not have a pending layout.&quot;);

&gt; LayoutTests/inspector/view/basics-expected.txt:28
&gt; +FAIL: Grandchild should be a descendant of it&apos;s grandparent.
&gt; +    Expected: truthy
&gt; +    Actual: false

This should PASS.

&gt; LayoutTests/inspector/view/basics.html:18
&gt; +            InspectorTest.expectEqual(WI.View.rootView(), WI.View.rootView(), &quot;View.rootView() should always return the same view.&quot;);

You could just compare one of these with `rootView`, since it already is a different invocation of `WI.View.rootView()`.

&gt; LayoutTests/inspector/view/resources/test-view.js:6
&gt; +            super();

Style: add newline.

&gt; LayoutTests/inspector/view/synchronous-layout.html:14
&gt; +        name: &quot;View.updateLayout&quot;,

I think our style has been to prefix test names with the name of the suite.

    &quot;View.SynchronousLayout.updateLayout&quot;

&gt; LayoutTests/inspector/view/synchronous-layout.html:36
&gt; +        name: &quot;View.updateLayout.propogateToSubviews&quot;,

Ditto (14).

&gt; LayoutTests/inspector/view/synchronous-layout.html:54
&gt; +        name: &quot;View.updateLayoutIfNeeded&quot;,

Ditto (14).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355042</commentid>
    <comment_count>4</comment_count>
      <attachid>322303</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-10-01 13:24:52 -0700</bug_when>
    <thetext>Comment on attachment 322303
Patch

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

&gt;&gt; LayoutTests/inspector/view/basics-expected.txt:28
&gt;&gt; +    Actual: false
&gt; 
&gt; This should PASS.

Ugh, caused by a typo: child.parent -&gt; child.parentView

&gt;&gt; LayoutTests/inspector/view/basics.html:18
&gt;&gt; +            InspectorTest.expectEqual(WI.View.rootView(), WI.View.rootView(), &quot;View.rootView() should always return the same view.&quot;);
&gt; 
&gt; You could just compare one of these with `rootView`, since it already is a different invocation of `WI.View.rootView()`.

That&apos;s actually how I&apos;d written it initially, but I kind of like how this line stands all on its own.

&gt;&gt; LayoutTests/inspector/view/synchronous-layout.html:14
&gt;&gt; +        name: &quot;View.updateLayout&quot;,
&gt; 
&gt; I think our style has been to prefix test names with the name of the suite.
&gt; 
&gt;     &quot;View.SynchronousLayout.updateLayout&quot;

We should create a style guide for Inspector layout tests at some point, and come up with some conventions for names, use of InspectorTest expect and assert, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355045</commentid>
    <comment_count>5</comment_count>
      <attachid>322328</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-10-01 13:40:35 -0700</bug_when>
    <thetext>Created attachment 322328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355427</commentid>
    <comment_count>6</comment_count>
      <attachid>322328</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-10-02 13:06:38 -0700</bug_when>
    <thetext>Comment on attachment 322328
Patch

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

r=me

&gt; Source/WebInspectorUI/ChangeLog:20
&gt; +        Fixed issues caught while writing tests for the expected View behavior.

Style: move this to the end of the function list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355657</commentid>
    <comment_count>7</comment_count>
      <attachid>322480</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-10-02 18:08:19 -0700</bug_when>
    <thetext>Created attachment 322480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355846</commentid>
    <comment_count>8</comment_count>
      <attachid>322480</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-03 09:12:29 -0700</bug_when>
    <thetext>Comment on attachment 322480
Patch

Clearing flags on attachment: 322480

Committed r222782: &lt;http://trac.webkit.org/changeset/222782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355847</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-03 09:12:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322303</attachid>
            <date>2017-09-30 15:14:14 -0700</date>
            <delta_ts>2017-10-01 13:40:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161274-20170930151413.patch</filename>
            <type>text/plain</type>
            <size>30155</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
NmU0NTYyZDEwMGY5YzI2YWYzZGI2MjFlMDMwYzQ0MjA2ZmQ1NTM0Li4wYWJjZjQ2YjYwNWQ2Y2I4
NDI3ZWNhYjY1OTk4ZDAzNjM5OThkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0wOS0zMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIFZpZXcgbGF5b3V0IHRlc3RzLCBtYWtlIHZp
ZXdzIG1vcmUgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTI3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgwMzg2MTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIHN1cHBvcnQgZm9yIFZpZXcgdGVzdGluZy4gU2luY2UgdmlldyBsYXlvdXRzIGFyZSBzY2hl
ZHVsZWQKKyAgICAgICAgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBGcm9udGVuZFRlc3RI
YXJuZXNzIG5vdyBwcm92aWRlcyBhIHRpbWVyLWJhc2VkCisgICAgICAgIHBvbHlmaWxsLCB0byBh
bGxvdyBub25pbnRydXNpdmUgdGVzdGluZyBvZiB0aGUgZnJvbnRlbmQgVmlldyBoaWVyYXJjaHku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgTWFrZSBXSS5W
aWV3IGF2YWlsYWJsZSB0byB0ZXN0cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9G
cm9udGVuZFRlc3RIYXJuZXNzLmpzOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90
b3R5cGUucmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaWV3LmpzOgorICAgICAgICBGaXhlZCBpc3N1ZXMgY2F1Z2h0IHdoaWxl
IHdyaXRpbmcgdGVzdHMgZm9yIHRoZSBleHBlY3RlZCBWaWV3IGJlaGF2aW9yLgorICAgICAgICAo
V0kuVmlldy5yb290Vmlldyk6CisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5yZXBsYWNlU3Vi
dmlldyk6CisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5fZGlkTW92ZVRvV2luZG93KToKKyAg
ICAgICAgKFdJLlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcpOgorCiAyMDE3LTA5
LTI5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogT3BlbiBSZXNvdXJjZSBEaWFsb2cgaWNvbnMgYXJlIGJsdXJyeSAoMjR4MjQg
aW5zdGVhZCBvZiAzMngzMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QuaHRtbAppbmRleCBjNDQ3MWY5ODg1NjAzNGM5ZDRjZDFhMjUwNDk4YTcxOTEzYzIxZTRk
Li5iZjM0YzkxY2Q5MzljZWJmYzc4YTEwODA3ZjAzMjI0OTUyNjE0ZTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0yMTUsNiArMjE1LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iV29ya2Vycy9Gb3JtYXR0ZXIvRm9ybWF0dGVyQ29udGVudEJ1
aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2RlTWlycm9yQWRk
aXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckZv
cm1hdHRlcnMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9WaWV3LmpzIj48
L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAg
V0kuc2hhcmVkQXBwID0gbmV3IFdJLlRlc3RBcHBDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Gcm9udGVuZFRl
c3RIYXJuZXNzLmpzCmluZGV4IDdkZDYxZDVjOGIwNjc1NGE1OTUyZDZmOGVkMDU4MWFhYWQ5MTYz
MDguLjgzY2UwNjM3ZWQ3NzJmN2NkNTRhOGVmZjFjNWZhY2E0OWNhNmI3ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFy
bmVzcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zy
b250ZW5kVGVzdEhhcm5lc3MuanMKQEAgLTE0MCw2ICsxNDAsNDYgQEAgRnJvbnRlbmRUZXN0SGFy
bmVzcyA9IGNsYXNzIEZyb250ZW5kVGVzdEhhcm5lc3MgZXh0ZW5kcyBUZXN0SGFybmVzcwogICAg
ICAgICAgICAgfSk7CiAgICAgfQogCisgICAgcmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX29yaWdpbmFsUmVxdWVzdEFu
aW1hdGlvbkZyYW1lKTsKKyAgICAgICAgaWYgKHRoaXMuX29yaWdpbmFsUmVxdWVzdEFuaW1hdGlv
bkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX29yaWdpbmFsUmVx
dWVzdEFuaW1hdGlvbkZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsKKyAgICAg
ICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzID0gbmV3IE1hcDsKKyAgICAg
ICAgdGhpcy5fbmV4dFJlcXVlc3RJZGVudGlmaWVyID0gMTsKKworICAgICAgICB3aW5kb3cucmVx
dWVzdEFuaW1hdGlvbkZyYW1lID0gKGNhbGxiYWNrKSA9PiB7CisgICAgICAgICAgICBsZXQgcmVx
dWVzdElkZW50aWZpZXIgPSB0aGlzLl9uZXh0UmVxdWVzdElkZW50aWZpZXIrKzsKKyAgICAgICAg
ICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcy5zZXQocmVxdWVzdElkZW50
aWZpZXIsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaW1lcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdElkZW50aWZpZXI7CisK
KyAgICAgICAgICAgIGxldCBkaXNwYXRjaENhbGxiYWNrcyA9ICgpID0+IHsKKyAgICAgICAgICAg
ICAgICBsZXQgY2FsbGJhY2tzID0gdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
OworICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyA9
IG5ldyBNYXA7CisgICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGlt
ZXIgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgbGV0IHRpbWVzdGFtcCA9IHdpbmRvdy5w
ZXJmb3JtYW5jZS5ub3coKTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBj
YWxsYmFja3MudmFsdWVzKCkpCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRpbWVzdGFt
cCk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9u
RnJhbWVUaW1lciA9IHNldFRpbWVvdXQoZGlzcGF0Y2hDYWxsYmFja3MsIDApOworICAgICAgICAg
ICAgcmV0dXJuIHJlcXVlc3RJZGVudGlmaWVyOworICAgICAgICB9OworCisgICAgICAgIHdpbmRv
dy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IChyZXF1ZXN0SWRlbnRpZmllcikgPT4geworICAgICAg
ICAgICAgaWYgKCF0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MuZGVsZXRlKHJl
cXVlc3RJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGlmICghdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLnNpemUpIHsKKyAgICAg
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXIp
OworICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKwogICAgIHJlZGlyZWN0
Q29uc29sZVRvVGVzdE91dHB1dCgpCiAgICAgewogICAgICAgICAvLyBXZSBjYW4ndCB1c2UgYXJy
b3cgZnVuY3Rpb25zIGhlcmUgYmVjYXVzZSBvZiAnYXJndW1lbnRzJy4gSXQgbWlnaHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmluZGV4
IDRlN2M0YjFlZDU3N2Q0MWUxZGFjNDJiODAzMGZiMjYwNjliMTM1OWYuLmI5OThlZmQ2OGVkZTNl
YzY3Y2MzNjAyOTdhNTRmMGY3MmRkMTkzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtNDQsOCArNDQsMTMgQEAgV0kuVmll
dyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHN0YXRpYyByb290Vmlldygp
CiAgICAgewotICAgICAgICBpZiAoIVdJLlZpZXcuX3Jvb3RWaWV3KQotICAgICAgICAgICAgV0ku
Vmlldy5fcm9vdFZpZXcgPSBuZXcgV0kuVmlldyhkb2N1bWVudC5ib2R5KTsKKyAgICAgICAgaWYg
KCFXSS5WaWV3Ll9yb290VmlldykgeworICAgICAgICAgICAgbGV0IHJvb3RWaWV3ID0gbmV3IFdJ
LlZpZXcoZG9jdW1lbnQuYm9keSk7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgcm9vdCB2aWV3
IGlzIGF0dGFjaGVkIGJ5IGRlZmluaXRpb24sIGl0IGRvZXMgbm90IGdvIHRocm91Z2ggdGhlCisg
ICAgICAgICAgICAvLyBub3JtYWwgdmlldyBhdHRhY2htZW50IHByb2Nlc3MuIFNpbXBseSBtYXJr
IGl0IGFzIGF0dGFjaGVkLgorICAgICAgICAgICAgcm9vdFZpZXcuX2lzQXR0YWNoZWRUb1Jvb3Qg
PSB0cnVlOworICAgICAgICAgICAgV0kuVmlldy5fcm9vdFZpZXcgPSByb290VmlldzsKKyAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBXSS5WaWV3Ll9yb290VmlldzsKICAgICB9CkBAIC0xMjks
NiArMTM0LDggQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBy
ZXBsYWNlU3VidmlldyhvbGRWaWV3LCBuZXdWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQob2xkVmlldyAhPT0gbmV3VmlldywgIkNhbm5vdCByZXBsYWNlIHN1YnZpZXcgd2l0aCBp
dHNlbGYuIik7CisgICAgICAgIGlmIChvbGRWaWV3ID09PSBuZXdWaWV3KQorICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZShuZXdWaWV3LCBvbGRW
aWV3KTsKICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KG9sZFZpZXcpOwpAQCAtMjM0LDEwICsy
NDEsMTMgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAg
ICB0aGlzLl9pc0F0dGFjaGVkVG9Sb290ID0gaXNBdHRhY2hlZFRvUm9vdDsKICAgICAgICAgaWYg
KHRoaXMuX2lzQXR0YWNoZWRUb1Jvb3QpIHsKLSAgICAgICAgICAgIHRoaXMuYXR0YWNoZWQoKTsK
ICAgICAgICAgICAgIFdJLlZpZXcuX3NjaGVkdWxlTGF5b3V0Rm9yVmlldyh0aGlzKTsKLSAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmF0dGFjaGVkKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAodGhpcy5fZGlydHkpCisgICAgICAgICAgICAgICAgdGhpcy5jYW5j
ZWxMYXlvdXQoKTsKICAgICAgICAgICAgIHRoaXMuZGV0YWNoZWQoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIGZvciAobGV0IHZpZXcgb2YgdGhpcy5fc3Vidmlld3MpCiAgICAgICAgICAgICB2aWV3
Ll9kaWRNb3ZlVG9XaW5kb3coaXNBdHRhY2hlZFRvUm9vdCk7CkBAIC0zMjgsNiArMzM4LDggQEAg
V0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHBhcmVu
dFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVudFZpZXc7CiAgICAgICAgIH0KIAorICAgICAgICB2aWV3
Ll9kaXJ0eSA9IGZhbHNlOworCiAgICAgICAgIGlmICghV0kuVmlldy5fc2NoZWR1bGVkTGF5b3V0
VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNjOGYxZmI2
YmE2NTkwNzBmNzJhOGMzMjkxNDliMDliMmEzMmUxNDUuLjczNTMzNTQyZDU5NDFmODQ5ODE3YzQ5
NTZkM2QwN2RhODZlYmM1YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0wOS0zMCAgTWF0
dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIFZpZXcgbGF5b3V0IHRlc3RzLCBtYWtlIHZpZXdzIG1vcmUgdGVzdGFibGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTI3NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjgwMzg2MTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBjcmVhdGluZyB2aWV3cywgYWRkaW5nIGFu
ZCByZW1vdmluZyBzdWJ2aWV3cywgYW5kIGxheW91dAorICAgICAgICBvcGVyYXRpb25zLiBUaGVz
ZSB0ZXN0cyByZWx5IG9uIGEgbW9jayByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHdoaWNoIGlzCisg
ICAgICAgIGVuYWJsZWQgd2l0aCBGcm9udGVuZFRlc3RIYXJuZXNzLnJlZGlyZWN0UmVxdWVzdEFu
aW1hdGlvbkZyYW1lLgorCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxh
eW91dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci92aWV3L2FzeW5j
aHJvbm91cy1sYXlvdXQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvYmFz
aWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvYmFzaWNz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci92aWV3L3N5bmNocm9u
b3VzLWxheW91dC5odG1sOiBBZGRlZC4KKworICAgICAgICAqIGluc3BlY3Rvci92aWV3L3Jlc291
cmNlcy90ZXN0LXZpZXcuanM6IEFkZGVkLgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0
aWFsaXplci5XSS5UZXN0Vmlldyk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxp
emVyLldJLlRlc3RWaWV3LnByb3RvdHlwZS5nZXQgaW5pdGlhbExheW91dENvdW50KToKKyAgICAg
ICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuV0kuVGVzdFZpZXcucHJvdG90eXBlLmdl
dCBsYXlvdXRDb3VudCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLldJ
LlRlc3RWaWV3LnByb3RvdHlwZS5ldmFsdWF0ZUFmdGVyTGF5b3V0KToKKyAgICAgICAgKFRlc3RQ
YWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuV0kuVGVzdFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlv
dXQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5XSS5UZXN0Vmlldy5w
cm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIp
OgorICAgICAgICBSZWdpc3RlciBhbiBpbnN0cnVtZW50YXRpb24gc3ViY2xhc3Mgb2YgVmlldy4g
VGVzdFZpZXcgY291bnRzIGNhbGxzIHRvCisgICAgICAgIHByb3RlY3RlZCBtZXRob2RzIGFuZCBh
Y2NlcHRzIGNhbGxiYWNrcyB0byBleGVjdXRlIHdoZW4gYSBsYXlvdXQgY29tcGxldGVzLgorCiAy
MDE3LTA5LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgdGVtcG9yYXJpbHkgbWFyayBodHRwL3Rlc3RzL3ByZWNvbm5lY3QvbGluay1yZWwt
cHJlY29ubmVjdC1odHRwcy5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTE1OWE0ZTdhOTJmYjVkNjljOTRmNDdjN2VkNDUwM2E3NWJkY2Q2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdGluZyBhc3luY2hyb25vdXMgVmll
dyBsYXlvdXQgb3BlcmF0aW9uczogbmVlZHNMYXlvdXQsIGNhbmNlbExheW91dC4KKworCis9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IFZpZXcuQXN5bmNocm9ub3VzTGF5b3V0CistLSBSdW5uaW5nIHRl
c3QgY2FzZTogVmlldy5hdXRvbWF0aWNMYXlvdXQKK1BBU1M6IFZpZXcgc2hvdWxkIGhhdmUgYSBw
ZW5kaW5nIGxheW91dCBvbmNlIGl0IGlzIGF0dGFjaGVkLgorTGF5b3V0IGNvbXBsZXRlLgorUEFT
UzogVmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuCitQQVNTOiBWaWV3IHNob3VsZCB1
cGRhdGUgaXRzIGxheW91dC4KK1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBs
YXlvdXQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LmF1dG9tYXRpY0xheW91dC5jYW5j
ZWxsZWQKK1BBU1M6IFZpZXcgc2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dCBvbmNlIGl0IGlz
IGF0dGFjaGVkLgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dCBv
bmNlIGl0IGlzIGRldGFjaGVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5uZWVkc0xh
eW91dAorRmx1c2ggcGVuZGluZyBsYXlvdXRzLCB0aGVuIHNjaGVkdWxlIGFuIHVwZGF0ZS4KK1BB
U1M6IFZpZXcgc2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dC4KK0xheW91dCBjb21wbGV0ZS4K
K1BBU1M6IFZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQg
bm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcu
bmVlZHNMYXlvdXQucHJvcG9nYXRlVG9TdWJ2aWV3CitTY2hlZHVsZSBwYXJlbnQgdmlldyB1cGRh
dGUuCitMYXlvdXQgY29tcGxldGUuCitQQVNTOiBDaGxpZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0
aWFsIGxheW91dC4KK1BBU1M6IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0Lgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5jYW5jZWxMYXlvdXQKK0NhbmNlbCBhdXRvbWF0
aWMgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4K
K0NhbmNlbCBzY2hlZHVsZWQgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBw
ZW5kaW5nIGxheW91dC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcv
YXN5bmNocm9ub3VzLWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5
bmNocm9ub3VzLWxheW91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYjgzNTU2MGNhY2Q1ODMzZTk4MWY3
ODhjZmEwMjE4OTZkYjhhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwKQEAgLTAsMCArMSwxMDUgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy90ZXN0LXZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QucmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoKTsKKworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0
ZSgiVmlldy5Bc3luY2hyb25vdXNMYXlvdXQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIlZpZXcuYXV0b21hdGljTGF5b3V0IiwKKyAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RWaWV3Owor
ICAgICAgICAgICAgV0kuVmlldy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBz
aG91bGQgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0IG9uY2UgaXQgaXMgYXR0YWNoZWQuIik7CisKKyAg
ICAgICAgICAgIHZpZXcuZXZhbHVhdGVBZnRlckxheW91dCgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkxheW91dCBjb21wbGV0ZS4iKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcuaW5pdGlhbExheW91dENvdW50LCAxLCAi
VmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbCh2aWV3LmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQg
dXBkYXRlIGl0cyBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRp
bmcgbGF5b3V0LiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJWaWV3LmF1dG9tYXRpY0xheW91dC5jYW5jZWxsZWQiLAorICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0kuVGVzdFZpZXc7
CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3KTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3
IHNob3VsZCBoYXZlIGEgcGVuZGluZyBsYXlvdXQgb25jZSBpdCBpcyBhdHRhY2hlZC4iKTsKKyAg
ICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5yZW1vdmVTdWJ2aWV3KHZpZXcpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3
IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0IG9uY2UgaXQgaXMgZGV0YWNoZWQuIik7
CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcubmVlZHNMYXlvdXQiLAorICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0ku
VGVzdFZpZXc7CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZsdXNoIHBlbmRpbmcgbGF5b3V0
cywgdGhlbiBzY2hlZHVsZSBhbiB1cGRhdGUuIik7CisgICAgICAgICAgICB2aWV3LnVwZGF0ZUxh
eW91dCgpOworICAgICAgICAgICAgdmlldy5uZWVkc0xheW91dCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIGhh
dmUgYSBwZW5kaW5nIGxheW91dC4iKTsKKworICAgICAgICAgICAgdmlldy5ldmFsdWF0ZUFmdGVy
TGF5b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiTGF5b3V0
IGNvbXBsZXRlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
dmlldy5sYXlvdXRDb3VudCwgMiwgIlZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0LiIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uodmlldy5sYXlvdXRQZW5k
aW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4iKTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5uZWVkc0xheW91
dC5wcm9wb2dhdGVUb1N1YnZpZXciLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5ldyBXSS5UZXN0VmlldzsKKyAgICAgICAgICAgIGxl
dCBjaGlsZCA9IG5ldyBXSS5UZXN0VmlldzsKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXco
KS5hZGRTdWJ2aWV3KHBhcmVudCk7CisgICAgICAgICAgICBwYXJlbnQuYWRkU3VidmlldyhjaGls
ZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2NoZWR1bGUgcGFyZW50IHZpZXcg
dXBkYXRlLiIpOworICAgICAgICAgICAgcGFyZW50Lm5lZWRzTGF5b3V0KCk7CisKKyAgICAgICAg
ICAgIGNoaWxkLmV2YWx1YXRlQWZ0ZXJMYXlvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJMYXlvdXQgY29tcGxldGUuIik7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZC5pbml0aWFsTGF5b3V0Q291bnQsIDEsICJDaGxp
ZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkLmxheW91dENvdW50LCAxLCAiQ2hpbGQgdmll
dyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuY2FuY2VsTGF5b3V0IiwKKyAgICAgICAgdGVz
dChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RW
aWV3OworICAgICAgICAgICAgV0kuVmlldy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsIGF1dG9tYXRpYyBsYXlvdXQuIik7
CisgICAgICAgICAgICB2aWV3LmNhbmNlbExheW91dCgpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2
ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOworICAgICAgICAgICAgdmlldy5uZWVkc0xheW91dCgpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNhbmNlbCBzY2hlZHVsZWQgbGF5b3V0LiIp
OworICAgICAgICAgICAgdmlldy5jYW5jZWxMYXlvdXQoKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RmFsc2Uodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhh
dmUgYSBwZW5kaW5nIGxheW91dC4iKTsKKworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3Rp
bmcgYXN5bmNocm9ub3VzIFZpZXcgbGF5b3V0IG9wZXJhdGlvbnM6IG5lZWRzTGF5b3V0LCBjYW5j
ZWxMYXlvdXQuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3ZpZXcvYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci92aWV3L2Jhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGVkNGI4YzY4NmM4YjExNGZh
YjMxNTM5ZmIxYjE1MTBiZjAwNDAzYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci92aWV3L2Jhc2ljcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorVGVzdGlu
ZyBiYXNpYyBWaWV3IG9wZXJhdGlvbnM6IHJvb3QgdmlldyBhY2Nlc3MsIHZpZXcgY3JlYXRpb24s
IGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBWaWV3
LkJhc2ljcworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcucm9vdFZpZXcKK1BBU1M6IFJvb3Qg
dmlldyBzaG91bGQgYmUgYXR0YWNoZWQgYnkgZGVmaW5pdGlvbi4KK1BBU1M6IFJvb3QgdmlldyBl
bGVtZW50IHNob3VsZCBiZSBkb2N1bWVudC5ib2R5LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBu
b3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBub3QgaGF2
ZSBzdWJ2aWV3cy4KK1BBU1M6IFZpZXcucm9vdFZpZXcoKSBzaG91bGQgYWx3YXlzIHJldHVybiB0
aGUgc2FtZSB2aWV3LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5jb25zdHJ1Y3Rvcgor
UEFTUzogVmlldyBzaG91bGQgbm90IGJlIGF0dGFjaGVkLgorUEFTUzogVmlldyBlbGVtZW50IHNo
b3VsZCBiZSBhIDxkaXY+LgorUEFTUzogVmlldyBlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBjaGls
ZCBub2Rlcy4KK1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCitQ
QVNTOiBWaWV3IHNob3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4KK1BBU1M6IFZpZXcgc2hvdWxkIG5v
dCBoYXZlIGEgcGFyZW50LgorUEFTUzogVmlldyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHBhc3Nl
ZCBpbiBlbGVtZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5hZGRTdWJ2aWV3CitQ
QVNTOiBDaGlsZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBwYXJlbnQuCitQQVNTOiBDaGlsZCBz
aG91bGQgYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQuCitQQVNTOiBDaGlsZCBzaG91bGQg
YmUgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCdzIHN1YnZpZXdzLgorUEFTUzogQWRkaW5nIGEgdmll
dyBtdWx0aXBsZSB0aW1lcyBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCitGQUlMOiBHcmFuZGNoaWxk
IHNob3VsZCBiZSBhIGRlc2NlbmRhbnQgb2YgaXQncyBncmFuZHBhcmVudC4KKyAgICBFeHBlY3Rl
ZDogdHJ1dGh5CisgICAgQWN0dWFsOiBmYWxzZQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmll
dy5yZW1vdmVTdWJ2aWV3CitQQVNTOiBSZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFy
ZW50LgorUEFTUzogUmVtb3ZlZCB2aWV3IHNob3VsZCBub3QgYmUgYSBkZXNjZW5kYW50IG9mIHRo
ZSBwYXJlbnQuCitQQVNTOiBSZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0
aGUgcGFyZW50J3Mgc3Vidmlld3MuCitQQVNTOiBSZW1vdmluZyBhIG5vbmV4aXN0ZW50IHZpZXcg
c2hvdWxkIGhhdmUgbm8gZWZmZWN0LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5pbnNl
cnRTdWJ2aWV3QmVmb3JlCitQQVNTOiBJbnNlcnRpbmcgYSB2aWV3IGJlZm9yZSBgbnVsbGAgc2hv
dWxkIGFwcGVuZCB0aGUgdmlldy4KK1BBU1M6IGNoaWxkMiBzaG91bGQgYmUgaW5zZXJ0ZWQgYmVm
b3JlIGRoaWxkMS4KK1BBU1M6IGNoaWxkMSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQyLgorUEFTUzog
SW5zZXJ0aW5nIGEgdmlldyBiZWZvcmUgYSBub25leGlzdGVudCB2aWV3IHNob3VsZCBoYXZlIG5v
IGVmZmVjdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcucmVwbGFjZVN1YnZpZXcKK1BB
U1M6IFJlcGxhY2VkIHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFyZW50LgorUEFTUzogTmV3IHZp
ZXcgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgcGFyZW50LgorUEFTUzogUmVwbGFjaW5nIGEgdmll
dyB3aXRoIGl0c2VsZiBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCitQQVNTOiBSZXBsYWNpbmcgYSBu
b25leGlzdGVudCB2aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFZpZXcuaXNBdHRhY2hlZAorUEFTUzogVmlldyBhZGRlZCB0byB0aGUgcm9vdCBzaG91
bGQgYmUgYXR0YWNoZWQuCitQQVNTOiBWaWV3IHJlbW92ZWQgZnJvbSB0aGUgcm9vdCBzaG91bGQg
bm90IGJlIGF0dGFjaGVkLgorUEFTUzogVmlldyBhZGRlZCB0byBhIGRldGFjaGVkIHBhcmVudCBz
aG91bGQgbm90IGJlIGF0dGFjaGVkLgorUEFTUzogQXR0YWNoaW5nIGEgdmlldyB0byB0aGUgcm9v
dCBjYXVzZXMgZGVzY2VuZGVudCB2aWV3cyB0byBiZSBhdHRhY2hlZC4KK1BBU1M6IERldGFjaGlu
ZyBhIHZpZXcgZnJvbSB0aGUgcm9vdCBjYXVzZXMgZGVzY2VuZGVudCB2aWV3cyB0byBiZSBkZXRh
Y2hlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OGVmMTM3MTMzMjI3OTIyYTJkY2NiNmZlMjI1MTMxMzRkNDY1N2Y4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0bWwKQEAgLTAsMCArMSwxNTgg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlU3luY1N1aXRlKCJWaWV3LkJhc2ljcyIpOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5yb290VmlldyIsCisgICAgICAgIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgcm9vdFZpZXcgPSBXSS5WaWV3LnJvb3RWaWV3KCk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocm9vdFZpZXcuaXNBdHRhY2hlZCwgIlJvb3Qg
dmlldyBzaG91bGQgYmUgYXR0YWNoZWQgYnkgZGVmaW5pdGlvbi4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocm9vdFZpZXcuZWxlbWVudCwgZG9jdW1lbnQuYm9keSwg
IlJvb3QgdmlldyBlbGVtZW50IHNob3VsZCBiZSBkb2N1bWVudC5ib2R5LiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShyb290Vmlldy5sYXlvdXRQZW5kaW5nLCAiUm9v
dCB2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyb290Vmlldy5zdWJ2aWV3cy5sZW5ndGgsIDAsICJS
b290IHZpZXcgc2hvdWxkIG5vdCBoYXZlIHN1YnZpZXdzLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChXSS5WaWV3LnJvb3RWaWV3KCksIFdJLlZpZXcucm9vdFZpZXco
KSwgIlZpZXcucm9vdFZpZXcoKSBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2aWV3LiIp
OworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5jb25zdHJ1Y3RvciIsCisg
ICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IG5ldyBXSS5WaWV3OworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmlzQXR0YWNoZWQsICJWaWV3
IHNob3VsZCBub3QgYmUgYXR0YWNoZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHZpZXcuZWxlbWVudC50YWdOYW1lLCAiRElWIiwgIlZpZXcgZWxlbWVudCBzaG91
bGQgYmUgYSA8ZGl2Pi4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
dmlldy5lbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAiVmlldyBlbGVtZW50IHNob3VsZCBu
b3QgaGF2ZSBjaGlsZCBub2Rlcy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RmFsc2Uodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5n
IGxheW91dC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldy5z
dWJ2aWV3cy5sZW5ndGgsIDAsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbCh2aWV3LnBhcmVudFZpZXcsICJWaWV3
IHNob3VsZCBub3QgaGF2ZSBhIHBhcmVudC4iKTsKKworICAgICAgICAgICAgbGV0IGV4aXN0aW5n
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgICAgICBsZXQg
Y3VzdG9tVmlldyA9IG5ldyBXSS5WaWV3KGV4aXN0aW5nRWxlbWVudCk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGN1c3RvbVZpZXcuZWxlbWVudCwgZXhpc3RpbmdFbGVt
ZW50LCAiVmlldyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHBhc3NlZCBpbiBlbGVtZW50LiIpOwor
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5hZGRTdWJ2aWV3IiwKKyAgICAg
ICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBwYXJlbnQgPSBuZXcgV0kuVmlldzsKKyAgICAg
ICAgICAgIGxldCBjaGlsZCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgcGFyZW50LmFkZFN1
YnZpZXcoY2hpbGQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGls
ZC5wYXJlbnRWaWV3LCBwYXJlbnQsICJDaGlsZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBwYXJl
bnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2hpbGQuaXNEZXNj
ZW5kYW50T2YocGFyZW50KSwgIkNoaWxkIHNob3VsZCBiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIHBh
cmVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwYXJlbnQuc3Vi
dmlld3MuaW5jbHVkZXMoY2hpbGQpLCAiQ2hpbGQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBw
YXJlbnQncyBzdWJ2aWV3cy4iKTsKKworICAgICAgICAgICAgbGV0IHByZXZpb3VzU3Vidmlld3Mg
PSBwYXJlbnQuc3Vidmlld3Muc2xpY2UoKTsKKyAgICAgICAgICAgIHBhcmVudC5hZGRTdWJ2aWV3
KGNoaWxkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHBy
ZXZpb3VzU3Vidmlld3MsIHBhcmVudC5zdWJ2aWV3cywgIkFkZGluZyBhIHZpZXcgbXVsdGlwbGUg
dGltZXMgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LiIpOworCisgICAgICAgICAgICBsZXQgZ3JhbmRj
aGlsZCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgY2hpbGQuYWRkU3VidmlldyhncmFuZGNo
aWxkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChncmFuZGNoaWxkLmlz
RGVzY2VuZGFudE9mKGNoaWxkLnBhcmVudCksICJHcmFuZGNoaWxkIHNob3VsZCBiZSBhIGRlc2Nl
bmRhbnQgb2YgaXQncyBncmFuZHBhcmVudC4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIlZpZXcucmVtb3ZlU3VidmlldyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgcGFyZW50ID0gbmV3IFdJLlZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQgPSBuZXcg
V0kuVmlldzsKKyAgICAgICAgICAgIHBhcmVudC5hZGRTdWJ2aWV3KGNoaWxkKTsKKyAgICAgICAg
ICAgIHBhcmVudC5yZW1vdmVTdWJ2aWV3KGNoaWxkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0TnVsbChjaGlsZC5wYXJlbnRWaWV3LCAiUmVtb3ZlZCB2aWV3IHNob3VsZCBub3Qg
aGF2ZSBhIHBhcmVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCgh
Y2hpbGQuaXNEZXNjZW5kYW50T2YocGFyZW50KSwgIlJlbW92ZWQgdmlldyBzaG91bGQgbm90IGJl
IGEgZGVzY2VuZGFudCBvZiB0aGUgcGFyZW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KCFwYXJlbnQuc3Vidmlld3MuaW5jbHVkZXMoY2hpbGQpLCAiUmVtb3ZlZCB2
aWV3IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCdzIHN1YnZpZXdzLiIpOwor
CisgICAgICAgICAgICBsZXQgcHJldmlvdXNTdWJ2aWV3cyA9IHBhcmVudC5zdWJ2aWV3cy5zbGlj
ZSgpOworICAgICAgICAgICAgcGFyZW50LnJlbW92ZVN1YnZpZXcobmV3IFdJLlZpZXcpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwocHJldmlvdXNTdWJ2aWV3
cywgcGFyZW50LnN1YnZpZXdzLCAiUmVtb3ZpbmcgYSBub25leGlzdGVudCB2aWV3IHNob3VsZCBo
YXZlIG5vIGVmZmVjdC4iKQorCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5p
bnNlcnRTdWJ2aWV3QmVmb3JlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBw
YXJlbnQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZDEgPSBuZXcgV0kuVmll
dzsKKyAgICAgICAgICAgIGxldCBjaGlsZDIgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIHBh
cmVudC5pbnNlcnRTdWJ2aWV3QmVmb3JlKGNoaWxkMSk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHBhcmVudC5zdWJ2aWV3c1swXSwgY2hpbGQxLCAiSW5zZXJ0aW5nIGEg
dmlldyBiZWZvcmUgYG51bGxgIHNob3VsZCBhcHBlbmQgdGhlIHZpZXcuIik7CisKKyAgICAgICAg
ICAgIHBhcmVudC5pbnNlcnRTdWJ2aWV3QmVmb3JlKGNoaWxkMiwgY2hpbGQxKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGFyZW50LnN1YnZpZXdzWzBdLCBjaGlsZDIs
ICJjaGlsZDIgc2hvdWxkIGJlIGluc2VydGVkIGJlZm9yZSBkaGlsZDEuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhcmVudC5zdWJ2aWV3c1sxXSwgY2hpbGQxLCAi
Y2hpbGQxIHNob3VsZCBiZSBhZnRlciBjaGlsZDIuIik7CisKKyAgICAgICAgICAgIGxldCBwcmV2
aW91c1N1YnZpZXdzID0gcGFyZW50LnN1YnZpZXdzLnNsaWNlKCk7CisgICAgICAgICAgICBwYXJl
bnQuaW5zZXJ0U3Vidmlld0JlZm9yZShjaGlsZDIsIG5ldyBXSS5WaWV3KTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHBhcmVudC5zdWJ2aWV3cywgcHJldmlv
dXNTdWJ2aWV3cywgIkluc2VydGluZyBhIHZpZXcgYmVmb3JlIGEgbm9uZXhpc3RlbnQgdmlldyBz
aG91bGQgaGF2ZSBubyBlZmZlY3QuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJWaWV3LnJlcGxhY2VTdWJ2aWV3IiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCBwYXJlbnQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZDEgPSBuZXcgV0ku
VmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZDIgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAg
IHBhcmVudC5hZGRTdWJ2aWV3KGNoaWxkMSk7CisgICAgICAgICAgICBwYXJlbnQucmVwbGFjZVN1
YnZpZXcoY2hpbGQxLCBjaGlsZDIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RO
dWxsKGNoaWxkMS5wYXJlbnRWaWV3LCAiUmVwbGFjZWQgdmlldyBzaG91bGQgbm90IGhhdmUgYSBw
YXJlbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkMi5w
YXJlbnRWaWV3LCBwYXJlbnQsICJOZXcgdmlldyBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBwYXJl
bnQuIik7CisKKyAgICAgICAgICAgIGxldCBwcmV2aW91c1N1YnZpZXdzID0gcGFyZW50LnN1YnZp
ZXdzLnNsaWNlKCk7CisgICAgICAgICAgICBwYXJlbnQucmVwbGFjZVN1YnZpZXcoY2hpbGQyLCBj
aGlsZDIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwocGFy
ZW50LnN1YnZpZXdzLCBwcmV2aW91c1N1YnZpZXdzLCAiUmVwbGFjaW5nIGEgdmlldyB3aXRoIGl0
c2VsZiBzaG91bGQgaGF2ZSBubyBlZmZlY3QuIik7CisKKyAgICAgICAgICAgIHByZXZpb3VzU3Vi
dmlld3MgPSBwYXJlbnQuc3Vidmlld3M7CisgICAgICAgICAgICBwYXJlbnQucmVwbGFjZVN1YnZp
ZXcobmV3IFdJLlZpZXcsIGNoaWxkMSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFNoYWxsb3dFcXVhbChwYXJlbnQuc3Vidmlld3MsIHByZXZpb3VzU3Vidmlld3MsICJSZXBsYWNp
bmcgYSBub25leGlzdGVudCB2aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4iKTsKKworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuaXNBdHRhY2hlZCIsCisgICAgICAgIHRlc3Qo
KSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgV0ku
Vmlldy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdFRoYXQodmlldy5pc0F0dGFjaGVkLCAiVmlldyBhZGRlZCB0byB0aGUgcm9vdCBz
aG91bGQgYmUgYXR0YWNoZWQuIik7CisKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5y
ZW1vdmVTdWJ2aWV3KHZpZXcpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxz
ZSh2aWV3LmlzQXR0YWNoZWQsICJWaWV3IHJlbW92ZWQgZnJvbSB0aGUgcm9vdCBzaG91bGQgbm90
IGJlIGF0dGFjaGVkLiIpOworCisgICAgICAgICAgICBsZXQgcGFyZW50ID0gbmV3IFdJLlZpZXc7
CisgICAgICAgICAgICBsZXQgY2hpbGQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIHBhcmVu
dC5hZGRTdWJ2aWV3KGNoaWxkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFs
c2UoY2hpbGQuaXNBdHRhY2hlZCwgIlZpZXcgYWRkZWQgdG8gYSBkZXRhY2hlZCBwYXJlbnQgc2hv
dWxkIG5vdCBiZSBhdHRhY2hlZC4iKTsKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5h
ZGRTdWJ2aWV3KHBhcmVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
Y2hpbGQuaXNBdHRhY2hlZCwgIkF0dGFjaGluZyBhIHZpZXcgdG8gdGhlIHJvb3QgY2F1c2VzIGRl
c2NlbmRlbnQgdmlld3MgdG8gYmUgYXR0YWNoZWQuIik7CisgICAgICAgICAgICBXSS5WaWV3LnJv
b3RWaWV3KCkucmVtb3ZlU3VidmlldyhwYXJlbnQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZShjaGlsZC5pc0F0dGFjaGVkLCAiRGV0YWNoaW5nIGEgdmlldyBmcm9tIHRo
ZSByb290IGNhdXNlcyBkZXNjZW5kZW50IHZpZXdzIHRvIGJlIGRldGFjaGVkLiIpOworCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIGJhc2ljIFZpZXcgb3BlcmF0aW9uczogcm9v
dCB2aWV3IGFjY2VzcywgdmlldyBjcmVhdGlvbiwgYW5kIHN1YnZpZXcgbWFuYWdlbWVudC48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmll
dy9yZXNvdXJjZXMvdGVzdC12aWV3LmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvcmVz
b3VyY2VzL3Rlc3Qtdmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjM0N2E0NDVjYWM3Yjg5NTdjNDYzMGNm
YTc0YmQ0MjY3MDBhODI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3ZpZXcvcmVzb3VyY2VzL3Rlc3Qtdmlldy5qcwpAQCAtMCwwICsxLDM4IEBACitUZXN0UGFnZS5y
ZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKKyAgICBXSS5UZXN0VmlldyA9IGNsYXNzIFRlc3RW
aWV3IGV4dGVuZHMgV0kuVmlldworICAgIHsKKyAgICAgICAgY29uc3RydWN0b3IoKQorICAgICAg
ICB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q2FsbGJh
Y2tzID0gW107CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsTGF5b3V0Q291bnQgPSAwOworICAg
ICAgICAgICAgdGhpcy5fbGF5b3V0Q291bnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8g
UHVibGljCisKKyAgICAgICAgZ2V0IGluaXRpYWxMYXlvdXRDb3VudCgpIHsgcmV0dXJuIHRoaXMu
X2luaXRpYWxMYXlvdXRDb3VudDsgfQorICAgICAgICBnZXQgbGF5b3V0Q291bnQoKSB7IHJldHVy
biB0aGlzLl9sYXlvdXRDb3VudDsgfQorCisgICAgICAgIGV2YWx1YXRlQWZ0ZXJMYXlvdXQoY2Fs
bGJhY2spCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dENhbGxiYWNrcy5wdXNo
KGNhbGxiYWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFByb3RlY3RlZAorCisgICAgICAg
IGluaXRpYWxMYXlvdXQoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsTGF5
b3V0Q291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGxheW91dCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRoaXMuX2xheW91dENvdW50Kys7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2tz
ID0gdGhpcy5fbGF5b3V0Q2FsbGJhY2tzOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q2FsbGJh
Y2tzID0gW107CisgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBjYWxsYmFja3MpCisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH07Cit9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJvbm91cy1sYXlvdXQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1YWFmZjUzNmQ4MGEyZTlkY2Y3MTM3YzYxNmRlNDVl
NDZlNjY2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9z
eW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3Rpbmcg
c3luY2hyb25vdXMgVmlldyBsYXlvdXQgb3BlcmF0aW9uczogdXBkYXRlTGF5b3V0LCB1cGRhdGVM
YXlvdXRJZk5lZWRlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFZpZXcuU3luY2hyb25v
dXNMYXlvdXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LnVwZGF0ZUxheW91dAorVXBkYXRl
IGxheW91dCBmb3IgYXR0YWNoZWQgdmlldy4KK1BBU1M6IFZpZXcgc2hvdWxkIGRvIGFuIGluaXRp
YWwgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQgb25jZS4KK1BB
U1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCitVcGRhdGUgbGF5b3V0
IGZvciBkZXRhY2hlZCB2aWV3LgorUEFTUzogVmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlv
dXQuCitQQVNTOiBWaWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dCBvbmNlLgorUEFTUzogVmll
dyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IFZpZXcudXBkYXRlTGF5b3V0LnByb3BvZ2F0ZVRvU3Vidmlld3MKK1VwZGF0ZSBwYXJlbnQg
dmlldyBsYXlvdXQuCitQQVNTOiBDaGlsZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91
dC4KK1BBU1M6IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0IG9uY2UuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LnVwZGF0ZUxheW91dElmTmVlZGVkCitQQVNTOiBWaWV3
IHNob3VsZCB1cGRhdGUgaWYgYW4gaW5pdGlhbCBsYXlvdXQgbmV2ZXIgaGFwcGVuZWQuCitQQVNT
OiBWaWV3IHNob3VsZCB1cGRhdGUgaWYgYSBsYXlvdXQgaXMgcGVuZGluZy4KK1BBU1M6IFZpZXcg
c2hvdWxkIG5vdCB1cGRhdGUgaWYgbm8gbGF5b3V0IGlzIHBlbmRpbmcuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmRhNTBmNzUxYzM0YjhlNGM3ZjZhNTRjNzU5MWNhNWE0NDllNmNmZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC5odG1s
CkBAIC0wLDAgKzEsODEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0LXZpZXcuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3Qu
cmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKKworICAgIGxldCBzdWl0ZSA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlU3luY1N1aXRlKCJWaWV3LlN5bmNocm9ub3VzTGF5b3V0Iik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3LnVwZGF0ZUxheW91dCIs
CisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdmlldzEgPSBuZXcgV0kuVGVzdFZp
ZXc7CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3MSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRlIGxheW91dCBmb3IgYXR0YWNoZWQg
dmlldy4iKTsKKyAgICAgICAgICAgIHZpZXcxLnVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh2aWV3MS5pbml0aWFsTGF5b3V0Q291bnQsIDEsICJW
aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwodmlldzEubGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3VsZCB1cGRh
dGUgaXRzIGxheW91dCBvbmNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RG
YWxzZSh2aWV3MS5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5n
IGxheW91dC4iKTsKKworICAgICAgICAgICAgbGV0IHZpZXcyID0gbmV3IFdJLlRlc3RWaWV3Owor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0ZSBsYXlvdXQgZm9yIGRldGFjaGVk
IHZpZXcuIik7CisgICAgICAgICAgICB2aWV3Mi51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldzIuaW5pdGlhbExheW91dENvdW50LCAxLCAi
VmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcyLmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQgdXBk
YXRlIGl0cyBsYXlvdXQgb25jZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RmFsc2UodmlldzIubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGlu
ZyBsYXlvdXQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3LnVwZGF0
ZUxheW91dC5wcm9wb2dhdGVUb1N1YnZpZXdzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBwYXJlbnQgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQg
PSBuZXcgV0kuVGVzdFZpZXc7CisKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5hZGRT
dWJ2aWV3KHBhcmVudCk7CisgICAgICAgICAgICBwYXJlbnQuYWRkU3VidmlldyhjaGlsZCk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJVcGRhdGUgcGFyZW50IHZpZXcgbGF5b3V0
LiIpOworICAgICAgICAgICAgcGFyZW50LnVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZC5pbml0aWFsTGF5b3V0Q291bnQsIDEsICJDaGls
ZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoY2hpbGQubGF5b3V0Q291bnQsIDEsICJDaGlsZCB2aWV3IHNo
b3VsZCB1cGRhdGUgaXRzIGxheW91dCBvbmNlLiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAg
ICBuYW1lOiAiVmlldy51cGRhdGVMYXlvdXRJZk5lZWRlZCIsCisgICAgICAgIHRlc3QoKSB7Cisg
ICAgICAgICAgICBsZXQgdmlldzEgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICB2aWV3
MS51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbCh2aWV3MS5sYXlvdXRDb3VudCwgMSwgIlZpZXcgc2hvdWxkIHVwZGF0ZSBpZiBhbiBp
bml0aWFsIGxheW91dCBuZXZlciBoYXBwZW5lZC4iKTsKKworICAgICAgICAgICAgbGV0IHZpZXcy
ID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAgICAgICAgdmlldzIubmVlZHNMYXlvdXQoKTsKKyAg
ICAgICAgICAgIHZpZXcyLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcyLmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQg
dXBkYXRlIGlmIGEgbGF5b3V0IGlzIHBlbmRpbmcuIik7CisKKyAgICAgICAgICAgIGxldCB2aWV3
MyA9IG5ldyBXSS5UZXN0VmlldzsKKyAgICAgICAgICAgIHZpZXczLnVwZGF0ZUxheW91dCgpOwor
ICAgICAgICAgICAgdmlldzMudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldzMubGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3Vs
ZCBub3QgdXBkYXRlIGlmIG5vIGxheW91dCBpcyBwZW5kaW5nLiIpOworCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2Vz
QW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj4KKyAgICA8cD5UZXN0aW5nIHN5bmNocm9ub3VzIFZpZXcgbGF5b3V0IG9wZXJhdGlvbnM6
IHVwZGF0ZUxheW91dCwgdXBkYXRlTGF5b3V0SWZOZWVkZWQuPC9wPgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322328</attachid>
            <date>2017-10-01 13:40:35 -0700</date>
            <delta_ts>2017-10-02 18:08:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161274-20171001134034.patch</filename>
            <type>text/plain</type>
            <size>29978</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
NWFjZTg4NTQ1M2Y0YmY0ZTI1YTU2MzY5MWVhODJmMjQ5NTJiYWE1Li43OWVkNTcwNjg2NmE5OGZj
NjYwMTg2NGY2M2U2NTE4N2Y3MTRkZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMC0wMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIFZpZXcgbGF5b3V0IHRlc3RzLCBtYWtlIHZp
ZXdzIG1vcmUgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTI3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgwMzg2MTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIHN1cHBvcnQgZm9yIFZpZXcgdGVzdGluZy4gU2luY2UgdmlldyBsYXlvdXRzIGFyZSBzY2hl
ZHVsZWQKKyAgICAgICAgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBGcm9udGVuZFRlc3RI
YXJuZXNzIG5vdyBwcm92aWRlcyBhIHRpbWVyLWJhc2VkCisgICAgICAgIHBvbHlmaWxsLCB0byBh
bGxvdyBub25pbnRydXNpdmUgdGVzdGluZyBvZiB0aGUgZnJvbnRlbmQgVmlldyBoaWVyYXJjaHku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKyAgICAgICAgTWFrZSBXSS5W
aWV3IGF2YWlsYWJsZSB0byB0ZXN0cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9G
cm9udGVuZFRlc3RIYXJuZXNzLmpzOgorICAgICAgICAoRnJvbnRlbmRUZXN0SGFybmVzcy5wcm90
b3R5cGUucmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9WaWV3LmpzOgorICAgICAgICBGaXhlZCBpc3N1ZXMgY2F1Z2h0IHdoaWxl
IHdyaXRpbmcgdGVzdHMgZm9yIHRoZSBleHBlY3RlZCBWaWV3IGJlaGF2aW9yLgorICAgICAgICAo
V0kuVmlldy5yb290Vmlldyk6CisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5yZXBsYWNlU3Vi
dmlldyk6CisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5fZGlkTW92ZVRvV2luZG93KToKKyAg
ICAgICAgKFdJLlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcpOgorCiAyMDE3LTA5
LTI5ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFN0eWxlcyBSZWRlc2lnbjogc3VwcG9ydCB1bmRvL3JlZG8gb2YgbWFudWFs
IGVkaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
aW5kZXggYzQ0NzFmOTg4NTYwMzRjOWQ0Y2QxYTI1MDQ5OGE3MTkxM2MyMWU0ZC4uYmYzNGM5MWNk
OTM5Y2ViZmM3OGExMDgwN2YwMzIyNDk1MjYxNGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjE1LDYgKzIxNSw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IldvcmtlcnMvRm9ybWF0dGVyL0Zvcm1hdHRlckNvbnRlbnRCdWlsZGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+PC9zY3JpcHQ+CiAK
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJLnNoYXJlZEFw
cCA9IG5ldyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5q
cwppbmRleCA3ZGQ2MWQ1YzhiMDY3NTRhNTk1MmQ2ZjhlZDA1ODFhYWFkOTE2MzA4Li44M2NlMDYz
N2VkNzcyZjdjZDU0YThlZmYxYzVmYWNhNDljYTZiN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Gcm9udGVuZFRlc3RI
YXJuZXNzLmpzCkBAIC0xNDAsNiArMTQwLDQ2IEBAIEZyb250ZW5kVGVzdEhhcm5lc3MgPSBjbGFz
cyBGcm9udGVuZFRlc3RIYXJuZXNzIGV4dGVuZHMgVGVzdEhhcm5lc3MKICAgICAgICAgICAgIH0p
OwogICAgIH0KIAorICAgIHJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRpb25GcmFt
ZSk7CisgICAgICAgIGlmICh0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRpb25GcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRp
b25GcmFtZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHRoaXMuX3Jl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX25l
eHRSZXF1ZXN0SWRlbnRpZmllciA9IDE7CisKKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRp
b25GcmFtZSA9IChjYWxsYmFjaykgPT4geworICAgICAgICAgICAgbGV0IHJlcXVlc3RJZGVudGlm
aWVyID0gdGhpcy5fbmV4dFJlcXVlc3RJZGVudGlmaWVyKys7CisgICAgICAgICAgICB0aGlzLl9y
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3Muc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBjYWxs
YmFjayk7CisgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RJZGVudGlmaWVyOworCisgICAgICAgICAg
ICBsZXQgZGlzcGF0Y2hDYWxsYmFja3MgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNh
bGxiYWNrcyA9IHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrczsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MgPSBuZXcgTWFwOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyID0gdW5kZWZp
bmVkOworICAgICAgICAgICAgICAgIGxldCB0aW1lc3RhbXAgPSB3aW5kb3cucGVyZm9ybWFuY2Uu
bm93KCk7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgY2FsbGJhY2tzLnZh
bHVlcygpKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aW1lc3RhbXApOworICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXIg
PSBzZXRUaW1lb3V0KGRpc3BhdGNoQ2FsbGJhY2tzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXF1ZXN0SWRlbnRpZmllcjsKKyAgICAgICAgfTsKKworICAgICAgICB3aW5kb3cuY2FuY2VsQW5p
bWF0aW9uRnJhbWUgPSAocmVxdWVzdElkZW50aWZpZXIpID0+IHsKKyAgICAgICAgICAgIGlmICgh
dGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLmRlbGV0ZShyZXF1ZXN0SWRlbnRp
ZmllcikpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXRoaXMu
X3JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcy5zaXplKSB7CisgICAgICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lciA9IHVuZGVmaW5lZDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKICAgICByZWRpcmVjdENvbnNvbGVUb1Rl
c3RPdXRwdXQoKQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuJ3QgdXNlIGFycm93IGZ1bmN0aW9u
cyBoZXJlIGJlY2F1c2Ugb2YgJ2FyZ3VtZW50cycuIEl0IG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwppbmRleCA0ZTdjNGIxZWQ1
NzdkNDFlMWRhYzQyYjgwMzBmYjI2MDY5YjEzNTlmLi42ZTJlZTVmNDA3YTNlYTc5MDliYWJkNGZl
ZTE4OTQ0ZjM4ZDE4YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKQEAgLTQ0LDggKzQ0LDEyIEBAIFdJLlZpZXcgPSBjbGFzcyBW
aWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdGF0aWMgcm9vdFZpZXcoKQogICAgIHsKLSAg
ICAgICAgaWYgKCFXSS5WaWV3Ll9yb290VmlldykKKyAgICAgICAgaWYgKCFXSS5WaWV3Ll9yb290
VmlldykgeworICAgICAgICAgICAgLy8gU2luY2UgdGhlIHJvb3QgdmlldyBpcyBhdHRhY2hlZCBi
eSBkZWZpbml0aW9uLCBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgLy8g
bm9ybWFsIHZpZXcgYXR0YWNobWVudCBwcm9jZXNzLiBTaW1wbHkgbWFyayBpdCBhcyBhdHRhY2hl
ZC4KICAgICAgICAgICAgIFdJLlZpZXcuX3Jvb3RWaWV3ID0gbmV3IFdJLlZpZXcoZG9jdW1lbnQu
Ym9keSk7CisgICAgICAgICAgICBXSS5WaWV3Ll9yb290Vmlldy5faXNBdHRhY2hlZFRvUm9vdCA9
IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV0kuVmlldy5fcm9vdFZpZXc7CiAg
ICAgfQpAQCAtMTI5LDYgKzEzMyw4IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgcmVwbGFjZVN1YnZpZXcob2xkVmlldywgbmV3VmlldykKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KG9sZFZpZXcgIT09IG5ld1ZpZXcsICJDYW5ub3QgcmVwbGFjZSBz
dWJ2aWV3IHdpdGggaXRzZWxmLiIpOworICAgICAgICBpZiAob2xkVmlldyA9PT0gbmV3VmlldykK
KyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUo
bmV3Vmlldywgb2xkVmlldyk7CiAgICAgICAgIHRoaXMucmVtb3ZlU3VidmlldyhvbGRWaWV3KTsK
QEAgLTIzNCwxMCArMjQwLDEzIEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAgICAgdGhpcy5faXNBdHRhY2hlZFRvUm9vdCA9IGlzQXR0YWNoZWRUb1Jvb3Q7
CiAgICAgICAgIGlmICh0aGlzLl9pc0F0dGFjaGVkVG9Sb290KSB7Ci0gICAgICAgICAgICB0aGlz
LmF0dGFjaGVkKCk7CiAgICAgICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXco
dGhpcyk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5hdHRhY2hlZCgpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQorICAgICAgICAgICAg
ICAgIHRoaXMuY2FuY2VsTGF5b3V0KCk7CiAgICAgICAgICAgICB0aGlzLmRldGFjaGVkKCk7Cisg
ICAgICAgIH0KIAogICAgICAgICBmb3IgKGxldCB2aWV3IG9mIHRoaXMuX3N1YnZpZXdzKQogICAg
ICAgICAgICAgdmlldy5fZGlkTW92ZVRvV2luZG93KGlzQXR0YWNoZWRUb1Jvb3QpOwpAQCAtMzI4
LDYgKzMzNyw4IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICBwYXJlbnRWaWV3ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3OwogICAgICAgICB9CiAK
KyAgICAgICAgdmlldy5fZGlydHkgPSBmYWxzZTsKKwogICAgICAgICBpZiAoIVdJLlZpZXcuX3Nj
aGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA1ZTgyNmFkMzc2NGFiMWFkNjVjZWUxNmNmYzFiMzY1NmI0NGM3NTEyLi41MDY5Nzg4YmNl
YmFhMDhmNTdlMzYwNGFiNDlhOWJiMjQwNWMxMGFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTctMTAtMDEgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFkZCBWaWV3IGxheW91dCB0ZXN0cywgbWFrZSB2aWV3cyBtb3JlIHRlc3Rh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEy
NzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDM4NjE1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgY3JlYXRpbmcgdmll
d3MsIGFkZGluZyBhbmQgcmVtb3Zpbmcgc3Vidmlld3MsIGFuZCBsYXlvdXQKKyAgICAgICAgb3Bl
cmF0aW9ucy4gVGhlc2UgdGVzdHMgcmVseSBvbiBhIG1vY2sgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
LCB3aGljaCBpcworICAgICAgICBlbmFibGVkIHdpdGggRnJvbnRlbmRUZXN0SGFybmVzcy5yZWRp
cmVjdFJlcXVlc3RBbmltYXRpb25GcmFtZS4KKworICAgICAgICAqIGluc3BlY3Rvci92aWV3L2Fz
eW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0
b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci92aWV3L2Jhc2ljcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci92aWV3L2Jhc2ljcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivdmlldy9zeW5j
aHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
dmlldy9zeW5jaHJvbm91cy1sYXlvdXQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgKiBpbnNwZWN0
b3Ivdmlldy9yZXNvdXJjZXMvdGVzdC12aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYWdl
LnJlZ2lzdGVySW5pdGlhbGl6ZXIuV0kuVGVzdFZpZXcpOgorICAgICAgICAoVGVzdFBhZ2UucmVn
aXN0ZXJJbml0aWFsaXplci5XSS5UZXN0Vmlldy5wcm90b3R5cGUuZ2V0IGluaXRpYWxMYXlvdXRD
b3VudCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLldJLlRlc3RWaWV3
LnByb3RvdHlwZS5nZXQgbGF5b3V0Q291bnQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplci5XSS5UZXN0Vmlldy5wcm90b3R5cGUuZXZhbHVhdGVBZnRlckxheW91dCk6Cisg
ICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLldJLlRlc3RWaWV3LnByb3RvdHlw
ZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIu
V0kuVGVzdFZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyKToKKyAgICAgICAgUmVnaXN0ZXIgYW4gaW5zdHJ1bWVudGF0aW9uIHN1YmNs
YXNzIG9mIFZpZXcuIFRlc3RWaWV3IGNvdW50cyBjYWxscyB0bworICAgICAgICBwcm90ZWN0ZWQg
bWV0aG9kcyBhbmQgYWNjZXB0cyBjYWxsYmFja3MgdG8gZXhlY3V0ZSB3aGVuIGEgbGF5b3V0IGNv
bXBsZXRlcy4KKwogMjAxNy0wOS0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBEb24ndCByZXZlYWwgZmlsZSBVUkwgd2hlbiBwYXN0aW5nIGFuIGltYWdlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1s
YXlvdXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMTU5YTRlN2E5MmZiNWQ2OWM5NGY0N2M3
ZWQ0NTAzYTc1YmRjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitU
ZXN0aW5nIGFzeW5jaHJvbm91cyBWaWV3IGxheW91dCBvcGVyYXRpb25zOiBuZWVkc0xheW91dCwg
Y2FuY2VsTGF5b3V0LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogVmlldy5Bc3luY2hyb25v
dXNMYXlvdXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LmF1dG9tYXRpY0xheW91dAorUEFT
UzogVmlldyBzaG91bGQgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0IG9uY2UgaXQgaXMgYXR0YWNoZWQu
CitMYXlvdXQgY29tcGxldGUuCitQQVNTOiBWaWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91
dC4KK1BBU1M6IFZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0LgorUEFTUzogVmlldyBzaG91
bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZp
ZXcuYXV0b21hdGljTGF5b3V0LmNhbmNlbGxlZAorUEFTUzogVmlldyBzaG91bGQgaGF2ZSBhIHBl
bmRpbmcgbGF5b3V0IG9uY2UgaXQgaXMgYXR0YWNoZWQuCitQQVNTOiBWaWV3IHNob3VsZCBub3Qg
aGF2ZSBhIHBlbmRpbmcgbGF5b3V0IG9uY2UgaXQgaXMgZGV0YWNoZWQuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBWaWV3Lm5lZWRzTGF5b3V0CitGbHVzaCBwZW5kaW5nIGxheW91dHMsIHRoZW4g
c2NoZWR1bGUgYW4gdXBkYXRlLgorUEFTUzogVmlldyBzaG91bGQgaGF2ZSBhIHBlbmRpbmcgbGF5
b3V0LgorTGF5b3V0IGNvbXBsZXRlLgorUEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlv
dXQuCitQQVNTOiBWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogVmlldy5uZWVkc0xheW91dC5wcm9wb2dhdGVUb1N1YnZpZXcKK1Nj
aGVkdWxlIHBhcmVudCB2aWV3IHVwZGF0ZS4KK0xheW91dCBjb21wbGV0ZS4KK1BBU1M6IENobGlk
IHZpZXcgc2hvdWxkIGRvIGFuIGluaXRpYWwgbGF5b3V0LgorUEFTUzogQ2hpbGQgdmlldyBzaG91
bGQgdXBkYXRlIGl0cyBsYXlvdXQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LmNhbmNl
bExheW91dAorQ2FuY2VsIGF1dG9tYXRpYyBsYXlvdXQuCitQQVNTOiBWaWV3IHNob3VsZCBub3Qg
aGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgorQ2FuY2VsIHNjaGVkdWxlZCBsYXlvdXQuCitQQVNTOiBW
aWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWNmYTA0YmU3NmY0NDE5MWY3YzljMDJlMTIzYWFkZWY3YjYyYWM0MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1sYXlvdXQuaHRtbApA
QCAtMCwwICsxLDEwOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3Qtdmlldy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5y
ZWRpcmVjdFJlcXVlc3RBbmltYXRpb25GcmFtZSgpOworCisgICAgbGV0IHN1aXRlID0gSW5zcGVj
dG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJWaWV3LkFzeW5jaHJvbm91c0xheW91dCIpOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5hdXRvbWF0aWNMYXlv
dXQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHZp
ZXcgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRk
U3Vidmlldyh2aWV3KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCh2aWV3
LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBoYXZlIGEgcGVuZGluZyBsYXlvdXQgb25jZSBp
dCBpcyBhdHRhY2hlZC4iKTsKKworICAgICAgICAgICAgdmlldy5ldmFsdWF0ZUFmdGVyTGF5b3V0
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiTGF5b3V0IGNvbXBs
ZXRlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldy5p
bml0aWFsTGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4i
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcubGF5b3V0
Q291bnQsIDEsICJWaWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dC4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcg
c2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuYXV0b21hdGljTGF5b3V0LmNhbmNl
bGxlZCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQg
dmlldyA9IG5ldyBXSS5UZXN0VmlldzsKKworICAgICAgICAgICAgV0kuVmlldy5yb290Vmlldygp
LmFkZFN1YnZpZXcodmlldyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
dmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0IG9u
Y2UgaXQgaXMgYXR0YWNoZWQuIik7CisKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5y
ZW1vdmVTdWJ2aWV3KHZpZXcpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxz
ZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5
b3V0IG9uY2UgaXQgaXMgZGV0YWNoZWQuIik7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IlZpZXcubmVlZHNMYXlvdXQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAg
ICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICBXSS5WaWV3
LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkZsdXNoIHBlbmRpbmcgbGF5b3V0cywgdGhlbiBzY2hlZHVsZSBhbiB1cGRhdGUuIik7
CisgICAgICAgICAgICB2aWV3LnVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgdmlldy5uZWVk
c0xheW91dCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHZpZXcubGF5
b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dC4iKTsKKworICAg
ICAgICAgICAgdmlldy5ldmFsdWF0ZUFmdGVyTGF5b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiTGF5b3V0IGNvbXBsZXRlLiIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldy5sYXlvdXRDb3VudCwgMiwgIlZpZXcgc2hv
dWxkIHVwZGF0ZSBpdHMgbGF5b3V0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RmFsc2Uodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBw
ZW5kaW5nIGxheW91dC4iKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiVmlldy5uZWVkc0xheW91dC5wcm9wb2dhdGVUb1N1YnZpZXciLAorICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5ldyBX
SS5UZXN0VmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZCA9IG5ldyBXSS5UZXN0VmlldzsKKyAg
ICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5hZGRTdWJ2aWV3KHBhcmVudCk7CisgICAgICAg
ICAgICBwYXJlbnQuYWRkU3VidmlldyhjaGlsZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiU2NoZWR1bGUgcGFyZW50IHZpZXcgdXBkYXRlLiIpOworICAgICAgICAgICAgcGFyZW50
Lm5lZWRzTGF5b3V0KCk7CisKKyAgICAgICAgICAgIGNoaWxkLmV2YWx1YXRlQWZ0ZXJMYXlvdXQo
KCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJMYXlvdXQgY29tcGxl
dGUuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZC5p
bml0aWFsTGF5b3V0Q291bnQsIDEsICJDaGxpZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxh
eW91dC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxk
LmxheW91dENvdW50LCAxLCAiQ2hpbGQgdmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQuIik7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcu
Y2FuY2VsTGF5b3V0IiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAg
ICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAgICAgICAgV0kuVmlldy5yb290
VmlldygpLmFkZFN1YnZpZXcodmlldyk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJDYW5jZWwgYXV0b21hdGljIGxheW91dC4iKTsKKyAgICAgICAgICAgIHZpZXcuY2FuY2VsTGF5
b3V0KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHZpZXcubGF5b3V0
UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuIik7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDYW5jZWwgc2NoZWR1bGVkIGxheW91dC4iKTsK
KyAgICAgICAgICAgIHZpZXcubmVlZHNMYXlvdXQoKTsKKyAgICAgICAgICAgIHZpZXcuY2FuY2Vs
TGF5b3V0KCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHZpZXcubGF5
b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuIik7Cisg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdGluZyBhc3luY2hyb25vdXMgVmlldyBsYXlvdXQg
b3BlcmF0aW9uczogbmVlZHNMYXlvdXQsIGNhbmNlbExheW91dC48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMTU4MzllYTg5MmNjMzk2OTJlMDM3ZTdkMzg0NzM5Y2ZlM2Y0N2VmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUyIEBACitUZXN0aW5nIGJhc2ljIFZpZXcgb3BlcmF0aW9uczogcm9v
dCB2aWV3IGFjY2VzcywgdmlldyBjcmVhdGlvbiwgYW5kIHN1YnZpZXcgbWFuYWdlbWVudC4KKwor
Cis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFZpZXcuQmFzaWNzCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogVmlldy5yb290VmlldworUEFTUzogUm9vdCB2aWV3IHNob3VsZCBiZSBhdHRhY2hlZCBieSBk
ZWZpbml0aW9uLgorUEFTUzogUm9vdCB2aWV3IGVsZW1lbnQgc2hvdWxkIGJlIGRvY3VtZW50LmJv
ZHkuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCitQ
QVNTOiBSb290IHZpZXcgc2hvdWxkIG5vdCBoYXZlIHN1YnZpZXdzLgorUEFTUzogVmlldy5yb290
VmlldygpIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHZpZXcuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBWaWV3LmNvbnN0cnVjdG9yCitQQVNTOiBWaWV3IHNob3VsZCBub3QgYmUgYXR0
YWNoZWQuCitQQVNTOiBWaWV3IGVsZW1lbnQgc2hvdWxkIGJlIGEgPGRpdj4uCitQQVNTOiBWaWV3
IGVsZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGNoaWxkIG5vZGVzLgorUEFTUzogVmlldyBzaG91bGQg
bm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KK1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIHN1
YnZpZXdzLgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwYXJlbnQuCitQQVNTOiBWaWV3
IHNob3VsZCBiZSBjcmVhdGVkIHdpdGggcGFzc2VkIGluIGVsZW1lbnQuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBWaWV3LmFkZFN1YnZpZXcKK1BBU1M6IENoaWxkIHNob3VsZCBoYXZlIHRoZSBj
b3JyZWN0IHBhcmVudC4KK1BBU1M6IENoaWxkIHNob3VsZCBiZSBhIGRlc2NlbmRhbnQgb2YgdGhl
IHBhcmVudC4KK1BBU1M6IENoaWxkIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFyZW50J3Mg
c3Vidmlld3MuCitQQVNTOiBBZGRpbmcgYSB2aWV3IG11bHRpcGxlIHRpbWVzIHNob3VsZCBoYXZl
IG5vIGVmZmVjdC4KK1BBU1M6IEdyYW5kY2hpbGQgc2hvdWxkIGJlIGEgZGVzY2VuZGFudCBvZiBp
dCdzIGdyYW5kcGFyZW50LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5yZW1vdmVTdWJ2
aWV3CitQQVNTOiBSZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFyZW50LgorUEFTUzog
UmVtb3ZlZCB2aWV3IHNob3VsZCBub3QgYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQuCitQ
QVNTOiBSZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFyZW50J3Mg
c3Vidmlld3MuCitQQVNTOiBSZW1vdmluZyBhIG5vbmV4aXN0ZW50IHZpZXcgc2hvdWxkIGhhdmUg
bm8gZWZmZWN0LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5pbnNlcnRTdWJ2aWV3QmVm
b3JlCitQQVNTOiBJbnNlcnRpbmcgYSB2aWV3IGJlZm9yZSBgbnVsbGAgc2hvdWxkIGFwcGVuZCB0
aGUgdmlldy4KK1BBU1M6IGNoaWxkMiBzaG91bGQgYmUgaW5zZXJ0ZWQgYmVmb3JlIGRoaWxkMS4K
K1BBU1M6IGNoaWxkMSBzaG91bGQgYmUgYWZ0ZXIgY2hpbGQyLgorUEFTUzogSW5zZXJ0aW5nIGEg
dmlldyBiZWZvcmUgYSBub25leGlzdGVudCB2aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcucmVwbGFjZVN1YnZpZXcKK1BBU1M6IFJlcGxhY2Vk
IHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFyZW50LgorUEFTUzogTmV3IHZpZXcgc2hvdWxkIGhh
dmUgdGhlIGNvcnJlY3QgcGFyZW50LgorUEFTUzogUmVwbGFjaW5nIGEgdmlldyB3aXRoIGl0c2Vs
ZiBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCitQQVNTOiBSZXBsYWNpbmcgYSBub25leGlzdGVudCB2
aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcu
aXNBdHRhY2hlZAorUEFTUzogVmlldyBhZGRlZCB0byB0aGUgcm9vdCBzaG91bGQgYmUgYXR0YWNo
ZWQuCitQQVNTOiBWaWV3IHJlbW92ZWQgZnJvbSB0aGUgcm9vdCBzaG91bGQgbm90IGJlIGF0dGFj
aGVkLgorUEFTUzogVmlldyBhZGRlZCB0byBhIGRldGFjaGVkIHBhcmVudCBzaG91bGQgbm90IGJl
IGF0dGFjaGVkLgorUEFTUzogQXR0YWNoaW5nIGEgdmlldyB0byB0aGUgcm9vdCBjYXVzZXMgZGVz
Y2VuZGVudCB2aWV3cyB0byBiZSBhdHRhY2hlZC4KK1BBU1M6IERldGFjaGluZyBhIHZpZXcgZnJv
bSB0aGUgcm9vdCBjYXVzZXMgZGVzY2VuZGVudCB2aWV3cyB0byBiZSBkZXRhY2hlZC4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzA4NzdlMmU1Yjkz
OTYwMmFlZjFkMmJhM2RjNzY1N2QxODRmN2VkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0bWwKQEAgLTAsMCArMSwxNTggQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRl
U3luY1N1aXRlKCJWaWV3LkJhc2ljcyIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiVmlldy5yb290VmlldyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgcm9vdFZpZXcgPSBXSS5WaWV3LnJvb3RWaWV3KCk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFRoYXQocm9vdFZpZXcuaXNBdHRhY2hlZCwgIlJvb3QgdmlldyBzaG91bGQg
YmUgYXR0YWNoZWQgYnkgZGVmaW5pdGlvbi4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocm9vdFZpZXcuZWxlbWVudCwgZG9jdW1lbnQuYm9keSwgIlJvb3QgdmlldyBl
bGVtZW50IHNob3VsZCBiZSBkb2N1bWVudC5ib2R5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RGYWxzZShyb290Vmlldy5sYXlvdXRQZW5kaW5nLCAiUm9vdCB2aWV3IHNob3Vs
ZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChyb290Vmlldy5zdWJ2aWV3cy5sZW5ndGgsIDAsICJSb290IHZpZXcgc2hv
dWxkIG5vdCBoYXZlIHN1YnZpZXdzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChXSS5WaWV3LnJvb3RWaWV3KCksIFdJLlZpZXcucm9vdFZpZXcoKSwgIlZpZXcucm9v
dFZpZXcoKSBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2aWV3LiIpOworCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVz
dENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5jb25zdHJ1Y3RvciIsCisgICAgICAgIHRlc3Qo
KSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmlzQXR0YWNoZWQsICJWaWV3IHNob3VsZCBub3Qg
YmUgYXR0YWNoZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZp
ZXcuZWxlbWVudC50YWdOYW1lLCAiRElWIiwgIlZpZXcgZWxlbWVudCBzaG91bGQgYmUgYSA8ZGl2
Pi4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldy5lbGVtZW50
LmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAiVmlldyBlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBjaGls
ZCBub2Rlcy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uodmlldy5s
YXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldy5zdWJ2aWV3cy5sZW5n
dGgsIDAsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0TnVsbCh2aWV3LnBhcmVudFZpZXcsICJWaWV3IHNob3VsZCBub3Qg
aGF2ZSBhIHBhcmVudC4iKTsKKworICAgICAgICAgICAgbGV0IGV4aXN0aW5nRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgICAgICBsZXQgY3VzdG9tVmlldyA9
IG5ldyBXSS5WaWV3KGV4aXN0aW5nRWxlbWVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGN1c3RvbVZpZXcuZWxlbWVudCwgZXhpc3RpbmdFbGVtZW50LCAiVmlldyBz
aG91bGQgYmUgY3JlYXRlZCB3aXRoIHBhc3NlZCBpbiBlbGVtZW50LiIpOworCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiVmlldy5hZGRTdWJ2aWV3IiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCBwYXJlbnQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIGxldCBj
aGlsZCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgcGFyZW50LmFkZFN1YnZpZXcoY2hpbGQp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZC5wYXJlbnRWaWV3
LCBwYXJlbnQsICJDaGlsZCBzaG91bGQgaGF2ZSB0aGUgY29ycmVjdCBwYXJlbnQuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2hpbGQuaXNEZXNjZW5kYW50T2YocGFy
ZW50KSwgIkNoaWxkIHNob3VsZCBiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIHBhcmVudC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChwYXJlbnQuc3Vidmlld3MuaW5jbHVk
ZXMoY2hpbGQpLCAiQ2hpbGQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQncyBzdWJ2
aWV3cy4iKTsKKworICAgICAgICAgICAgbGV0IHByZXZpb3VzU3Vidmlld3MgPSBwYXJlbnQuc3Vi
dmlld3Muc2xpY2UoKTsKKyAgICAgICAgICAgIHBhcmVudC5hZGRTdWJ2aWV3KGNoaWxkKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHByZXZpb3VzU3Vidmll
d3MsIHBhcmVudC5zdWJ2aWV3cywgIkFkZGluZyBhIHZpZXcgbXVsdGlwbGUgdGltZXMgc2hvdWxk
IGhhdmUgbm8gZWZmZWN0LiIpOworCisgICAgICAgICAgICBsZXQgZ3JhbmRjaGlsZCA9IG5ldyBX
SS5WaWV3OworICAgICAgICAgICAgY2hpbGQuYWRkU3VidmlldyhncmFuZGNoaWxkKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChncmFuZGNoaWxkLmlzRGVzY2VuZGFudE9m
KGNoaWxkLnBhcmVudFZpZXcpLCAiR3JhbmRjaGlsZCBzaG91bGQgYmUgYSBkZXNjZW5kYW50IG9m
IGl0J3MgZ3JhbmRwYXJlbnQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJW
aWV3LnJlbW92ZVN1YnZpZXciLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBh
cmVudCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkID0gbmV3IFdJLlZpZXc7
CisgICAgICAgICAgICBwYXJlbnQuYWRkU3VidmlldyhjaGlsZCk7CisgICAgICAgICAgICBwYXJl
bnQucmVtb3ZlU3VidmlldyhjaGlsZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dE51bGwoY2hpbGQucGFyZW50VmlldywgIlJlbW92ZWQgdmlldyBzaG91bGQgbm90IGhhdmUgYSBw
YXJlbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIWNoaWxkLmlz
RGVzY2VuZGFudE9mKHBhcmVudCksICJSZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBiZSBhIGRlc2Nl
bmRhbnQgb2YgdGhlIHBhcmVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCghcGFyZW50LnN1YnZpZXdzLmluY2x1ZGVzKGNoaWxkKSwgIlJlbW92ZWQgdmlldyBzaG91
bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQncyBzdWJ2aWV3cy4iKTsKKworICAgICAg
ICAgICAgbGV0IHByZXZpb3VzU3Vidmlld3MgPSBwYXJlbnQuc3Vidmlld3Muc2xpY2UoKTsKKyAg
ICAgICAgICAgIHBhcmVudC5yZW1vdmVTdWJ2aWV3KG5ldyBXSS5WaWV3KTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHByZXZpb3VzU3Vidmlld3MsIHBhcmVu
dC5zdWJ2aWV3cywgIlJlbW92aW5nIGEgbm9uZXhpc3RlbnQgdmlldyBzaG91bGQgaGF2ZSBubyBl
ZmZlY3QuIikKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuaW5zZXJ0U3Vi
dmlld0JlZm9yZSIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGFyZW50ID0g
bmV3IFdJLlZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQxID0gbmV3IFdJLlZpZXc7CisgICAg
ICAgICAgICBsZXQgY2hpbGQyID0gbmV3IFdJLlZpZXc7CisgICAgICAgICAgICBwYXJlbnQuaW5z
ZXJ0U3Vidmlld0JlZm9yZShjaGlsZDEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChwYXJlbnQuc3Vidmlld3NbMF0sIGNoaWxkMSwgIkluc2VydGluZyBhIHZpZXcgYmVm
b3JlIGBudWxsYCBzaG91bGQgYXBwZW5kIHRoZSB2aWV3LiIpOworCisgICAgICAgICAgICBwYXJl
bnQuaW5zZXJ0U3Vidmlld0JlZm9yZShjaGlsZDIsIGNoaWxkMSk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhcmVudC5zdWJ2aWV3c1swXSwgY2hpbGQyLCAiY2hpbGQy
IHNob3VsZCBiZSBpbnNlcnRlZCBiZWZvcmUgZGhpbGQxLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChwYXJlbnQuc3Vidmlld3NbMV0sIGNoaWxkMSwgImNoaWxkMSBz
aG91bGQgYmUgYWZ0ZXIgY2hpbGQyLiIpOworCisgICAgICAgICAgICBsZXQgcHJldmlvdXNTdWJ2
aWV3cyA9IHBhcmVudC5zdWJ2aWV3cy5zbGljZSgpOworICAgICAgICAgICAgcGFyZW50Lmluc2Vy
dFN1YnZpZXdCZWZvcmUoY2hpbGQyLCBuZXcgV0kuVmlldyk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChwYXJlbnQuc3Vidmlld3MsIHByZXZpb3VzU3Vidmll
d3MsICJJbnNlcnRpbmcgYSB2aWV3IGJlZm9yZSBhIG5vbmV4aXN0ZW50IHZpZXcgc2hvdWxkIGhh
dmUgbm8gZWZmZWN0LiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5y
ZXBsYWNlU3VidmlldyIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGFyZW50
ID0gbmV3IFdJLlZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQxID0gbmV3IFdJLlZpZXc7Cisg
ICAgICAgICAgICBsZXQgY2hpbGQyID0gbmV3IFdJLlZpZXc7CisgICAgICAgICAgICBwYXJlbnQu
YWRkU3VidmlldyhjaGlsZDEpOworICAgICAgICAgICAgcGFyZW50LnJlcGxhY2VTdWJ2aWV3KGNo
aWxkMSwgY2hpbGQyKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0TnVsbChjaGls
ZDEucGFyZW50VmlldywgIlJlcGxhY2VkIHZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFyZW50LiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZDIucGFyZW50Vmll
dywgcGFyZW50LCAiTmV3IHZpZXcgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3QgcGFyZW50LiIpOwor
CisgICAgICAgICAgICBsZXQgcHJldmlvdXNTdWJ2aWV3cyA9IHBhcmVudC5zdWJ2aWV3cy5zbGlj
ZSgpOworICAgICAgICAgICAgcGFyZW50LnJlcGxhY2VTdWJ2aWV3KGNoaWxkMiwgY2hpbGQyKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHBhcmVudC5zdWJ2
aWV3cywgcHJldmlvdXNTdWJ2aWV3cywgIlJlcGxhY2luZyBhIHZpZXcgd2l0aCBpdHNlbGYgc2hv
dWxkIGhhdmUgbm8gZWZmZWN0LiIpOworCisgICAgICAgICAgICBwcmV2aW91c1N1YnZpZXdzID0g
cGFyZW50LnN1YnZpZXdzOworICAgICAgICAgICAgcGFyZW50LnJlcGxhY2VTdWJ2aWV3KG5ldyBX
SS5WaWV3LCBjaGlsZDEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93
RXF1YWwocGFyZW50LnN1YnZpZXdzLCBwcmV2aW91c1N1YnZpZXdzLCAiUmVwbGFjaW5nIGEgbm9u
ZXhpc3RlbnQgdmlldyBzaG91bGQgaGF2ZSBubyBlZmZlY3QuIik7CisKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJWaWV3LmlzQXR0YWNoZWQiLAorICAgICAgICB0ZXN0KCkgeworICAg
ICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIFdJLlZpZXcucm9v
dFZpZXcoKS5hZGRTdWJ2aWV3KHZpZXcpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KHZpZXcuaXNBdHRhY2hlZCwgIlZpZXcgYWRkZWQgdG8gdGhlIHJvb3Qgc2hvdWxkIGJl
IGF0dGFjaGVkLiIpOworCisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkucmVtb3ZlU3Vi
dmlldyh2aWV3KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uodmlldy5p
c0F0dGFjaGVkLCAiVmlldyByZW1vdmVkIGZyb20gdGhlIHJvb3Qgc2hvdWxkIG5vdCBiZSBhdHRh
Y2hlZC4iKTsKKworICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5ldyBXSS5WaWV3OworICAgICAg
ICAgICAgbGV0IGNoaWxkID0gbmV3IFdJLlZpZXc7CisgICAgICAgICAgICBwYXJlbnQuYWRkU3Vi
dmlldyhjaGlsZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNoaWxk
LmlzQXR0YWNoZWQsICJWaWV3IGFkZGVkIHRvIGEgZGV0YWNoZWQgcGFyZW50IHNob3VsZCBub3Qg
YmUgYXR0YWNoZWQuIik7CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmll
dyhwYXJlbnQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNoaWxkLmlz
QXR0YWNoZWQsICJBdHRhY2hpbmcgYSB2aWV3IHRvIHRoZSByb290IGNhdXNlcyBkZXNjZW5kZW50
IHZpZXdzIHRvIGJlIGF0dGFjaGVkLiIpOworICAgICAgICAgICAgV0kuVmlldy5yb290Vmlldygp
LnJlbW92ZVN1YnZpZXcocGFyZW50KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RmFsc2UoY2hpbGQuaXNBdHRhY2hlZCwgIkRldGFjaGluZyBhIHZpZXcgZnJvbSB0aGUgcm9vdCBj
YXVzZXMgZGVzY2VuZGVudCB2aWV3cyB0byBiZSBkZXRhY2hlZC4iKTsKKworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CisgICAgPHA+VGVzdGluZyBiYXNpYyBWaWV3IG9wZXJhdGlvbnM6IHJvb3QgdmlldyBh
Y2Nlc3MsIHZpZXcgY3JlYXRpb24sIGFuZCBzdWJ2aWV3IG1hbmFnZW1lbnQuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvcmVzb3Vy
Y2VzL3Rlc3Qtdmlldy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3Jlc291cmNlcy90
ZXN0LXZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVlYjI0YTVjMWU2MGI5ZDgyODZjZmM5ZmYwODRmNzRl
ODU2ZTBmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3Jl
c291cmNlcy90ZXN0LXZpZXcuanMKQEAgLTAsMCArMSwzOSBAQAorVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcigoKSA9PiB7CisgICAgV0kuVGVzdFZpZXcgPSBjbGFzcyBUZXN0VmlldyBleHRl
bmRzIFdJLlZpZXcKKyAgICB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3VwZXIoKTsKKworICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q2FsbGJhY2tzID0g
W107CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsTGF5b3V0Q291bnQgPSAwOworICAgICAgICAg
ICAgdGhpcy5fbGF5b3V0Q291bnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHVibGlj
CisKKyAgICAgICAgZ2V0IGluaXRpYWxMYXlvdXRDb3VudCgpIHsgcmV0dXJuIHRoaXMuX2luaXRp
YWxMYXlvdXRDb3VudDsgfQorICAgICAgICBnZXQgbGF5b3V0Q291bnQoKSB7IHJldHVybiB0aGlz
Ll9sYXlvdXRDb3VudDsgfQorCisgICAgICAgIGV2YWx1YXRlQWZ0ZXJMYXlvdXQoY2FsbGJhY2sp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dENhbGxiYWNrcy5wdXNoKGNhbGxi
YWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFByb3RlY3RlZAorCisgICAgICAgIGluaXRp
YWxMYXlvdXQoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsTGF5b3V0Q291
bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGxheW91dCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRoaXMuX2xheW91dENvdW50Kys7CisgICAgICAgICAgICBsZXQgY2FsbGJhY2tzID0gdGhp
cy5fbGF5b3V0Q2FsbGJhY2tzOworICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q2FsbGJhY2tzID0g
W107CisgICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBjYWxsYmFja3MpCisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH07Cit9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE1YWFmZjUzNmQ4MGEyZTlkY2Y3MTM3YzYxNmRlNDVlNDZlNjY2
NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJv
bm91cy1sYXlvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1Rlc3Rpbmcgc3luY2hy
b25vdXMgVmlldyBsYXlvdXQgb3BlcmF0aW9uczogdXBkYXRlTGF5b3V0LCB1cGRhdGVMYXlvdXRJ
Zk5lZWRlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFZpZXcuU3luY2hyb25vdXNMYXlv
dXQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LnVwZGF0ZUxheW91dAorVXBkYXRlIGxheW91
dCBmb3IgYXR0YWNoZWQgdmlldy4KK1BBU1M6IFZpZXcgc2hvdWxkIGRvIGFuIGluaXRpYWwgbGF5
b3V0LgorUEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQgb25jZS4KK1BBU1M6IFZp
ZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCitVcGRhdGUgbGF5b3V0IGZvciBk
ZXRhY2hlZCB2aWV3LgorUEFTUzogVmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuCitQ
QVNTOiBWaWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dCBvbmNlLgorUEFTUzogVmlldyBzaG91
bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZp
ZXcudXBkYXRlTGF5b3V0LnByb3BvZ2F0ZVRvU3Vidmlld3MKK1VwZGF0ZSBwYXJlbnQgdmlldyBs
YXlvdXQuCitQQVNTOiBDaGlsZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4KK1BB
U1M6IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0IG9uY2UuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBWaWV3LnVwZGF0ZUxheW91dElmTmVlZGVkCitQQVNTOiBWaWV3IHNob3Vs
ZCB1cGRhdGUgaWYgYW4gaW5pdGlhbCBsYXlvdXQgbmV2ZXIgaGFwcGVuZWQuCitQQVNTOiBWaWV3
IHNob3VsZCB1cGRhdGUgaWYgYSBsYXlvdXQgaXMgcGVuZGluZy4KK1BBU1M6IFZpZXcgc2hvdWxk
IG5vdCB1cGRhdGUgaWYgbm8gbGF5b3V0IGlzIHBlbmRpbmcuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3ZpZXcvc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRh
NTBmNzUxYzM0YjhlNGM3ZjZhNTRjNzU5MWNhNWE0NDllNmNmZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC5odG1sCkBAIC0w
LDAgKzEsODEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0LXZpZXcuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRlc3QucmVkaXJl
Y3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKKworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlU3luY1N1aXRlKCJWaWV3LlN5bmNocm9ub3VzTGF5b3V0Iik7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3LnVwZGF0ZUxheW91dCIsCisgICAg
ICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgdmlldzEgPSBuZXcgV0kuVGVzdFZpZXc7Cisg
ICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3MSk7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRlIGxheW91dCBmb3IgYXR0YWNoZWQgdmlldy4i
KTsKKyAgICAgICAgICAgIHZpZXcxLnVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbCh2aWV3MS5pbml0aWFsTGF5b3V0Q291bnQsIDEsICJWaWV3IHNo
b3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwodmlldzEubGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3VsZCB1cGRhdGUgaXRz
IGxheW91dCBvbmNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2
aWV3MS5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91
dC4iKTsKKworICAgICAgICAgICAgbGV0IHZpZXcyID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0ZSBsYXlvdXQgZm9yIGRldGFjaGVkIHZpZXcu
Iik7CisgICAgICAgICAgICB2aWV3Mi51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwodmlldzIuaW5pdGlhbExheW91dENvdW50LCAxLCAiVmlldyBz
aG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHZpZXcyLmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQgdXBkYXRlIGl0
cyBsYXlvdXQgb25jZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uo
dmlldzIubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlv
dXQuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3LnVwZGF0ZUxheW91
dC5wcm9wb2dhdGVUb1N1YnZpZXdzIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxl
dCBwYXJlbnQgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQgPSBuZXcg
V0kuVGVzdFZpZXc7CisKKyAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5hZGRTdWJ2aWV3
KHBhcmVudCk7CisgICAgICAgICAgICBwYXJlbnQuYWRkU3VidmlldyhjaGlsZCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJVcGRhdGUgcGFyZW50IHZpZXcgbGF5b3V0LiIpOwor
ICAgICAgICAgICAgcGFyZW50LnVwZGF0ZUxheW91dCgpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChjaGlsZC5pbml0aWFsTGF5b3V0Q291bnQsIDEsICJDaGlsZCB2aWV3
IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoY2hpbGQubGF5b3V0Q291bnQsIDEsICJDaGlsZCB2aWV3IHNob3VsZCB1
cGRhdGUgaXRzIGxheW91dCBvbmNlLiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiVmlldy51cGRhdGVMYXlvdXRJZk5lZWRlZCIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAg
ICAgICBsZXQgdmlldzEgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICB2aWV3MS51cGRh
dGVMYXlvdXRJZk5lZWRlZCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bCh2aWV3MS5sYXlvdXRDb3VudCwgMSwgIlZpZXcgc2hvdWxkIHVwZGF0ZSBpZiBhbiBpbml0aWFs
IGxheW91dCBuZXZlciBoYXBwZW5lZC4iKTsKKworICAgICAgICAgICAgbGV0IHZpZXcyID0gbmV3
IFdJLlRlc3RWaWV3OworICAgICAgICAgICAgdmlldzIubmVlZHNMYXlvdXQoKTsKKyAgICAgICAg
ICAgIHZpZXcyLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHZpZXcyLmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQgdXBkYXRl
IGlmIGEgbGF5b3V0IGlzIHBlbmRpbmcuIik7CisKKyAgICAgICAgICAgIGxldCB2aWV3MyA9IG5l
dyBXSS5UZXN0VmlldzsKKyAgICAgICAgICAgIHZpZXczLnVwZGF0ZUxheW91dCgpOworICAgICAg
ICAgICAgdmlldzMudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwodmlldzMubGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3VsZCBub3Qg
dXBkYXRlIGlmIG5vIGxheW91dCBpcyBwZW5kaW5nLiIpOworCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8cD5UZXN0aW5nIHN5bmNocm9ub3VzIFZpZXcgbGF5b3V0IG9wZXJhdGlvbnM6IHVwZGF0
ZUxheW91dCwgdXBkYXRlTGF5b3V0SWZOZWVkZWQuPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322480</attachid>
            <date>2017-10-02 18:08:19 -0700</date>
            <delta_ts>2017-10-03 09:12:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161274-20171002180818.patch</filename>
            <type>text/plain</type>
            <size>29994</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
NjM0ZmQ3MzFhYmQzMjAyOTJjMjY5NjE0ZjcyOWY0ZjBmZDNjNGZkLi43MjQyNGYxNjEyZWZkMTY4
ZTkwMGZjMzIwZTEwODJlOThmZjc3NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0xMC0wMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIFZpZXcgbGF5b3V0IHRlc3RzLCBtYWtlIHZp
ZXdzIG1vcmUgdGVzdGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTI3NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgwMzg2MTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBWaWV3IHRlc3RpbmcuIFNpbmNlIHZpZXcgbGF5b3V0cyBhcmUgc2NoZWR1
bGVkCisgICAgICAgIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgRnJvbnRlbmRUZXN0SGFy
bmVzcyBub3cgcHJvdmlkZXMgYSB0aW1lci1iYXNlZAorICAgICAgICBwb2x5ZmlsbCwgdG8gYWxs
b3cgbm9uaW50cnVzaXZlIHRlc3Rpbmcgb2YgdGhlIGZyb250ZW5kIFZpZXcgaGllcmFyY2h5Lgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAgICAgIE1ha2UgV0kuVmll
dyBhdmFpbGFibGUgdG8gdGVzdHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvRnJv
bnRlbmRUZXN0SGFybmVzcy5qczoKKyAgICAgICAgKEZyb250ZW5kVGVzdEhhcm5lc3MucHJvdG90
eXBlLnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKToKKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdJLlZpZXcucm9vdFZpZXcpOgorICAgICAg
ICAoV0kuVmlldy5wcm90b3R5cGUucmVwbGFjZVN1YnZpZXcpOgorICAgICAgICAoV0kuVmlldy5w
cm90b3R5cGUuX2RpZE1vdmVUb1dpbmRvdyk6CisgICAgICAgIChXSS5WaWV3Ll9jYW5jZWxTY2hl
ZHVsZWRMYXlvdXRGb3JWaWV3KToKKyAgICAgICAgRml4ZWQgaXNzdWVzIGNhdWdodCB3aGlsZSB3
cml0aW5nIHRlc3RzIGZvciB0aGUgZXhwZWN0ZWQgVmlldyBiZWhhdmlvci4KKwogMjAxNy0xMC0w
MiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEluY2x1ZGUgQmVhY29uIGFuZCBQaW5nIHJlcXVlc3RzIGluIE5ldHdvcmsgdGFi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0
bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXgg
YzQ0NzFmOTg4NTYwMzRjOWQ0Y2QxYTI1MDQ5OGE3MTkxM2MyMWU0ZC4uYmYzNGM5MWNkOTM5Y2Vi
ZmM3OGExMDgwN2YwMzIyNDk1MjYxNGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjE1LDYgKzIxNSw3IEBACiAgICAgPHNjcmlwdCBz
cmM9IldvcmtlcnMvRm9ybWF0dGVyL0Zvcm1hdHRlckNvbnRlbnRCdWlsZGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvVmlldy5qcyI+PC9zY3JpcHQ+CiAKICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIFdJLnNoYXJlZEFwcCA9IG5l
dyBXSS5UZXN0QXBwQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvRnJvbnRlbmRUZXN0SGFybmVzcy5qcwppbmRl
eCA3ZGQ2MWQ1YzhiMDY3NTRhNTk1MmQ2ZjhlZDA1ODFhYWFkOTE2MzA4Li44M2NlMDYzN2VkNzcy
ZjdjZDU0YThlZmYxYzVmYWNhNDljYTZiN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0L0Zyb250ZW5kVGVzdEhhcm5lc3MuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9Gcm9udGVuZFRlc3RIYXJuZXNz
LmpzCkBAIC0xNDAsNiArMTQwLDQ2IEBAIEZyb250ZW5kVGVzdEhhcm5lc3MgPSBjbGFzcyBGcm9u
dGVuZFRlc3RIYXJuZXNzIGV4dGVuZHMgVGVzdEhhcm5lc3MKICAgICAgICAgICAgIH0pOwogICAg
IH0KIAorICAgIHJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRpb25GcmFtZSk7Cisg
ICAgICAgIGlmICh0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRpb25GcmFtZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9vcmlnaW5hbFJlcXVlc3RBbmltYXRpb25GcmFt
ZSA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU7CisgICAgICAgIHRoaXMuX3JlcXVlc3RB
bmltYXRpb25GcmFtZUNhbGxiYWNrcyA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX25leHRSZXF1
ZXN0SWRlbnRpZmllciA9IDE7CisKKyAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFt
ZSA9IChjYWxsYmFjaykgPT4geworICAgICAgICAgICAgbGV0IHJlcXVlc3RJZGVudGlmaWVyID0g
dGhpcy5fbmV4dFJlcXVlc3RJZGVudGlmaWVyKys7CisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFja3Muc2V0KHJlcXVlc3RJZGVudGlmaWVyLCBjYWxsYmFjayk7
CisgICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXIpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RJZGVudGlmaWVyOworCisgICAgICAgICAgICBsZXQg
ZGlzcGF0Y2hDYWxsYmFja3MgPSAoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGNhbGxiYWNr
cyA9IHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrczsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MgPSBuZXcgTWFwOworICAgICAg
ICAgICAgICAgIHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgICAgIGxldCB0aW1lc3RhbXAgPSB3aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7
CisgICAgICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgY2FsbGJhY2tzLnZhbHVlcygp
KQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh0aW1lc3RhbXApOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEFuaW1hdGlvbkZyYW1lVGltZXIgPSBzZXRU
aW1lb3V0KGRpc3BhdGNoQ2FsbGJhY2tzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0
SWRlbnRpZmllcjsKKyAgICAgICAgfTsKKworICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9u
RnJhbWUgPSAocmVxdWVzdElkZW50aWZpZXIpID0+IHsKKyAgICAgICAgICAgIGlmICghdGhpcy5f
cmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLmRlbGV0ZShyZXF1ZXN0SWRlbnRpZmllcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIXRoaXMuX3JlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcy5zaXplKSB7CisgICAgICAgICAgICAgICAgY2xlYXJU
aW1lb3V0KHRoaXMuX3JlcXVlc3RBbmltYXRpb25GcmFtZVRpbWVyKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVUaW1lciA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKICAgICByZWRpcmVjdENvbnNvbGVUb1Rlc3RPdXRw
dXQoKQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuJ3QgdXNlIGFycm93IGZ1bmN0aW9ucyBoZXJl
IGJlY2F1c2Ugb2YgJ2FyZ3VtZW50cycuIEl0IG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwppbmRleCA0ZTdjNGIxZWQ1NzdkNDFl
MWRhYzQyYjgwMzBmYjI2MDY5YjEzNTlmLi42ZTJlZTVmNDA3YTNlYTc5MDliYWJkNGZlZTE4OTQ0
ZjM4ZDE4YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1ZpZXcuanMKQEAgLTQ0LDggKzQ0LDEyIEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdGF0aWMgcm9vdFZpZXcoKQogICAgIHsKLSAgICAgICAg
aWYgKCFXSS5WaWV3Ll9yb290VmlldykKKyAgICAgICAgaWYgKCFXSS5WaWV3Ll9yb290Vmlldykg
eworICAgICAgICAgICAgLy8gU2luY2UgdGhlIHJvb3QgdmlldyBpcyBhdHRhY2hlZCBieSBkZWZp
bml0aW9uLCBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgLy8gbm9ybWFs
IHZpZXcgYXR0YWNobWVudCBwcm9jZXNzLiBTaW1wbHkgbWFyayBpdCBhcyBhdHRhY2hlZC4KICAg
ICAgICAgICAgIFdJLlZpZXcuX3Jvb3RWaWV3ID0gbmV3IFdJLlZpZXcoZG9jdW1lbnQuYm9keSk7
CisgICAgICAgICAgICBXSS5WaWV3Ll9yb290Vmlldy5faXNBdHRhY2hlZFRvUm9vdCA9IHRydWU7
CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV0kuVmlldy5fcm9vdFZpZXc7CiAgICAgfQpA
QCAtMTI5LDYgKzEzMyw4IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgcmVwbGFjZVN1YnZpZXcob2xkVmlldywgbmV3VmlldykKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KG9sZFZpZXcgIT09IG5ld1ZpZXcsICJDYW5ub3QgcmVwbGFjZSBzdWJ2aWV3
IHdpdGggaXRzZWxmLiIpOworICAgICAgICBpZiAob2xkVmlldyA9PT0gbmV3VmlldykKKyAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUobmV3Vmll
dywgb2xkVmlldyk7CiAgICAgICAgIHRoaXMucmVtb3ZlU3VidmlldyhvbGRWaWV3KTsKQEAgLTIz
NCwxMCArMjQwLDEzIEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICAgICAgdGhpcy5faXNBdHRhY2hlZFRvUm9vdCA9IGlzQXR0YWNoZWRUb1Jvb3Q7CiAgICAg
ICAgIGlmICh0aGlzLl9pc0F0dGFjaGVkVG9Sb290KSB7Ci0gICAgICAgICAgICB0aGlzLmF0dGFj
aGVkKCk7CiAgICAgICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcodGhpcyk7
Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5hdHRhY2hlZCgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQorICAgICAgICAgICAgICAgIHRo
aXMuY2FuY2VsTGF5b3V0KCk7CiAgICAgICAgICAgICB0aGlzLmRldGFjaGVkKCk7CisgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGxldCB2aWV3IG9mIHRoaXMuX3N1YnZpZXdzKQogICAgICAgICAg
ICAgdmlldy5fZGlkTW92ZVRvV2luZG93KGlzQXR0YWNoZWRUb1Jvb3QpOwpAQCAtMzI4LDYgKzMz
Nyw4IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICBwYXJlbnRWaWV3ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3OwogICAgICAgICB9CiAKKyAgICAg
ICAgdmlldy5fZGlydHkgPSBmYWxzZTsKKwogICAgICAgICBpZiAoIVdJLlZpZXcuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAz
NGY1MmU2N2I0OTM1MTU3YTM1MmIwODlkOTgzMGFjOTVmODQxYTA1Li43MDYwMmE3ZjI0MDZkODVk
ZDg3OThiNWY4MjQyNDBhNmNhNTFmNzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMTAt
MDIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEFkZCBWaWV3IGxheW91dCB0ZXN0cywgbWFrZSB2aWV3cyBtb3JlIHRlc3RhYmxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyNzQKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MDM4NjE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IERl
dmluIFJvdXNzby4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGNyZWF0aW5nIHZpZXdzLCBhZGRp
bmcgYW5kIHJlbW92aW5nIHN1YnZpZXdzLCBhbmQgbGF5b3V0CisgICAgICAgIG9wZXJhdGlvbnMu
IFRoZXNlIHRlc3RzIHJlbHkgb24gYSBtb2NrIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgd2hpY2gg
aXMKKyAgICAgICAgZW5hYmxlZCB3aXRoIEZyb250ZW5kVGVzdEhhcm5lc3MucmVkaXJlY3RSZXF1
ZXN0QW5pbWF0aW9uRnJhbWUuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivdmlldy9hc3luY2hyb25v
dXMtbGF5b3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcv
YXN5bmNocm9ub3VzLWxheW91dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivdmll
dy9iYXNpY3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivdmlldy9i
YXNpY3MuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvc3luY2hyb25vdXMt
bGF5b3V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvc3lu
Y2hyb25vdXMtbGF5b3V0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcv
cmVzb3VyY2VzL3Rlc3Qtdmlldy5qczogQWRkZWQuCisgICAgICAgIChUZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyLldJLlRlc3RWaWV3KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5p
dGlhbGl6ZXIuV0kuVGVzdFZpZXcucHJvdG90eXBlLmdldCBpbml0aWFsTGF5b3V0Q291bnQpOgor
ICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5XSS5UZXN0Vmlldy5wcm90b3R5
cGUuZ2V0IGxheW91dENvdW50KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6
ZXIuV0kuVGVzdFZpZXcucHJvdG90eXBlLmV2YWx1YXRlQWZ0ZXJMYXlvdXQpOgorICAgICAgICAo
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5XSS5UZXN0Vmlldy5wcm90b3R5cGUuaW5pdGlh
bExheW91dCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLldJLlRlc3RW
aWV3LnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFs
aXplcik6CisgICAgICAgIFJlZ2lzdGVyIGFuIGluc3RydW1lbnRhdGlvbiBzdWJjbGFzcyBvZiBW
aWV3LiBUZXN0VmlldyBjb3VudHMgY2FsbHMgdG8KKyAgICAgICAgcHJvdGVjdGVkIG1ldGhvZHMg
YW5kIGFjY2VwdHMgY2FsbGJhY2tzIHRvIGV4ZWN1dGUgd2hlbiBhIGxheW91dCBjb21wbGV0ZXMu
CisKIDIwMTctMTAtMDIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmNsdWRlIEJlYWNvbiBhbmQgUGluZyByZXF1ZXN0cyBp
biBOZXR3b3JrIHRhYgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5
bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmll
dy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTE1OWE0ZTdh
OTJmYjVkNjljOTRmNDdjN2VkNDUwM2E3NWJkY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzNCBAQAorVGVzdGluZyBhc3luY2hyb25vdXMgVmlldyBsYXlvdXQgb3BlcmF0aW9u
czogbmVlZHNMYXlvdXQsIGNhbmNlbExheW91dC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6
IFZpZXcuQXN5bmNocm9ub3VzTGF5b3V0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5hdXRv
bWF0aWNMYXlvdXQKK1BBU1M6IFZpZXcgc2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dCBvbmNl
IGl0IGlzIGF0dGFjaGVkLgorTGF5b3V0IGNvbXBsZXRlLgorUEFTUzogVmlldyBzaG91bGQgZG8g
YW4gaW5pdGlhbCBsYXlvdXQuCitQQVNTOiBWaWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dC4K
K1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBWaWV3LmF1dG9tYXRpY0xheW91dC5jYW5jZWxsZWQKK1BBU1M6IFZpZXcg
c2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dCBvbmNlIGl0IGlzIGF0dGFjaGVkLgorUEFTUzog
VmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dCBvbmNlIGl0IGlzIGRldGFjaGVk
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5uZWVkc0xheW91dAorRmx1c2ggcGVuZGlu
ZyBsYXlvdXRzLCB0aGVuIHNjaGVkdWxlIGFuIHVwZGF0ZS4KK1BBU1M6IFZpZXcgc2hvdWxkIGhh
dmUgYSBwZW5kaW5nIGxheW91dC4KK0xheW91dCBjb21wbGV0ZS4KK1BBU1M6IFZpZXcgc2hvdWxk
IHVwZGF0ZSBpdHMgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5n
IGxheW91dC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcubmVlZHNMYXlvdXQucHJvcG9n
YXRlVG9TdWJ2aWV3CitTY2hlZHVsZSBwYXJlbnQgdmlldyB1cGRhdGUuCitMYXlvdXQgY29tcGxl
dGUuCitQQVNTOiBDaGxpZCB2aWV3IHNob3VsZCBkbyBhbiBpbml0aWFsIGxheW91dC4KK1BBU1M6
IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0LgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogVmlldy5jYW5jZWxMYXlvdXQKK0NhbmNlbCBhdXRvbWF0aWMgbGF5b3V0LgorUEFTUzog
VmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KK0NhbmNlbCBzY2hlZHVsZWQg
bGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91
dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFjZmEwNGJlNzZmNDQxOTFmN2M5YzAyZTEyM2FhZGVmN2I2MmFjNDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25v
dXMtbGF5b3V0Lmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90
ZXN0LXZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IEluc3BlY3RvclRlc3QucmVkaXJlY3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKKworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiVmlldy5Bc3luY2hyb25v
dXNMYXlvdXQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZp
ZXcuYXV0b21hdGljTGF5b3V0IiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAg
ICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAgICAgICAgV0kuVmll
dy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgaGF2ZSBhIHBlbmRp
bmcgbGF5b3V0IG9uY2UgaXQgaXMgYXR0YWNoZWQuIik7CisKKyAgICAgICAgICAgIHZpZXcuZXZh
bHVhdGVBZnRlckxheW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIkxheW91dCBjb21wbGV0ZS4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHZpZXcuaW5pdGlhbExheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQgZG8gYW4g
aW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbCh2aWV3LmxheW91dENvdW50LCAxLCAiVmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQu
Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91
dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOworICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3LmF1dG9t
YXRpY0xheW91dC5jYW5jZWxsZWQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0kuVGVzdFZpZXc7CisKKyAgICAgICAgICAgIFdJ
LlZpZXcucm9vdFZpZXcoKS5hZGRTdWJ2aWV3KHZpZXcpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUaGF0KHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIGhhdmUgYSBw
ZW5kaW5nIGxheW91dCBvbmNlIGl0IGlzIGF0dGFjaGVkLiIpOworCisgICAgICAgICAgICBXSS5W
aWV3LnJvb3RWaWV3KCkucmVtb3ZlU3Vidmlldyh2aWV3KTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RmFsc2Uodmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgbm90IGhh
dmUgYSBwZW5kaW5nIGxheW91dCBvbmNlIGl0IGlzIGRldGFjaGVkLiIpOworICAgICAgICAgICAg
cmVzb2x2ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJWaWV3Lm5lZWRzTGF5b3V0IiwKKyAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RWaWV3OworICAg
ICAgICAgICAgV0kuVmlldy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7CisKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJGbHVzaCBwZW5kaW5nIGxheW91dHMsIHRoZW4gc2NoZWR1
bGUgYW4gdXBkYXRlLiIpOworICAgICAgICAgICAgdmlldy51cGRhdGVMYXlvdXQoKTsKKyAgICAg
ICAgICAgIHZpZXcubmVlZHNMYXlvdXQoKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdCh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBoYXZlIGEgcGVuZGluZyBs
YXlvdXQuIik7CisKKyAgICAgICAgICAgIHZpZXcuZXZhbHVhdGVBZnRlckxheW91dCgoKSA9PiB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkxheW91dCBjb21wbGV0ZS4iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcubGF5b3V0Q291
bnQsIDIsICJWaWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dC4iKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hv
dWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcubmVlZHNMYXlvdXQucHJvcG9nYXRlVG9T
dWJ2aWV3IiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxl
dCBwYXJlbnQgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICBsZXQgY2hpbGQgPSBuZXcg
V0kuVGVzdFZpZXc7CisgICAgICAgICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyhw
YXJlbnQpOworICAgICAgICAgICAgcGFyZW50LmFkZFN1YnZpZXcoY2hpbGQpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlNjaGVkdWxlIHBhcmVudCB2aWV3IHVwZGF0ZS4iKTsKKyAg
ICAgICAgICAgIHBhcmVudC5uZWVkc0xheW91dCgpOworCisgICAgICAgICAgICBjaGlsZC5ldmFs
dWF0ZUFmdGVyTGF5b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiTGF5b3V0IGNvbXBsZXRlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoY2hpbGQuaW5pdGlhbExheW91dENvdW50LCAxLCAiQ2hsaWQgdmlldyBzaG91bGQg
ZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChjaGlsZC5sYXlvdXRDb3VudCwgMSwgIkNoaWxkIHZpZXcgc2hvdWxkIHVwZGF0
ZSBpdHMgbGF5b3V0LiIpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJWaWV3LmNhbmNlbExheW91dCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IG5ldyBXSS5UZXN0VmlldzsKKyAgICAgICAg
ICAgIFdJLlZpZXcucm9vdFZpZXcoKS5hZGRTdWJ2aWV3KHZpZXcpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsIGF1dG9tYXRpYyBsYXlvdXQuIik7CisgICAgICAgICAg
ICB2aWV3LmNhbmNlbExheW91dCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RG
YWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcg
bGF5b3V0LiIpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsIHNjaGVk
dWxlZCBsYXlvdXQuIik7CisgICAgICAgICAgICB2aWV3Lm5lZWRzTGF5b3V0KCk7CisgICAgICAg
ICAgICB2aWV3LmNhbmNlbExheW91dCgpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRp
bmcgbGF5b3V0LiIpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RpbmcgYXN5bmNocm9u
b3VzIFZpZXcgbGF5b3V0IG9wZXJhdGlvbnM6IG5lZWRzTGF5b3V0LCBjYW5jZWxMYXlvdXQuPC9w
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Zp
ZXcvYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2Jhc2lj
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE1ODM5ZWE4OTJjYzM5NjkyZTAzN2U3ZDM4NDcz
OWNmZTNmNDdlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3
L2Jhc2ljcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MiBAQAorVGVzdGluZyBiYXNpYyBWaWV3
IG9wZXJhdGlvbnM6IHJvb3QgdmlldyBhY2Nlc3MsIHZpZXcgY3JlYXRpb24sIGFuZCBzdWJ2aWV3
IG1hbmFnZW1lbnQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBWaWV3LkJhc2ljcworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFZpZXcucm9vdFZpZXcKK1BBU1M6IFJvb3QgdmlldyBzaG91bGQg
YmUgYXR0YWNoZWQgYnkgZGVmaW5pdGlvbi4KK1BBU1M6IFJvb3QgdmlldyBlbGVtZW50IHNob3Vs
ZCBiZSBkb2N1bWVudC5ib2R5LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHBl
bmRpbmcgbGF5b3V0LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4K
K1BBU1M6IFZpZXcucm9vdFZpZXcoKSBzaG91bGQgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2aWV3
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5jb25zdHJ1Y3RvcgorUEFTUzogVmlldyBz
aG91bGQgbm90IGJlIGF0dGFjaGVkLgorUEFTUzogVmlldyBlbGVtZW50IHNob3VsZCBiZSBhIDxk
aXY+LgorUEFTUzogVmlldyBlbGVtZW50IHNob3VsZCBub3QgaGF2ZSBjaGlsZCBub2Rlcy4KK1BB
U1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCitQQVNTOiBWaWV3IHNo
b3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4KK1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGFy
ZW50LgorUEFTUzogVmlldyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHBhc3NlZCBpbiBlbGVtZW50
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5hZGRTdWJ2aWV3CitQQVNTOiBDaGlsZCBz
aG91bGQgaGF2ZSB0aGUgY29ycmVjdCBwYXJlbnQuCitQQVNTOiBDaGlsZCBzaG91bGQgYmUgYSBk
ZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQuCitQQVNTOiBDaGlsZCBzaG91bGQgYmUgaW5jbHVkZWQg
aW4gdGhlIHBhcmVudCdzIHN1YnZpZXdzLgorUEFTUzogQWRkaW5nIGEgdmlldyBtdWx0aXBsZSB0
aW1lcyBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCitQQVNTOiBHcmFuZGNoaWxkIHNob3VsZCBiZSBh
IGRlc2NlbmRhbnQgb2YgaXQncyBncmFuZHBhcmVudC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFZpZXcucmVtb3ZlU3VidmlldworUEFTUzogUmVtb3ZlZCB2aWV3IHNob3VsZCBub3QgaGF2ZSBh
IHBhcmVudC4KK1BBU1M6IFJlbW92ZWQgdmlldyBzaG91bGQgbm90IGJlIGEgZGVzY2VuZGFudCBv
ZiB0aGUgcGFyZW50LgorUEFTUzogUmVtb3ZlZCB2aWV3IHNob3VsZCBub3QgYmUgaW5jbHVkZWQg
aW4gdGhlIHBhcmVudCdzIHN1YnZpZXdzLgorUEFTUzogUmVtb3ZpbmcgYSBub25leGlzdGVudCB2
aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcu
aW5zZXJ0U3Vidmlld0JlZm9yZQorUEFTUzogSW5zZXJ0aW5nIGEgdmlldyBiZWZvcmUgYG51bGxg
IHNob3VsZCBhcHBlbmQgdGhlIHZpZXcuCitQQVNTOiBjaGlsZDIgc2hvdWxkIGJlIGluc2VydGVk
IGJlZm9yZSBkaGlsZDEuCitQQVNTOiBjaGlsZDEgc2hvdWxkIGJlIGFmdGVyIGNoaWxkMi4KK1BB
U1M6IEluc2VydGluZyBhIHZpZXcgYmVmb3JlIGEgbm9uZXhpc3RlbnQgdmlldyBzaG91bGQgaGF2
ZSBubyBlZmZlY3QuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LnJlcGxhY2VTdWJ2aWV3
CitQQVNTOiBSZXBsYWNlZCB2aWV3IHNob3VsZCBub3QgaGF2ZSBhIHBhcmVudC4KK1BBU1M6IE5l
dyB2aWV3IHNob3VsZCBoYXZlIHRoZSBjb3JyZWN0IHBhcmVudC4KK1BBU1M6IFJlcGxhY2luZyBh
IHZpZXcgd2l0aCBpdHNlbGYgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LgorUEFTUzogUmVwbGFjaW5n
IGEgbm9uZXhpc3RlbnQgdmlldyBzaG91bGQgaGF2ZSBubyBlZmZlY3QuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBWaWV3LmlzQXR0YWNoZWQKK1BBU1M6IFZpZXcgYWRkZWQgdG8gdGhlIHJvb3Qg
c2hvdWxkIGJlIGF0dGFjaGVkLgorUEFTUzogVmlldyByZW1vdmVkIGZyb20gdGhlIHJvb3Qgc2hv
dWxkIG5vdCBiZSBhdHRhY2hlZC4KK1BBU1M6IFZpZXcgYWRkZWQgdG8gYSBkZXRhY2hlZCBwYXJl
bnQgc2hvdWxkIG5vdCBiZSBhdHRhY2hlZC4KK1BBU1M6IEF0dGFjaGluZyBhIHZpZXcgdG8gdGhl
IHJvb3QgY2F1c2VzIGRlc2NlbmRlbnQgdmlld3MgdG8gYmUgYXR0YWNoZWQuCitQQVNTOiBEZXRh
Y2hpbmcgYSB2aWV3IGZyb20gdGhlIHJvb3QgY2F1c2VzIGRlc2NlbmRlbnQgdmlld3MgdG8gYmUg
ZGV0YWNoZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2Jhc2lj
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2MwODc3ZTJlNWI5Mzk2MDJhZWYxZDJiYTNkYzc2NTdkMTg0ZjdlZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2Jhc2ljcy5odG1sCkBAIC0wLDAgKzEs
MTU4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNw
ZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVmlldy5CYXNpY3MiKTsKKworICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcucm9vdFZpZXciLAorICAgICAgICB0ZXN0
KCkgeworICAgICAgICAgICAgbGV0IHJvb3RWaWV3ID0gV0kuVmlldy5yb290VmlldygpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHJvb3RWaWV3LmlzQXR0YWNoZWQsICJS
b290IHZpZXcgc2hvdWxkIGJlIGF0dGFjaGVkIGJ5IGRlZmluaXRpb24uIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJvb3RWaWV3LmVsZW1lbnQsIGRvY3VtZW50LmJv
ZHksICJSb290IHZpZXcgZWxlbWVudCBzaG91bGQgYmUgZG9jdW1lbnQuYm9keS4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uocm9vdFZpZXcubGF5b3V0UGVuZGluZywg
IlJvb3QgdmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocm9vdFZpZXcuc3Vidmlld3MubGVuZ3RoLCAw
LCAiUm9vdCB2aWV3IHNob3VsZCBub3QgaGF2ZSBzdWJ2aWV3cy4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoV0kuVmlldy5yb290VmlldygpLCBXSS5WaWV3LnJvb3RW
aWV3KCksICJWaWV3LnJvb3RWaWV3KCkgc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmll
dy4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuY29uc3RydWN0b3Ii
LAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHZpZXcgPSBuZXcgV0kuVmlldzsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uodmlldy5pc0F0dGFjaGVkLCAi
VmlldyBzaG91bGQgbm90IGJlIGF0dGFjaGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbCh2aWV3LmVsZW1lbnQudGFnTmFtZSwgIkRJViIsICJWaWV3IGVsZW1lbnQg
c2hvdWxkIGJlIGEgPGRpdj4uIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHZpZXcuZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgIlZpZXcgZWxlbWVudCBzaG91
bGQgbm90IGhhdmUgY2hpbGQgbm9kZXMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEZhbHNlKHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVu
ZGluZyBsYXlvdXQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZp
ZXcuc3Vidmlld3MubGVuZ3RoLCAwLCAiVmlldyBzaG91bGQgbm90IGhhdmUgc3Vidmlld3MuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdE51bGwodmlldy5wYXJlbnRWaWV3LCAi
VmlldyBzaG91bGQgbm90IGhhdmUgYSBwYXJlbnQuIik7CisKKyAgICAgICAgICAgIGxldCBleGlz
dGluZ0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICAgICAg
bGV0IGN1c3RvbVZpZXcgPSBuZXcgV0kuVmlldyhleGlzdGluZ0VsZW1lbnQpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjdXN0b21WaWV3LmVsZW1lbnQsIGV4aXN0aW5n
RWxlbWVudCwgIlZpZXcgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBwYXNzZWQgaW4gZWxlbWVudC4i
KTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlZpZXcuYWRkU3VidmlldyIsCisg
ICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGFyZW50ID0gbmV3IFdJLlZpZXc7Cisg
ICAgICAgICAgICBsZXQgY2hpbGQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIHBhcmVudC5h
ZGRTdWJ2aWV3KGNoaWxkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
Y2hpbGQucGFyZW50VmlldywgcGFyZW50LCAiQ2hpbGQgc2hvdWxkIGhhdmUgdGhlIGNvcnJlY3Qg
cGFyZW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNoaWxkLmlz
RGVzY2VuZGFudE9mKHBhcmVudCksICJDaGlsZCBzaG91bGQgYmUgYSBkZXNjZW5kYW50IG9mIHRo
ZSBwYXJlbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocGFyZW50
LnN1YnZpZXdzLmluY2x1ZGVzKGNoaWxkKSwgIkNoaWxkIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0
aGUgcGFyZW50J3Mgc3Vidmlld3MuIik7CisKKyAgICAgICAgICAgIGxldCBwcmV2aW91c1N1YnZp
ZXdzID0gcGFyZW50LnN1YnZpZXdzLnNsaWNlKCk7CisgICAgICAgICAgICBwYXJlbnQuYWRkU3Vi
dmlldyhjaGlsZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVh
bChwcmV2aW91c1N1YnZpZXdzLCBwYXJlbnQuc3Vidmlld3MsICJBZGRpbmcgYSB2aWV3IG11bHRp
cGxlIHRpbWVzIHNob3VsZCBoYXZlIG5vIGVmZmVjdC4iKTsKKworICAgICAgICAgICAgbGV0IGdy
YW5kY2hpbGQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIGNoaWxkLmFkZFN1YnZpZXcoZ3Jh
bmRjaGlsZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZ3JhbmRjaGls
ZC5pc0Rlc2NlbmRhbnRPZihjaGlsZC5wYXJlbnRWaWV3KSwgIkdyYW5kY2hpbGQgc2hvdWxkIGJl
IGEgZGVzY2VuZGFudCBvZiBpdCdzIGdyYW5kcGFyZW50LiIpOworCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiVmlldy5yZW1vdmVTdWJ2aWV3IiwKKyAgICAgICAgdGVzdCgpIHsKKyAg
ICAgICAgICAgIGxldCBwYXJlbnQgPSBuZXcgV0kuVmlldzsKKyAgICAgICAgICAgIGxldCBjaGls
ZCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgcGFyZW50LmFkZFN1YnZpZXcoY2hpbGQpOwor
ICAgICAgICAgICAgcGFyZW50LnJlbW92ZVN1YnZpZXcoY2hpbGQpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3ROdWxsKGNoaWxkLnBhcmVudFZpZXcsICJSZW1vdmVkIHZpZXcgc2hv
dWxkIG5vdCBoYXZlIGEgcGFyZW50LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KCFjaGlsZC5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpLCAiUmVtb3ZlZCB2aWV3IHNob3Vs
ZCBub3QgYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoIXBhcmVudC5zdWJ2aWV3cy5pbmNsdWRlcyhjaGlsZCksICJS
ZW1vdmVkIHZpZXcgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFyZW50J3Mgc3Vidmll
d3MuIik7CisKKyAgICAgICAgICAgIGxldCBwcmV2aW91c1N1YnZpZXdzID0gcGFyZW50LnN1YnZp
ZXdzLnNsaWNlKCk7CisgICAgICAgICAgICBwYXJlbnQucmVtb3ZlU3VidmlldyhuZXcgV0kuVmll
dyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChwcmV2aW91
c1N1YnZpZXdzLCBwYXJlbnQuc3Vidmlld3MsICJSZW1vdmluZyBhIG5vbmV4aXN0ZW50IHZpZXcg
c2hvdWxkIGhhdmUgbm8gZWZmZWN0LiIpCisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJWaWV3Lmluc2VydFN1YnZpZXdCZWZvcmUiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IHBhcmVudCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkMSA9IG5l
dyBXSS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkMiA9IG5ldyBXSS5WaWV3OworICAgICAg
ICAgICAgcGFyZW50Lmluc2VydFN1YnZpZXdCZWZvcmUoY2hpbGQxKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGFyZW50LnN1YnZpZXdzWzBdLCBjaGlsZDEsICJJbnNl
cnRpbmcgYSB2aWV3IGJlZm9yZSBgbnVsbGAgc2hvdWxkIGFwcGVuZCB0aGUgdmlldy4iKTsKKwor
ICAgICAgICAgICAgcGFyZW50Lmluc2VydFN1YnZpZXdCZWZvcmUoY2hpbGQyLCBjaGlsZDEpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXJlbnQuc3Vidmlld3NbMF0s
IGNoaWxkMiwgImNoaWxkMiBzaG91bGQgYmUgaW5zZXJ0ZWQgYmVmb3JlIGRoaWxkMS4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGFyZW50LnN1YnZpZXdzWzFdLCBj
aGlsZDEsICJjaGlsZDEgc2hvdWxkIGJlIGFmdGVyIGNoaWxkMi4iKTsKKworICAgICAgICAgICAg
bGV0IHByZXZpb3VzU3Vidmlld3MgPSBwYXJlbnQuc3Vidmlld3Muc2xpY2UoKTsKKyAgICAgICAg
ICAgIHBhcmVudC5pbnNlcnRTdWJ2aWV3QmVmb3JlKGNoaWxkMiwgbmV3IFdJLlZpZXcpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwocGFyZW50LnN1YnZpZXdz
LCBwcmV2aW91c1N1YnZpZXdzLCAiSW5zZXJ0aW5nIGEgdmlldyBiZWZvcmUgYSBub25leGlzdGVu
dCB2aWV3IHNob3VsZCBoYXZlIG5vIGVmZmVjdC4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIlZpZXcucmVwbGFjZVN1YnZpZXciLAorICAgICAgICB0ZXN0KCkgeworICAgICAg
ICAgICAgbGV0IHBhcmVudCA9IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkMSA9
IG5ldyBXSS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkMiA9IG5ldyBXSS5WaWV3OworICAg
ICAgICAgICAgcGFyZW50LmFkZFN1YnZpZXcoY2hpbGQxKTsKKyAgICAgICAgICAgIHBhcmVudC5y
ZXBsYWNlU3VidmlldyhjaGlsZDEsIGNoaWxkMik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdE51bGwoY2hpbGQxLnBhcmVudFZpZXcsICJSZXBsYWNlZCB2aWV3IHNob3VsZCBub3Qg
aGF2ZSBhIHBhcmVudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
Y2hpbGQyLnBhcmVudFZpZXcsIHBhcmVudCwgIk5ldyB2aWV3IHNob3VsZCBoYXZlIHRoZSBjb3Jy
ZWN0IHBhcmVudC4iKTsKKworICAgICAgICAgICAgbGV0IHByZXZpb3VzU3Vidmlld3MgPSBwYXJl
bnQuc3Vidmlld3Muc2xpY2UoKTsKKyAgICAgICAgICAgIHBhcmVudC5yZXBsYWNlU3Vidmlldyhj
aGlsZDIsIGNoaWxkMik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dF
cXVhbChwYXJlbnQuc3Vidmlld3MsIHByZXZpb3VzU3Vidmlld3MsICJSZXBsYWNpbmcgYSB2aWV3
IHdpdGggaXRzZWxmIHNob3VsZCBoYXZlIG5vIGVmZmVjdC4iKTsKKworICAgICAgICAgICAgcHJl
dmlvdXNTdWJ2aWV3cyA9IHBhcmVudC5zdWJ2aWV3czsKKyAgICAgICAgICAgIHBhcmVudC5yZXBs
YWNlU3VidmlldyhuZXcgV0kuVmlldywgY2hpbGQxKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0U2hhbGxvd0VxdWFsKHBhcmVudC5zdWJ2aWV3cywgcHJldmlvdXNTdWJ2aWV3cywg
IlJlcGxhY2luZyBhIG5vbmV4aXN0ZW50IHZpZXcgc2hvdWxkIGhhdmUgbm8gZWZmZWN0LiIpOwor
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5pc0F0dGFjaGVkIiwKKyAgICAg
ICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlZpZXc7CisgICAgICAg
ICAgICBXSS5WaWV3LnJvb3RWaWV3KCkuYWRkU3Vidmlldyh2aWV3KTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VGhhdCh2aWV3LmlzQXR0YWNoZWQsICJWaWV3IGFkZGVkIHRvIHRo
ZSByb290IHNob3VsZCBiZSBhdHRhY2hlZC4iKTsKKworICAgICAgICAgICAgV0kuVmlldy5yb290
VmlldygpLnJlbW92ZVN1YnZpZXcodmlldyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEZhbHNlKHZpZXcuaXNBdHRhY2hlZCwgIlZpZXcgcmVtb3ZlZCBmcm9tIHRoZSByb290IHNo
b3VsZCBub3QgYmUgYXR0YWNoZWQuIik7CisKKyAgICAgICAgICAgIGxldCBwYXJlbnQgPSBuZXcg
V0kuVmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZCA9IG5ldyBXSS5WaWV3OworICAgICAgICAg
ICAgcGFyZW50LmFkZFN1YnZpZXcoY2hpbGQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RGYWxzZShjaGlsZC5pc0F0dGFjaGVkLCAiVmlldyBhZGRlZCB0byBhIGRldGFjaGVkIHBh
cmVudCBzaG91bGQgbm90IGJlIGF0dGFjaGVkLiIpOworICAgICAgICAgICAgV0kuVmlldy5yb290
VmlldygpLmFkZFN1YnZpZXcocGFyZW50KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0VGhhdChjaGlsZC5pc0F0dGFjaGVkLCAiQXR0YWNoaW5nIGEgdmlldyB0byB0aGUgcm9vdCBj
YXVzZXMgZGVzY2VuZGVudCB2aWV3cyB0byBiZSBhdHRhY2hlZC4iKTsKKyAgICAgICAgICAgIFdJ
LlZpZXcucm9vdFZpZXcoKS5yZW1vdmVTdWJ2aWV3KHBhcmVudCk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGNoaWxkLmlzQXR0YWNoZWQsICJEZXRhY2hpbmcgYSB2aWV3
IGZyb20gdGhlIHJvb3QgY2F1c2VzIGRlc2NlbmRlbnQgdmlld3MgdG8gYmUgZGV0YWNoZWQuIik7
CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxwPlRlc3RpbmcgYmFzaWMgVmlldyBvcGVyYXRp
b25zOiByb290IHZpZXcgYWNjZXNzLCB2aWV3IGNyZWF0aW9uLCBhbmQgc3VidmlldyBtYW5hZ2Vt
ZW50LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci92aWV3L3Jlc291cmNlcy90ZXN0LXZpZXcuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dmlldy9yZXNvdXJjZXMvdGVzdC12aWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZWIyNGE1YzFlNjBiOWQ4
Mjg2Y2ZjOWZmMDg0Zjc0ZTg1NmUwZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9yZXNvdXJjZXMvdGVzdC12aWV3LmpzCkBAIC0wLDAgKzEsMzkgQEAKK1Rl
c3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4geworICAgIFdJLlRlc3RWaWV3ID0gY2xh
c3MgVGVzdFZpZXcgZXh0ZW5kcyBXSS5WaWV3CisgICAgeworICAgICAgICBjb25zdHJ1Y3Rvcigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgICAgIHRoaXMuX2xh
eW91dENhbGxiYWNrcyA9IFtdOworICAgICAgICAgICAgdGhpcy5faW5pdGlhbExheW91dENvdW50
ID0gMDsKKyAgICAgICAgICAgIHRoaXMuX2xheW91dENvdW50ID0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFB1YmxpYworCisgICAgICAgIGdldCBpbml0aWFsTGF5b3V0Q291bnQoKSB7IHJl
dHVybiB0aGlzLl9pbml0aWFsTGF5b3V0Q291bnQ7IH0KKyAgICAgICAgZ2V0IGxheW91dENvdW50
KCkgeyByZXR1cm4gdGhpcy5fbGF5b3V0Q291bnQ7IH0KKworICAgICAgICBldmFsdWF0ZUFmdGVy
TGF5b3V0KGNhbGxiYWNrKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRDYWxs
YmFja3MucHVzaChjYWxsYmFjayk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQcm90ZWN0ZWQK
KworICAgICAgICBpbml0aWFsTGF5b3V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5f
aW5pdGlhbExheW91dENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBsYXlvdXQoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl9sYXlvdXRDb3VudCsrOworICAgICAgICAgICAgbGV0
IGNhbGxiYWNrcyA9IHRoaXMuX2xheW91dENhbGxiYWNrczsKKyAgICAgICAgICAgIHRoaXMuX2xh
eW91dENhbGxiYWNrcyA9IFtdOworICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgY2Fs
bGJhY2tzKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9Owor
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJvbm91cy1s
YXlvdXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvc3luY2hyb25v
dXMtbGF5b3V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWFhZmY1MzZkODBhMmU5ZGNmNzEz
N2M2MTZkZTQ1ZTQ2ZTY2NjY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3ZpZXcvc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBA
CitUZXN0aW5nIHN5bmNocm9ub3VzIFZpZXcgbGF5b3V0IG9wZXJhdGlvbnM6IHVwZGF0ZUxheW91
dCwgdXBkYXRlTGF5b3V0SWZOZWVkZWQuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBWaWV3
LlN5bmNocm9ub3VzTGF5b3V0CistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy51cGRhdGVMYXlv
dXQKK1VwZGF0ZSBsYXlvdXQgZm9yIGF0dGFjaGVkIHZpZXcuCitQQVNTOiBWaWV3IHNob3VsZCBk
byBhbiBpbml0aWFsIGxheW91dC4KK1BBU1M6IFZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0
IG9uY2UuCitQQVNTOiBWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgorVXBk
YXRlIGxheW91dCBmb3IgZGV0YWNoZWQgdmlldy4KK1BBU1M6IFZpZXcgc2hvdWxkIGRvIGFuIGlu
aXRpYWwgbGF5b3V0LgorUEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQgb25jZS4K
K1BBU1M6IFZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBWaWV3LnVwZGF0ZUxheW91dC5wcm9wb2dhdGVUb1N1YnZpZXdzCitVcGRh
dGUgcGFyZW50IHZpZXcgbGF5b3V0LgorUEFTUzogQ2hpbGQgdmlldyBzaG91bGQgZG8gYW4gaW5p
dGlhbCBsYXlvdXQuCitQQVNTOiBDaGlsZCB2aWV3IHNob3VsZCB1cGRhdGUgaXRzIGxheW91dCBv
bmNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy51cGRhdGVMYXlvdXRJZk5lZWRlZAor
UEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGlmIGFuIGluaXRpYWwgbGF5b3V0IG5ldmVyIGhhcHBl
bmVkLgorUEFTUzogVmlldyBzaG91bGQgdXBkYXRlIGlmIGEgbGF5b3V0IGlzIHBlbmRpbmcuCitQ
QVNTOiBWaWV3IHNob3VsZCBub3QgdXBkYXRlIGlmIG5vIGxheW91dCBpcyBwZW5kaW5nLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJvbm91cy1sYXlvdXQu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L3N5bmNocm9ub3VzLWxheW91dC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJkYTUwZjc1MWMzNGI4ZTRjN2Y2YTU0Yzc1OTFjYTVhNDQ5ZTZjZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9zeW5jaHJvbm91cy1s
YXlvdXQuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2lu
c3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdC12
aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNw
ZWN0b3JUZXN0LnJlZGlyZWN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CisKKyAgICBsZXQgc3Vp
dGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiVmlldy5TeW5jaHJvbm91c0xheW91
dCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy51cGRh
dGVMYXlvdXQiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHZpZXcxID0gbmV3
IFdJLlRlc3RWaWV3OworICAgICAgICAgICAgV0kuVmlldy5yb290VmlldygpLmFkZFN1YnZpZXco
dmlldzEpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlVwZGF0ZSBsYXlvdXQgZm9y
IGF0dGFjaGVkIHZpZXcuIik7CisgICAgICAgICAgICB2aWV3MS51cGRhdGVMYXlvdXQoKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodmlldzEuaW5pdGlhbExheW91dENv
dW50LCAxLCAiVmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcxLmxheW91dENvdW50LCAxLCAiVmlldyBz
aG91bGQgdXBkYXRlIGl0cyBsYXlvdXQgb25jZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RmFsc2UodmlldzEubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZl
IGEgcGVuZGluZyBsYXlvdXQuIik7CisKKyAgICAgICAgICAgIGxldCB2aWV3MiA9IG5ldyBXSS5U
ZXN0VmlldzsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJVcGRhdGUgbGF5b3V0IGZv
ciBkZXRhY2hlZCB2aWV3LiIpOworICAgICAgICAgICAgdmlldzIudXBkYXRlTGF5b3V0KCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXcyLmluaXRpYWxMYXlvdXRD
b3VudCwgMSwgIlZpZXcgc2hvdWxkIGRvIGFuIGluaXRpYWwgbGF5b3V0LiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh2aWV3Mi5sYXlvdXRDb3VudCwgMSwgIlZpZXcg
c2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0IG9uY2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEZhbHNlKHZpZXcyLmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2
ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
Vmlldy51cGRhdGVMYXlvdXQucHJvcG9nYXRlVG9TdWJ2aWV3cyIsCisgICAgICAgIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgcGFyZW50ID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAgICAgICAg
bGV0IGNoaWxkID0gbmV3IFdJLlRlc3RWaWV3OworCisgICAgICAgICAgICBXSS5WaWV3LnJvb3RW
aWV3KCkuYWRkU3VidmlldyhwYXJlbnQpOworICAgICAgICAgICAgcGFyZW50LmFkZFN1YnZpZXco
Y2hpbGQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVXBkYXRlIHBhcmVudCB2
aWV3IGxheW91dC4iKTsKKyAgICAgICAgICAgIHBhcmVudC51cGRhdGVMYXlvdXQoKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2hpbGQuaW5pdGlhbExheW91dENvdW50
LCAxLCAiQ2hpbGQgdmlldyBzaG91bGQgZG8gYW4gaW5pdGlhbCBsYXlvdXQuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNoaWxkLmxheW91dENvdW50LCAxLCAiQ2hp
bGQgdmlldyBzaG91bGQgdXBkYXRlIGl0cyBsYXlvdXQgb25jZS4iKTsKKworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIlZpZXcudXBkYXRlTGF5b3V0SWZOZWVkZWQiLAorICAgICAgICB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHZpZXcxID0gbmV3IFdJLlRlc3RWaWV3OworICAgICAg
ICAgICAgdmlldzEudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwodmlldzEubGF5b3V0Q291bnQsIDEsICJWaWV3IHNob3VsZCB1cGRh
dGUgaWYgYW4gaW5pdGlhbCBsYXlvdXQgbmV2ZXIgaGFwcGVuZWQuIik7CisKKyAgICAgICAgICAg
IGxldCB2aWV3MiA9IG5ldyBXSS5UZXN0VmlldzsKKyAgICAgICAgICAgIHZpZXcyLm5lZWRzTGF5
b3V0KCk7CisgICAgICAgICAgICB2aWV3Mi51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh2aWV3Mi5sYXlvdXRDb3VudCwgMSwgIlZp
ZXcgc2hvdWxkIHVwZGF0ZSBpZiBhIGxheW91dCBpcyBwZW5kaW5nLiIpOworCisgICAgICAgICAg
ICBsZXQgdmlldzMgPSBuZXcgV0kuVGVzdFZpZXc7CisgICAgICAgICAgICB2aWV3My51cGRhdGVM
YXlvdXQoKTsKKyAgICAgICAgICAgIHZpZXczLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHZpZXczLmxheW91dENvdW50LCAxLCAi
VmlldyBzaG91bGQgbm90IHVwZGF0ZSBpZiBubyBsYXlvdXQgaXMgcGVuZGluZy4iKTsKKworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdGluZyBzeW5jaHJvbm91cyBWaWV3IGxheW91dCBv
cGVyYXRpb25zOiB1cGRhdGVMYXlvdXQsIHVwZGF0ZUxheW91dElmTmVlZGVkLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>