<?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>192165</bug_id>
          
          <creation_ts>2018-11-29 10:38:30 -0800</creation_ts>
          <short_desc>REGRESSION (r238635): Dragging a text selection within WKWebView causes the selection highlight to get into a bad state</short_desc>
          <delta_ts>2018-11-30 09:37:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192084</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=192178</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1483025</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 10:38:30 -0800</bug_when>
    <thetext>1. Drag a piece of text.
2. Drop within the same page.

Expected: drop destination should be focused, and selection UI should show up.
Observed: drop destination is focused w.r.t. the DOM, but selection UI does not appear. After tapping again to focus, selection UI still does not appear. Moving the selection to another part of the editable element (or to another editable element) gets us back into a good state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483027</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-29 10:39:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/46346682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483035</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 10:51:39 -0800</bug_when>
    <thetext>I suspect this also accounts for at least one of the API test failures seen on the bots after r238635:

https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Debug%20WK2%20(Tests)/builds/1068/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483053</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 11:35:38 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #2)
&gt; I suspect this also accounts for at least one of the API test failures seen
&gt; on the bots after r238635:
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Debug%20WK2%20(Tests)/builds/1068/steps/run-
&gt; api-tests/logs/stdio

This codepath is exercised by these following tests, which started timing out:

    TestWebKitAPI.DragAndDropTests.ContentEditableToTextarea
    TestWebKitAPI.DragAndDropTests.TextAreaToInput
    TestWebKitAPI.DragAndDropTests.ContentEditableToContentEditable
    TestWebKitAPI.DragAndDropTests.SinglePlainTextWordTypeIdentifiers
    TestWebKitAPI.DragAndDropTests.ContentEditableMoveParagraphs
    TestWebKitAPI.DragAndDropTests.SinglePlainTextURLTypeIdentifiers

However, even after fixing the bug, the tests still time out! This needs further investigation...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483349</commentid>
    <comment_count>4</comment_count>
      <attachid>356106</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 18:49:21 -0800</bug_when>
    <thetext>Created attachment 356106
Fixes all 11 API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483351</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 18:51:23 -0800</bug_when>
    <thetext>*** Bug 192178 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483352</commentid>
    <comment_count>6</comment_count>
      <attachid>356107</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 18:55:33 -0800</bug_when>
    <thetext>Created attachment 356107
Fix open source build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483369</commentid>
    <comment_count>7</comment_count>
      <attachid>356107</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-29 20:08:12 -0800</bug_when>
    <thetext>Comment on attachment 356107
Fix open source build

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

How do we handle the case where the drag is cancelled? Does _conclude* get called with the source WebView such that we make it first responder agin. Now that we have balanced resigning and making first responder for drag and drop do we still need the concept of “retaining active focus state” concept?

&gt; Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:169
&gt; +    if ([m_webView _isRetainingActiveFocusedState])

The checking of this condition first makes it asymmetric to where we check it in isViewWindowActive(). It would be good to either fix this code or fix isViewWindowActice() such that they have symmetry. If we choose to keep the order the way it is here then I would suggest flattening this if statement into a disjunction that is part of the return statement to avoid a branch (though the compiler is likely smart enough to do this for us :/). On another note and one that can be addressed in another patch, I find this “retaining active focused state” concept mysterious. If this is only used for drag and drop then it would be good to rename this to reflect that. Otherwise, I suggest we add a comment to provide examples of when this state is set.

&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:467
&gt; +        [_webView becomeFirstResponder];

I am assuming _webView is the drop destination.

&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:555
&gt; +        [_webView resignFirstResponder];

I am assuming _webView is the source WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483377</commentid>
    <comment_count>8</comment_count>
      <attachid>356107</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 20:30:02 -0800</bug_when>
    <thetext>Comment on attachment 356107
Fix open source build

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

&gt;&gt; Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:169
&gt;&gt; +    if ([m_webView _isRetainingActiveFocusedState])
&gt; 
&gt; The checking of this condition first makes it asymmetric to where we check it in isViewWindowActive(). It would be good to either fix this code or fix isViewWindowActice() such that they have symmetry. If we choose to keep the order the way it is here then I would suggest flattening this if statement into a disjunction that is part of the return statement to avoid a branch (though the compiler is likely smart enough to do this for us :/). On another note and one that can be addressed in another patch, I find this “retaining active focused state” concept mysterious. If this is only used for drag and drop then it would be good to rename this to reflect that. Otherwise, I suggest we add a comment to provide examples of when this state is set.

Ok! I&apos;ll make this symmetric with isViewWindowActive() by changing to:

    return (isViewInWindow() &amp;&amp; ![m_webView _isBackground] &amp;&amp; [m_webView _contentViewIsFirstResponder]) || [m_webView _isRetainingActiveFocusedState];

As for “retaining active focused state”, this is SPI on WKWebView and used by various internal clients in two ways: UITextInputMultiDocument (a private UIKit protocol which the content view implements) and -[WKWebView _retainActiveFocusedState] (which is just WebKit SPI).

&gt;&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:467
&gt;&gt; +        [_webView becomeFirstResponder];
&gt; 
&gt; I am assuming _webView is the drop destination.

This is actually meant to be the source web view (this &quot;reset&quot; call resets the &quot;preserve&quot; from earlier).

That being said, DragAndDropSimulator doesn&apos;t support testing drag and drop with more than one web view, there really isn&apos;t a distinction — the source and destination are always the same view.

&gt;&gt; Tools/TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:555
&gt;&gt; +        [_webView resignFirstResponder];
&gt; 
&gt; I am assuming _webView is the source WebView.

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483380</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 20:37:26 -0800</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; Comment on attachment 356107 [details]
&gt; Fix open source build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356107&amp;action=review
&gt; 
&gt; How do we handle the case where the drag is cancelled? Does _conclude* get
&gt; called with the source WebView such that we make it first responder again?

If a drag is cancelled, UIKit should tell the source to stop preserving focus.

&gt; Now that we have balanced resigning and making first responder for drag and
&gt; drop do we still need the concept of “retaining active focus state” concept?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483406</commentid>
    <comment_count>10</comment_count>
      <attachid>356132</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-29 21:47:12 -0800</bug_when>
    <thetext>Created attachment 356132
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483426</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 22:35:55 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 356132:

