<?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>226426</bug_id>
          
          <creation_ts>2021-05-29 15:50:57 -0700</creation_ts>
          <short_desc>[iOS] UI process crashes when deallocating WKWebView in a script message handler during an active touch event</short_desc>
          <delta_ts>2021-06-16 13:26:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>ajuma</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>huangturen2007</cc>
    
    <cc>kwstasna</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765142</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-29 15:50:57 -0700</bug_when>
    <thetext>rdar://75425319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765143</commentid>
    <comment_count>1</comment_count>
      <attachid>430114</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-29 16:14:28 -0700</bug_when>
    <thetext>Created attachment 430114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765178</commentid>
    <comment_count>2</comment_count>
      <attachid>430114</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-29 22:22:25 -0700</bug_when>
    <thetext>Comment on attachment 430114
Patch

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

&gt; Source/WebKit/ChangeLog:22
&gt; +        This is because the async replay block inside `WebPageProxy::handlePreventableTouchEvent()` strongly captures a
&gt; +        reference to the `WebPageProxy`, thus keeping it alive; however, the `WebPageProxy`&apos;s weak pointer to the page
&gt; +        client is nulled out, which causes `WebPageProxy::pageClient()` to crash with a null dereference.
&gt; +
&gt; +        To fix this, we weakly capture `WebPageProxy` instead and return early if it has already been destroyed by the
&gt; +        time we process the completion handler. Note that it&apos;s unnecessary to call into `doneDeferringTouch(Start|End)`
&gt; +        to unblock any deferred gestures here, because the process of destroying the content view will call
&gt; +        `-cleanUpInteraction` and remove all deferring gestures from the view, regardless of whether they&apos;re still in
&gt; +        Possible state.

This doesn’t seem like it would fix the problem described above reliably. All we need for the crash to happen again is for someone to keep WebPageProxy alive by holding a ref to it after WebPageProxy’s weak pointer to the page client is null.

To fix the problem described above, we need to check the page client for null, not the WebPageProxy.

I don’t think this indirect fix is nearly as good. However, the idea that we should only capture a weak reference seems good in and of itself. It’s just insufficient to fix the &quot;web page proxy could outlive the page client&quot; issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765208</commentid>
    <comment_count>3</comment_count>
      <attachid>430114</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-30 07:59:31 -0700</bug_when>
    <thetext>Comment on attachment 430114
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:22
&gt;&gt; +        Possible state.
&gt; 
&gt; This doesn’t seem like it would fix the problem described above reliably. All we need for the crash to happen again is for someone to keep WebPageProxy alive by holding a ref to it after WebPageProxy’s weak pointer to the page client is null.
&gt; 
&gt; To fix the problem described above, we need to check the page client for null, not the WebPageProxy.
&gt; 
&gt; I don’t think this indirect fix is nearly as good. However, the idea that we should only capture a weak reference seems good in and of itself. It’s just insufficient to fix the &quot;web page proxy could outlive the page client&quot; issue.

Makes sense — I&apos;ll keep the weak capture, but add a null check for `m_pageClient` as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765209</commentid>
    <comment_count>4</comment_count>
      <attachid>430135</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-30 08:04:58 -0700</bug_when>
    <thetext>Created attachment 430135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765217</commentid>
    <comment_count>5</comment_count>
      <attachid>430135</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-30 10:55:26 -0700</bug_when>
    <thetext>Comment on attachment 430135
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3141
&gt; +            if (!m_pageClient)
&gt; +                return;

I understand why we skip the calls to the page client if it’s null. Very mechanical and direct.

It’s less clear to me why it’s good to skip the call to didReceiveEvent. The reason is that it apparently depends on a non-null page client, and also that all the things it does are unimportant if the page client has already been destroyed.

I am starting to get the impression that there are a lot of calls to pageClient() that are just hoping they are never called after the underlying page has been destroyed, and none of them have a solid guarantee this is the case. Thus this problem is not specific to this particular async reply. For example, take the didReceiveEvent function itself. If it does any calls out to the app that is using WebKit, the perhaps that app can cause the page to be destroyed partway through that function. If so, a check at the top of the function isn’t good enough.

I think there’s a relatively deep problem with this class making assumptions about destruction not happening at an inopportune time. This is probably fixable, but not with changes that are just local to this function.

The patch is OK as is. I also think we are seeing that WebPageProxy’s assumptions about the WebCore::Page lifetime underlying it are flawed, and we could fix this up more completely so it doesn’t bite us in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765218</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-30 10:56:05 -0700</bug_when>
    <thetext>&gt; and none of them have a solid guarantee

and many of them do not have a solid guarantee</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765220</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-30 11:20:10 -0700</bug_when>
    <thetext>Thanks for the review!

Yeah, it wasn&apos;t clear to me exactly when it&apos;s safe to assume the existence of m_pageClient inside WebPageProxy — it looks like there are only two other places that are robust to a null PageClient in WebPageProxy at the moment. After a bit of archaeology, it looks like m_pageClient was turned into a WeakPtr in trac.webkit.org/r235903, which suggests that the WebPageProxy wasn&apos;t originally intended to outlive its PageClient, as it was previously just a PageClient&amp;. From code inspection, the only way this could happen is if the WebPageProxy is kept alive via strong reference (as was done here prior to the fix).

&gt; It’s less clear to me why it’s good to skip the call to didReceiveEvent.

That&apos;s true — there isn&apos;t really a compelling reason for this, since didReceiveEvent() does not require a non-null m_pageClient in the case where we&apos;ve handled a touch event. I will move the null check down by 1 line (i.e. after the didReceiveEvent() call) before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765221</commentid>
    <comment_count>8</comment_count>
      <attachid>430138</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-30 11:23:31 -0700</bug_when>
    <thetext>Created attachment 430138
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765222</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-30 11:38:13 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; From code inspection, the only way this could happen is
&gt; if the WebPageProxy is kept alive via strong reference

OK, but it’s normal for a reference-counted object to be kept alive via a reference. If for this class, it’s not normal, then the right thing to do could be to remove the reference counting from WebPageProxy and use a single owning pointer and WeakPtr instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765234</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-30 12:19:03 -0700</bug_when>
    <thetext>Committed r278254 (238291@main): &lt;https://commits.webkit.org/238291@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430138.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768907</commentid>
    <comment_count>11</comment_count>
    <who name="ma">huangturen2007</who>
    <bug_when>2021-06-11 04:03:48 -0700</bug_when>
    <thetext>Dear 