webgl/1.0.2/conformance/more/functions/drawArraysOutOfBounds.html bug 192219 (author: roger_fong@apple.com)
webgl/1.0.2/conformance/more/functions/uniformfArrayLen1.html bug 192220 (author: roger_fong@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483429</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 22:36:00 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 356132:

inspector/dom-debugger/event-animation-frame-breakpoints.html bug 192221 (author: drousso@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483445</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 23:07:42 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 356132:

http/wpt/css/css-animations/start-animation-001.html bug 190903 (authors: dino@apple.com, fred.wang@free.fr, and graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483448</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 23:07:50 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 356132:

workers/bomb.html bug 171985 (author: fpizlo@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483453</commentid>
    <comment_count>15</comment_count>
      <attachid>356132</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 23:22:09 -0800</bug_when>
    <thetext>Comment on attachment 356132
Patch for landing

Clearing flags on attachment: 356132

Committed r238728: &lt;https://trac.webkit.org/changeset/238728&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356106</attachid>
            <date>2018-11-29 18:49:21 -0800</date>
            <delta_ts>2018-11-29 18:55:32 -0800</delta_ts>
            <desc>Fixes all 11 API tests</desc>
            <filename>bug-192165-20181129184921.patch</filename>
            <type>text/plain</type>
            <size>17684</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY0OTUwYmYwYTUzOWUzZjlh
MzUxNzQzY2NkZjFmZDY4NWJkNzYwY2YuLjYyMTVhNDUxMWRiY2Q5OGVhOTY4MGYwODU4MDM0NDBk
YzliMDdkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMTEtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIz
ODYzNSk6IERyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdLV2ViVmlldyBjYXVzZXMg
dGhlIHNlbGVjdGlvbiBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQgc3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjE2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4ZXMgYSBidWcgaW4gUGFnZUNsaWVudEltcGw6OmlzVmlld0Zv
Y3VzZWQuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86CisgICAgICAgIDEuIFdLV2Vi
VmlldyBpcyBob3N0ZWQgd2l0aGluIHRoZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICAyLiBGaXJz
dCByZXNwb25kZXIgaXMgKm5vdCogV0tDb250ZW50VmlldworICAgICAgICAzLiBUaGUgYWN0aXZl
IGZvY3VzIHJldGFpbiBjb3VudCBpcyBub256ZXJvCisKKyAgICAgICAgQmVmb3JlIHIyMzg2MzUs
IHdlIHdvdWxkIHJldHVybiB0cnVlLCBkdWUgdG8gY29uZGl0aW9uICgzKS4gSG93ZXZlciwgYWZ0
ZXIgcjIzODYzNSwgd2Ugb25seSBjb25zaWRlciB3aGV0aGVyIHRoZQorICAgICAgICBmaXJzdCBy
ZXNwb25kZXIgaXMgV0tDb250ZW50Vmlldywgc2luY2UgdGhlIHdlYiB2aWV3IGlzIGluIHRoZSB2
aWV3IGhpZXJhcmNoeS4gVGhpcyBicmVha3Mgc2NlbmFyaW9zIHdoZXJlCisgICAgICAgIFdlYktp
dCBvciBVSUtpdCBhdHRlbXB0cyB0byByZXRhaW4gZm9jdXMgYW5kIGxhdGVyIHJlc3RvcmUgdGhl
IGNvbnRlbnQgdmlldyB0byBiZSB0aGUgZmlyc3QgcmVzcG9uZGVyIChhbgorICAgICAgICBleGFt
cGxlIG9mIHRoaXMgaXMgZHJhZ2dpbmcgYSB0ZXh0IHNlbGVjdGlvbiBiZXR3ZWVuIGVkaXRhYmxl
IGVsZW1lbnRzIGluIHRoZSBzYW1lIHdlYiB2aWV3KS4KKworICAgICAgICBUbyBmaXggdGhpcywg
c2ltcGx5IGJhaWwgZWFybHkgYW5kIHJldHVybiB0cnVlIGlmIGZvY3VzIGlzIGJlaW5nIHJldGFp
bmVkLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOgorCiAyMDE4LTEx
LTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogYWxsICJTaG93ICoiIGRldmVsb3AgbWVudSBpdGVt
cyBjYXVzZSB0aGUgcGFnZSB0byBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGEyZTM5YTcwY2Q5NGMxZmY3NzU1NzI3OGNi
ODkyNmRhODU5MmJjMzMuLmRlMzlmYzFiZjcxYjdlM2I5NDRiMDFiNGVjNDMzMGYxZGEyYjc5ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTE2Niw5ICsxNjYsMTAgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93
QWN0aXZlKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCiB7Ci0gICAg
aWYgKGlzVmlld0luV2luZG93KCkgJiYgIVttX3dlYlZpZXcgX2lzQmFja2dyb3VuZF0pCi0gICAg
ICAgIHJldHVybiBbbV93ZWJWaWV3IF9jb250ZW50Vmlld0lzRmlyc3RSZXNwb25kZXJdOwotICAg
IHJldHVybiBbbV93ZWJWaWV3IF9pc1JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZV07CisgICAg
aWYgKFttX3dlYlZpZXcgX2lzUmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlXSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gaXNWaWV3SW5XaW5kb3coKSAmJiAhW21fd2ViVmll
dyBfaXNCYWNrZ3JvdW5kXSAmJiBbbV93ZWJWaWV3IF9jb250ZW50Vmlld0lzRmlyc3RSZXNwb25k
ZXJdOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NzQ4OWYyNjkwODRi
NWY1Yzg0ZTQ1NDMxYjc4MGIwZmVjOWU2M2M5Li5jN2YyNTA0YWFiZGRiMjgwZjBlOTUyZjYwZTg5
MWY5YjEyNDJkOTFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTgtMTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIzODYzNSk6IERyYWdn
aW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdLV2ViVmlldyBjYXVzZXMgdGhlIHNlbGVjdGlv
biBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjE2NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXMgMTEgQVBJIHRlc3RzIHRoYXQgc3RhcnRlZCBmYWlsaW5nIG9yIHRpbWluZyBv
dXQgYWZ0ZXIgcjIzODYzNS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZ1dpdGhQ
YWdlTmFtZWQpOgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSB3ZWIgdmlldyBiZWNvbWVzIGZp
cnN0IHJlc3BvbmRlciBiZWZvcmUgZXhlY3V0aW5nIGVkaXQgYWN0aW9ucy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJs
ZS5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvY29udGVu
dGVkaXRhYmxlLWFuZC10ZXh0YXJlYS5odG1sOgorCisgICAgICAgIFR3ZWFrIHRoZXNlIHRlc3Rz
IHRvIGFsbG93IHNlbGVjdGVkIGNvbnRlbnQgdG8gb3ZlcmZsb3cgdGhlIHdpZHRoIG9mIHRoZSB3
ZWIgdmlldy4gV2l0aG91dCB0aGlzIGNoYW5nZSwKKyAgICAgICAgQ29udGVudEVkaXRhYmxlVG9D
b250ZW50RWRpdGFibGUgYW5kIENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEgd2lsbCBzb21ldGlt
ZXMgZmFpbCBiZWNhdXNlIHRoZSBjb250ZW50IGNhdXNlcworICAgICAgICB0aGUgYm9keSB0byBz
Y3JvbGwgaG9yaXpvbnRhbGx5LCBzbyB3ZSBtaXNzIHRoZSBkcm9wIGRlc3RpbmF0aW9uLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbToK
KyAgICAgICAgKGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbik6CisKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciB0byBsb2FkIGEgdGVzdCBwYWdlIHdpdGggYSBnaXZlbiBuYW1lLCBi
ZWNvbWUgZmlyc3QgcmVzcG9uZGVyLCBhbmQgd2FpdCB1bnRpbCBhbiBpbnB1dCBzZXNzaW9uCisg
ICAgICAgIHN0YXJ0cy4gVXNlIHRoaXMgaW4gdmFyaW91cyBkcmFnIGFuZCBkcm9wIHRlc3RzIHRv
IHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBpbml0V2l0aFdlYlZpZXc6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9y
ZXNldFNpbXVsYXRlZFN0YXRlXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9j
b25jbHVkZURyb3BBbmRQZXJmb3JtT3BlcmF0aW9uSWZOZWNlc3NhcnldKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorCisgICAgICAgIFRvIG1v
cmUgYWNjdXJhdGVseSBlbXVsYXRlIFVJS2l0IGJlaGF2aW9yLCBiZWdpbiBmb2N1cyBwcmVzZXJ2
YXRpb24gd2hlbiBzdGFydGluZyBhIGRyYWcsIGFuZCBhdHRlbXB0IHRvIGNsZWFyCisgICAgICAg
IHRoZSBmb2N1cyBwcmVzZXJ2YXRpb24gdG9rZW4gd2hlbiB0aGUgZHJhZyBzZXNzaW9uIGVuZHMu
IFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlIGFuZCB0ZXN0IHRoZSBzY2VuYXJpbyB0aGF0Cisg
ICAgICAgIHJlZ3Jlc3NlZCB3aXRoIHIyMzg2MzUuCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BT
aW11bGF0b3IgZW5zdXJlSW5wdXRTZXNzaW9uXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2lt
dWxhdG9yIF93ZWJWaWV3OmRpZFN0YXJ0SW5wdXRTZXNzaW9uOl0pOgorICAgICAgICAoLVtEcmFn
QW5kRHJvcFNpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVmYWN0b3JlZCBpbnRvIC1lbnN1cmVJbnB1dFNlc3Npb24uIEluc3RlYWQgb2YgYXNzdW1p
bmcgdGhhdCBhbiBpbnB1dCBzZXNzaW9uIGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZCwgc2ltcGx5
CisgICAgICAgIHdhaXQgZm9yIGFuIGlucHV0IHNlc3Npb24gdG8gc3RhcnQgaWYgbmVlZGVkLgor
CiAyMDE4LTExLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NNYWNdIERyb3BwaW5nIHRleHQgc2VsZWN0aW9ucyBmcm9tIHdlYiBjb250ZW50
IGludG8gZWRpdGFibGUgZWxlbWVudHMgY3Jhc2hlcyB0aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFj
dGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmll
d0VkaXRBY3Rpb25zLm1tCmluZGV4IDMzNzAwZTA0M2RjNzNhNjMyY2ZkNDlhOTI4ZWQzZTU4OWE1
NWIxYWIuLjEwMTk0ODIwNTRmOGEzOGQ2MDFiOWM3YWVhYjBjZjE2NjA1N2NmZWYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFj
dGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YlZpZXdFZGl0QWN0aW9ucy5tbQpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZyhOU1N0cmluZyAqbWFya3Vw
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOm1hcmt1cF07CiAgICAgW3dlYlZpZXcgX3NldEVkaXRh
YmxlOllFU107CisgICAgW3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQpAQCAtODcs
NiArODgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0
QWN0aW9uVGVzdGluZ1dpdGhQYWdlTmFtZWQoTlNTdHJpbgogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOnRlc3RQYWdlTmFtZV07CiAgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CisgICAg
W3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5i
b2R5LCAxKSJdOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQpAQCAtMjQzLDEyICsyNDUsMTEgQEAg
VEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgUGFzdGVBc1F1b3RhdGlvbikKIFRFU1QoV0tXZWJW
aWV3RWRpdEFjdGlvbnMsIFBhc3RlQW5kTWF0Y2hTdHlsZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9
IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIGF1dG8gZGVzdGluYXRpb24gPSB3
ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoQCI8ZGl2Pjxicj48L2Rpdj4iKTsKLQogICAgIFtz
b3VyY2Ugc2VsZWN0QWxsOm5pbF07CiAgICAgW3NvdXJjZSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJk
b2N1bWVudC5leGVjQ29tbWFuZCgnYm9sZCcpOyBkb2N1bWVudC5leGVjQ29tbWFuZCgndW5kZXJs
aW5lJyk7IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpdGFsaWMnKSIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKICAgICBbc291cmNlIF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29w
eSIgYXJndW1lbnQ6bmlsXTsKIAorICAgIGF1dG8gZGVzdGluYXRpb24gPSB3ZWJWaWV3Rm9yRWRp
dEFjdGlvblRlc3RpbmcoQCI8ZGl2Pjxicj48L2Rpdj4iKTsKICAgICBbZGVzdGluYXRpb24gX3Bh
c3RlQW5kTWF0Y2hTdHlsZTpuaWxdOwogICAgIFtkZXN0aW5hdGlvbiBzZWxlY3RBbGw6bmlsXTsK
ICAgICBFWFBFQ1RfRkFMU0UoW2Rlc3RpbmF0aW9uIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgnYm9sZCcpIl0uYm9vbFZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b2ZvY3Vz
LWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKaW5kZXggZTAzNjM1Zjk0ZTMwYmQ3
ZjlmZTM0NDIzYzA3ZTg1ODExYzRlZGI5ZS4uN2ZjMmJjM2RmY2MxOTdlZjI2OTk1MmI0YmE1ODEz
YTA5MDIxMzYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKQEAg
LTE0LDYgKzE0LDEwIEBACiAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAg
ICB9CiAKKyAgICAgICAgI3NvdXJjZSB7CisgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwor
ICAgICAgICB9CisKICAgICAgICAgI2VkaXRvciB7CiAgICAgICAgICAgICBib3JkZXI6IGJsYWNr
IDFweCBzb2xpZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9jb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhLmh0bWwgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4
dGFyZWEuaHRtbAppbmRleCA0MTQ4OWZjMzk0NjQ3NWZmOTQ4ZmFmZmQ1MzgyZDA3MjZmMzhiMmMx
Li5hNGI0MTdjZTI3ZGM5YzY2M2IzNjE4ZWFjOGNhYzE2ZjBhYmQ4MDJiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQt
dGV4dGFyZWEuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbApAQCAtMTQsNiArMTQsMTAgQEAKICAg
ICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgIH0KIAorICAgICAgICAjc291
cmNlIHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgIH0KKwogICAgICAg
ICAjZWRpdG9yIHsKICAgICAgICAgICAgIGJvcmRlcjogYmxhY2sgMXB4IHNvbGlkOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJv
cFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BU
ZXN0c0lPUy5tbQppbmRleCBiODc5YzBmZGQxNmVlOTEzNDFlZDI2NWI4ZTI3OGJmMGJlYjliMTNl
Li4yOWVmNjc0N2EzY2ZhZjEzMWMxOTA0YTk3MzcyNGJiNzhiMTE2MGM1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KQEAg
LTk4LDYgKzk4LDE1IEBAIC0gKE5TU3RyaW5nICopZWRpdG9yVmFsdWUKIAogQGVuZAogCitzdGF0
aWMgdm9pZCBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oRHJhZ0FuZERyb3BTaW11
bGF0b3IgKnNpbXVsYXRvciwgTlNTdHJpbmcgKnRlc3RQYWdlTmFtZSkKK3sKKyAgICBUZXN0V0tX
ZWJWaWV3ICp3ZWJWaWV3ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBzaW11bGF0b3IuYWxs
b3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uID0gWUVTOworICAgIFt3ZWJWaWV3IGJlY29tZUZp
cnN0UmVzcG9uZGVyXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6dGVzdFBhZ2VOYW1lXTsKKyAgICBbc2ltdWxhdG9yIGVuc3VyZUlucHV0U2Vzc2lvbl07Cit9
CisKIHN0YXRpYyBOU1ZhbHVlICptYWtlQ0dSZWN0VmFsdWUoQ0dGbG9hdCB4LCBDR0Zsb2F0IHks
IENHRmxvYXQgd2lkdGgsIENHRmxvYXQgaGVpZ2h0KQogewogICAgIHJldHVybiBbTlNWYWx1ZSB2
YWx1ZVdpdGhDR1JlY3Q6Q0dSZWN0TWFrZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KV07CkBAIC0zNDEs
OCArMzUwLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRl
bnRFZGl0YWJsZSkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIGF1
dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0
V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxlIl07Ci0gICAgW3NpbXVsYXRvciB3YWl0
Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24o
c2ltdWxhdG9yLmdldCgpLCBAImF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUiKTsKICAgICBbc2lt
dWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAz
MDApXTsKIAogICAgIEVYUEVDVF9UUlVFKFtzaW11bGF0b3Igc3VwcHJlc3NlZFNlbGVjdGlvbkNv
bW1hbmRzRHVyaW5nRHJvcF0pOwpAQCAtMzYyLDggKzM3MCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKV0pOwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9w
U2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVh
Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBh
Z2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAImNvbnRlbnRlZGl0YWJs
ZS1hbmQtdGV4dGFyZWEiKTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAw
LCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAogICAgIEVYUEVDVF9UUlVFKFtzaW11
bGF0b3Igc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcF0pOwpAQCAtMzk0LDgg
KzQwMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ29udGVudEVkaXRhYmxlTW92ZVBhcmFn
cmFwaHMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIHNp
bXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAidHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUiXTsKLSAgICBbc2ltdWxhdG9yIHdhaXRG
b3JJbnB1dFNlc3Npb25dOworICAgIGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbihz
aW11bGF0b3IuZ2V0KCksIEAidHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUiKTsKICAgICBb
c2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMjUw
LCA0NTApXTsKIAogICAgIE5TU3RyaW5nICpmaW5hbFRleHRDb250ZW50ID0gW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJdOwpAQCAtNDI1
LDggKzQzMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgVGV4dEFyZWFUb0lucHV0KQogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBzaW11bGF0b3IgPSBh
ZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJW
aWV3LmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRhcmVh
LXRvLWlucHV0Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBs
b2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAInRleHRh
cmVhLXRvLWlucHV0Iik7CiAgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwg
NTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKICAgICBFWFBFQ1RfVFJVRShbc2ltdWxh
dG9yIHN1cHByZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1cmluZ0Ryb3BdKTsKQEAgLTQ0MCw4ICs0
NDUsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIFNpbmdsZVBsYWluVGV4dFdvcmRUeXBlSWRl
bnRpZmllcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRv
IHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdp
dGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAidGV4dGFyZWEtdG8taW5wdXQiXTsKLSAgICBbc2ltdWxhdG9yIHdhaXRGb3JJbnB1dFNl
c3Npb25dOworICAgIGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbihzaW11bGF0b3Iu
Z2V0KCksIEAidGV4dGFyZWEtdG8taW5wdXQiKTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnZhbHVlID0gJ3BuZXVtb25vdWx0cmFtaWNyb3Njb3Bp
Y3NpbGljb3ZvbGNhbm9jb25pb3NpcyciXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAic291cmNlLnNlbGVjdGlvblN0YXJ0ID0gMCJdOwogICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0aW9uRW5kID0gc291
cmNlLnZhbHVlLmxlbmd0aCJdOwpAQCAtNDYzLDggKzQ2Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BU
ZXN0cywgU2luZ2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50aWZpZXJzKQogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJh
Z0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CiAKLSAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRhcmVhLXRvLWlucHV0Il07
Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VB
bmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAInRleHRhcmVhLXRvLWlucHV0
Iik7CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52
YWx1ZSA9ICdodHRwczovL3dlYmtpdC5vcmcvJyJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0aW9uU3RhcnQgPSAwIl07CiAgICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS5zZWxlY3Rpb25FbmQg
PSBzb3VyY2UudmFsdWUubGVuZ3RoIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKaW5kZXggYTM5OGY5ODJhMzQ0ZjBhZDdkNDUwOWVhMWU2
OWNkYzg4ZmE5Nzg1Ny4uNGZlMGI4NDI4YzA4YmU3NGQ5OGE5OTFhYWUzOTYyNGJiOTRjMDc0OSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRv
ci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3Iu
aApAQCAtODksNyArODksNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1Zh
bHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpcnVuRnJvbToo
Q0dQb2ludClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uIGFkZGl0aW9uYWxJ
dGVtUmVxdWVzdExvY2F0aW9uczooUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcClhZGRpdGlvbmFs
SXRlbVJlcXVlc3RMb2NhdGlvbnM7Ci0tICh2b2lkKXdhaXRGb3JJbnB1dFNlc3Npb247CistICh2
b2lkKWVuc3VyZUlucHV0U2Vzc2lvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxs
b3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCAyYjAwYzlmNTU4NmU2ZjIzZDQy
MmQ2MTcxYzFiZTg3ZmRkMDQ1MWU5Li4zZDIzZWZjYjBhODM3ZjBmNGFlZTU1YjNlZWVmMmRmMzg3
YzA2NjZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNp
bXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNp
bXVsYXRvcklPUy5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5k
RHJvcFNpbXVsYXRvciB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PF9XS0F0dGFjaG1l
bnQgKj4+IF9pbnNlcnRlZEF0dGFjaG1lbnRzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eTxfV0tBdHRhY2htZW50ICo+PiBfcmVtb3ZlZEF0dGFjaG1lbnRzOwogCi0gICAgYm9vbCBfaXNE
b25lV2FpdGluZ0ZvcklucHV0U2Vzc2lvbjsKKyAgICBib29sIF9oYXNTdGFydGVkSW5wdXRTZXNz
aW9uOwogICAgIGRvdWJsZSBfY3VycmVudFByb2dyZXNzOwogICAgIGJvb2wgX2lzRG9uZVdpdGhD
dXJyZW50UnVuOwogICAgIERyYWdBbmREcm9wUGhhc2UgX3BoYXNlOwpAQCAtMzM4LDcgKzMzOCw2
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJW
aWV3CiAgICAgICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICAgICAgX3Nob3VsZEVuc3VyZVVJ
QXBwbGljYXRpb24gPSBOTzsKICAgICAgICAgX3Nob3VsZEFsbG93TW92ZU9wZXJhdGlvbiA9IFlF
UzsKLSAgICAgICAgX2lzRG9uZVdhaXRpbmdGb3JJbnB1dFNlc3Npb24gPSB0cnVlOwogICAgICAg
ICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IF9zZXRJ
bnB1dERlbGVnYXRlOnNlbGZdOwogICAgIH0KQEAgLTM3Myw2ICszNzIsNyBAQCAtICh2b2lkKV9y
ZXNldFNpbXVsYXRlZFN0YXRlCiAgICAgX3JlbWFpbmluZ0FkZGl0aW9uYWxJdGVtUmVxdWVzdExv
Y2F0aW9uc0J5UHJvZ3Jlc3MgPSBuaWw7CiAgICAgX3F1ZXVlZEFkZGl0aW9uYWxJdGVtUmVxdWVz
dExvY2F0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
IF9saWZ0UHJldmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
KyAgICBfaGFzU3RhcnRlZElucHV0U2Vzc2lvbiA9IGZhbHNlOwogfQogCiAtIChOU0FycmF5ICop
b2JzZXJ2ZWRFdmVudE5hbWVzCkBAIC00NTksOCArNDU5LDEzIEBAIC0gKHZvaWQpX2NvbmNsdWRl
RHJvcEFuZFBlcmZvcm1PcGVyYXRpb25JZk5lY2Vzc2FyeQogCiAgICAgW1tfd2ViVmlldyBkcm9w
SW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9wSW50ZXJh
Y3Rpb25dIHNlc3Npb25EaWRFbmQ6X2Ryb3BTZXNzaW9uLmdldCgpXTsKIAotICAgIGlmIChfZHJh
Z1Nlc3Npb24pCi0gICAgICAgIFtbX3dlYlZpZXcgZHJhZ0ludGVyYWN0aW9uRGVsZWdhdGVdIGRy
YWdJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJhZ0ludGVyYWN0aW9uXSBzZXNzaW9uOl9kcmFnU2Vz
c2lvbi5nZXQoKSBkaWRFbmRXaXRoT3BlcmF0aW9uOm9wZXJhdGlvbl07CisgICAgaWYgKF9kcmFn
U2Vzc2lvbikgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0gW193ZWJWaWV3IGRyYWdJbnRlcmFj
dGlvbkRlbGVnYXRlXTsKKyAgICAgICAgW2RlbGVnYXRlIGRyYWdJbnRlcmFjdGlvbjpbX3dlYlZp
ZXcgZHJhZ0ludGVyYWN0aW9uXSBzZXNzaW9uOl9kcmFnU2Vzc2lvbi5nZXQoKSBkaWRFbmRXaXRo
T3BlcmF0aW9uOm9wZXJhdGlvbl07CisgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihfY2xlYXJUb2tlbjopXSkKKyAgICAgICAgICAgIFsoaWQgPFVJVGV4
dElucHV0TXVsdGlEb2N1bWVudD4pZGVsZWdhdGUgX2NsZWFyVG9rZW46bmlsXTsKKyAgICAgICAg
W193ZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpX2Vu
cXVldWVQZW5kaW5nQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zCkBAIC01NDMsNyArNTQ4
LDEzIEBAIC0gKHZvaWQpX2FkdmFuY2VQcm9ncmVzcwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgW1tfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJh
Z0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIHNlc3Npb25XaWxsQmVnaW46
X2RyYWdTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IFtfd2ViVmlldyBk
cmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV07CisgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VydmVGb2N1c1dpdGhUb2tlbjpkZXN0cnVjdGl2ZWx5
OildKQorICAgICAgICAgICAgWyhpZCA8VUlUZXh0SW5wdXRNdWx0aURvY3VtZW50PilkZWxlZ2F0
ZSBfcHJlc2VydmVGb2N1c1dpdGhUb2tlbjpuaWwgZGVzdHJ1Y3RpdmVseTpOT107CisKKyAgICAg
ICAgW193ZWJWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyXTsKKworICAgICAgICBbZGVsZWdhdGUg
ZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIHNlc3Npb25XaWxsQmVn
aW46X2RyYWdTZXNzaW9uLmdldCgpXTsKIAogICAgICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBy
ZXRhaW5lZFdlYlZpZXcgPSBfd2ViVmlldzsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKQEAgLTYxOCwxNCArNjI5LDkgQEAgLSAoQ0dSZWN0
KWxhc3RLbm93bkRyYWdDYXJldFJlY3QKICAgICByZXR1cm4gX2xhc3RLbm93bkRyYWdDYXJldFJl
Y3Q7CiB9CiAKLS0gKHZvaWQpd2FpdEZvcklucHV0U2Vzc2lvbgorLSAodm9pZCllbnN1cmVJbnB1
dFNlc3Npb24KIHsKLSAgICBfaXNEb25lV2FpdGluZ0ZvcklucHV0U2Vzc2lvbiA9IGZhbHNlOwot
Ci0gICAgLy8gV2FpdGluZyBmb3IgYW4gaW5wdXQgc2Vzc2lvbiBpbXBsaWVzIHRoYXQgd2Ugc2hv
dWxkIGFsbG93IGlucHV0IHNlc3Npb25zIHRvIGJlZ2luLgotICAgIHNlbGYuYWxsb3dzRm9jdXNU
b1N0YXJ0SW5wdXRTZXNzaW9uID0gWUVTOwotCi0gICAgVXRpbDo6cnVuKCZfaXNEb25lV2FpdGlu
Z0ZvcklucHV0U2Vzc2lvbik7CisgICAgVXRpbDo6cnVuKCZfaGFzU3RhcnRlZElucHV0U2Vzc2lv
bik7CiB9CiAKIC0gKE5TQXJyYXk8X1dLQXR0YWNobWVudCAqPiAqKWluc2VydGVkQXR0YWNobWVu
dHMKQEAgLTcwNyw3ICs3MTMsNyBAQCAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxfV0tGb2N1cwogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8
X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uCiB7Ci0gICAgX2lzRG9uZVdhaXRpbmdG
b3JJbnB1dFNlc3Npb24gPSB0cnVlOworICAgIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uID0gdHJ1
ZTsKIH0KIAogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356107</attachid>
            <date>2018-11-29 18:55:33 -0800</date>
            <delta_ts>2018-11-29 20:08:12 -0800</delta_ts>
            <desc>Fix open source build</desc>
            <filename>bug-192165-20181129185532.patch</filename>
            <type>text/plain</type>
            <size>18340</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY0OTUwYmYwYTUzOWUzZjlh
MzUxNzQzY2NkZjFmZDY4NWJkNzYwY2YuLjYyMTVhNDUxMWRiY2Q5OGVhOTY4MGYwODU4MDM0NDBk
YzliMDdkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMTEtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIz
ODYzNSk6IERyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdLV2ViVmlldyBjYXVzZXMg
dGhlIHNlbGVjdGlvbiBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQgc3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjE2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4ZXMgYSBidWcgaW4gUGFnZUNsaWVudEltcGw6OmlzVmlld0Zv
Y3VzZWQuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86CisgICAgICAgIDEuIFdLV2Vi
VmlldyBpcyBob3N0ZWQgd2l0aGluIHRoZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICAyLiBGaXJz
dCByZXNwb25kZXIgaXMgKm5vdCogV0tDb250ZW50VmlldworICAgICAgICAzLiBUaGUgYWN0aXZl
IGZvY3VzIHJldGFpbiBjb3VudCBpcyBub256ZXJvCisKKyAgICAgICAgQmVmb3JlIHIyMzg2MzUs
IHdlIHdvdWxkIHJldHVybiB0cnVlLCBkdWUgdG8gY29uZGl0aW9uICgzKS4gSG93ZXZlciwgYWZ0
ZXIgcjIzODYzNSwgd2Ugb25seSBjb25zaWRlciB3aGV0aGVyIHRoZQorICAgICAgICBmaXJzdCBy
ZXNwb25kZXIgaXMgV0tDb250ZW50Vmlldywgc2luY2UgdGhlIHdlYiB2aWV3IGlzIGluIHRoZSB2
aWV3IGhpZXJhcmNoeS4gVGhpcyBicmVha3Mgc2NlbmFyaW9zIHdoZXJlCisgICAgICAgIFdlYktp
dCBvciBVSUtpdCBhdHRlbXB0cyB0byByZXRhaW4gZm9jdXMgYW5kIGxhdGVyIHJlc3RvcmUgdGhl
IGNvbnRlbnQgdmlldyB0byBiZSB0aGUgZmlyc3QgcmVzcG9uZGVyIChhbgorICAgICAgICBleGFt
cGxlIG9mIHRoaXMgaXMgZHJhZ2dpbmcgYSB0ZXh0IHNlbGVjdGlvbiBiZXR3ZWVuIGVkaXRhYmxl
IGVsZW1lbnRzIGluIHRoZSBzYW1lIHdlYiB2aWV3KS4KKworICAgICAgICBUbyBmaXggdGhpcywg
c2ltcGx5IGJhaWwgZWFybHkgYW5kIHJldHVybiB0cnVlIGlmIGZvY3VzIGlzIGJlaW5nIHJldGFp
bmVkLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOgorCiAyMDE4LTEx
LTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogYWxsICJTaG93ICoiIGRldmVsb3AgbWVudSBpdGVt
cyBjYXVzZSB0aGUgcGFnZSB0byBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGEyZTM5YTcwY2Q5NGMxZmY3NzU1NzI3OGNi
ODkyNmRhODU5MmJjMzMuLmRlMzlmYzFiZjcxYjdlM2I5NDRiMDFiNGVjNDMzMGYxZGEyYjc5ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTE2Niw5ICsxNjYsMTAgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93
QWN0aXZlKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCiB7Ci0gICAg
aWYgKGlzVmlld0luV2luZG93KCkgJiYgIVttX3dlYlZpZXcgX2lzQmFja2dyb3VuZF0pCi0gICAg
ICAgIHJldHVybiBbbV93ZWJWaWV3IF9jb250ZW50Vmlld0lzRmlyc3RSZXNwb25kZXJdOwotICAg
IHJldHVybiBbbV93ZWJWaWV3IF9pc1JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZV07CisgICAg
aWYgKFttX3dlYlZpZXcgX2lzUmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlXSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gaXNWaWV3SW5XaW5kb3coKSAmJiAhW21fd2ViVmll
dyBfaXNCYWNrZ3JvdW5kXSAmJiBbbV93ZWJWaWV3IF9jb250ZW50Vmlld0lzRmlyc3RSZXNwb25k
ZXJdOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NzQ4OWYyNjkwODRi
NWY1Yzg0ZTQ1NDMxYjc4MGIwZmVjOWU2M2M5Li4zOWNlMDRmMzdmODJkNjE2MDExYjk5NTAwM2Vh
MTQ2ZDczNzBjMmI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTgtMTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIzODYzNSk6IERyYWdn
aW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdLV2ViVmlldyBjYXVzZXMgdGhlIHNlbGVjdGlv
biBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjE2NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXMgMTEgQVBJIHRlc3RzIHRoYXQgc3RhcnRlZCBmYWlsaW5nIG9yIHRpbWluZyBv
dXQgYWZ0ZXIgcjIzODYzNS4gU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZ1dpdGhQ
YWdlTmFtZWQpOgorCisgICAgICAgIEVuc3VyZSB0aGF0IHRoZSB3ZWIgdmlldyBiZWNvbWVzIGZp
cnN0IHJlc3BvbmRlciBiZWZvcmUgZXhlY3V0aW5nIGVkaXQgYWN0aW9ucy4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJs
ZS5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvY29udGVu
dGVkaXRhYmxlLWFuZC10ZXh0YXJlYS5odG1sOgorCisgICAgICAgIFR3ZWFrIHRoZXNlIHRlc3Rz
IHRvIGFsbG93IHNlbGVjdGVkIGNvbnRlbnQgdG8gb3ZlcmZsb3cgdGhlIHdpZHRoIG9mIHRoZSB3
ZWIgdmlldy4gV2l0aG91dCB0aGlzIGNoYW5nZSwKKyAgICAgICAgQ29udGVudEVkaXRhYmxlVG9D
b250ZW50RWRpdGFibGUgYW5kIENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEgd2lsbCBzb21ldGlt
ZXMgZmFpbCBiZWNhdXNlIHRoZSBjb250ZW50IGNhdXNlcworICAgICAgICB0aGUgYm9keSB0byBz
Y3JvbGwgaG9yaXpvbnRhbGx5LCBzbyB3ZSBtaXNzIHRoZSBkcm9wIGRlc3RpbmF0aW9uLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbToK
KyAgICAgICAgKGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbik6CisKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciB0byBsb2FkIGEgdGVzdCBwYWdlIHdpdGggYSBnaXZlbiBuYW1lLCBi
ZWNvbWUgZmlyc3QgcmVzcG9uZGVyLCBhbmQgd2FpdCB1bnRpbCBhbiBpbnB1dCBzZXNzaW9uCisg
ICAgICAgIHN0YXJ0cy4gVXNlIHRoaXMgaW4gdmFyaW91cyBkcmFnIGFuZCBkcm9wIHRlc3RzIHRv
IHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL0Ry
YWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tOgorICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRv
ciBpbml0V2l0aFdlYlZpZXc6XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9y
ZXNldFNpbXVsYXRlZFN0YXRlXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9j
b25jbHVkZURyb3BBbmRQZXJmb3JtT3BlcmF0aW9uSWZOZWNlc3NhcnldKToKKyAgICAgICAgKC1b
RHJhZ0FuZERyb3BTaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorCisgICAgICAgIFRvIG1v
cmUgYWNjdXJhdGVseSBlbXVsYXRlIFVJS2l0IGJlaGF2aW9yLCBiZWdpbiBmb2N1cyBwcmVzZXJ2
YXRpb24gd2hlbiBzdGFydGluZyBhIGRyYWcsIGFuZCBhdHRlbXB0IHRvIGNsZWFyCisgICAgICAg
IHRoZSBmb2N1cyBwcmVzZXJ2YXRpb24gdG9rZW4gd2hlbiB0aGUgZHJhZyBzZXNzaW9uIGVuZHMu
IFRoaXMgYWxsb3dzIHVzIHRvIHNpbXVsYXRlIGFuZCB0ZXN0IHRoZSBzY2VuYXJpbyB0aGF0Cisg
ICAgICAgIHJlZ3Jlc3NlZCB3aXRoIHIyMzg2MzUuCisKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BT
aW11bGF0b3IgZW5zdXJlSW5wdXRTZXNzaW9uXSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2lt
dWxhdG9yIF93ZWJWaWV3OmRpZFN0YXJ0SW5wdXRTZXNzaW9uOl0pOgorICAgICAgICAoLVtEcmFn
QW5kRHJvcFNpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVmYWN0b3JlZCBpbnRvIC1lbnN1cmVJbnB1dFNlc3Npb24uIEluc3RlYWQgb2YgYXNzdW1p
bmcgdGhhdCBhbiBpbnB1dCBzZXNzaW9uIGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZCwgc2ltcGx5
CisgICAgICAgIHdhaXQgZm9yIGFuIGlucHV0IHNlc3Npb24gdG8gc3RhcnQgaWYgbmVlZGVkLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKworICAgICAgICBBZGQg
YSBuZXcgU1BJIGRlY2xhcmF0aW9uLgorCiAyMDE4LTExLTI4ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NNYWNdIERyb3BwaW5nIHRleHQgc2Vs
ZWN0aW9ucyBmcm9tIHdlYiBjb250ZW50IGludG8gZWRpdGFibGUgZWxlbWVudHMgY3Jhc2hlcyB0
aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCmluZGV4IDMzNzAwZTA0M2Rj
NzNhNjMyY2ZkNDlhOTI4ZWQzZTU4OWE1NWIxYWIuLjEwMTk0ODIwNTRmOGEzOGQ2MDFiOWM3YWVh
YjBjZjE2NjA1N2NmZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbQpAQCAtNzgsNiArNzgs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9u
VGVzdGluZyhOU1N0cmluZyAqbWFya3VwKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOm1hcmt1cF07
CiAgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CisgICAgW3dlYlZpZXcgYmVjb21lRmly
c3RSZXNwb25kZXJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOwogICAgIHJl
dHVybiB3ZWJWaWV3OwogfQpAQCAtODcsNiArODgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZ1dpdGhQYWdlTmFtZWQoTlNTdHJp
bgogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnRlc3RQYWdlTmFtZV07CiAgICAgW3dlYlZpZXcg
X3NldEVkaXRhYmxlOllFU107CisgICAgW3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwog
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24o
KS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOwogICAgIHJldHVybiB3ZWJWaWV3Owog
fQpAQCAtMjQzLDEyICsyNDUsMTEgQEAgVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgUGFzdGVB
c1F1b3RhdGlvbikKIFRFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFBhc3RlQW5kTWF0Y2hTdHls
ZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwot
ICAgIGF1dG8gZGVzdGluYXRpb24gPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoQCI8ZGl2
Pjxicj48L2Rpdj4iKTsKLQogICAgIFtzb3VyY2Ugc2VsZWN0QWxsOm5pbF07CiAgICAgW3NvdXJj
ZSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnYm9sZCcpOyBkb2N1
bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJyk7IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpdGFs
aWMnKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKICAgICBbc291cmNlIF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1lbnQ6bmlsXTsKIAorICAgIGF1dG8gZGVz
dGluYXRpb24gPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoQCI8ZGl2Pjxicj48L2Rpdj4i
KTsKICAgICBbZGVzdGluYXRpb24gX3Bhc3RlQW5kTWF0Y2hTdHlsZTpuaWxdOwogICAgIFtkZXN0
aW5hdGlvbiBzZWxlY3RBbGw6bmlsXTsKICAgICBFWFBFQ1RfRkFMU0UoW2Rlc3RpbmF0aW9uIHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgn
Ym9sZCcpIl0uYm9vbFZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvYXV0b2ZvY3VzLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0
bWwKaW5kZXggZTAzNjM1Zjk0ZTMwYmQ3ZjlmZTM0NDIzYzA3ZTg1ODExYzRlZGI5ZS4uN2ZjMmJj
M2RmY2MxOTdlZjI2OTk1MmI0YmE1ODEzYTA5MDIxMzYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0
bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRvZm9jdXMt
Y29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTE0LDYgKzE0LDEwIEBACiAgICAgICAgICAgICB3aGl0
ZS1zcGFjZTogbm93cmFwOwogICAgICAgICB9CiAKKyAgICAgICAgI3NvdXJjZSB7CisgICAgICAg
ICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICB9CisKICAgICAgICAgI2VkaXRvciB7CiAg
ICAgICAgICAgICBib3JkZXI6IGJsYWNrIDFweCBzb2xpZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9jb250ZW50ZWRpdGFibGUt
YW5kLXRleHRhcmVhLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbAppbmRleCA0MTQ4OWZjMzk0NjQ3NWZm
OTQ4ZmFmZmQ1MzgyZDA3MjZmMzhiMmMxLi5hNGI0MTdjZTI3ZGM5YzY2M2IzNjE4ZWFjOGNhYzE2
ZjBhYmQ4MDJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRt
bApAQCAtMTQsNiArMTQsMTAgQEAKICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAg
ICAgICAgIH0KIAorICAgICAgICAjc291cmNlIHsKKyAgICAgICAgICAgIG92ZXJmbG93OiBoaWRk
ZW47CisgICAgICAgIH0KKwogICAgICAgICAjZWRpdG9yIHsKICAgICAgICAgICAgIGJvcmRlcjog
YmxhY2sgMXB4IHNvbGlkOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQppbmRleCBiODc5YzBmZGQxNmVlOTEz
NDFlZDI2NWI4ZTI3OGJmMGJlYjliMTNlLi4yOWVmNjc0N2EzY2ZhZjEzMWMxOTA0YTk3MzcyNGJi
NzhiMTE2MGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFn
QW5kRHJvcFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Ry
YWdBbmREcm9wVGVzdHNJT1MubW0KQEAgLTk4LDYgKzk4LDE1IEBAIC0gKE5TU3RyaW5nICopZWRp
dG9yVmFsdWUKIAogQGVuZAogCitzdGF0aWMgdm9pZCBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1
dFNlc3Npb24oRHJhZ0FuZERyb3BTaW11bGF0b3IgKnNpbXVsYXRvciwgTlNTdHJpbmcgKnRlc3RQ
YWdlTmFtZSkKK3sKKyAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW3NpbXVsYXRvciB3ZWJW
aWV3XTsKKyAgICBzaW11bGF0b3IuYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uID0gWUVT
OworICAgIFt3ZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6dGVzdFBhZ2VOYW1lXTsKKyAgICBbc2ltdWxhdG9y
IGVuc3VyZUlucHV0U2Vzc2lvbl07Cit9CisKIHN0YXRpYyBOU1ZhbHVlICptYWtlQ0dSZWN0VmFs
dWUoQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHRmxvYXQgd2lkdGgsIENHRmxvYXQgaGVpZ2h0KQog
ewogICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6Q0dSZWN0TWFrZSh4LCB5LCB3
aWR0aCwgaGVpZ2h0KV07CkBAIC0zNDEsOCArMzUwLDcgQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKV0pOwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmRE
cm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0g
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJhdXRvZm9jdXMtY29udGVudGVkaXRhYmxl
Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBh
Z2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAImF1dG9mb2N1cy1jb250
ZW50ZWRpdGFibGUiKTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1
MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAogICAgIEVYUEVDVF9UUlVFKFtzaW11bGF0
b3Igc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcF0pOwpAQCAtMzYyLDggKzM3
MCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIGF1dG8gc2ltdWxhdG9y
ID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOwogCi0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJjb250
ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhIl07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRT
ZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9y
LmdldCgpLCBAImNvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEiKTsKICAgICBbc2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsK
IAogICAgIEVYUEVDVF9UUlVFKFtzaW11bGF0b3Igc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRz
RHVyaW5nRHJvcF0pOwpAQCAtMzk0LDggKzQwMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywg
Q29udGVudEVkaXRhYmxlTW92ZVBhcmFncmFwaHMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCldKTsKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNp
bXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAotICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUi
XTsKLSAgICBbc2ltdWxhdG9yIHdhaXRGb3JJbnB1dFNlc3Npb25dOworICAgIGxvYWRUZXN0UGFn
ZUFuZEVuc3VyZUlucHV0U2Vzc2lvbihzaW11bGF0b3IuZ2V0KCksIEAidHdvLXBhcmFncmFwaC1j
b250ZW50ZWRpdGFibGUiKTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAw
LCA1MCkgdG86Q0dQb2ludE1ha2UoMjUwLCA0NTApXTsKIAogICAgIE5TU3RyaW5nICpmaW5hbFRl
eHRDb250ZW50ID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRv
ci50ZXh0Q29udGVudCJdOwpAQCAtNDI1LDggKzQzMSw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0
cywgVGV4dEFyZWFUb0lucHV0KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxs
b2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInRleHRhcmVhLXRvLWlucHV0Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0
Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24o
c2ltdWxhdG9yLmdldCgpLCBAInRleHRhcmVhLXRvLWlucHV0Iik7CiAgICAgW3NpbXVsYXRvciBy
dW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAK
ICAgICBFWFBFQ1RfVFJVRShbc2ltdWxhdG9yIHN1cHByZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1
cmluZ0Ryb3BdKTsKQEAgLTQ0MCw4ICs0NDUsNyBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIFNp
bmdsZVBsYWluVGV4dFdvcmRUeXBlSWRlbnRpZmllcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCldKTsKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJv
cFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAotICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dGFyZWEtdG8taW5wdXQiXTsKLSAgICBb
c2ltdWxhdG9yIHdhaXRGb3JJbnB1dFNlc3Npb25dOworICAgIGxvYWRUZXN0UGFnZUFuZEVuc3Vy
ZUlucHV0U2Vzc2lvbihzaW11bGF0b3IuZ2V0KCksIEAidGV4dGFyZWEtdG8taW5wdXQiKTsKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnZhbHVlID0g
J3BuZXVtb25vdWx0cmFtaWNyb3Njb3BpY3NpbGljb3ZvbGNhbm9jb25pb3NpcyciXTsKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnNlbGVjdGlvblN0
YXJ0ID0gMCJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJz
b3VyY2Uuc2VsZWN0aW9uRW5kID0gc291cmNlLnZhbHVlLmxlbmd0aCJdOwpAQCAtNDYzLDggKzQ2
Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgU2luZ2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50
aWZpZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBz
aW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInRleHRhcmVhLXRvLWlucHV0Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNz
aW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdl
dCgpLCBAInRleHRhcmVhLXRvLWlucHV0Iik7CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52YWx1ZSA9ICdodHRwczovL3dlYmtpdC5vcmcvJyJdOwog
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0
aW9uU3RhcnQgPSAwIl07CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAInNvdXJjZS5zZWxlY3Rpb25FbmQgPSBzb3VyY2UudmFsdWUubGVuZ3RoIl07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmREcm9wU2ltdWxhdG9yLmgKaW5kZXggYTM5
OGY5ODJhMzQ0ZjBhZDdkNDUwOWVhMWU2OWNkYzg4ZmE5Nzg1Ny4uNGZlMGI4NDI4YzA4YmU3NGQ5
OGE5OTFhYWUzOTYyNGJiOTRjMDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaApAQCAtODksNyArODksNyBAQCB0eXBlZGVmIE5TRGlj
dGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlICo+ICpQcm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFw
OwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJWaWV3OihUZXN0V0tXZWJWaWV3ICopd2Vi
VmlldzsKIC0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClzdGFydExvY2F0aW9uIHRvOihDR1BvaW50
KWVuZExvY2F0aW9uIGFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uczooUHJvZ3Jlc3NUb0NH
UG9pbnRWYWx1ZU1hcClhZGRpdGlvbmFsSXRlbVJlcXVlc3RMb2NhdGlvbnM7Ci0tICh2b2lkKXdh
aXRGb3JJbnB1dFNlc3Npb247CistICh2b2lkKWVuc3VyZUlucHV0U2Vzc2lvbjsKIAogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBEcmFnQW5kRHJvcFBoYXNlIHBoYXNlOwogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRHJhZ0FuZERyb3BTaW11bGF0b3JJT1Mu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpp
bmRleCAyYjAwYzlmNTU4NmU2ZjIzZDQyMmQ2MTcxYzFiZTg3ZmRkMDQ1MWU5Li4zZDIzZWZjYjBh
ODM3ZjBmNGFlZTU1YjNlZWVmMmRmMzg3YzA2NjZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbQpAQCAtMzEwLDcgKzMxMCw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVsYXRvciB7CiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PF9XS0F0dGFjaG1lbnQgKj4+IF9pbnNlcnRlZEF0dGFjaG1lbnRzOwogICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxfV0tBdHRhY2htZW50ICo+PiBfcmVtb3ZlZEF0dGFj
aG1lbnRzOwogCi0gICAgYm9vbCBfaXNEb25lV2FpdGluZ0ZvcklucHV0U2Vzc2lvbjsKKyAgICBi
b29sIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uOwogICAgIGRvdWJsZSBfY3VycmVudFByb2dyZXNz
OwogICAgIGJvb2wgX2lzRG9uZVdpdGhDdXJyZW50UnVuOwogICAgIERyYWdBbmREcm9wUGhhc2Ug
X3BoYXNlOwpAQCAtMzM4LDcgKzMzOCw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdlYlZp
ZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3CiAgICAgICAgIF93ZWJWaWV3ID0gd2ViVmlldzsK
ICAgICAgICAgX3Nob3VsZEVuc3VyZVVJQXBwbGljYXRpb24gPSBOTzsKICAgICAgICAgX3Nob3Vs
ZEFsbG93TW92ZU9wZXJhdGlvbiA9IFlFUzsKLSAgICAgICAgX2lzRG9uZVdhaXRpbmdGb3JJbnB1
dFNlc3Npb24gPSB0cnVlOwogICAgICAgICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsK
ICAgICAgICAgW193ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOnNlbGZdOwogICAgIH0KQEAgLTM3
Myw2ICszNzIsNyBAQCAtICh2b2lkKV9yZXNldFNpbXVsYXRlZFN0YXRlCiAgICAgX3JlbWFpbmlu
Z0FkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uc0J5UHJvZ3Jlc3MgPSBuaWw7CiAgICAgX3F1
ZXVlZEFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9saWZ0UHJldmlld3MgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfaGFzU3RhcnRlZElucHV0U2Vzc2lvbiA9IGZh
bHNlOwogfQogCiAtIChOU0FycmF5ICopb2JzZXJ2ZWRFdmVudE5hbWVzCkBAIC00NTksOCArNDU5
LDEzIEBAIC0gKHZvaWQpX2NvbmNsdWRlRHJvcEFuZFBlcmZvcm1PcGVyYXRpb25JZk5lY2Vzc2Fy
eQogCiAgICAgW1tfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0
aW9uOltfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25dIHNlc3Npb25EaWRFbmQ6X2Ryb3BTZXNzaW9u
LmdldCgpXTsKIAotICAgIGlmIChfZHJhZ1Nlc3Npb24pCi0gICAgICAgIFtbX3dlYlZpZXcgZHJh
Z0ludGVyYWN0aW9uRGVsZWdhdGVdIGRyYWdJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJhZ0ludGVy
YWN0aW9uXSBzZXNzaW9uOl9kcmFnU2Vzc2lvbi5nZXQoKSBkaWRFbmRXaXRoT3BlcmF0aW9uOm9w
ZXJhdGlvbl07CisgICAgaWYgKF9kcmFnU2Vzc2lvbikgeworICAgICAgICBhdXRvIGRlbGVnYXRl
ID0gW193ZWJWaWV3IGRyYWdJbnRlcmFjdGlvbkRlbGVnYXRlXTsKKyAgICAgICAgW2RlbGVnYXRl
IGRyYWdJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJhZ0ludGVyYWN0aW9uXSBzZXNzaW9uOl9kcmFn
U2Vzc2lvbi5nZXQoKSBkaWRFbmRXaXRoT3BlcmF0aW9uOm9wZXJhdGlvbl07CisgICAgICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfY2xlYXJUb2tlbjopXSkK
KyAgICAgICAgICAgIFsoaWQgPFVJVGV4dElucHV0TXVsdGlEb2N1bWVudD4pZGVsZWdhdGUgX2Ns
ZWFyVG9rZW46bmlsXTsKKyAgICAgICAgW193ZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsK
KyAgICB9CiB9CiAKIC0gKHZvaWQpX2VucXVldWVQZW5kaW5nQWRkaXRpb25hbEl0ZW1SZXF1ZXN0
TG9jYXRpb25zCkBAIC01NDMsNyArNTQ4LDEzIEBAIC0gKHZvaWQpX2FkdmFuY2VQcm9ncmVzcwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgW1tfd2ViVmlldyBkcmFn
SW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFnSW50ZXJh
Y3Rpb25dIHNlc3Npb25XaWxsQmVnaW46X2RyYWdTZXNzaW9uLmdldCgpXTsKKyAgICAgICAgYXV0
byBkZWxlZ2F0ZSA9IFtfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV07CisgICAgICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VydmVGb2N1
c1dpdGhUb2tlbjpkZXN0cnVjdGl2ZWx5OildKQorICAgICAgICAgICAgWyhpZCA8VUlUZXh0SW5w
dXRNdWx0aURvY3VtZW50PilkZWxlZ2F0ZSBfcHJlc2VydmVGb2N1c1dpdGhUb2tlbjpuaWwgZGVz
dHJ1Y3RpdmVseTpOT107CisKKyAgICAgICAgW193ZWJWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVy
XTsKKworICAgICAgICBbZGVsZWdhdGUgZHJhZ0ludGVyYWN0aW9uOltfd2ViVmlldyBkcmFnSW50
ZXJhY3Rpb25dIHNlc3Npb25XaWxsQmVnaW46X2RyYWdTZXNzaW9uLmdldCgpXTsKIAogICAgICAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiByZXRhaW5lZFdlYlZpZXcgPSBfd2ViVmlldzsKICAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXigpIHsKQEAgLTYx
OCwxNCArNjI5LDkgQEAgLSAoQ0dSZWN0KWxhc3RLbm93bkRyYWdDYXJldFJlY3QKICAgICByZXR1
cm4gX2xhc3RLbm93bkRyYWdDYXJldFJlY3Q7CiB9CiAKLS0gKHZvaWQpd2FpdEZvcklucHV0U2Vz
c2lvbgorLSAodm9pZCllbnN1cmVJbnB1dFNlc3Npb24KIHsKLSAgICBfaXNEb25lV2FpdGluZ0Zv
cklucHV0U2Vzc2lvbiA9IGZhbHNlOwotCi0gICAgLy8gV2FpdGluZyBmb3IgYW4gaW5wdXQgc2Vz
c2lvbiBpbXBsaWVzIHRoYXQgd2Ugc2hvdWxkIGFsbG93IGlucHV0IHNlc3Npb25zIHRvIGJlZ2lu
LgotICAgIHNlbGYuYWxsb3dzRm9jdXNUb1N0YXJ0SW5wdXRTZXNzaW9uID0gWUVTOwotCi0gICAg
VXRpbDo6cnVuKCZfaXNEb25lV2FpdGluZ0ZvcklucHV0U2Vzc2lvbik7CisgICAgVXRpbDo6cnVu
KCZfaGFzU3RhcnRlZElucHV0U2Vzc2lvbik7CiB9CiAKIC0gKE5TQXJyYXk8X1dLQXR0YWNobWVu
dCAqPiAqKWluc2VydGVkQXR0YWNobWVudHMKQEAgLTcwNyw3ICs3MTMsNyBAQCAtIChCT09MKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvY3VzU2hvdWxkU3RhcnRJbnB1dFNlc3Npb246
KGlkIDxfV0tGb2N1cwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9u
CiB7Ci0gICAgX2lzRG9uZVdhaXRpbmdGb3JJbnB1dFNlc3Npb24gPSB0cnVlOworICAgIF9oYXNT
dGFydGVkSW5wdXRTZXNzaW9uID0gdHJ1ZTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJ
S2l0U1BJLmgKaW5kZXggYjg0ZDk0NWU4YmQ1NmZmNDYxZDIwMDE4ODY1NTM3NDRlZDA4ZTZhZi4u
ZjdiZDkzOThkZjM5ZDViMWE5MzU4MDQ4Yzg4MzkxYzAzZGYwMmYwYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9VSUtpdFNQSS5oCkBAIC04Myw2ICs4Myw3IEBAIFdURl9FWFRFUk5fQ19FTkQKIEBvcHRp
b25hbAogLSAodm9pZClfcHJlc2VydmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29weWluZywgTlNT
ZWN1cmVDb2Rpbmc+KXRva2VuIGRlc3RydWN0aXZlbHk6KEJPT0wpZGVzdHJ1Y3RpdmVseTsKIC0g
KEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rp
bmc+KXRva2VuOworLSAodm9pZClfY2xlYXJUb2tlbjooaWQgPE5TQ29weWluZywgTlNTZWN1cmVD
b2Rpbmc+KXRva2VuOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TVVJMICgpCg==
</data>
<flag name="review"
          id="373150"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356132</attachid>
            <date>2018-11-29 21:47:12 -0800</date>
            <delta_ts>2018-11-29 23:22:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192165-20181129214711.patch</filename>
            <type>text/plain</type>
            <size>18250</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1YzVkZGExMWY5YWJlN2Iy
ZDY4YTcwYTMwZmFkOWI0ZDYzOGYyYzUuLjQ3MWVmZWU3MjQxNDk1OWVmMDQ0ODlkZjgyOGVjOWFm
NWM2Njg3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTgtMTEtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIz
ODYzNSk6IERyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdLV2ViVmlldyBjYXVzZXMg
dGhlIHNlbGVjdGlvbiBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQgc3RhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjE2NQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVsIEJh
dGVzLgorCisgICAgICAgIEZpeGVzIGEgYnVnIGluIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1
c2VkLiBDb25zaWRlciB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAxLiBXS1dlYlZp
ZXcgaXMgaG9zdGVkIHdpdGhpbiB0aGUgdmlldyBoaWVyYXJjaHkKKyAgICAgICAgMi4gRmlyc3Qg
cmVzcG9uZGVyIGlzICpub3QqIFdLQ29udGVudFZpZXcKKyAgICAgICAgMy4gVGhlIGFjdGl2ZSBm
b2N1cyByZXRhaW4gY291bnQgaXMgbm9uemVybworCisgICAgICAgIEJlZm9yZSByMjM4NjM1LCB3
ZSB3b3VsZCByZXR1cm4gdHJ1ZSwgZHVlIHRvIGNvbmRpdGlvbiAoMykuIEhvd2V2ZXIsIGFmdGVy
IHIyMzg2MzUsIHdlIG9ubHkgY29uc2lkZXIgd2hldGhlciB0aGUKKyAgICAgICAgZmlyc3QgcmVz
cG9uZGVyIGlzIFdLQ29udGVudFZpZXcsIHNpbmNlIHRoZSB3ZWIgdmlldyBpcyBpbiB0aGUgdmll
dyBoaWVyYXJjaHkuIFRoaXMgYnJlYWtzIHNjZW5hcmlvcyB3aGVyZQorICAgICAgICBXZWJLaXQg
b3IgVUlLaXQgYXR0ZW1wdHMgdG8gcmV0YWluIGZvY3VzIGFuZCBsYXRlciByZXN0b3JlIHRoZSBj
b250ZW50IHZpZXcgdG8gYmUgdGhlIGZpcnN0IHJlc3BvbmRlciAoYW4KKyAgICAgICAgZXhhbXBs
ZSBvZiB0aGlzIGlzIGRyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24gYmV0d2VlbiBlZGl0YWJsZSBl
bGVtZW50cyBpbiB0aGUgc2FtZSB3ZWIgdmlldykuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHNp
bXBseSBiYWlsIGVhcmx5IGFuZCByZXR1cm4gdHJ1ZSBpZiBmb2N1cyBpcyBiZWluZyByZXRhaW5l
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1c2VkKToKKwogMjAxOC0xMS0y
OSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjM4NzEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGEyZTM5YTcwY2Q5NGMxZmY3NzU1NzI3OGNi
ODkyNmRhODU5MmJjMzMuLjk2OGZkZTk2MzI4ZWYxMjZkMzZiODBmZjE4YTVkZTE2MWVjNmExMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KQEAgLTE2Niw5ICsxNjYsNyBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dB
Y3RpdmUoKQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1c2VkKCkKIHsKLSAgICBp
ZiAoaXNWaWV3SW5XaW5kb3coKSAmJiAhW21fd2ViVmlldyBfaXNCYWNrZ3JvdW5kXSkKLSAgICAg
ICAgcmV0dXJuIFttX3dlYlZpZXcgX2NvbnRlbnRWaWV3SXNGaXJzdFJlc3BvbmRlcl07Ci0gICAg
cmV0dXJuIFttX3dlYlZpZXcgX2lzUmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlXTsKKyAgICBy
ZXR1cm4gKGlzVmlld0luV2luZG93KCkgJiYgIVttX3dlYlZpZXcgX2lzQmFja2dyb3VuZF0gJiYg
W21fd2ViVmlldyBfY29udGVudFZpZXdJc0ZpcnN0UmVzcG9uZGVyXSkgfHwgW21fd2ViVmlldyBf
aXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGVdOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1ZpZXdWaXNpYmxlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAyYTQ2OGFjNGM3YjI5YTQ5ODYxNGZkNzk0MmRjN2IzYTBhYjcwMzdkLi5h
MTlhYWUxNTY1YWExZWNhNWM1YTBkZmU0MzFmNDcxMTY3ZDk2NzgyIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTgt
MTEtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UkVHUkVTU0lPTiAocjIzODYzNSk6IERyYWdnaW5nIGEgdGV4dCBzZWxlY3Rpb24gd2l0aGluIFdL
V2ViVmlldyBjYXVzZXMgdGhlIHNlbGVjdGlvbiBoaWdobGlnaHQgdG8gZ2V0IGludG8gYSBiYWQg
c3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MjE2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDYzNDY2ODI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuaWVsIEJhdGVzLgorCisgICAgICAgIEZpeGVzIDExIEFQSSB0ZXN0cyB0aGF0IHN0
YXJ0ZWQgZmFpbGluZyBvciB0aW1pbmcgb3V0IGFmdGVyIHIyMzg2MzUuIFNlZSBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZp
ZXdGb3JFZGl0QWN0aW9uVGVzdGluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3
Rm9yRWRpdEFjdGlvblRlc3RpbmdXaXRoUGFnZU5hbWVkKToKKworICAgICAgICBFbnN1cmUgdGhh
dCB0aGUgd2ViIHZpZXcgYmVjb21lcyBmaXJzdCByZXNwb25kZXIgYmVmb3JlIGV4ZWN1dGluZyBl
ZGl0IGFjdGlvbnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2F1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbDoKKwor
ICAgICAgICBUd2VhayB0aGVzZSB0ZXN0cyB0byBhbGxvdyBzZWxlY3RlZCBjb250ZW50IHRvIG92
ZXJmbG93IHRoZSB3aWR0aCBvZiB0aGUgd2ViIHZpZXcuIFdpdGhvdXQgdGhpcyBjaGFuZ2UsCisg
ICAgICAgIENvbnRlbnRFZGl0YWJsZVRvQ29udGVudEVkaXRhYmxlIGFuZCBDb250ZW50RWRpdGFi
bGVUb1RleHRhcmVhIHdpbGwgc29tZXRpbWVzIGZhaWwgYmVjYXVzZSB0aGUgY29udGVudCBjYXVz
ZXMKKyAgICAgICAgdGhlIGJvZHkgdG8gc2Nyb2xsIGhvcml6b250YWxseSwgc28gd2UgbWlzcyB0
aGUgZHJvcCBkZXN0aW5hdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJ
bnB1dFNlc3Npb24pOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgdG8gbG9hZCBhIHRlc3Qg
cGFnZSB3aXRoIGEgZ2l2ZW4gbmFtZSwgYmVjb21lIGZpcnN0IHJlc3BvbmRlciwgYW5kIHdhaXQg
dW50aWwgYW4gaW5wdXQgc2Vzc2lvbgorICAgICAgICBzdGFydHMuIFVzZSB0aGlzIGluIHZhcmlv
dXMgZHJhZyBhbmQgZHJvcCB0ZXN0cyB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbi4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbToKKyAgICAg
ICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3IgaW5pdFdpdGhXZWJWaWV3Ol0pOgorICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfcmVzZXRTaW11bGF0ZWRTdGF0ZV0pOgorICAgICAgICAo
LVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfY29uY2x1ZGVEcm9wQW5kUGVyZm9ybU9wZXJhdGlvbklm
TmVjZXNzYXJ5XSk6CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIF9hZHZhbmNlUHJv
Z3Jlc3NdKToKKworICAgICAgICBUbyBtb3JlIGFjY3VyYXRlbHkgZW11bGF0ZSBVSUtpdCBiZWhh
dmlvciwgYmVnaW4gZm9jdXMgcHJlc2VydmF0aW9uIHdoZW4gc3RhcnRpbmcgYSBkcmFnLCBhbmQg
YXR0ZW1wdCB0byBjbGVhcgorICAgICAgICB0aGUgZm9jdXMgcHJlc2VydmF0aW9uIHRva2VuIHdo
ZW4gdGhlIGRyYWcgc2Vzc2lvbiBlbmRzLiBUaGlzIGFsbG93cyB1cyB0byBzaW11bGF0ZSBhbmQg
dGVzdCB0aGUgc2NlbmFyaW8gdGhhdAorICAgICAgICByZWdyZXNzZWQgd2l0aCByMjM4NjM1Lgor
CisgICAgICAgICgtW0RyYWdBbmREcm9wU2ltdWxhdG9yIGVuc3VyZUlucHV0U2Vzc2lvbl0pOgor
ICAgICAgICAoLVtEcmFnQW5kRHJvcFNpbXVsYXRvciBfd2ViVmlldzpkaWRTdGFydElucHV0U2Vz
c2lvbjpdKToKKyAgICAgICAgKC1bRHJhZ0FuZERyb3BTaW11bGF0b3Igd2FpdEZvcklucHV0U2Vz
c2lvbl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlZmFjdG9yZWQgaW50byAtZW5zdXJlSW5wdXRT
ZXNzaW9uLiBJbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgYW4gaW5wdXQgc2Vzc2lvbiBoYXMgbm90
IHlldCBiZWVuIHN0YXJ0ZWQsIHNpbXBseQorICAgICAgICB3YWl0IGZvciBhbiBpbnB1dCBzZXNz
aW9uIHRvIHN0YXJ0IGlmIG5lZWRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1VJ
S2l0U1BJLmg6CisKKyAgICAgICAgQWRkIGEgbmV3IFNQSSBkZWNsYXJhdGlvbi4KKwogMjAxOC0x
MS0yOSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyMzg0NDUpW0J1aWxkYm90XSBVbmtub3duIGJ1aWxkZXIgJ0dUSyBMaW51
eCAzMi1iaXQgUmVsZWFzZScgaW4gc2NoZWR1bGVyICd0cnVuaycKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rp
b25zLm1tCmluZGV4IDMzNzAwZTA0M2RjNzNhNjMyY2ZkNDlhOTI4ZWQzZTU4OWE1NWIxYWIuLjEw
MTk0ODIwNTRmOGEzOGQ2MDFiOWM3YWVhYjBjZjE2NjA1N2NmZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFZGl0
QWN0aW9ucy5tbQpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZyhOU1N0cmluZyAqbWFya3VwKQogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOm1hcmt1cF07CiAgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107
CisgICAgW3dlYlZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1
bWVudC5ib2R5LCAxKSJdOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQpAQCAtODcsNiArODgsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVz
dGluZ1dpdGhQYWdlTmFtZWQoTlNTdHJpbgogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOnRlc3RQ
YWdlTmFtZV07CiAgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CisgICAgW3dlYlZpZXcg
YmVjb21lRmlyc3RSZXNwb25kZXJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJd
OwogICAgIHJldHVybiB3ZWJWaWV3OwogfQpAQCAtMjQzLDEyICsyNDUsMTEgQEAgVEVTVChXS1dl
YlZpZXdFZGl0QWN0aW9ucywgUGFzdGVBc1F1b3RhdGlvbikKIFRFU1QoV0tXZWJWaWV3RWRpdEFj
dGlvbnMsIFBhc3RlQW5kTWF0Y2hTdHlsZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9IHdlYlZpZXdG
b3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIGF1dG8gZGVzdGluYXRpb24gPSB3ZWJWaWV3Rm9y
RWRpdEFjdGlvblRlc3RpbmcoQCI8ZGl2Pjxicj48L2Rpdj4iKTsKLQogICAgIFtzb3VyY2Ugc2Vs
ZWN0QWxsOm5pbF07CiAgICAgW3NvdXJjZSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5l
eGVjQ29tbWFuZCgnYm9sZCcpOyBkb2N1bWVudC5leGVjQ29tbWFuZCgndW5kZXJsaW5lJyk7IGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCdpdGFsaWMnKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKICAg
ICBbc291cmNlIF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiQ29weSIgYXJndW1l
bnQ6bmlsXTsKIAorICAgIGF1dG8gZGVzdGluYXRpb24gPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRl
c3RpbmcoQCI8ZGl2Pjxicj48L2Rpdj4iKTsKICAgICBbZGVzdGluYXRpb24gX3Bhc3RlQW5kTWF0
Y2hTdHlsZTpuaWxdOwogICAgIFtkZXN0aW5hdGlvbiBzZWxlY3RBbGw6bmlsXTsKICAgICBFWFBF
Q1RfRkFMU0UoW2Rlc3RpbmF0aW9uIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgnYm9sZCcpIl0uYm9vbFZhbHVlKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXV0b2ZvY3VzLWNvbnRlbnRl
ZGl0YWJsZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRv
Zm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKaW5kZXggZTAzNjM1Zjk0ZTMwYmQ3ZjlmZTM0NDIz
YzA3ZTg1ODExYzRlZGI5ZS4uN2ZjMmJjM2RmY2MxOTdlZjI2OTk1MmI0YmE1ODEzYTA5MDIxMzYy
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hdXRv
Zm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9hdXRvZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTE0LDYgKzE0
LDEwIEBACiAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICB9CiAKKyAg
ICAgICAgI3NvdXJjZSB7CisgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICB9
CisKICAgICAgICAgI2VkaXRvciB7CiAgICAgICAgICAgICBib3JkZXI6IGJsYWNrIDFweCBzb2xp
ZDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9jb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhLmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRt
bAppbmRleCA0MTQ4OWZjMzk0NjQ3NWZmOTQ4ZmFmZmQ1MzgyZDA3MjZmMzhiMmMxLi5hNGI0MTdj
ZTI3ZGM5YzY2M2IzNjE4ZWFjOGNhYzE2ZjBhYmQ4MDJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRlZGl0YWJsZS1hbmQtdGV4dGFyZWEu
aHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2NvbnRlbnRl
ZGl0YWJsZS1hbmQtdGV4dGFyZWEuaHRtbApAQCAtMTQsNiArMTQsMTAgQEAKICAgICAgICAgICAg
IHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgIH0KIAorICAgICAgICAjc291cmNlIHsKKyAg
ICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgIH0KKwogICAgICAgICAjZWRpdG9y
IHsKICAgICAgICAgICAgIGJvcmRlcjogYmxhY2sgMXB4IHNvbGlkOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9T
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5t
bQppbmRleCBiODc5YzBmZGQxNmVlOTEzNDFlZDI2NWI4ZTI3OGJmMGJlYjliMTNlLi4yOWVmNjc0
N2EzY2ZhZjEzMWMxOTA0YTk3MzcyNGJiNzhiMTE2MGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KQEAgLTk4LDYgKzk4
LDE1IEBAIC0gKE5TU3RyaW5nICopZWRpdG9yVmFsdWUKIAogQGVuZAogCitzdGF0aWMgdm9pZCBs
b2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oRHJhZ0FuZERyb3BTaW11bGF0b3IgKnNp
bXVsYXRvciwgTlNTdHJpbmcgKnRlc3RQYWdlTmFtZSkKK3sKKyAgICBUZXN0V0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW3NpbXVsYXRvciB3ZWJWaWV3XTsKKyAgICBzaW11bGF0b3IuYWxsb3dzRm9jdXNU
b1N0YXJ0SW5wdXRTZXNzaW9uID0gWUVTOworICAgIFt3ZWJWaWV3IGJlY29tZUZpcnN0UmVzcG9u
ZGVyXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6dGVzdFBh
Z2VOYW1lXTsKKyAgICBbc2ltdWxhdG9yIGVuc3VyZUlucHV0U2Vzc2lvbl07Cit9CisKIHN0YXRp
YyBOU1ZhbHVlICptYWtlQ0dSZWN0VmFsdWUoQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHRmxvYXQg
d2lkdGgsIENHRmxvYXQgaGVpZ2h0KQogewogICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhD
R1JlY3Q6Q0dSZWN0TWFrZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KV07CkBAIC0zNDEsOCArMzUwLDcg
QEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJs
ZSkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwogICAgIGF1dG8gc2ltdWxh
dG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJh
dXRvZm9jdXMtY29udGVudGVkaXRhYmxlIl07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRT
ZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9y
LmdldCgpLCBAImF1dG9mb2N1cy1jb250ZW50ZWRpdGFibGUiKTsKICAgICBbc2ltdWxhdG9yIHJ1
bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAog
ICAgIEVYUEVDVF9UUlVFKFtzaW11bGF0b3Igc3VwcHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRzRHVy
aW5nRHJvcF0pOwpAQCAtMzYyLDggKzM3MCw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ29u
dGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOwogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9y
IGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogCi0gICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJjb250ZW50ZWRpdGFibGUtYW5kLXRleHRhcmVhIl07Ci0gICAg
W3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1
cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAImNvbnRlbnRlZGl0YWJsZS1hbmQtdGV4
dGFyZWEiKTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAogICAgIEVYUEVDVF9UUlVFKFtzaW11bGF0b3Igc3Vw
cHJlc3NlZFNlbGVjdGlvbkNvbW1hbmRzRHVyaW5nRHJvcF0pOwpAQCAtMzk0LDggKzQwMSw3IEBA
IFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgQ29udGVudEVkaXRhYmxlTW92ZVBhcmFncmFwaHMpCiAg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIHNpbXVsYXRvciA9
IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidHdvLXBh
cmFncmFwaC1jb250ZW50ZWRpdGFibGUiXTsKLSAgICBbc2ltdWxhdG9yIHdhaXRGb3JJbnB1dFNl
c3Npb25dOworICAgIGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbihzaW11bGF0b3Iu
Z2V0KCksIEAidHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUiKTsKICAgICBbc2ltdWxhdG9y
IHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMjUwLCA0NTApXTsK
IAogICAgIE5TU3RyaW5nICpmaW5hbFRleHRDb250ZW50ID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci50ZXh0Q29udGVudCJdOwpAQCAtNDI1LDggKzQzMSw3
IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgVGV4dEFyZWFUb0lucHV0KQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtb
RHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CiAKLSAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRhcmVhLXRvLWlucHV0
Il07Ci0gICAgW3NpbXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBh
Z2VBbmRFbnN1cmVJbnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAInRleHRhcmVhLXRvLWlu
cHV0Iik7CiAgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNH
UG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKICAgICBFWFBFQ1RfVFJVRShbc2ltdWxhdG9yIHN1cHBy
ZXNzZWRTZWxlY3Rpb25Db21tYW5kc0R1cmluZ0Ryb3BdKTsKQEAgLTQ0MCw4ICs0NDUsNyBAQCBU
RVNUKERyYWdBbmREcm9wVGVzdHMsIFNpbmdsZVBsYWluVGV4dFdvcmRUeXBlSWRlbnRpZmllcnMp
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKICAgICBhdXRvIHNpbXVsYXRv
ciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3
OndlYlZpZXcuZ2V0KCldKTsKIAotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4
dGFyZWEtdG8taW5wdXQiXTsKLSAgICBbc2ltdWxhdG9yIHdhaXRGb3JJbnB1dFNlc3Npb25dOwor
ICAgIGxvYWRUZXN0UGFnZUFuZEVuc3VyZUlucHV0U2Vzc2lvbihzaW11bGF0b3IuZ2V0KCksIEAi
dGV4dGFyZWEtdG8taW5wdXQiKTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAic291cmNlLnZhbHVlID0gJ3BuZXVtb25vdWx0cmFtaWNyb3Njb3BpY3NpbGljb3Zv
bGNhbm9jb25pb3NpcyciXTsKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAic291cmNlLnNlbGVjdGlvblN0YXJ0ID0gMCJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0aW9uRW5kID0gc291cmNlLnZhbHVl
Lmxlbmd0aCJdOwpAQCAtNDYzLDggKzQ2Nyw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywgU2lu
Z2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50aWZpZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BT
aW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKLSAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRhcmVhLXRvLWlucHV0Il07Ci0gICAgW3Np
bXVsYXRvciB3YWl0Rm9ySW5wdXRTZXNzaW9uXTsKKyAgICBsb2FkVGVzdFBhZ2VBbmRFbnN1cmVJ
bnB1dFNlc3Npb24oc2ltdWxhdG9yLmdldCgpLCBAInRleHRhcmVhLXRvLWlucHV0Iik7CiAgICAg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52YWx1ZSA9ICdo
dHRwczovL3dlYmtpdC5vcmcvJyJdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0aW9uU3RhcnQgPSAwIl07CiAgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS5zZWxlY3Rpb25FbmQgPSBzb3VyY2Uu
dmFsdWUubGVuZ3RoIl07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0Ry
YWdBbmREcm9wU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0RyYWdBbmRE
cm9wU2ltdWxhdG9yLmgKaW5kZXggYTM5OGY5ODJhMzQ0ZjBhZDdkNDUwOWVhMWU2OWNkYzg4ZmE5
Nzg1Ny4uNGZlMGI4NDI4YzA4YmU3NGQ5OGE5OTFhYWUzOTYyNGJiOTRjMDc0OSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9EcmFnQW5kRHJvcFNpbXVsYXRvci5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvRHJhZ0FuZERyb3BTaW11bGF0b3IuaApAQCAtODks
NyArODksNyBAQCB0eXBlZGVmIE5TRGljdGlvbmFyeTxOU051bWJlciAqLCBOU1ZhbHVlICo+ICpQ
cm9ncmVzc1RvQ0dQb2ludFZhbHVlTWFwOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJW
aWV3OihUZXN0V0tXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpcnVuRnJvbTooQ0dQb2ludClz
dGFydExvY2F0aW9uIHRvOihDR1BvaW50KWVuZExvY2F0aW9uIGFkZGl0aW9uYWxJdGVtUmVxdWVz
dExvY2F0aW9uczooUHJvZ3Jlc3NUb0NHUG9pbnRWYWx1ZU1hcClhZGRpdGlvbmFsSXRlbVJlcXVl
c3RMb2NhdGlvbnM7Ci0tICh2b2lkKXdhaXRGb3JJbnB1dFNlc3Npb247CistICh2b2lkKWVuc3Vy
ZUlucHV0U2Vzc2lvbjsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBEcmFnQW5k
RHJvcFBoYXNlIHBoYXNlOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzRm9jdXNU
b1N0YXJ0SW5wdXRTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RHJhZ0FuZERyb3BTaW11bGF0b3JJT1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFn
QW5kRHJvcFNpbXVsYXRvcklPUy5tbQppbmRleCAyYjAwYzlmNTU4NmU2ZjIzZDQyMmQ2MTcxYzFi
ZTg3ZmRkMDQ1MWU5Li4zZDIzZWZjYjBhODM3ZjBmNGFlZTU1YjNlZWVmMmRmMzg3YzA2NjZjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EcmFnQW5kRHJvcFNpbXVsYXRvcklP
Uy5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBEcmFnQW5kRHJvcFNpbXVs
YXRvciB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PF9XS0F0dGFjaG1lbnQgKj4+IF9p
bnNlcnRlZEF0dGFjaG1lbnRzOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxfV0tBdHRh
Y2htZW50ICo+PiBfcmVtb3ZlZEF0dGFjaG1lbnRzOwogCi0gICAgYm9vbCBfaXNEb25lV2FpdGlu
Z0ZvcklucHV0U2Vzc2lvbjsKKyAgICBib29sIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uOwogICAg
IGRvdWJsZSBfY3VycmVudFByb2dyZXNzOwogICAgIGJvb2wgX2lzRG9uZVdpdGhDdXJyZW50UnVu
OwogICAgIERyYWdBbmREcm9wUGhhc2UgX3BoYXNlOwpAQCAtMzM4LDcgKzMzOCw2IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFdlYlZpZXc6KFRlc3RXS1dlYlZpZXcgKil3ZWJWaWV3CiAgICAg
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICAgICAgX3Nob3VsZEVuc3VyZVVJQXBwbGljYXRp
b24gPSBOTzsKICAgICAgICAgX3Nob3VsZEFsbG93TW92ZU9wZXJhdGlvbiA9IFlFUzsKLSAgICAg
ICAgX2lzRG9uZVdhaXRpbmdGb3JJbnB1dFNlc3Npb24gPSB0cnVlOwogICAgICAgICBbX3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IF9zZXRJbnB1dERlbGVn
YXRlOnNlbGZdOwogICAgIH0KQEAgLTM3Myw2ICszNzIsNyBAQCAtICh2b2lkKV9yZXNldFNpbXVs
YXRlZFN0YXRlCiAgICAgX3JlbWFpbmluZ0FkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9uc0J5
UHJvZ3Jlc3MgPSBuaWw7CiAgICAgX3F1ZXVlZEFkZGl0aW9uYWxJdGVtUmVxdWVzdExvY2F0aW9u
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9saWZ0UHJl
dmlld3MgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBfaGFz
U3RhcnRlZElucHV0U2Vzc2lvbiA9IGZhbHNlOwogfQogCiAtIChOU0FycmF5ICopb2JzZXJ2ZWRF
dmVudE5hbWVzCkBAIC00NTksOCArNDU5LDEzIEBAIC0gKHZvaWQpX2NvbmNsdWRlRHJvcEFuZFBl
cmZvcm1PcGVyYXRpb25JZk5lY2Vzc2FyeQogCiAgICAgW1tfd2ViVmlldyBkcm9wSW50ZXJhY3Rp
b25EZWxlZ2F0ZV0gZHJvcEludGVyYWN0aW9uOltfd2ViVmlldyBkcm9wSW50ZXJhY3Rpb25dIHNl
c3Npb25EaWRFbmQ6X2Ryb3BTZXNzaW9uLmdldCgpXTsKIAotICAgIGlmIChfZHJhZ1Nlc3Npb24p
Ci0gICAgICAgIFtbX3dlYlZpZXcgZHJhZ0ludGVyYWN0aW9uRGVsZWdhdGVdIGRyYWdJbnRlcmFj
dGlvbjpbX3dlYlZpZXcgZHJhZ0ludGVyYWN0aW9uXSBzZXNzaW9uOl9kcmFnU2Vzc2lvbi5nZXQo
KSBkaWRFbmRXaXRoT3BlcmF0aW9uOm9wZXJhdGlvbl07CisgICAgaWYgKF9kcmFnU2Vzc2lvbikg
eworICAgICAgICBhdXRvIGRlbGVnYXRlID0gW193ZWJWaWV3IGRyYWdJbnRlcmFjdGlvbkRlbGVn
YXRlXTsKKyAgICAgICAgW2RlbGVnYXRlIGRyYWdJbnRlcmFjdGlvbjpbX3dlYlZpZXcgZHJhZ0lu
dGVyYWN0aW9uXSBzZXNzaW9uOl9kcmFnU2Vzc2lvbi5nZXQoKSBkaWRFbmRXaXRoT3BlcmF0aW9u
Om9wZXJhdGlvbl07CisgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihfY2xlYXJUb2tlbjopXSkKKyAgICAgICAgICAgIFsoaWQgPFVJVGV4dElucHV0TXVs
dGlEb2N1bWVudD4pZGVsZWdhdGUgX2NsZWFyVG9rZW46bmlsXTsKKyAgICAgICAgW193ZWJWaWV3
IGJlY29tZUZpcnN0UmVzcG9uZGVyXTsKKyAgICB9CiB9CiAKIC0gKHZvaWQpX2VucXVldWVQZW5k
aW5nQWRkaXRpb25hbEl0ZW1SZXF1ZXN0TG9jYXRpb25zCkBAIC01NDMsNyArNTQ4LDEzIEBAIC0g
KHZvaWQpX2FkdmFuY2VQcm9ncmVzcwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgW1tfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25EZWxlZ2F0ZV0gZHJhZ0ludGVyYWN0
aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIHNlc3Npb25XaWxsQmVnaW46X2RyYWdTZXNz
aW9uLmdldCgpXTsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IFtfd2ViVmlldyBkcmFnSW50ZXJh
Y3Rpb25EZWxlZ2F0ZV07CisgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfcHJlc2VydmVGb2N1c1dpdGhUb2tlbjpkZXN0cnVjdGl2ZWx5OildKQorICAg
ICAgICAgICAgWyhpZCA8VUlUZXh0SW5wdXRNdWx0aURvY3VtZW50PilkZWxlZ2F0ZSBfcHJlc2Vy
dmVGb2N1c1dpdGhUb2tlbjpuaWwgZGVzdHJ1Y3RpdmVseTpOT107CisKKyAgICAgICAgW193ZWJW
aWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyXTsKKworICAgICAgICBbZGVsZWdhdGUgZHJhZ0ludGVy
YWN0aW9uOltfd2ViVmlldyBkcmFnSW50ZXJhY3Rpb25dIHNlc3Npb25XaWxsQmVnaW46X2RyYWdT
ZXNzaW9uLmdldCgpXTsKIAogICAgICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiByZXRhaW5lZFdl
YlZpZXcgPSBfd2ViVmlldzsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXigpIHsKQEAgLTYxOCwxNCArNjI5LDkgQEAgLSAoQ0dSZWN0KWxhc3RLbm93
bkRyYWdDYXJldFJlY3QKICAgICByZXR1cm4gX2xhc3RLbm93bkRyYWdDYXJldFJlY3Q7CiB9CiAK
LS0gKHZvaWQpd2FpdEZvcklucHV0U2Vzc2lvbgorLSAodm9pZCllbnN1cmVJbnB1dFNlc3Npb24K
IHsKLSAgICBfaXNEb25lV2FpdGluZ0ZvcklucHV0U2Vzc2lvbiA9IGZhbHNlOwotCi0gICAgLy8g
V2FpdGluZyBmb3IgYW4gaW5wdXQgc2Vzc2lvbiBpbXBsaWVzIHRoYXQgd2Ugc2hvdWxkIGFsbG93
IGlucHV0IHNlc3Npb25zIHRvIGJlZ2luLgotICAgIHNlbGYuYWxsb3dzRm9jdXNUb1N0YXJ0SW5w
dXRTZXNzaW9uID0gWUVTOwotCi0gICAgVXRpbDo6cnVuKCZfaXNEb25lV2FpdGluZ0ZvcklucHV0
U2Vzc2lvbik7CisgICAgVXRpbDo6cnVuKCZfaGFzU3RhcnRlZElucHV0U2Vzc2lvbik7CiB9CiAK
IC0gKE5TQXJyYXk8X1dLQXR0YWNobWVudCAqPiAqKWluc2VydGVkQXR0YWNobWVudHMKQEAgLTcw
Nyw3ICs3MTMsNyBAQCAtIChCT09MKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZvY3Vz
U2hvdWxkU3RhcnRJbnB1dFNlc3Npb246KGlkIDxfV0tGb2N1cwogCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0SW5wdXRTZXNzaW9uOihpZCA8X1dLRm9ybUlu
cHV0U2Vzc2lvbj4paW5wdXRTZXNzaW9uCiB7Ci0gICAgX2lzRG9uZVdhaXRpbmdGb3JJbnB1dFNl
c3Npb24gPSB0cnVlOworICAgIF9oYXNTdGFydGVkSW5wdXRTZXNzaW9uID0gdHJ1ZTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXggYjg0ZDk0NWU4YmQ1NmZmNDYx
ZDIwMDE4ODY1NTM3NDRlZDA4ZTZhZi4uZjdiZDkzOThkZjM5ZDViMWE5MzU4MDQ4Yzg4MzkxYzAz
ZGYwMmYwYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCkBAIC04Myw2ICs4Myw3IEBA
IFdURl9FWFRFUk5fQ19FTkQKIEBvcHRpb25hbAogLSAodm9pZClfcHJlc2VydmVGb2N1c1dpdGhU
b2tlbjooaWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuIGRlc3RydWN0aXZlbHk6
KEJPT0wpZGVzdHJ1Y3RpdmVseTsKIC0gKEJPT0wpX3Jlc3RvcmVGb2N1c1dpdGhUb2tlbjooaWQg
PE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuOworLSAodm9pZClfY2xlYXJUb2tlbjoo
aWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+KXRva2VuOwogQGVuZAogCiBAaW50ZXJmYWNl
IE5TVVJMICgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>