I found that it still crash even though my codes releated to messageHandlers have been removed. it really happened with message handlers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768926</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-11 07:25:30 -0700</bug_when>
    <thetext>(In reply to ma from comment #11)
&gt; Dear 
&gt; 
&gt; I found that it still crash even though my codes releated to messageHandlers
&gt; have been removed. it really happened with message handlers?

Hi,

If you&apos;re seeing crashes underneath the WebKit framework, I suggest that you file a Bugzilla bug with a crash report (and, if possible, a simple test app as well and/or repro steps).

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769720</commentid>
    <comment_count>13</comment_count>
    <who name="Konstantinos Natsios">kwstasna</who>
    <bug_when>2021-06-15 01:07:23 -0700</bug_when>
    <thetext>Is this patch going live in the next iOS version?
If so how can we deal with the crashes that we currently have in iOS 15?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769820</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-15 09:02:41 -0700</bug_when>
    <thetext>(In reply to Konstantinos Natsios from comment #13)
&gt; Is this patch going live in the next iOS version?

Yes. This fix is included in the iOS 15 developer beta.

&gt; If so how can we deal with the crashes that we currently have in iOS 15?

I’m not sure I understand the question.

If you are seeing crashes you could report the bugs. As Wenson mentioned, to have the highest chance people will understand and be able to fix the bug from your report, we will want a crash report, a simple test app, and steps to reproduce.

Please don’t assume that any crash you see is this same bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770355</commentid>
    <comment_count>15</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2021-06-16 13:26:26 -0700</bug_when>
    <thetext>*** Bug 227088 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430114</attachid>
            <date>2021-05-29 16:14:28 -0700</date>
            <delta_ts>2021-05-30 08:04:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226426-20210529161428.patch</filename>
            <type>text/plain</type>
            <size>20280</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3ZDI2YTI4M2QwOTVkZjM4
OWJkNmFjNGI1NWRlNTlmMDlhMjhhMzcuLjU4OTFmNjE2ZTU5MzYwMDJiMDQwOGU0NGEzNzcxMjcy
NmYyZjBhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDUtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBjcmFzaGVzIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBpbiBhIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgZHVyaW5nIGFuIGFjdGl2ZSB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDI2CisgICAgICAgIHJkYXI6Ly83NTQy
NTMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0
J3MgcG9zc2libGUgZm9yIHRoZSBVSSBwcm9jZXNzIHRvIGNyYXNoIHVwb24gYmVpbmcgbm90aWZp
ZWQgdGhhdCBhc3luY2hyb25vdXMsIGFjdGl2ZSB0b3VjaCBldmVudHMgaGF2ZSBiZWVuCisgICAg
ICAgIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzIHZpYSB0aGUgYXN5bmMgSVBDIHJlcGxheSBi
bG9jayBpbiBgV2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAuIFRo
aXMKKyAgICAgICAgaGFwcGVucyBpZiB0aGUgY2xpZW50IHBvc3RzIGEgbWVzc2FnZSBmcm9tIHRo
ZSB3ZWIgcHJvY2VzcyB0byBVSSBwcm9jZXNzIHdoaWxlIGhhbmRsaW5nIGFuIGFjdGl2ZSB0b3Vj
aCBldmVudAorICAgICAgICBhbmQgZGVhbGxvY2F0ZXMgdGhlIFdLV2ViVmlldyBjdXJyZW50bHkg
aGFuZGxpbmcgdGhlIHRvdWNoIGV2ZW50IGluIHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgor
CisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgYXN5bmMgcmVwbGF5IGJsb2NrIGluc2lkZSBg
V2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAgc3Ryb25nbHkgY2Fw
dHVyZXMgYQorICAgICAgICByZWZlcmVuY2UgdG8gdGhlIGBXZWJQYWdlUHJveHlgLCB0aHVzIGtl
ZXBpbmcgaXQgYWxpdmU7IGhvd2V2ZXIsIHRoZSBgV2ViUGFnZVByb3h5YCdzIHdlYWsgcG9pbnRl
ciB0byB0aGUgcGFnZQorICAgICAgICBjbGllbnQgaXMgbnVsbGVkIG91dCwgd2hpY2ggY2F1c2Vz
IGBXZWJQYWdlUHJveHk6OnBhZ2VDbGllbnQoKWAgdG8gY3Jhc2ggd2l0aCBhIG51bGwgZGVyZWZl
cmVuY2UuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIHdlYWtseSBjYXB0dXJlIGBXZWJQYWdl
UHJveHlgIGluc3RlYWQgYW5kIHJldHVybiBlYXJseSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGRl
c3Ryb3llZCBieSB0aGUKKyAgICAgICAgdGltZSB3ZSBwcm9jZXNzIHRoZSBjb21wbGV0aW9uIGhh
bmRsZXIuIE5vdGUgdGhhdCBpdCdzIHVubmVjZXNzYXJ5IHRvIGNhbGwgaW50byBgZG9uZURlZmVy
cmluZ1RvdWNoKFN0YXJ0fEVuZClgCisgICAgICAgIHRvIHVuYmxvY2sgYW55IGRlZmVycmVkIGdl
c3R1cmVzIGhlcmUsIGJlY2F1c2UgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyB0aGUgY29udGVu
dCB2aWV3IHdpbGwgY2FsbAorICAgICAgICBgLWNsZWFuVXBJbnRlcmFjdGlvbmAgYW5kIHJlbW92
ZSBhbGwgZGVmZXJyaW5nIGdlc3R1cmVzIGZyb20gdGhlIHZpZXcsIHJlZ2FyZGxlc3Mgb2Ygd2hl
dGhlciB0aGV5J3JlIHN0aWxsIGluCisgICAgICAgIFBvc3NpYmxlIHN0YXRlLgorCisgICAgICAg
IFRlc3Q6IFRvdWNoRXZlbnRUZXN0cy5EZXN0cm95V2ViVmlld1doaWxlSGFuZGxpbmdUb3VjaEVu
ZAorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlUHJldmVudGFibGVUb3VjaEV2ZW50KToKKwogMjAyMS0w
NS0yOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgcHJvY2VzcyB0ZXJtaW5hdGVzIHdoZW4gYXR0ZW1wdGluZyB0byBsb2cgaW4gb24gYmFua2lk
Lm5vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhZmQ3NjI3
YzkwMDdjNzQ0ZDYyNTAwN2UxNTJhNmY2MWFjMWZiZGQyLi5jYTkzNDYyZTVhZGYxYjEyYTA0MzFl
YWZkMWQyZjEzNTI5ZjI1NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTMxMTgsNyArMzExOCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlUHJl
dmVudGFibGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICBp
ZiAoaXNUb3VjaEVuZCkKICAgICAgICAgICAgICsrbV9oYW5kbGluZ1ByZXZlbnRhYmxlVG91Y2hF
bmRDb3VudDsKIAotICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkV2ZW50RGlz
cGF0Y2hlcjo6VG91Y2hFdmVudChtX3dlYlBhZ2VJRCwgZXZlbnQpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBldmVudF0gKGJvb2wgaGFuZGxlZCkgeworICAgICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6VG91Y2hFdmVudCht
X3dlYlBhZ2VJRCwgZXZlbnQpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IGV2ZW50XSAoYm9vbCBoYW5kbGVkKSB7CisgICAgICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVk
VGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGJvb2wgZGlkRmlu
aXNoRGVmZXJyaW5nVG91Y2hTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgQVNTRVJUX0lNUExJ
RVMoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaFN0YXJ0LCBtX2hhbmRsaW5nUHJldmVu
dGFibGVUb3VjaFN0YXJ0Q291bnQpOwogICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBX
ZWJFdmVudDo6VG91Y2hTdGFydCAmJiBtX2hhbmRsaW5nUHJldmVudGFibGVUb3VjaFN0YXJ0Q291
bnQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZWEyNjc2NTdmZDcxNDNmMjAyNzE1ZmE5ZmY5NjcwZjEwYWM0ZjVlZS4uMmRjZDllMjljNDdlYzJm
YzJjMGE0MjNkNDZjYWI2Mjg4MmUyOWRlMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA1LTI5ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVJIHByb2Nl
c3MgY3Jhc2hlcyB3aGVuIGRlYWxsb2NhdGluZyBXS1dlYlZpZXcgaW4gYSBzY3JpcHQgbWVzc2Fn
ZSBoYW5kbGVyIGR1cmluZyBhbiBhY3RpdmUgdG91Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQyNgorICAgICAgICByZGFyOi8vNzU0
MjUzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBuZXcgQVBJIHRlc3QgdGhhdCBleGVyY2lzZXMgdGhlIGNyYXNoLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVG91Y2hFdmVudFRlc3RzLm1tOiBBZGRl
ZC4KKyAgICAgICAgKC1bVG91Y2hFdmVudFNjcmlwdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50
Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplcl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6dXBkYXRlU2ltdWxhdGVkVG91Y2hFdmVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpz
aW11bGF0ZWRUb3VjaEV2ZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL2FjdGl2ZS10b3VjaC1ldmVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMjEtMDUtMjggIFpoaWZlaSBGYW5nICA8emhpZmVp
X2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEVzY2FwZSAkIG9ubHkgd2hlbiBydW4g
d2l0aCBTU0gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzNiZDk4ZmFkNzUwNjRjM2RlNDY3
ZWJjNTdlZjYxNjBhOGYxNTBiYS4uNDRjZmNkY2U3MTliZGQ2N2VkMWM5NjhlODE1ODNiYmFhOGMz
MmY4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjksNiArMTIyOSw4IEBACiAJCUY0
OTk5MkM2MjQ4REFCRkQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk5OTJDNTI0OERB
QkU0MDAwMzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0bWwgKi87IH07CiAJCUY0QTMyRUM0MUYw
NUYzODUwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEEzMkVDMzFGMDVGMzc4MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rpb24tb2Zm
c2NyZWVuLmh0bWwgKi87IH07CiAJCUY0QTMyRUNCMUYwNjQzMzcwMDQ3QzU0NCAvKiBjb250ZW50
ZWRpdGFibGUtaW4taWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRBMzJFQ0ExRjA2NDJGNDAwNDdDNTQ0IC8qIGNvbnRlbnRl
ZGl0YWJsZS1pbi1pZnJhbWUuaHRtbCAqLzsgfTsKKwkJRjRBN0NFNzgyNjYyRDZFODAwMjI4Njg1
IC8qIFRvdWNoRXZlbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0QTdDRTc3MjY2MkQ2RTgwMDIyODY4NSAvKiBUb3VjaEV2ZW50VGVzdHMu
bW0gKi87IH07CisJCUY0QTdDRTdBMjY2MkQ4NkMwMDIyODY4NSAvKiBhY3RpdmUtdG91Y2gtZXZl
bnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRBN0NFNzkyNjYyRDgzRTAwMjI4Njg1IC8qIGFjdGl2ZS10b3VjaC1ldmVudHMuaHRt
bCAqLzsgfTsKIAkJRjRBOTIwMkYxRkVFMzRFOTAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0bWwgKi87IH07CiAJ
CUY0QUI1NzhBMUY2NTE2NTQwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QUI1
Nzg5MUY2NTE2NEIwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sICovOyB9Owog
CQlGNEFEMTgzODI1RUQ3OTE1MDBCMUExOUYgLyogRmxvYXRRdWFkVGVzdHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRBRDE4MzcyNUVENzkxNTAw
QjFBMTlGIC8qIEZsb2F0UXVhZFRlc3RzLmNwcCAqLzsgfTsKQEAgLTEzNTMsNiArMTM1NSw3IEBA
CiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQk1NUE4MTgwMDIxODEwMjIxMDAwNEEzOUEgLyogNDAweDQw
MC1ncmVlbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAw
N0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJRjRBN0NFN0EyNjYyRDg2QzAwMjI4Njg1IC8qIGFjdGl2ZS10b3VjaC1ldmVudHMuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3MjVDM0VGMzIyMDU4QTVCMDA3QzM2RkMgLyogQWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQkxQzJCODE4NzFDODkyNUEwMDBBNTUyOUYgLyogQWhlbS50dGYgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNDZDMUVBOTgyNTc1ODgyMDAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCkBAIC0zMDY5LDYgKzMwNzIsOCBAQAogCQlGNDk5OTJDNTI0OERBQkU0MDAw
MzQxNjcgLyogb3ZlcmZsb3ctaGlkZGVuLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAib3ZlcmZsb3ctaGlkZGVuLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEEzMkVDMzFGMDVGMzc4MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rpb24tb2Zm
c2NyZWVuLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rpb24tb2Zmc2Ny
ZWVuLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEEzMkVDQTFGMDY0MkY0
MDA0N0M1NDQgLyogY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNv
bnRlbnRlZGl0YWJsZS1pbi1pZnJhbWUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0QTdDRTc3MjY2MkQ2RTgwMDIyODY4NSAvKiBUb3VjaEV2ZW50VGVzdHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBUb3VjaEV2ZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0QTdDRTc5MjY2MkQ4M0UwMDIyODY4NSAvKiBhY3RpdmUtdG91Y2gtZXZlbnRz
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFwcGxlLWRhdGEt
dXJsLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXBwbGUtZGF0YS11cmwuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QUI1Nzg5MUY2NTE2NEIwMERCMERB
MSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEFEMTgzNzI1RUQ3OTE1MDBCMUExOUYgLyogRmxvYXRRdWFkVGVzdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmxvYXRRdWFkVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzgzMSw2ICszODM2LDcgQEAKIAkJCQlGNDUwMzNGNDIwNkJFQzk1MDA5MzUxQ0Ug
LyogVGV4dEF1dG9zaXppbmdCb29zdC5tbSAqLywKIAkJCQlGNDk0QjM2OTI2MzEyMDc4MDA2MEEz
MTAgLyogVGV4dFNlcnZpY2VzVGVzdHMubW0gKi8sCiAJCQkJMUMyNERFRUMyNjMwMDFERTAwNDUw
RDA3IC8qIFRleHRTdHlsZUZvbnRTaXplLm1tICovLAorCQkJCUY0QTdDRTc3MjY2MkQ2RTgwMDIy
ODY4NSAvKiBUb3VjaEV2ZW50VGVzdHMubW0gKi8sCiAJCQkJRjQ2MEY2NzQyNjE0REUyRjAwNjRG
MkI2IC8qIFVJRm9jdXNUZXN0cy5tbSAqLywKIAkJCQlGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUg
LyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi8sCiAJCQkJRjQwMkY1NkIyM0VDQzJGQjAwODY1NTQ5
IC8qIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbC5tbSAqLywKQEAgLTQxODQsNiArNDE5MCw3
IEBACiAJCUExQzRGQjZGMUJBQ0NFRkEwMDM3NDJEMCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0QTdDRTc5MjY2MkQ4M0UwMDIy
ODY4NSAvKiBhY3RpdmUtdG91Y2gtZXZlbnRzLmh0bWwgKi8sCiAJCQkJMEYxNkJFRDcyMzA0QTFE
MTAwQjRBMTY3IC8qIGNvbXBvc2l0ZWQuaHRtbCAqLywKIAkJCQlDRURBMTI0MDI0MzdDOUVBMDBD
MjhBOUUgLyogZWRpdGFibGUtcmVnaW9uLWNvbXBvc2l0ZWQtYW5kLW5vbi1jb21wb3NpdGVkLW92
ZXJsYXAuaHRtbCAqLywKIAkJCQk3MUU4OEM0MzI0QjUzM0VDMDA2NjUxNjAgLyogaW1nLXdpdGgt
YmFzZTY0LXVybC5odG1sICovLApAQCAtNTc2MSw2ICs1NzY4LDcgQEAKIAkJCQlDMjJGQTMyQjIy
OEY4NzA4MDA5RDc5ODggLyogVGV4dFdpZHRoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
REQxQTQxMUE5MjAwNDQ3QzRDIC8qIFRpbWVSYW5nZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0UwQkQxRDBBNjUwQzAwRkVCQ0YzIC8qIFRvcENvbnRlbnRJbnNldC5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUY0QTdDRTc4MjY2MkQ2RTgwMDIyODY4NSAvKiBUb3VjaEV2ZW50VGVzdHMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMzFBNDExQTdFMDA0NDdDNEMgLyogVHlwaW5nU3R5
bGVDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3MTUyQjc4MjFERDRFOEQwMDBDMzdDQSAv
KiBVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjQw
QjRFMUY0Qjk4RDMwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Ub3VjaEV2ZW50VGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Ub3VjaEV2ZW50VGVzdHMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc2OWNkMzMwOWEzZGExNDgyNjJjOGQwM2Q2NDQ2OTYyOTg5YmFmNgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1RvdWNoRXZlbnRUZXN0cy5t
bQpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCisKKyNpbXBvcnQgIkluc3RhbmNlTWV0aG9kU3dp
enpsZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2
aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJV
SUtpdFNQSS5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFVJVmll
dyAoV0tDb250ZW50VmlldykKKy0gKHZvaWQpX3dlYlRvdWNoRXZlbnRzUmVjb2duaXplZDooVUlX
ZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXI7CitAZW5k
CisKK3N0YXRpYyBXS1dlYlZpZXcgKmdsb2JhbFdlYlZpZXcgPSBuaWw7CisKK0BpbnRlcmZhY2Ug
VG91Y2hFdmVudFNjcmlwdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3Q8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRvdWNoRXZlbnRTY3JpcHRNZXNzYWdl
SGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENv
bnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBpZiAoW21lc3NhZ2UuYm9keSBpc0Vx
dWFsVG9TdHJpbmc6QCJ0b3VjaGVuZCJdKSB7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgLy8gVGhpcyBAYXV0b3JlbGVhc2Vwb29sIGVuc3VyZXMgdGhhdCB0aGUgY29u
dGVudCB2aWV3IGlzIGFsc28gZGVhbGxvY2F0ZWQgdXBvbiByZWxlYXNpbmcgdGhlIHdlYiB2aWV3
LgorICAgICAgICAgICAgW2dsb2JhbFdlYlZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAg
ICAgICAgICBbZ2xvYmFsV2ViVmlldyByZWxlYXNlXTsKKyAgICAgICAgICAgIGdsb2JhbFdlYlZp
ZXcgPSBuaWw7CisgICAgICAgIH0KKyAgICB9Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXS1dl
YlZpZXcgKFRvdWNoRXZlbnRUZXN0cykKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICp0b3VjaEV2ZW50R2VzdHVyZVJlY29n
bml6ZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRvdWNoRXZlbnRUZXN0
cykKKworLSAoVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopdG91Y2hFdmVudEdl
c3R1cmVSZWNvZ25pemVyCit7CisgICAgZm9yIChVSUdlc3R1cmVSZWNvZ25pemVyICpnZXN0dXJl
UmVjb2duaXplciBpbiBzZWxmLnRleHRJbnB1dENvbnRlbnRWaWV3Lmdlc3R1cmVSZWNvZ25pemVy
cykgeworICAgICAgICBpZiAoW2dlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6VUlXZWJU
b3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyLmNsYXNzXSkKKyAgICAgICAgICAgIHJldHVybiAo
VUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXI7Cisg
ICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgX1VJV2ViVG91Y2hQb2ludCBnbG9iYWxUb3VjaFBvaW50IHsgQ0dQb2lu
dFplcm8sIENHUG9pbnRaZXJvLCAxMDAsIFVJVG91Y2hQaGFzZUJlZ2FuLCAxLCAwLCAwLCAwLCBV
SVdlYlRvdWNoUG9pbnRUeXBlRGlyZWN0IH07CitzdGF0aWMgX1VJV2ViVG91Y2hFdmVudCBnbG9i
YWxUb3VjaEV2ZW50IHsgVUlXZWJUb3VjaEV2ZW50VG91Y2hCZWdpbiwgQ0FDdXJyZW50TWVkaWFU
aW1lKCksIENHUG9pbnRaZXJvLCBDR1BvaW50WmVybywgMSwgMCwgZmFsc2UsICZnbG9iYWxUb3Vj
aFBvaW50LCAxLCB0cnVlIH07CitzdGF0aWMgdm9pZCB1cGRhdGVTaW11bGF0ZWRUb3VjaEV2ZW50
KENHUG9pbnQgbG9jYXRpb24sIFVJVG91Y2hQaGFzZSBwaGFzZSkKK3sKKyAgICBnbG9iYWxUb3Vj
aFBvaW50LmxvY2F0aW9uSW5TY3JlZW5Db29yZGluYXRlcyA9IGxvY2F0aW9uOworICAgIGdsb2Jh
bFRvdWNoUG9pbnQubG9jYXRpb25JbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBsb2NhdGlvbjsKKyAg
ICBnbG9iYWxUb3VjaEV2ZW50LmxvY2F0aW9uSW5TY3JlZW5Db29yZGluYXRlcyA9IGxvY2F0aW9u
OworICAgIGdsb2JhbFRvdWNoRXZlbnQubG9jYXRpb25JbkRvY3VtZW50Q29vcmRpbmF0ZXMgPSBs
b2NhdGlvbjsKKyAgICBnbG9iYWxUb3VjaFBvaW50LnBoYXNlID0gcGhhc2U7CisgICAgc3dpdGNo
IChwaGFzZSkgeworICAgIGNhc2UgVUlUb3VjaFBoYXNlQmVnYW46CisgICAgICAgIGdsb2JhbFRv
dWNoRXZlbnQudHlwZSA9IFVJV2ViVG91Y2hFdmVudFRvdWNoQmVnaW47CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVUlUb3VjaFBoYXNlTW92ZWQ6CisgICAgICAgIGdsb2JhbFRvdWNoRXZlbnQu
dHlwZSA9IFVJV2ViVG91Y2hFdmVudFRvdWNoQ2hhbmdlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFVJVG91Y2hQaGFzZUVuZGVkOgorICAgICAgICBnbG9iYWxUb3VjaEV2ZW50LnR5cGUgPSBV
SVdlYlRvdWNoRXZlbnRUb3VjaEVuZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVSVRvdWNo
UGhhc2VDYW5jZWxsZWQ6CisgICAgICAgIGdsb2JhbFRvdWNoRXZlbnQudHlwZSA9IFVJV2ViVG91
Y2hFdmVudFRvdWNoQ2FuY2VsOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBjb25zdCBfVUlXZWJUb3VjaEV2ZW50KiBzaW11
bGF0ZWRUb3VjaEV2ZW50KGlkLCBTRUwpCit7CisgICAgcmV0dXJuICZnbG9iYWxUb3VjaEV2ZW50
OworfQorCitURVNUKFRvdWNoRXZlbnRUZXN0cywgRGVzdHJveVdlYlZpZXdXaGlsZUhhbmRsaW5n
VG91Y2hFbmQpCit7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBsYXN0VG91Y2hFdmVudFN3
aXp6bGVyIHsgVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyLmNsYXNzLCBAc2VsZWN0
b3IobGFzdFRvdWNoRXZlbnQpLCByZWludGVycHJldF9jYXN0PElNUD4oc2ltdWxhdGVkVG91Y2hF
dmVudCkgfTsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1RvdWNoRXZlbnRTY3JpcHRNZXNzYWdlSGFuZGxlciBuZXddKTsKKyAg
ICAgICAgYXV0byBjb250cm9sbGVyID0gYWRvcHROUyhbW1dLVXNlckNvbnRlbnRDb250cm9sbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtjb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVzZXJDb250ZW50Q29udHJv
bGxlcjpjb250cm9sbGVyLmdldCgpXTsKKworICAgICAgICBnbG9iYWxXZWJWaWV3ID0gW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAgICAgICAgYXV0byBob3N0V2luZG93
ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXSk7CisgICAgICAgIFtob3N0V2luZG93IHNldEhpZGRlbjpOT107CisgICAg
ICAgIFtob3N0V2luZG93IGFkZFN1YnZpZXc6Z2xvYmFsV2ViVmlld107CisKKyAgICAgICAgW2ds
b2JhbFdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNC
dW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAImFjdGl2ZS10b3VjaC1ldmVudHMiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXV07CisgICAgICAgIFtnbG9iYWxXZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKworICAgICAgICB1cGRhdGVTaW11bGF0ZWRUb3VjaEV2ZW50KENHUG9pbnRNYWtl
KDEwMCwgMTAwKSwgVUlUb3VjaFBoYXNlQmVnYW4pOworICAgICAgICBbW2dsb2JhbFdlYlZpZXcg
dGV4dElucHV0Q29udGVudFZpZXddIF93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6Z2xvYmFsV2Vi
Vmlldy50b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXJdOworCisgICAgICAgIHVwZGF0ZVNpbXVs
YXRlZFRvdWNoRXZlbnQoQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBVSVRvdWNoUGhhc2VFbmRlZCk7
CisgICAgICAgIFtbZ2xvYmFsV2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gX3dlYlRvdWNo
RXZlbnRzUmVjb2duaXplZDpnbG9iYWxXZWJWaWV3LnRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXpl
cl07CisgICAgfQorCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9KTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL2FjdGl2
ZS10b3VjaC1ldmVudHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL2FjdGl2
ZS10b3VjaC1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDJmOWIzMjgzNjRkOGQ4MmUxNTFmMTNh
Y2NjNGI2ZDgxZGMwZTExCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9
ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorPGhlYWQ+
Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEw
MCU7CisgICAgbWFyZ2luOiAwOworfQorCisjdGFyZ2V0IHsKKyAgICB3aWR0aDogMTAwJTsKKyAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgYmFja2dyb3VuZDogdG9tYXRvOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlv
biBoYW5kbGVUb3VjaEV2ZW50KGV2ZW50KSB7CisgICAgd2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTsKK30KKworbGV0IHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKK3RhcmdldC5hZGRFdmVudExpc3RlbmVy
KCJ0b3VjaHN0YXJ0IiwgaGFuZGxlVG91Y2hFdmVudCk7Cit0YXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2htb3ZlIiwgaGFuZGxlVG91Y2hFdmVudCk7Cit0YXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cigidG91Y2hjYW5jZWwiLCBoYW5kbGVUb3VjaEV2ZW50KTsKK3RhcmdldC5hZGRFdmVudExpc3Rl
bmVyKCJ0b3VjaGVuZCIsIGhhbmRsZVRvdWNoRXZlbnQpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IDBl
NTIxNjY1YWZhMDViYmU3ZjFmMTQ3YmMwNzdhMzM2OGFhYjI5MjMuLmUzZDAxMDFjMjI3Zjk4OTk2
OTcxMDlkM2Q3MGE0Y2E4NWM1YjU0OTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oCkBAIC00OCw2ICs0OCw5IEBACiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tXZWJW
aWV3IChUZXN0V2ViS2l0QVBJKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJ
bnB1dEludGVybmFsLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJV0tJbnRlcmFjdGlvblZp
ZXdQcm90b2NvbCwgVUlUZXh0SW5wdXRUb2tlbml6ZXI+ICp0ZXh0SW5wdXRDb250ZW50VmlldzsK
KyNlbmRpZgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqY29udGVu
dHNBc1N0cmluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1N0
cmluZyAqPiAqdGFnc0luQm9keTsKIC0gKHZvaWQpbG9hZFRlc3RQYWdlTmFtZWQ6KE5TU3RyaW5n
ICopcGFnZU5hbWU7CkBAIC0xMTIsNyArMTE1LDYgQEAKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0
V0tXZWJWaWV3IChJT1NPbmx5KQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSVZp
ZXcgPFVJVGV4dElucHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRJbnRlcm5hbCwgVUlUZXh0SW5wdXRN
dWx0aURvY3VtZW50LCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFVJVGV4dElucHV0VG9r
ZW5pemVyPiAqdGV4dElucHV0Q29udGVudFZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFJldGFpblB0cjxOU0FycmF5PiBzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0aW9u
VXBkYXRlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1JlY3QgY2FyZXRWaWV3
UmVjdEluQ29udGVudENvb3JkaW5hdGVzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU0FycmF5PE5TVmFsdWUgKj4gKnNlbGVjdGlvblZpZXdSZWN0c0luQ29udGVudENvb3JkaW5h
dGVzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDQ1
MzkwN2VhNTMzNDMyNTMyODYyMjY0Mzg0OTdmZmRjNmZhYmZhMmUuLjZmM2ZjYmI2YjNlYjNkOGY1
M2I4N2Y0OTgwMmIwMTFiNjcxYzBjOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KQEAgLTEzMSw2ICsxMzEsMTUgQEAgLSAoQk9PTClfc3luY2hyb25vdXNs
eUV4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmlu
ZwogICAgIHJldHVybiBzdWNjZXNzOwogfQogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwor
LSAoVUlWaWV3IDxVSVRleHRJbnB1dFByaXZhdGUsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudD4g
Kil0ZXh0SW5wdXRDb250ZW50VmlldworeworICAgIHJldHVybiAoVUlWaWV3IDxVSVRleHRJbnB1
dFByaXZhdGUsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudD4gKilbc2VsZiB2YWx1ZUZvcktleTpA
Il9jdXJyZW50Q29udGVudFZpZXciXTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKIC0gKE5TU3RyaW5nICopY29udGVudHNBc1N0cmluZwogewogICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CkBAIC02ODUsMTEgKzY5NCw2IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZh
U2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOihOU1N0cmluZyAqKXNjcmlwdAog
ICAgIH0KIH0KIAotLSAoVUlWaWV3IDxVSVRleHRJbnB1dFByaXZhdGUsIFVJVGV4dElucHV0TXVs
dGlEb2N1bWVudD4gKil0ZXh0SW5wdXRDb250ZW50VmlldwotewotICAgIHJldHVybiAoVUlWaWV3
IDxVSVRleHRJbnB1dFByaXZhdGUsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudD4gKilbc2VsZiB2
YWx1ZUZvcktleTpAIl9jdXJyZW50Q29udGVudFZpZXciXTsKLX0KLQogLSAoUmV0YWluUHRyPE5T
QXJyYXk+KXNlbGVjdGlvblJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUKIHsKICAgICBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9VSUtpdFNQSS5oCmluZGV4IGZmYjlhNDkwNTM4MmY0NjEzODZmZWYyMmY5NWQyYTUyYTk2NGQ5
YjcuLmU2ZmYxNjNlYjE2YzllMmMyYWIzNjIyZWVhYzRjMjMxOGU0MmRjOWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVUlLaXRTUEkuaApAQCAtNDcsNiArNDcsNyBAQAogI2ltcG9ydCA8VUlLaXQvVUlW
aWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdLVGV4dEludGVyYWN0
aW9uQXNzaXN0YW50Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYkZvcm1BY2Nlc3NvcnkuaD4KKyNp
bXBvcnQgPFVJS2l0L1VJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplci5oPgogI2ltcG9y
dCA8VUlLaXQvX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbi5oPgogCiBJR05PUkVf
V0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430135</attachid>
            <date>2021-05-30 08:04:58 -0700</date>
            <delta_ts>2021-05-30 10:55:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226426-20210530080457.patch</filename>
            <type>text/plain</type>
            <size>20816</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3ZDI2YTI4M2QwOTVkZjM4
OWJkNmFjNGI1NWRlNTlmMDlhMjhhMzcuLmE2M2RhMTkzYzMzNThhMTA3NzYwZWY2YmM1ZTFlMDI0
YmM1NzdjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDUtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBjcmFzaGVzIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBpbiBhIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgZHVyaW5nIGFuIGFjdGl2ZSB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDI2CisgICAgICAgIHJkYXI6Ly83NTQy
NTMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0
J3MgcG9zc2libGUgZm9yIHRoZSBVSSBwcm9jZXNzIHRvIGNyYXNoIHVwb24gYmVpbmcgbm90aWZp
ZWQgdGhhdCBhc3luY2hyb25vdXMsIGFjdGl2ZSB0b3VjaCBldmVudHMgaGF2ZSBiZWVuCisgICAg
ICAgIGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzIHZpYSB0aGUgYXN5bmMgSVBDIHJlcGxheSBi
bG9jayBpbiBgV2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAuIFRo
aXMKKyAgICAgICAgaGFwcGVucyBpZiB0aGUgY2xpZW50IHBvc3RzIGEgbWVzc2FnZSBmcm9tIHRo
ZSB3ZWIgcHJvY2VzcyB0byBVSSBwcm9jZXNzIHdoaWxlIGhhbmRsaW5nIGFuIGFjdGl2ZSB0b3Vj
aCBldmVudAorICAgICAgICBhbmQgZGVhbGxvY2F0ZXMgdGhlIFdLV2ViVmlldyBjdXJyZW50bHkg
aGFuZGxpbmcgdGhlIHRvdWNoIGV2ZW50IGluIHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgor
CisgICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgYXN5bmMgcmVwbGF5IGJsb2NrIGluc2lkZSBg
V2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAgc3Ryb25nbHkgY2Fw
dHVyZXMgYQorICAgICAgICByZWZlcmVuY2UgdG8gdGhlIGBXZWJQYWdlUHJveHlgLCB0aHVzIGtl
ZXBpbmcgaXQgYWxpdmU7IGhvd2V2ZXIsIHRoZSBgV2ViUGFnZVByb3h5YCdzIHdlYWsgcG9pbnRl
ciB0byB0aGUgcGFnZQorICAgICAgICBjbGllbnQgaXMgbnVsbGVkIG91dCwgd2hpY2ggY2F1c2Vz
IGBXZWJQYWdlUHJveHk6OnBhZ2VDbGllbnQoKWAgdG8gY3Jhc2ggd2l0aCBhIG51bGwgZGVyZWZl
cmVuY2UuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIHdlYWtseSBjYXB0dXJlIGBXZWJQYWdl
UHJveHlgIGluc3RlYWQgYW5kIHJldHVybiBlYXJseSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGRl
c3Ryb3llZCBieSB0aGUKKyAgICAgICAgdGltZSB3ZSBwcm9jZXNzIHRoZSBjb21wbGV0aW9uIGhh
bmRsZXIsIGFuZCBhbHNvIGFkZCBhIG51bGwgY2hlY2sgZm9yIGBtX3BhZ2VDbGllbnRgIGJlZm9y
ZSBhdHRlbXB0aW5nIHRvIGNhbGwKKyAgICAgICAgaW50byBpdC4gTm90ZSB0aGF0IGl0J3MgdW5u
ZWNlc3NhcnkgdG8gY2FsbCBpbnRvIGBkb25lRGVmZXJyaW5nVG91Y2goU3RhcnR8RW5kKWAgdG8g
dW5ibG9jayBhbnkgZGVmZXJyZWQKKyAgICAgICAgZ2VzdHVyZXMgaGVyZSwgYmVjYXVzZSB0aGUg
cHJvY2VzcyBvZiBkZXN0cm95aW5nIHRoZSBjb250ZW50IHZpZXcgd2lsbCBjYWxsIGAtY2xlYW5V
cEludGVyYWN0aW9uYCBhbmQgcmVtb3ZlIGFsbAorICAgICAgICBkZWZlcnJpbmcgZ2VzdHVyZXMg
ZnJvbSB0aGUgdmlldywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkncmUgc3RpbGwgaW4gUG9z
c2libGUgc3RhdGUuCisKKyAgICAgICAgVGVzdDogVG91Y2hFdmVudFRlc3RzLkRlc3Ryb3lXZWJW
aWV3V2hpbGVIYW5kbGluZ1RvdWNoRW5kCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJs
ZVRvdWNoRXZlbnQpOgorCiAyMDIxLTA1LTI4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBwcm9jZXNzIHRlcm1pbmF0ZXMgd2hlbiBhdHRlbXB0
aW5nIHRvIGxvZyBpbiBvbiBiYW5raWQubm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGFmZDc2MjdjOTAwN2M3NDRkNjI1MDA3ZTE1MmE2ZjYxYWMxZmJkZDIu
LjBmMmQ3YmIwMDg3OTkzZjFkOGNjYTYxYTU1Nzg5MmUyNzgzMzQ5NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzExOCw3ICszMTE4LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudCYgZXZlbnQpCiAgICAgICAgIGlmIChpc1RvdWNoRW5kKQogICAgICAgICAgICAgKyttX2hh
bmRsaW5nUHJldmVudGFibGVUb3VjaEVuZENvdW50OwogCi0gICAgICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFnZUlELCBl
dmVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGV2ZW50XSAoYm9v
bCBoYW5kbGVkKSB7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6RXZlbnRE
aXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFnZUlELCBldmVudCksIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZXZlbnRdIChib29sIGhhbmRsZWQpIHsKKyAgICAgICAg
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICAgICAgYm9vbCBkaWRGaW5pc2hEZWZlcnJpbmdUb3VjaFN0YXJ0ID0gZmFsc2U7CiAg
ICAgICAgICAgICBBU1NFUlRfSU1QTElFUyhldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OlRvdWNo
U3RhcnQsIG1faGFuZGxpbmdQcmV2ZW50YWJsZVRvdWNoU3RhcnRDb3VudCk7CiAgICAgICAgICAg
ICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaFN0YXJ0ICYmIG1faGFuZGxpbmdQ
cmV2ZW50YWJsZVRvdWNoU3RhcnRDb3VudCkKQEAgLTMxMzMsNiArMzEzNyw5IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVu
dCYgZXZlbnQpCiAgICAgICAgICAgICBpZiAoIWlzSGFuZGxpbmdQcmV2ZW50YWJsZVRvdWNoU3Rh
cnQoKSkKICAgICAgICAgICAgICAgICBtX2hhbmRsZWRTeW5jaHJvbm91c1RvdWNoRXZlbnRXaGls
ZURpc3BhdGNoaW5nUHJldmVudGFibGVUb3VjaFN0YXJ0ID0gZmFsc2U7CiAKKyAgICAgICAgICAg
IGlmICghbV9wYWdlQ2xpZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAg
ICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZE9yRmFpbGVkV2l0aEVycm9y
KTsKICAgICAgICAgICAgIHBhZ2VDbGllbnQoKS5kb25lV2l0aFRvdWNoRXZlbnQoZXZlbnQsIGhh
bmRsZWRPckZhaWxlZFdpdGhFcnJvcik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYTI2NzY1N2ZkNzE0M2YyMDI3MTVmYTlmZjk2NzBmMTBh
YzRmNWVlLi4yZGNkOWUyOWM0N2VjMmZjMmMwYTQyM2Q0NmNhYjYyODgyZTI5ZGUwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMjEtMDUtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU10gVUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2Vi
VmlldyBpbiBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgZHVyaW5nIGFuIGFjdGl2ZSB0b3VjaCBl
dmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
NDI2CisgICAgICAgIHJkYXI6Ly83NTQyNTMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGV4ZXJjaXNlcyB0
aGUgY3Jhc2guCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9U
b3VjaEV2ZW50VGVzdHMubW06IEFkZGVkLgorICAgICAgICAoLVtUb3VjaEV2ZW50U2NyaXB0TWVz
c2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyXSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1cGRhdGVTaW11bGF0ZWRUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRlZFRvdWNoRXZlbnQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvYWN0
aXZlLXRvdWNoLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10p
OgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSk6IERlbGV0
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwogMjAyMS0wNS0y
OCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RXNjYXBlICQgb25seSB3aGVuIHJ1biB3aXRoIFNTSApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjM2JkOThmYWQ3NTA2NGMzZGU0NjdlYmM1N2VmNjE2MGE4ZjE1MGJhLi40NGNmY2RjZTcxOWJk
ZDY3ZWQxYzk2OGU4MTU4M2JiYWE4YzMyZjhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTIyOSw2ICsxMjI5LDggQEAKIAkJRjQ5OTkyQzYyNDhEQUJGRDAwMDM0MTY3IC8qIG92ZXJmbG93
LWhpZGRlbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0OTk5MkM1MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRt
bCAqLzsgfTsKIAkJRjRBMzJFQzQxRjA1RjM4NTAwNDdDNTQ0IC8qIGRyYWdzdGFydC1jaGFuZ2Ut
c2VsZWN0aW9uLW9mZnNjcmVlbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3Rh
cnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKIAkJRjRBMzJFQ0IxRjA2
NDMzNzAwNDdDNTQ0IC8qIGNvbnRlbnRlZGl0YWJsZS1pbi1pZnJhbWUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEEzMkVDQTFGMDY0
MkY0MDA0N0M1NDQgLyogY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sICovOyB9OworCQlG
NEE3Q0U3ODI2NjJENkU4MDAyMjg2ODUgLyogVG91Y2hFdmVudFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRBN0NFNzcyNjYyRDZFODAwMjI4
Njg1IC8qIFRvdWNoRXZlbnRUZXN0cy5tbSAqLzsgfTsKKwkJRjRBN0NFN0EyNjYyRDg2QzAwMjI4
Njg1IC8qIGFjdGl2ZS10b3VjaC1ldmVudHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEE3Q0U3OTI2NjJEODNFMDAyMjg2ODUgLyog
YWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sICovOyB9OwogCQlGNEE5MjAyRjFGRUUzNEU5MDBGNTk1
OTAgLyogYXBwbGUtZGF0YS11cmwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEE5MjAyRTFGRUUzNEM4MDBGNTk1OTAgLyogYXBwbGUt
ZGF0YS11cmwuaHRtbCAqLzsgfTsKIAkJRjRBQjU3OEExRjY1MTY1NDAwREIwREExIC8qIGN1c3Rv
bS1kcmFnZ2FibGUtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjRBQjU3ODkxRjY1MTY0QjAwREIwREExIC8qIGN1c3RvbS1kcmFn
Z2FibGUtZGl2Lmh0bWwgKi87IH07CiAJCUY0QUQxODM4MjVFRDc5MTUwMEIxQTE5RiAvKiBGbG9h
dFF1YWRUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEFEMTgzNzI1RUQ3OTE1MDBCMUExOUYgLyogRmxvYXRRdWFkVGVzdHMuY3BwICovOyB9
OwpAQCAtMTM1Myw2ICsxMzU1LDcgQEAKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyog
MTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU1QTgxODAwMjE4
MTAyMjEwMDA0QTM5QSAvKiA0MDB4NDAwLWdyZWVuLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0TW91c2UuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlGNEE3Q0U3QTI2NjJEODZDMDAyMjg2ODUgLyogYWN0
aXZlLXRvdWNoLWV2ZW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTcyNUMzRUYz
MjIwNThBNUIwMDdDMzZGQyAvKiBBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVt
LnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk0NkMxRUE5ODI1NzU4ODIwMDA1RTQwOUUg
LyogYWxlcnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTMwNjksNiArMzA3Miw4IEBA
CiAJCUY0OTk5MkM1MjQ4REFCRTQwMDAzNDE2NyAvKiBvdmVyZmxvdy1oaWRkZW4uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvdmVyZmxvdy1oaWRkZW4uaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3Rh
cnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJkcmFnc3RhcnQt
Y2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0QTMyRUNBMUYwNjQyRjQwMDQ3QzU0NCAvKiBjb250ZW50ZWRpdGFibGUtaW4taWZy
YW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRBN0NFNzcyNjYyRDZFODAwMjI4Njg1IC8qIFRv
dWNoRXZlbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRvdWNoRXZlbnRUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRBN0NFNzkyNjYyRDgzRTAwMjI4Njg1
IC8qIGFjdGl2ZS10b3VjaC1ldmVudHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhY3RpdmUtdG91Y2gtZXZl
bnRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEE5MjAyRTFGRUUzNEM4
MDBGNTk1OTAgLyogYXBwbGUtZGF0YS11cmwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJhcHBsZS1kYXRhLXVybC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjRBQjU3ODkxRjY1MTY0QjAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QUQxODM3MjVFRDc5MTUwMEIxQTE5RiAvKiBG
bG9hdFF1YWRUZXN0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFF1YWRUZXN0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODMxLDYgKzM4MzYsNyBAQAogCQkJCUY0
NTAzM0Y0MjA2QkVDOTUwMDkzNTFDRSAvKiBUZXh0QXV0b3NpemluZ0Jvb3N0Lm1tICovLAogCQkJ
CUY0OTRCMzY5MjYzMTIwNzgwMDYwQTMxMCAvKiBUZXh0U2VydmljZXNUZXN0cy5tbSAqLywKIAkJ
CQkxQzI0REVFQzI2MzAwMURFMDA0NTBEMDcgLyogVGV4dFN0eWxlRm9udFNpemUubW0gKi8sCisJ
CQkJRjRBN0NFNzcyNjYyRDZFODAwMjI4Njg1IC8qIFRvdWNoRXZlbnRUZXN0cy5tbSAqLywKIAkJ
CQlGNDYwRjY3NDI2MTRERTJGMDA2NEYyQjYgLyogVUlGb2N1c1Rlc3RzLm1tICovLAogCQkJCUY0
Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLywKIAkJCQlG
NDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1t
ICovLApAQCAtNDE4NCw2ICs0MTkwLDcgQEAKIAkJQTFDNEZCNkYxQkFDQ0VGQTAwMzc0MkQwIC8q
IFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRjRBN0NFNzkyNjYyRDgzRTAwMjI4Njg1IC8qIGFjdGl2ZS10b3VjaC1ldmVudHMuaHRtbCAq
LywKIAkJCQkwRjE2QkVENzIzMDRBMUQxMDBCNEExNjcgLyogY29tcG9zaXRlZC5odG1sICovLAog
CQkJCUNFREExMjQwMjQzN0M5RUEwMEMyOEE5RSAvKiBlZGl0YWJsZS1yZWdpb24tY29tcG9zaXRl
ZC1hbmQtbm9uLWNvbXBvc2l0ZWQtb3ZlcmxhcC5odG1sICovLAogCQkJCTcxRTg4QzQzMjRCNTMz
RUMwMDY2NTE2MCAvKiBpbWctd2l0aC1iYXNlNjQtdXJsLmh0bWwgKi8sCkBAIC01NzYxLDYgKzU3
NjgsNyBAQAogCQkJCUMyMkZBMzJCMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0V2lkdGgubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VERDFBNDExQTkyMDA0NDdDNEMgLyogVGltZVJhbmdlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRDFEMEE2NTBDMDBGRUJDRjMgLyogVG9wQ29u
dGVudEluc2V0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRBN0NFNzgyNjYyRDZFODAwMjI4Njg1
IC8qIFRvdWNoRXZlbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQzMUE0MTFB
N0UwMDQ0N0M0QyAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcx
NTJCNzgyMURENEU4RDAwMEMzN0NBIC8qIFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNCNDBCNEUxRjRCOThEMzAwN0RDN0I5IC8qIFVJRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1RvdWNoRXZlbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1Rv
dWNoRXZlbnRUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzY5Y2QzMzA5YTNkYTE0ODI2MmM4ZDAzZDY0
NDY5NjI5ODliYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvVG91Y2hFdmVudFRlc3RzLm1tCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKKworI2lt
cG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK0BpbnRlcmZhY2UgVUlWaWV3IChXS0NvbnRlbnRWaWV3KQorLSAodm9pZClfd2ViVG91
Y2hFdmVudHNSZWNvZ25pemVkOihVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIgKiln
ZXN0dXJlUmVjb2duaXplcjsKK0BlbmQKKworc3RhdGljIFdLV2ViVmlldyAqZ2xvYmFsV2ViVmll
dyA9IG5pbDsKKworQGludGVyZmFjZSBUb3VjaEV2ZW50U2NyaXB0TWVzc2FnZUhhbmRsZXIgOiBO
U09iamVjdDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
VG91Y2hFdmVudFNjcmlwdE1lc3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250
cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBk
aWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAg
IGlmIChbbWVzc2FnZS5ib2R5IGlzRXF1YWxUb1N0cmluZzpAInRvdWNoZW5kIl0pIHsKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICAvLyBUaGlzIEBhdXRvcmVsZWFzZXBv
b2wgZW5zdXJlcyB0aGF0IHRoZSBjb250ZW50IHZpZXcgaXMgYWxzbyBkZWFsbG9jYXRlZCB1cG9u
IHJlbGVhc2luZyB0aGUgd2ViIHZpZXcuCisgICAgICAgICAgICBbZ2xvYmFsV2ViVmlldyByZW1v
dmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgICAgIFtnbG9iYWxXZWJWaWV3IHJlbGVhc2VdOwor
ICAgICAgICAgICAgZ2xvYmFsV2ViVmlldyA9IG5pbDsKKyAgICAgICAgfQorICAgIH0KK30KKwor
QGVuZAorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoVG91Y2hFdmVudFRlc3RzKQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIg
KnRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdL
V2ViVmlldyAoVG91Y2hFdmVudFRlc3RzKQorCistIChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJl
Y29nbml6ZXIgKil0b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBmb3IgKFVJR2Vz
dHVyZVJlY29nbml6ZXIgKmdlc3R1cmVSZWNvZ25pemVyIGluIHNlbGYudGV4dElucHV0Q29udGVu
dFZpZXcuZ2VzdHVyZVJlY29nbml6ZXJzKSB7CisgICAgICAgIGlmIChbZ2VzdHVyZVJlY29nbml6
ZXIgaXNLaW5kT2ZDbGFzczpVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIuY2xhc3Nd
KQorICAgICAgICAgICAgcmV0dXJuIChVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIg
KilnZXN0dXJlUmVjb2duaXplcjsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBfVUlXZWJUb3VjaFBvaW50IGds
b2JhbFRvdWNoUG9pbnQgeyBDR1BvaW50WmVybywgQ0dQb2ludFplcm8sIDEwMCwgVUlUb3VjaFBo
YXNlQmVnYW4sIDEsIDAsIDAsIDAsIFVJV2ViVG91Y2hQb2ludFR5cGVEaXJlY3QgfTsKK3N0YXRp
YyBfVUlXZWJUb3VjaEV2ZW50IGdsb2JhbFRvdWNoRXZlbnQgeyBVSVdlYlRvdWNoRXZlbnRUb3Vj
aEJlZ2luLCBDQUN1cnJlbnRNZWRpYVRpbWUoKSwgQ0dQb2ludFplcm8sIENHUG9pbnRaZXJvLCAx
LCAwLCBmYWxzZSwgJmdsb2JhbFRvdWNoUG9pbnQsIDEsIHRydWUgfTsKK3N0YXRpYyB2b2lkIHVw
ZGF0ZVNpbXVsYXRlZFRvdWNoRXZlbnQoQ0dQb2ludCBsb2NhdGlvbiwgVUlUb3VjaFBoYXNlIHBo
YXNlKQoreworICAgIGdsb2JhbFRvdWNoUG9pbnQubG9jYXRpb25JblNjcmVlbkNvb3JkaW5hdGVz
ID0gbG9jYXRpb247CisgICAgZ2xvYmFsVG91Y2hQb2ludC5sb2NhdGlvbkluRG9jdW1lbnRDb29y
ZGluYXRlcyA9IGxvY2F0aW9uOworICAgIGdsb2JhbFRvdWNoRXZlbnQubG9jYXRpb25JblNjcmVl
bkNvb3JkaW5hdGVzID0gbG9jYXRpb247CisgICAgZ2xvYmFsVG91Y2hFdmVudC5sb2NhdGlvbklu
RG9jdW1lbnRDb29yZGluYXRlcyA9IGxvY2F0aW9uOworICAgIGdsb2JhbFRvdWNoUG9pbnQucGhh
c2UgPSBwaGFzZTsKKyAgICBzd2l0Y2ggKHBoYXNlKSB7CisgICAgY2FzZSBVSVRvdWNoUGhhc2VC
ZWdhbjoKKyAgICAgICAgZ2xvYmFsVG91Y2hFdmVudC50eXBlID0gVUlXZWJUb3VjaEV2ZW50VG91
Y2hCZWdpbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVSVRvdWNoUGhhc2VNb3ZlZDoKKyAg
ICAgICAgZ2xvYmFsVG91Y2hFdmVudC50eXBlID0gVUlXZWJUb3VjaEV2ZW50VG91Y2hDaGFuZ2U7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVUlUb3VjaFBoYXNlRW5kZWQ6CisgICAgICAgIGds
b2JhbFRvdWNoRXZlbnQudHlwZSA9IFVJV2ViVG91Y2hFdmVudFRvdWNoRW5kOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFVJVG91Y2hQaGFzZUNhbmNlbGxlZDoKKyAgICAgICAgZ2xvYmFsVG91
Y2hFdmVudC50eXBlID0gVUlXZWJUb3VjaEV2ZW50VG91Y2hDYW5jZWw7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIGNvbnN0
IF9VSVdlYlRvdWNoRXZlbnQqIHNpbXVsYXRlZFRvdWNoRXZlbnQoaWQsIFNFTCkKK3sKKyAgICBy
ZXR1cm4gJmdsb2JhbFRvdWNoRXZlbnQ7Cit9CisKK1RFU1QoVG91Y2hFdmVudFRlc3RzLCBEZXN0
cm95V2ViVmlld1doaWxlSGFuZGxpbmdUb3VjaEVuZCkKK3sKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIGxhc3RUb3VjaEV2ZW50U3dpenpsZXIgeyBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJl
Y29nbml6ZXIuY2xhc3MsIEBzZWxlY3RvcihsYXN0VG91Y2hFdmVudCksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzaW11bGF0ZWRUb3VjaEV2ZW50KSB9OworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbVG91Y2hFdmVudFNjcmlwdE1l
c3NhZ2VIYW5kbGVyIG5ld10pOworICAgICAgICBhdXRvIGNvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbnRyb2xs
ZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRl
c3RIYW5kbGVyIl07CisKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRp
b24gc2V0VXNlckNvbnRlbnRDb250cm9sbGVyOmNvbnRyb2xsZXIuZ2V0KCldOworCisgICAgICAg
IGdsb2JhbFdlYlZpZXcgPSBbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOwor
ICAgICAgICBhdXRvIGhvc3RXaW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICAgICAgW2hvc3RXaW5k
b3cgc2V0SGlkZGVuOk5PXTsKKyAgICAgICAgW2hvc3RXaW5kb3cgYWRkU3VidmlldzpnbG9iYWxX
ZWJWaWV3XTsKKworICAgICAgICBbZ2xvYmFsV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU0J1bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAi
YWN0aXZlLXRvdWNoLWV2ZW50cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKyAgICAgICAgW2dsb2JhbFdlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgICAgIHVwZGF0ZVNpbXVsYXRl
ZFRvdWNoRXZlbnQoQ0dQb2ludE1ha2UoMTAwLCAxMDApLCBVSVRvdWNoUGhhc2VCZWdhbik7Cisg
ICAgICAgIFtbZ2xvYmFsV2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gX3dlYlRvdWNoRXZl
bnRzUmVjb2duaXplZDpnbG9iYWxXZWJWaWV3LnRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplcl07
CisKKyAgICAgICAgdXBkYXRlU2ltdWxhdGVkVG91Y2hFdmVudChDR1BvaW50TWFrZSgxMDAsIDEw
MCksIFVJVG91Y2hQaGFzZUVuZGVkKTsKKyAgICAgICAgW1tnbG9iYWxXZWJWaWV3IHRleHRJbnB1
dENvbnRlbnRWaWV3XSBfd2ViVG91Y2hFdmVudHNSZWNvZ25pemVkOmdsb2JhbFdlYlZpZXcudG91
Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyXTsKKyAgICB9CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2Vu
ZGlmIC8vIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgw
MmY5YjMyODM2NGQ4ZDgyZTE1MWYxM2FjY2M0YjZkODFkYzBlMTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9hY3RpdmUtdG91Y2gtZXZlbnRzLmh0bWwK
QEAgLTAsMCArMSwzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdXNl
ci1zY2FsYWJsZT1ubyI+Cis8aGVhZD4KKzxzdHlsZT4KK2JvZHksIGh0bWwgeworICAgIHdpZHRo
OiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBtYXJnaW46IDA7Cit9CisKKyN0YXJnZXQg
eworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBiYWNrZ3JvdW5kOiB0
b21hdG87Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0YXJnZXQiPjwv
ZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpIHsKKyAgICB3
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LnR5cGUp
OworfQorCitsZXQgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwor
dGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBoYW5kbGVUb3VjaEV2ZW50KTsK
K3RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBoYW5kbGVUb3VjaEV2ZW50KTsK
K3RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsIGhhbmRsZVRvdWNoRXZlbnQp
OwordGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgaGFuZGxlVG91Y2hFdmVudCk7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmgKaW5kZXggMGU1MjE2NjVhZmEwNWJiZTdmMWYxNDdiYzA3N2EzMzY4YWFi
MjkyMy4uZTNkMDEwMWMyMjdmOTg5OTY5NzEwOWQzZDcwYTRjYTg1YzViNTQ5NSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTQ4LDYgKzQ4LDkgQEAKIEBl
bmQKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFRlc3RXZWJLaXRBUEkpCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlWaWV3IDxVSVRl
eHRJbnB1dFByaXZhdGUsIFVJVGV4dElucHV0SW50ZXJuYWwsIFVJVGV4dElucHV0TXVsdGlEb2N1
bWVudCwgVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLCBVSVRleHRJbnB1dFRva2VuaXplcj4g
KnRleHRJbnB1dENvbnRlbnRWaWV3OworI2VuZGlmCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TU3RyaW5nICpjb250ZW50c0FzU3RyaW5nOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU0FycmF5PE5TU3RyaW5nICo+ICp0YWdzSW5Cb2R5OwogLSAodm9pZClsb2Fk
VGVzdFBhZ2VOYW1lZDooTlNTdHJpbmcgKilwYWdlTmFtZTsKQEAgLTExMiw3ICsxMTUsNiBAQAog
QGVuZAogCiBAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcgKElPU09ubHkpCi1AcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1
dEludGVybmFsLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQsIFVJV0tJbnRlcmFjdGlvblZpZXdQ
cm90b2NvbCwgVUlUZXh0SW5wdXRUb2tlbml6ZXI+ICp0ZXh0SW5wdXRDb250ZW50VmlldzsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUmV0YWluUHRyPE5TQXJyYXk+IHNlbGVjdGlv
blJlY3RzQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIENHUmVjdCBjYXJldFZpZXdSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXM7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNWYWx1ZSAqPiAqc2VsZWN0aW9uVmll
d1JlY3RzSW5Db250ZW50Q29vcmRpbmF0ZXM7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KaW5kZXggNDUzOTA3ZWE1MzM0MzI1MzI4NjIyNjQzODQ5N2ZmZGM2ZmFi
ZmEyZS4uNmYzZmNiYjZiM2ViM2Q4ZjUzYjg3ZjQ5ODAyYjAxMWI2NzFjMGM4ZSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMTMxLDYgKzEzMSwxNSBA
QCAtIChCT09MKV9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNv
bW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5nCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCistIChVSVZpZXcgPFVJVGV4dElucHV0UHJpdmF0ZSwgVUlU
ZXh0SW5wdXRNdWx0aURvY3VtZW50PiAqKXRleHRJbnB1dENvbnRlbnRWaWV3Cit7CisgICAgcmV0
dXJuIChVSVZpZXcgPFVJVGV4dElucHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRNdWx0aURvY3VtZW50
PiAqKVtzZWxmIHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRDb250ZW50VmlldyJdOworfQorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogLSAoTlNTdHJpbmcgKiljb250ZW50c0FzU3Ry
aW5nCiB7CiAgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKQEAgLTY4NSwxMSArNjk0LDYg
QEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFu
Z2U6KE5TU3RyaW5nICopc2NyaXB0CiAgICAgfQogfQogCi0tIChVSVZpZXcgPFVJVGV4dElucHV0
UHJpdmF0ZSwgVUlUZXh0SW5wdXRNdWx0aURvY3VtZW50PiAqKXRleHRJbnB1dENvbnRlbnRWaWV3
Ci17Ci0gICAgcmV0dXJuIChVSVZpZXcgPFVJVGV4dElucHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRN
dWx0aURvY3VtZW50PiAqKVtzZWxmIHZhbHVlRm9yS2V5OkAiX2N1cnJlbnRDb250ZW50VmlldyJd
OwotfQotCiAtIChSZXRhaW5QdHI8TlNBcnJheT4pc2VsZWN0aW9uUmVjdHNBZnRlclByZXNlbnRh
dGlvblVwZGF0ZQogewogICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiByZXRhaW5lZFNlbGYg
PSBzZWxmOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKaW5kZXggZmZiOWE0OTA1MzgyZjQ2
MTM4NmZlZjIyZjk1ZDJhNTJhOTY0ZDliNy4uZTZmZjE2M2ViMTZjOWUyYzJhYjM2MjJlZWFjNGMy
MzE4ZTQyZGM5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEku
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L1VJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
V2ViRm9ybUFjY2Vzc29yeS5oPgorI2ltcG9ydCA8VUlLaXQvVUlXZWJUb3VjaEV2ZW50c0dlc3R1
cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtpdC9fVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVU
cmFuc2l0aW9uLmg+CiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1l
bnRhdGlvbnMiKQo=
</data>
<flag name="review"
          id="451501"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430138</attachid>
            <date>2021-05-30 11:23:31 -0700</date>
            <delta_ts>2021-05-30 12:19:04 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-226426-20210530112330.patch</filename>
            <type>text/plain</type>
            <size>20872</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI4MWIxMWNhMzZhNTIxY2Qz
ODVkYmI1ZTdlMjQ4NmU2Y2E4ZDA5MmUuLmIwMDYyNmQwOTE4Nzc5NWNmZDVlNDA4YmE3NWI2NjQ4
MWMyMDMzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDUtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2Vz
cyBjcmFzaGVzIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBpbiBhIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgZHVyaW5nIGFuIGFjdGl2ZSB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDI2CisgICAgICAgIHJkYXI6Ly83NTQy
NTMxOQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEl0J3Mg
cG9zc2libGUgZm9yIHRoZSBVSSBwcm9jZXNzIHRvIGNyYXNoIHVwb24gYmVpbmcgbm90aWZpZWQg
dGhhdCBhc3luY2hyb25vdXMsIGFjdGl2ZSB0b3VjaCBldmVudHMgaGF2ZSBiZWVuCisgICAgICAg
IGhhbmRsZWQgaW4gdGhlIHdlYiBwcm9jZXNzIHZpYSB0aGUgYXN5bmMgSVBDIHJlcGxheSBibG9j
ayBpbiBgV2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAuIFRoaXMK
KyAgICAgICAgaGFwcGVucyBpZiB0aGUgY2xpZW50IHBvc3RzIGEgbWVzc2FnZSBmcm9tIHRoZSB3
ZWIgcHJvY2VzcyB0byBVSSBwcm9jZXNzIHdoaWxlIGhhbmRsaW5nIGFuIGFjdGl2ZSB0b3VjaCBl
dmVudAorICAgICAgICBhbmQgZGVhbGxvY2F0ZXMgdGhlIFdLV2ViVmlldyBjdXJyZW50bHkgaGFu
ZGxpbmcgdGhlIHRvdWNoIGV2ZW50IGluIHRoZSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyLgorCisg
ICAgICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgYXN5bmMgcmVwbGF5IGJsb2NrIGluc2lkZSBgV2Vi
UGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQoKWAgc3Ryb25nbHkgY2FwdHVy
ZXMgYQorICAgICAgICByZWZlcmVuY2UgdG8gdGhlIGBXZWJQYWdlUHJveHlgLCB0aHVzIGtlZXBp
bmcgaXQgYWxpdmU7IGhvd2V2ZXIsIHRoZSBgV2ViUGFnZVByb3h5YCdzIHdlYWsgcG9pbnRlciB0
byB0aGUgcGFnZQorICAgICAgICBjbGllbnQgaXMgbnVsbGVkIG91dCwgd2hpY2ggY2F1c2VzIGBX
ZWJQYWdlUHJveHk6OnBhZ2VDbGllbnQoKWAgdG8gY3Jhc2ggd2l0aCBhIG51bGwgZGVyZWZlcmVu
Y2UuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIHdlYWtseSBjYXB0dXJlIGBXZWJQYWdlUHJv
eHlgIGluc3RlYWQgYW5kIHJldHVybiBlYXJseSBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ry
b3llZCBieSB0aGUKKyAgICAgICAgdGltZSB3ZSBwcm9jZXNzIHRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIsIGFuZCBhbHNvIGFkZCBhIG51bGwgY2hlY2sgZm9yIGBtX3BhZ2VDbGllbnRgIGJlZm9yZSBh
dHRlbXB0aW5nIHRvIGNhbGwKKyAgICAgICAgaW50byBpdC4gTm90ZSB0aGF0IGl0J3MgdW5uZWNl
c3NhcnkgdG8gY2FsbCBpbnRvIGBkb25lRGVmZXJyaW5nVG91Y2goU3RhcnR8RW5kKWAgdG8gdW5i
bG9jayBhbnkgZGVmZXJyZWQKKyAgICAgICAgZ2VzdHVyZXMgaGVyZSwgYmVjYXVzZSB0aGUgcHJv
Y2VzcyBvZiBkZXN0cm95aW5nIHRoZSBjb250ZW50IHZpZXcgd2lsbCBjYWxsIGAtY2xlYW5VcElu
dGVyYWN0aW9uYCBhbmQgcmVtb3ZlIGFsbAorICAgICAgICBkZWZlcnJpbmcgZ2VzdHVyZXMgZnJv
bSB0aGUgdmlldywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkncmUgc3RpbGwgaW4gUG9zc2li
bGUgc3RhdGUuCisKKyAgICAgICAgVGVzdDogVG91Y2hFdmVudFRlc3RzLkRlc3Ryb3lXZWJWaWV3
V2hpbGVIYW5kbGluZ1RvdWNoRW5kCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRv
dWNoRXZlbnQpOgorCiAyMDIxLTA1LTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgV1RGOjpPcHRpb25hbCBzeW5vbnltIGZvciBzdGQ6Om9wdGlvbmFs
LCB1c2luZyB0aGF0IGNsYXNzIHRlbXBsYXRlIGRpcmVjdGx5IGluc3RlYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGUzZjgwMTQ3MTU2ZjUzN2U3ZDYyYjlm
Y2ZiMjJkMmQyZWE1ZjVkY2EuLmViZTU5Y2JiM2M0ZDE5YjRmMmE3NWEwOWZmYzI2ZjgzOWQ3N2Q2
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzExOCw3
ICszMTE4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZl
bnQoTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIGlmIChpc1RvdWNoRW5kKQog
ICAgICAgICAgICAgKyttX2hhbmRsaW5nUHJldmVudGFibGVUb3VjaEVuZENvdW50OwogCi0gICAg
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2
ZW50KG1fd2ViUGFnZUlELCBldmVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGV2ZW50XSAoYm9vbCBoYW5kbGVkKSB7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50KG1fd2ViUGFnZUlELCBldmVu
dCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgZXZlbnRdIChib29sIGhh
bmRsZWQpIHsKKyAgICAgICAgICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vh
a1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgYm9vbCBkaWRGaW5pc2hEZWZlcnJpbmdUb3Vj
aFN0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBBU1NFUlRfSU1QTElFUyhldmVudC50eXBlKCkg
PT0gV2ViRXZlbnQ6OlRvdWNoU3RhcnQsIG1faGFuZGxpbmdQcmV2ZW50YWJsZVRvdWNoU3RhcnRD
b3VudCk7CiAgICAgICAgICAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpUb3VjaFN0
YXJ0ICYmIG1faGFuZGxpbmdQcmV2ZW50YWJsZVRvdWNoU3RhcnRDb3VudCkKQEAgLTMxMzQsNiAr
MzEzOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVQcmV2ZW50YWJsZVRvdWNoRXZlbnQo
TmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgbV9oYW5kbGVkU3lu
Y2hyb25vdXNUb3VjaEV2ZW50V2hpbGVEaXNwYXRjaGluZ1ByZXZlbnRhYmxlVG91Y2hTdGFydCA9
IGZhbHNlOwogCiAgICAgICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZlbnQudHlwZSgpLCBoYW5k
bGVkT3JGYWlsZWRXaXRoRXJyb3IpOworICAgICAgICAgICAgaWYgKCFtX3BhZ2VDbGllbnQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBwYWdlQ2xpZW50KCkuZG9uZVdp
dGhUb3VjaEV2ZW50KGV2ZW50LCBoYW5kbGVkT3JGYWlsZWRXaXRoRXJyb3IpOwogCiAgICAgICAg
ICAgICBpZiAoZGlkRmluaXNoRGVmZXJyaW5nVG91Y2hTdGFydCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMmU4YTllOTY2ZDQ3YjY2NjdhZTA5
YmYzZTQwYzMxOWM3ZjZiZmQ2Li4wZGZlYWZkY2ExOTcyZjM5YzI0NDA3NzBiOTIzZDQ4NTQwYzk1
NmY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMjEtMDUtMjkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVUkgcHJvY2VzcyBjcmFzaGVzIHdoZW4gZGVhbGxv
Y2F0aW5nIFdLV2ViVmlldyBpbiBhIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgZHVyaW5nIGFuIGFj
dGl2ZSB0b3VjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2NDI2CisgICAgICAgIHJkYXI6Ly83NTQyNTMxOQorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0aGF0IGV4
ZXJjaXNlcyB0aGUgY3Jhc2guCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9Ub3VjaEV2ZW50VGVzdHMubW06IEFkZGVkLgorICAgICAgICAoLVtUb3VjaEV2ZW50
U2NyaXB0TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3Jp
cHRNZXNzYWdlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdG91Y2hFdmVudEdlc3R1cmVSZWNv
Z25pemVyXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp1cGRhdGVTaW11bGF0ZWRUb3VjaEV2
ZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNpbXVsYXRlZFRvdWNoRXZlbnQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyB0ZXh0SW5wdXRDb250
ZW50Vmlld10pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3
XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaDoKKwog
MjAyMS0wNS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdURjo6T3B0aW9uYWwgc3lub255bSBmb3Igc3RkOjpvcHRpb25hbCwgdXNpbmcgdGhhdCBj
bGFzcyB0ZW1wbGF0ZSBkaXJlY3RseSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGMzYmQ5OGZhZDc1MDY0YzNkZTQ2N2ViYzU3ZWY2MTYwYThmMTUwYmEuLjQ0Y2ZjZGNlNzE5YmRk
NjdlZDFjOTY4ZTgxNTgzYmJhYThjMzJmOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjI5LDYgKzEyMjksOCBAQAogCQlGNDk5OTJDNjI0OERBQkZEMDAwMzQxNjcgLyogb3ZlcmZsb3ct
aGlkZGVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ5OTkyQzUyNDhEQUJFNDAwMDM0MTY3IC8qIG92ZXJmbG93LWhpZGRlbi5odG1s
ICovOyB9OwogCQlGNEEzMkVDNDFGMDVGMzg1MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1z
ZWxlY3Rpb24tb2Zmc2NyZWVuLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRBMzJFQzMxRjA1RjM3ODAwNDdDNTQ0IC8qIGRyYWdzdGFy
dC1jaGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVlbi5odG1sICovOyB9OwogCQlGNEEzMkVDQjFGMDY0
MzM3MDA0N0M1NDQgLyogY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTMyRUNBMUYwNjQy
RjQwMDQ3QzU0NCAvKiBjb250ZW50ZWRpdGFibGUtaW4taWZyYW1lLmh0bWwgKi87IH07CisJCUY0
QTdDRTc4MjY2MkQ2RTgwMDIyODY4NSAvKiBUb3VjaEV2ZW50VGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEE3Q0U3NzI2NjJENkU4MDAyMjg2
ODUgLyogVG91Y2hFdmVudFRlc3RzLm1tICovOyB9OworCQlGNEE3Q0U3QTI2NjJEODZDMDAyMjg2
ODUgLyogYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTdDRTc5MjY2MkQ4M0UwMDIyODY4NSAvKiBh
Y3RpdmUtdG91Y2gtZXZlbnRzLmh0bWwgKi87IH07CiAJCUY0QTkyMDJGMUZFRTM0RTkwMEY1OTU5
MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTkyMDJFMUZFRTM0QzgwMEY1OTU5MCAvKiBhcHBsZS1k
YXRhLXVybC5odG1sICovOyB9OwogCQlGNEFCNTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9t
LWRyYWdnYWJsZS1kaXYuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdn
YWJsZS1kaXYuaHRtbCAqLzsgfTsKIAkJRjRBRDE4MzgyNUVENzkxNTAwQjFBMTlGIC8qIEZsb2F0
UXVhZFRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0QUQxODM3MjVFRDc5MTUwMEIxQTE5RiAvKiBGbG9hdFF1YWRUZXN0cy5jcHAgKi87IH07
CkBAIC0xMzUzLDYgKzEzNTUsNyBAQAogCQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAx
OC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTVBODE4MDAyMTgx
MDIyMTAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0QTdDRTdBMjY2MkQ4NkMwMDIyODY4NSAvKiBhY3Rp
dmUtdG91Y2gtZXZlbnRzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNzI1QzNFRjMy
MjA1OEE1QjAwN0MzNkZDIC8qIEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVBMDAwQTU1MjlGIC8qIEFoZW0u
dHRmIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTQ2QzFFQTk4MjU3NTg4MjAwMDVFNDA5RSAv
KiBhbGVydC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMzA2OSw2ICszMDcyLDggQEAK
IAkJRjQ5OTkyQzUyNDhEQUJFNDAwMDM0MTY3IC8qIG92ZXJmbG93LWhpZGRlbi5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm92ZXJmbG93LWhpZGRlbi5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBMzJFQzMxRjA1RjM3ODAwNDdDNTQ0IC8qIGRyYWdzdGFy
dC1jaGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVlbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImRyYWdzdGFydC1j
aGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVlbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRBMzJFQ0ExRjA2NDJGNDAwNDdDNTQ0IC8qIGNvbnRlbnRlZGl0YWJsZS1pbi1pZnJh
bWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJjb250ZW50ZWRpdGFibGUtaW4taWZyYW1lLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEE3Q0U3NzI2NjJENkU4MDAyMjg2ODUgLyogVG91
Y2hFdmVudFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVG91Y2hFdmVudFRlc3RzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEE3Q0U3OTI2NjJEODNFMDAyMjg2ODUg
LyogYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImFjdGl2ZS10b3VjaC1ldmVu
dHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QTkyMDJFMUZFRTM0Qzgw
MEY1OTU5MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImFwcGxlLWRhdGEtdXJsLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEFCNTc4OTFGNjUxNjRCMDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBRDE4MzcyNUVENzkxNTAwQjFBMTlGIC8qIEZs
b2F0UXVhZFRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UXVhZFRlc3RzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4MzEsNiArMzgzNiw3IEBACiAJCQkJRjQ1
MDMzRjQyMDZCRUM5NTAwOTM1MUNFIC8qIFRleHRBdXRvc2l6aW5nQm9vc3QubW0gKi8sCiAJCQkJ
RjQ5NEIzNjkyNjMxMjA3ODAwNjBBMzEwIC8qIFRleHRTZXJ2aWNlc1Rlc3RzLm1tICovLAogCQkJ
CTFDMjRERUVDMjYzMDAxREUwMDQ1MEQwNyAvKiBUZXh0U3R5bGVGb250U2l6ZS5tbSAqLywKKwkJ
CQlGNEE3Q0U3NzI2NjJENkU4MDAyMjg2ODUgLyogVG91Y2hFdmVudFRlc3RzLm1tICovLAogCQkJ
CUY0NjBGNjc0MjYxNERFMkYwMDY0RjJCNiAvKiBVSUZvY3VzVGVzdHMubW0gKi8sCiAJCQkJRjQ2
ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovLAogCQkJCUY0
MDJGNTZCMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wubW0g
Ki8sCkBAIC00MTg0LDYgKzQxOTAsNyBAQAogCQlBMUM0RkI2RjFCQUNDRUZBMDAzNzQyRDAgLyog
UmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlGNEE3Q0U3OTI2NjJEODNFMDAyMjg2ODUgLyogYWN0aXZlLXRvdWNoLWV2ZW50cy5odG1sICov
LAogCQkJCTBGMTZCRUQ3MjMwNEExRDEwMEI0QTE2NyAvKiBjb21wb3NpdGVkLmh0bWwgKi8sCiAJ
CQkJQ0VEQTEyNDAyNDM3QzlFQTAwQzI4QTlFIC8qIGVkaXRhYmxlLXJlZ2lvbi1jb21wb3NpdGVk
LWFuZC1ub24tY29tcG9zaXRlZC1vdmVybGFwLmh0bWwgKi8sCiAJCQkJNzFFODhDNDMyNEI1MzNF
QzAwNjY1MTYwIC8qIGltZy13aXRoLWJhc2U2NC11cmwuaHRtbCAqLywKQEAgLTU3NjEsNiArNTc2
OCw3IEBACiAJCQkJQzIyRkEzMkIyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRXaWR0aC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUREMUE0MTFBOTIwMDQ0N0M0QyAvKiBUaW1lUmFuZ2VzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJEMUQwQTY1MEMwMEZFQkNGMyAvKiBUb3BDb250
ZW50SW5zZXQubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNEE3Q0U3ODI2NjJENkU4MDAyMjg2ODUg
LyogVG91Y2hFdmVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDMxQTQxMUE3
RTAwNDQ3QzRDIC8qIFR5cGluZ1N0eWxlQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzE1
MkI3ODIxREQ0RThEMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0I0MEI0RTFGNEI5OEQzMDA3REM3QjkgLyogVUlEZWxlZ2F0ZS5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvVG91Y2hFdmVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVG91
Y2hFdmVudFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NjljZDMzMDlhM2RhMTQ4MjYyYzhkMDNkNjQ0
Njk2Mjk4OWJhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9Ub3VjaEV2ZW50VGVzdHMubW0KQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQorCisjaW1w
b3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdL
V2ViVmlldy5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKworQGludGVyZmFjZSBVSVZpZXcgKFdLQ29udGVudFZpZXcpCistICh2b2lkKV93ZWJUb3Vj
aEV2ZW50c1JlY29nbml6ZWQ6KFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyOworQGVuZAorCitzdGF0aWMgV0tXZWJWaWV3ICpnbG9iYWxXZWJWaWV3
ID0gbmlsOworCitAaW50ZXJmYWNlIFRvdWNoRXZlbnRTY3JpcHRNZXNzYWdlSGFuZGxlciA6IE5T
T2JqZWN0PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBU
b3VjaEV2ZW50U2NyaXB0TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2VyQ29udGVudENvbnRy
b2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRp
ZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAg
aWYgKFttZXNzYWdlLmJvZHkgaXNFcXVhbFRvU3RyaW5nOkAidG91Y2hlbmQiXSkgeworICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIC8vIFRoaXMgQGF1dG9yZWxlYXNlcG9v
bCBlbnN1cmVzIHRoYXQgdGhlIGNvbnRlbnQgdmlldyBpcyBhbHNvIGRlYWxsb2NhdGVkIHVwb24g
cmVsZWFzaW5nIHRoZSB3ZWIgdmlldy4KKyAgICAgICAgICAgIFtnbG9iYWxXZWJWaWV3IHJlbW92
ZUZyb21TdXBlcnZpZXddOworICAgICAgICAgICAgW2dsb2JhbFdlYlZpZXcgcmVsZWFzZV07Cisg
ICAgICAgICAgICBnbG9iYWxXZWJWaWV3ID0gbmlsOworICAgICAgICB9CisgICAgfQorfQorCitA
ZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChUb3VjaEV2ZW50VGVzdHMpCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAq
dG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tX
ZWJWaWV3IChUb3VjaEV2ZW50VGVzdHMpCisKKy0gKFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVj
b2duaXplciAqKXRvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplcgoreworICAgIGZvciAoVUlHZXN0
dXJlUmVjb2duaXplciAqZ2VzdHVyZVJlY29nbml6ZXIgaW4gc2VsZi50ZXh0SW5wdXRDb250ZW50
Vmlldy5nZXN0dXJlUmVjb2duaXplcnMpIHsKKyAgICAgICAgaWYgKFtnZXN0dXJlUmVjb2duaXpl
ciBpc0tpbmRPZkNsYXNzOlVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplci5jbGFzc10p
CisgICAgICAgICAgICByZXR1cm4gKFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pemVyOworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitAZW5kCisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIF9VSVdlYlRvdWNoUG9pbnQgZ2xv
YmFsVG91Y2hQb2ludCB7IENHUG9pbnRaZXJvLCBDR1BvaW50WmVybywgMTAwLCBVSVRvdWNoUGhh
c2VCZWdhbiwgMSwgMCwgMCwgMCwgVUlXZWJUb3VjaFBvaW50VHlwZURpcmVjdCB9Oworc3RhdGlj
IF9VSVdlYlRvdWNoRXZlbnQgZ2xvYmFsVG91Y2hFdmVudCB7IFVJV2ViVG91Y2hFdmVudFRvdWNo
QmVnaW4sIENBQ3VycmVudE1lZGlhVGltZSgpLCBDR1BvaW50WmVybywgQ0dQb2ludFplcm8sIDEs
IDAsIGZhbHNlLCAmZ2xvYmFsVG91Y2hQb2ludCwgMSwgdHJ1ZSB9Oworc3RhdGljIHZvaWQgdXBk
YXRlU2ltdWxhdGVkVG91Y2hFdmVudChDR1BvaW50IGxvY2F0aW9uLCBVSVRvdWNoUGhhc2UgcGhh
c2UpCit7CisgICAgZ2xvYmFsVG91Y2hQb2ludC5sb2NhdGlvbkluU2NyZWVuQ29vcmRpbmF0ZXMg
PSBsb2NhdGlvbjsKKyAgICBnbG9iYWxUb3VjaFBvaW50LmxvY2F0aW9uSW5Eb2N1bWVudENvb3Jk
aW5hdGVzID0gbG9jYXRpb247CisgICAgZ2xvYmFsVG91Y2hFdmVudC5sb2NhdGlvbkluU2NyZWVu
Q29vcmRpbmF0ZXMgPSBsb2NhdGlvbjsKKyAgICBnbG9iYWxUb3VjaEV2ZW50LmxvY2F0aW9uSW5E
b2N1bWVudENvb3JkaW5hdGVzID0gbG9jYXRpb247CisgICAgZ2xvYmFsVG91Y2hQb2ludC5waGFz
ZSA9IHBoYXNlOworICAgIHN3aXRjaCAocGhhc2UpIHsKKyAgICBjYXNlIFVJVG91Y2hQaGFzZUJl
Z2FuOgorICAgICAgICBnbG9iYWxUb3VjaEV2ZW50LnR5cGUgPSBVSVdlYlRvdWNoRXZlbnRUb3Vj
aEJlZ2luOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVJVG91Y2hQaGFzZU1vdmVkOgorICAg
ICAgICBnbG9iYWxUb3VjaEV2ZW50LnR5cGUgPSBVSVdlYlRvdWNoRXZlbnRUb3VjaENoYW5nZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVSVRvdWNoUGhhc2VFbmRlZDoKKyAgICAgICAgZ2xv
YmFsVG91Y2hFdmVudC50eXBlID0gVUlXZWJUb3VjaEV2ZW50VG91Y2hFbmQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgVUlUb3VjaFBoYXNlQ2FuY2VsbGVkOgorICAgICAgICBnbG9iYWxUb3Vj
aEV2ZW50LnR5cGUgPSBVSVdlYlRvdWNoRXZlbnRUb3VjaENhbmNlbDsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgY29uc3Qg
X1VJV2ViVG91Y2hFdmVudCogc2ltdWxhdGVkVG91Y2hFdmVudChpZCwgU0VMKQoreworICAgIHJl
dHVybiAmZ2xvYmFsVG91Y2hFdmVudDsKK30KKworVEVTVChUb3VjaEV2ZW50VGVzdHMsIERlc3Ry
b3lXZWJWaWV3V2hpbGVIYW5kbGluZ1RvdWNoRW5kKQoreworICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgbGFzdFRvdWNoRXZlbnRTd2l6emxlciB7IFVJV2ViVG91Y2hFdmVudHNHZXN0dXJlUmVj
b2duaXplci5jbGFzcywgQHNlbGVjdG9yKGxhc3RUb3VjaEV2ZW50KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHNpbXVsYXRlZFRvdWNoRXZlbnQpIH07CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtUb3VjaEV2ZW50U2NyaXB0TWVz
c2FnZUhhbmRsZXIgbmV3XSk7CisgICAgICAgIGF1dG8gY29udHJvbGxlciA9IGFkb3B0TlMoW1tX
S1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgICAgICBbY29udHJvbGxl
ciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBbY29uZmlndXJhdGlv
biBzZXRVc2VyQ29udGVudENvbnRyb2xsZXI6Y29udHJvbGxlci5nZXQoKV07CisKKyAgICAgICAg
Z2xvYmFsV2ViVmlldyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV07Cisg
ICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgICAgICBbaG9zdFdpbmRv
dyBzZXRIaWRkZW46Tk9dOworICAgICAgICBbaG9zdFdpbmRvdyBhZGRTdWJ2aWV3Omdsb2JhbFdl
YlZpZXddOworCisgICAgICAgIFtnbG9iYWxXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TQnVuZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJh
Y3RpdmUtdG91Y2gtZXZlbnRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOworICAgICAgICBbZ2xvYmFsV2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAgICAgdXBkYXRlU2ltdWxhdGVk
VG91Y2hFdmVudChDR1BvaW50TWFrZSgxMDAsIDEwMCksIFVJVG91Y2hQaGFzZUJlZ2FuKTsKKyAg
ICAgICAgW1tnbG9iYWxXZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBfd2ViVG91Y2hFdmVu
dHNSZWNvZ25pemVkOmdsb2JhbFdlYlZpZXcudG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyXTsK
KworICAgICAgICB1cGRhdGVTaW11bGF0ZWRUb3VjaEV2ZW50KENHUG9pbnRNYWtlKDEwMCwgMTAw
KSwgVUlUb3VjaFBoYXNlRW5kZWQpOworICAgICAgICBbW2dsb2JhbFdlYlZpZXcgdGV4dElucHV0
Q29udGVudFZpZXddIF93ZWJUb3VjaEV2ZW50c1JlY29nbml6ZWQ6Z2xvYmFsV2ViVmlldy50b3Vj
aEV2ZW50R2VzdHVyZVJlY29nbml6ZXJdOworICAgIH0KKworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5k
aWYgLy8gRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9hY3RpdmUtdG91Y2gtZXZlbnRzLmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9hY3RpdmUtdG91Y2gtZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAy
ZjliMzI4MzY0ZDhkODJlMTUxZjEzYWNjYzRiNmQ4MWRjMGUxMQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL2FjdGl2ZS10b3VjaC1ldmVudHMuaHRtbApA
QCAtMCwwICsxLDMzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPG1ldGEgbmFtZT0idmll
d3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCB1c2Vy
LXNjYWxhYmxlPW5vIj4KKzxoZWFkPgorPHN0eWxlPgorYm9keSwgaHRtbCB7CisgICAgd2lkdGg6
IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIG1hcmdpbjogMDsKK30KKworI3RhcmdldCB7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGJhY2tncm91bmQ6IHRv
bWF0bzsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRhcmdldCI+PC9k
aXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gaGFuZGxlVG91Y2hFdmVudChldmVudCkgeworICAgIHdl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQudHlwZSk7
Cit9CisKK2xldCB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7Cit0
YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIGhhbmRsZVRvdWNoRXZlbnQpOwor
dGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsIGhhbmRsZVRvdWNoRXZlbnQpOwor
dGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIiwgaGFuZGxlVG91Y2hFdmVudCk7
Cit0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLCBoYW5kbGVUb3VjaEV2ZW50KTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaAppbmRleCAwZTUyMTY2NWFmYTA1YmJlN2YxZjE0N2JjMDc3YTMzNjhhYWIy
OTIzLi5lM2QwMTAxYzIyN2Y5ODk5Njk3MTA5ZDNkNzBhNGNhODVjNWI1NDk1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNDgsNiArNDgsOSBAQAogQGVu
ZAogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoVGVzdFdlYktpdEFQSSkKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSVZpZXcgPFVJVGV4
dElucHV0UHJpdmF0ZSwgVUlUZXh0SW5wdXRJbnRlcm5hbCwgVUlUZXh0SW5wdXRNdWx0aURvY3Vt
ZW50LCBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wsIFVJVGV4dElucHV0VG9rZW5pemVyPiAq
dGV4dElucHV0Q29udGVudFZpZXc7CisjZW5kaWYKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNTdHJpbmcgKmNvbnRlbnRzQXNTdHJpbmc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnRhZ3NJbkJvZHk7CiAtICh2b2lkKWxvYWRU
ZXN0UGFnZU5hbWVkOihOU1N0cmluZyAqKXBhZ2VOYW1lOwpAQCAtMTEyLDcgKzExNSw2IEBACiBA
ZW5kCiAKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoSU9TT25seSkKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgVUlWaWV3IDxVSVRleHRJbnB1dFByaXZhdGUsIFVJVGV4dElucHV0
SW50ZXJuYWwsIFVJVGV4dElucHV0TXVsdGlEb2N1bWVudCwgVUlXS0ludGVyYWN0aW9uVmlld1By
b3RvY29sLCBVSVRleHRJbnB1dFRva2VuaXplcj4gKnRleHRJbnB1dENvbnRlbnRWaWV3OwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBSZXRhaW5QdHI8TlNBcnJheT4gc2VsZWN0aW9u
UmVjdHNBZnRlclByZXNlbnRhdGlvblVwZGF0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQ0dSZWN0IGNhcmV0Vmlld1JlY3RJbkNvbnRlbnRDb29yZGluYXRlczsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1ZhbHVlICo+ICpzZWxlY3Rpb25WaWV3
UmVjdHNJbkNvbnRlbnRDb29yZGluYXRlczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbQppbmRleCA0NTM5MDdlYTUzMzQzMjUzMjg2MjI2NDM4NDk3ZmZkYzZmYWJm
YTJlLi42ZjNmY2JiNmIzZWIzZDhmNTNiODdmNDk4MDJiMDExYjY3MWMwYzhlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0xMzEsNiArMTMxLDE1IEBA
IC0gKEJPT0wpX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29t
bWFuZCBhcmd1bWVudDooTlNTdHJpbmcKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKKy0gKFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRl
eHRJbnB1dE11bHRpRG9jdW1lbnQ+ICopdGV4dElucHV0Q29udGVudFZpZXcKK3sKKyAgICByZXR1
cm4gKFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQ+
ICopW3NlbGYgdmFsdWVGb3JLZXk6QCJfY3VycmVudENvbnRlbnRWaWV3Il07Cit9CisKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiAtIChOU1N0cmluZyAqKWNvbnRlbnRzQXNTdHJp
bmcKIHsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtNjg1LDExICs2OTQsNiBA
QCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5n
ZTooTlNTdHJpbmcgKilzY3JpcHQKICAgICB9CiB9CiAKLS0gKFVJVmlldyA8VUlUZXh0SW5wdXRQ
cml2YXRlLCBVSVRleHRJbnB1dE11bHRpRG9jdW1lbnQ+ICopdGV4dElucHV0Q29udGVudFZpZXcK
LXsKLSAgICByZXR1cm4gKFVJVmlldyA8VUlUZXh0SW5wdXRQcml2YXRlLCBVSVRleHRJbnB1dE11
bHRpRG9jdW1lbnQ+ICopW3NlbGYgdmFsdWVGb3JLZXk6QCJfY3VycmVudENvbnRlbnRWaWV3Il07
Ci19Ci0KIC0gKFJldGFpblB0cjxOU0FycmF5PilzZWxlY3Rpb25SZWN0c0FmdGVyUHJlc2VudGF0
aW9uVXBkYXRlCiB7CiAgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHJldGFpbmVkU2VsZiA9
IHNlbGY7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvVUlLaXRTUEkuaAppbmRleCBmZmI5YTQ5MDUzODJmNDYx
Mzg2ZmVmMjJmOTVkMmE1MmE5NjRkOWI3Li5lNmZmMTYzZWIxNmM5ZTJjMmFiMzYyMmVlYWM0YzIz
MThlNDJkYzlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1VJS2l0U1BJLmgKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudC5oPgogI2ltcG9ydCA8VUlLaXQvVUlX
ZWJGb3JtQWNjZXNzb3J5Lmg+CisjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVy
ZVJlY29nbml6ZXIuaD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRy
YW5zaXRpb24uaD4KIAogSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVu
dGF0aW9ucyIpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>